소스 검색

Fix SctpTransport::Instances lifecycle

Paul-Louis Ageneau 1 개월 전
부모
커밋
d82c01f54d
2개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  1. 6 1
      src/impl/sctptransport.cpp
  2. 1 1
      src/impl/sctptransport.hpp

+ 6 - 1
src/impl/sctptransport.cpp

@@ -82,7 +82,7 @@ private:
 	std::shared_mutex mMutex;
 };
 
-std::unique_ptr<SctpTransport::InstancesSet> SctpTransport::Instances = std::make_unique<InstancesSet>();
+SctpTransport::InstancesSet* SctpTransport::Instances = nullptr;
 
 void SctpTransport::Init() {
 	usrsctp_init(0, SctpTransport::WriteCallback, SctpTransport::DebugCallback);
@@ -94,6 +94,8 @@ void SctpTransport::Init() {
 #ifdef SCTP_DEBUG
 	usrsctp_sysctl_set_sctp_debug_on(SCTP_DEBUG_ALL);
 #endif
+
+	Instances = new InstancesSet;
 }
 
 void SctpTransport::SetSettings(const SctpSettings &s) {
@@ -148,6 +150,9 @@ void SctpTransport::SetSettings(const SctpSettings &s) {
 void SctpTransport::Cleanup() {
 	while (usrsctp_finish())
 		std::this_thread::sleep_for(100ms);
+
+	delete Instances;
+	Instances = nullptr;
 }
 
 SctpTransport::SctpTransport(shared_ptr<Transport> lower, const Configuration &config, Ports ports,

+ 1 - 1
src/impl/sctptransport.hpp

@@ -127,7 +127,7 @@ private:
 	static void DebugCallback(const char *format, ...);
 
 	class InstancesSet;
-	static std::unique_ptr<InstancesSet> Instances;
+	static InstancesSet* Instances;
 };
 
 } // namespace rtc::impl