Relayers were ONLY streamID-specific. This was causing a bug:
We have nodes S -> T -> and B
T becomes a transcoder for a stream from B, start getting StreamData from B
S wants the stream, so it sends GetMasterPlaylist -> T -> B
T creates a relayer for the stream
B sends the playlist
Since T still has the relayer, it's now relaying the StreamData from B to S, even though S never asked for it. (S only asked for StreamData from T)
Changes here make relayers msg-specific.
StreamData, Finish, and Cancel messages expect relayers created by SubReq
MasterPlaylistData expect relayers created by GetMasterPlaylist
Note:
TranscodeResponse doesn't create relayers because it doesn't expect a response. We have a simple strategy now to send the message to 2 neighbors closes to the destination. This does NOT guarantee the delivery of the message. We might need to add a new message type "GetTranscodeResponse", sent by the broadcaster to ask for the response. In which case, it will create a relayer specific to its type. I'm interested in feedback about this.
Relayers were ONLY streamID-specific. This was causing a bug:
Changes here make relayers msg-specific.
Note: