Browse Source

Fixed init tokens handling

Paul-Louis Ageneau 5 years ago
parent
commit
971e6e8b91
3 changed files with 8 additions and 4 deletions
  1. 5 2
      src/init.cpp
  2. 1 1
      src/sctptransport.cpp
  3. 2 1
      src/threadpool.hpp

+ 5 - 2
src/init.cpp

@@ -57,13 +57,12 @@ init_token Init::Token() {
 }
 
 void Init::Preload() {
-	Token();                   // pre-init
+	init_token token = Token(); // pre-init
 	make_certificate().wait(); // preload certificate
 }
 
 void Init::Cleanup() {
 	Global.reset();
-	CleanupCertificateCache();
 }
 
 Init::Init() {
@@ -96,6 +95,10 @@ Init::Init() {
 Init::~Init() {
 	// We need to lock Mutex ourselves
 	std::lock_guard lock(Mutex);
+	if (Global)
+		return;
+
+	CleanupCertificateCache();
 
 	SctpTransport::Cleanup();
 	DtlsTransport::Cleanup();

+ 1 - 1
src/sctptransport.cpp

@@ -410,7 +410,7 @@ void SctpTransport::updateBufferedAmount(uint16_t streamId, long delta) {
 	try {
 		mBufferedAmountCallback(streamId, amount);
 	} catch (const std::exception &e) {
-		PLOG_WARNING << "SCTP buffered amount callback: " << e.what();
+		PLOG_DEBUG << "SCTP buffered amount callback: " << e.what();
 	}
 	mSendMutex.lock();
 }

+ 2 - 1
src/threadpool.hpp

@@ -20,6 +20,7 @@
 #define RTC_THREADPOOL_H
 
 #include "include.hpp"
+#include "init.hpp"
 
 #include <condition_variable>
 #include <functional>
@@ -76,7 +77,7 @@ auto ThreadPool::enqueue(F &&f, Args &&... args) -> invoke_future_t<F, Args...>
 	    std::bind(std::forward<F>(f), std::forward<Args>(args)...));
 	std::future<R> result = task->get_future();
 
-	mTasks.emplace([task = std::move(task)]() { return (*task)(); });
+	mTasks.emplace([task = std::move(task), token = Init::Token()]() { return (*task)(); });
 	mCondition.notify_one();
 	return result;
 }