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); }