diff --git a/src/multiplexed_socket.cpp b/src/multiplexed_socket.cpp index 24712560993184591b3d0ad39d37efc73b98cafc..db4b0cba4d369ed2ed9c501bb273dc09010a98e7 100644 --- a/src/multiplexed_socket.cpp +++ b/src/multiplexed_socket.cpp @@ -460,9 +460,13 @@ MultiplexedSocket::Impl::handleControlPacket(std::vector<uint8_t>&& pkt) if (pimpl.handleProtocolMsg(object)) continue; auto req = object.as<ChannelRequest>(); - if (req.state == ChannelRequestState::ACCEPT) { + if (req.state == ChannelRequestState::REQUEST) { + pimpl.onRequest(req.name, req.channel); + } + else if (req.state == ChannelRequestState::ACCEPT) { pimpl.onAccept(req.name, req.channel); - } else if (req.state == ChannelRequestState::DECLINE) { + } else { + // DECLINE or unknown std::lock_guard<std::mutex> lkSockets(pimpl.socketsMutex); auto channel = pimpl.sockets.find(req.channel); if (channel != pimpl.sockets.end()) { @@ -470,8 +474,6 @@ MultiplexedSocket::Impl::handleControlPacket(std::vector<uint8_t>&& pkt) channel->second->stop(); pimpl.sockets.erase(channel); } - } else if (pimpl.onRequest_) { - pimpl.onRequest(req.name, req.channel); } } } catch (const std::exception& e) {