diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp index d0897f35758f4000dcae6fc9a44a9f64a46491e6..ab002f93ef9a736a092b9d3764f3c61345b2551e 100644 --- a/src/ice_transport.cpp +++ b/src/ice_transport.cpp @@ -1957,6 +1957,8 @@ IceSocketTransport::remoteAddr() const void IceSocket::close() { + if (ice_transport_) + ice_transport_->setOnRecv(compId_, {}); ice_transport_.reset(); } diff --git a/src/media/socket_pair.cpp b/src/media/socket_pair.cpp index fbe08b89d4b302761ddfd383b86584b6a2e5123a..7917b7de7eeb50f9a28ebbf5e1d7b0d5ff070736 100644 --- a/src/media/socket_pair.cpp +++ b/src/media/socket_pair.cpp @@ -189,22 +189,18 @@ SocketPair::SocketPair(std::unique_ptr<IceSocket> rtp_sock, std::unique_ptr<IceS : rtp_sock_(std::move(rtp_sock)) , rtcp_sock_(std::move(rtcp_sock)) { - auto queueRtpPacket = [this](uint8_t* buf, size_t len) { + rtp_sock_->setOnRecv([this](uint8_t* buf, size_t len) { std::lock_guard<std::mutex> l(dataBuffMutex_); rtpDataBuff_.emplace_back(buf, buf + len); cv_.notify_one(); return len; - }; - - auto queueRtcpPacket = [this](uint8_t* buf, size_t len) { + }); + rtcp_sock_->setOnRecv([this](uint8_t* buf, size_t len) { std::lock_guard<std::mutex> l(dataBuffMutex_); rtcpDataBuff_.emplace_back(buf, buf + len); cv_.notify_one(); return len; - }; - - rtp_sock_->setOnRecv(queueRtpPacket); - rtcp_sock_->setOnRecv(queueRtcpPacket); + }); } SocketPair::~SocketPair()