From 947c7d40d8ed16f51d31230c98a2a7704b371980 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Fri, 4 Dec 2020 16:22:01 -0500
Subject: [PATCH] ice: unset callback on close

Change-Id: Iba4b98a1b9dd58c24945ee752084697419173049
---
 src/ice_transport.cpp     |  2 ++
 src/media/socket_pair.cpp | 12 ++++--------
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp
index d0897f3575..ab002f93ef 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 fbe08b89d4..7917b7de7e 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()
-- 
GitLab