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];