diff --git a/3rdpart/ZLToolKit b/3rdpart/ZLToolKit index 493d14e1..b8c91595 160000 --- a/3rdpart/ZLToolKit +++ b/3rdpart/ZLToolKit @@ -1 +1 @@ -Subproject commit 493d14e1682cc0c79e72b3893dd98f865d45b8e9 +Subproject commit b8c91595f5e49cc8d4603eac577aee92b5c7ec8e diff --git a/webrtc/WebRtcSession.cpp b/webrtc/WebRtcSession.cpp index 96ff55b5..bbbedd92 100644 --- a/webrtc/WebRtcSession.cpp +++ b/webrtc/WebRtcSession.cpp @@ -69,10 +69,11 @@ void WebRtcSession::onRecv_l(const char *data, size_t len) { auto sock = Socket::createSocket(transport->getPoller(), false); // 1、克隆socket(fd不变),切换poller线程到WebRtcTransport所在线程 [AUTO-TRANSLATED:f930bfab] // 1. Clone socket (fd remains unchanged), switch poller thread to the thread where WebRtcTransport is located - sock->cloneSocket(*(getSock())); + auto on_complete = sock->cloneSocket(*(getSock())); auto server = _server; std::string str(data, len); - sock->getPoller()->async([sock, server, str](){ + // on_complete在创建WebRtcSession后才析构(才开始网络事件监听) + sock->getPoller()->async([sock, server, str, on_complete](){ auto strong_server = server.lock(); if (strong_server) { auto session = static_pointer_cast(strong_server->createSession(sock));