diff --git a/components/streams/src/netstream.cpp b/components/streams/src/netstream.cpp index e871df7ecff569fe89f1cdb25e053efa38204eca..44ae5c8042ecdd0275c73e19d0f5165721ebd3c8 100644 --- a/components/streams/src/netstream.cpp +++ b/components/streams/src/netstream.cpp @@ -202,7 +202,7 @@ bool Net::begin() { // If hosting and no data then it is a request for data // Note: a non host can receive empty data, meaning data is available // but that you did not request it - if (host_ && pkt.data.size() == 0 && pkt.flags == ftl::codecs::kFlagRequest) { + if (host_ && pkt.data.size() == 0 && (spkt.flags & ftl::codecs::kFlagRequest)) { // FIXME: Allow unselecting ...? if (spkt.frameSetID() == 255) { for (size_t i=0; i<size(); ++i) { @@ -294,15 +294,16 @@ bool Net::_sendRequest(Channel c, uint8_t frameset, uint8_t frames, uint8_t coun 0, count, bitrate, - ftl::codecs::kFlagRequest + 0 }; StreamPacket spkt = { - 4, + 5, ftl::timer::get_time(), frameset, frames, c, + ftl::codecs::kFlagRequest, 0, 0, 0 diff --git a/components/streams/src/receiver.cpp b/components/streams/src/receiver.cpp index b2965405238d3246c0189f81d7d3dd04b66d5145..29f0088190f39631016c9f2bbf55f905407de3bf 100644 --- a/components/streams/src/receiver.cpp +++ b/components/streams/src/receiver.cpp @@ -385,7 +385,7 @@ void Receiver::setStream(ftl::stream::Stream *s) { // No data packet means channel is only available. if (pkt.data.size() == 0) { - if (spkt.streamID < 255 && pkt.flags == 0) { + if (spkt.streamID < 255 && !(spkt.flags & ftl::codecs::kFlagRequest)) { // Get the frameset auto fs = builder(spkt.streamID).get(spkt.timestamp, spkt.frame_number+pkt.frame_count-1); const auto *cs = stream_; diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp index 05b5ebccaa09f7bbd0628471d1f0e7911a53186c..9348322abd9e0ad5a87c9de516db27307b4418ef 100644 --- a/components/streams/src/sender.cpp +++ b/components/streams/src/sender.cpp @@ -46,7 +46,7 @@ void Sender::setStream(ftl::stream::Stream*s) { //if (stream_) stream_->onPacket(nullptr); stream_ = s; handle_ = stream_->onPacket([this](const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) { - if (pkt.data.size() > 0 || pkt.flags == 0) return true; + if (pkt.data.size() > 0 || !(spkt.flags & ftl::codecs::kFlagRequest)) return true; LOG(INFO) << "SENDER REQUEST : " << (int)spkt.channel; diff --git a/components/streams/src/stream.cpp b/components/streams/src/stream.cpp index d5cb76a8d3b3e0f73bf62ec41ebeb02676fcf9c7..c80f9f284dac34ec5770cd73177ebd72db0d60f9 100644 --- a/components/streams/src/stream.cpp +++ b/components/streams/src/stream.cpp @@ -120,7 +120,7 @@ int Muxer::originStream(size_t fsid, int fid) { bool Muxer::post(const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) { SHARED_LOCK(mutex_, lk); - if (pkt.data.size() > 0 || !(pkt.flags & ftl::codecs::kFlagRequest)) available(spkt.frameSetID()) += spkt.channel; + if (pkt.data.size() > 0 || !(spkt.flags & ftl::codecs::kFlagRequest)) available(spkt.frameSetID()) += spkt.channel; if (spkt.streamID < ftl::stream::kMaxStreams && spkt.frame_number < revmap_[spkt.streamID].size()) { auto [sid, ssid] = revmap_[spkt.streamID][spkt.frame_number];