ソースを参照

Fix shared_ptr in DtlsTransport::enqueueRecv

Paul-Louis Ageneau 3 週間 前
コミット
9971ba6cbf
1 ファイル変更6 行追加4 行削除
  1. 6 4
      src/impl/dtlstransport.cpp

+ 6 - 4
src/impl/dtlstransport.cpp

@@ -33,10 +33,12 @@ void DtlsTransport::enqueueRecv() {
 	if (mPendingRecvCount > 0)
 		return;
 
-	if (auto shared_this = weak_from_this().lock()) {
-		++mPendingRecvCount;
-		ThreadPool::Instance().enqueue(&DtlsTransport::doRecv, std::move(shared_this));
-	}
+	++mPendingRecvCount;
+
+	ThreadPool::Instance().enqueue([weak_this = weak_from_this()]() {
+		if (auto locked = weak_this.lock())
+			locked->doRecv();
+	});
 }
 
 #if USE_GNUTLS