From 96079492985a05182f0bbcd0cf41995b30805a10 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Mon, 13 Jul 2020 12:41:01 +0300
Subject: [PATCH] Move packet request flag

---
 components/streams/src/netstream.cpp | 7 ++++---
 components/streams/src/receiver.cpp  | 2 +-
 components/streams/src/sender.cpp    | 2 +-
 components/streams/src/stream.cpp    | 2 +-
 4 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/components/streams/src/netstream.cpp b/components/streams/src/netstream.cpp
index e871df7ec..44ae5c804 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 b29654052..29f008819 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 05b5ebcca..9348322ab 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 d5cb76a8d..c80f9f284 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];
-- 
GitLab