diff --git a/components/streams/src/netstream.cpp b/components/streams/src/netstream.cpp
index d183d43d35d359f8ecef7b0e34b0a33d82246942..2643b99b307d4806936782ed0e64a8fe415a58e6 100644
--- a/components/streams/src/netstream.cpp
+++ b/components/streams/src/netstream.cpp
@@ -32,17 +32,17 @@ static SHARED_MUTEX stream_mutex;
 
 Net::Net(nlohmann::json &config, ftl::net::Universe *net) : Stream(config), active_(false), net_(net), clock_adjust_(0), last_ping_(0) {
 	if (!net_->isBound("find_stream")) {
-		// FIXME: This only allows for a single net stream!!!
 		net_->bind("find_stream", [net = net_](const std::string &uri) -> optional<ftl::UUID> {
 			LOG(INFO) << "REQUEST FIND STREAM: " << uri;
 
-			ftl::URI u(uri);
-			std::string base = u.getBaseURI();
+			ftl::URI u1(uri);
+			std::string base = u1.getBaseURI();
 
 			SHARED_LOCK(stream_mutex, lk);
 			for (const auto &s : net_streams) {
+				ftl::URI u2(s);
 				// Don't compare query string components.
-				if (base == s) {
+				if (base == u2.getBaseURI()) {
 					return net->id();
 				}
 			}
@@ -256,7 +256,7 @@ bool Net::begin() {
 
 		{
 			UNIQUE_LOCK(stream_mutex, lk);
-			net_streams.push_back(base_uri_);
+			net_streams.push_back(uri_);
 		}
 
 		// Automatically set name if missing
@@ -442,7 +442,7 @@ bool Net::end() {
 
 	{
 		UNIQUE_LOCK(stream_mutex, lk);
-		auto i = std::find(net_streams.begin(), net_streams.end(), base_uri_);
+		auto i = std::find(net_streams.begin(), net_streams.end(), uri_);
 		if (i != net_streams.end()) net_streams.erase(i);
 	}