diff --git a/components/net/cpp/src/dispatcher.cpp b/components/net/cpp/src/dispatcher.cpp index b1a5b265e8a00b3defabb929426c70366f5d191f..997ca1238560a410cf9c4e0eee383c06ab32a22e 100644 --- a/components/net/cpp/src/dispatcher.cpp +++ b/components/net/cpp/src/dispatcher.cpp @@ -101,7 +101,7 @@ void ftl::net::Dispatcher::dispatch_call(Peer &s, const msgpack::object &msg) { optional<Dispatcher::adaptor_type> ftl::net::Dispatcher::_locateHandler(const std::string &name) const { auto it_func = funcs_.find(name); - if (it_func == end(funcs_)) { + if (it_func == funcs_.end()) { if (parent_ != nullptr) { return parent_->_locateHandler(name); } else { diff --git a/components/streams/src/stream.cpp b/components/streams/src/stream.cpp index 782ec1fb3d04e7ea76bf83c216edd8f2920470dd..b97667d2b5e77e264d84a4e17e9f1414d52dd466 100644 --- a/components/streams/src/stream.cpp +++ b/components/streams/src/stream.cpp @@ -86,12 +86,17 @@ void Muxer::add(Stream *s, size_t fsid) { auto &se = streams_.emplace_back(); int i = streams_.size()-1; se.stream = s; - ftl::stream::Muxer::StreamEntry *ptr = &se; - handles_.push_back(std::move(s->onPacket([this,s,i,fsid,ptr](const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) { + handles_.push_back(std::move(s->onPacket([this,s,i,fsid](const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) { //TODO: Allow input streams to have other streamIDs // Same fsid means same streamIDs map together in the end + ftl::stream::Muxer::StreamEntry *ptr = nullptr; + { + SHARED_LOCK(mutex_,lk); + ptr = &streams_[i]; + } + ftl::codecs::StreamPacket spkt2 = spkt; ptr->original_fsid = spkt.streamID; spkt2.streamID = fsid; diff --git a/components/structures/src/new_frame.cpp b/components/structures/src/new_frame.cpp index a290b25e5471e5d251b9545d0407f9b3b89df892..ba79f32bf88fa131dd6d91fa4bdc39faefc1f612 100644 --- a/components/structures/src/new_frame.cpp +++ b/components/structures/src/new_frame.cpp @@ -427,6 +427,13 @@ std::unordered_set<ftl::codecs::Channel> Frame::allChannels() const { res.emplace(k); } } + + uint64_t m = 1; + // TODO: NAIVE, use ffs or ctz. + for (int i=0; i<32; ++i) { + if (m & available_) res.emplace(static_cast<Channel>(i)); + m <<= 1; + } return res; }