Browse Source

Prevented stopping non-started transports

Paul-Louis Ageneau 5 years ago
parent
commit
d98a056469
2 changed files with 5 additions and 3 deletions
  1. 2 0
      src/dtlssrtptransport.cpp
  2. 3 3
      src/transport.hpp

+ 2 - 0
src/dtlssrtptransport.cpp

@@ -67,6 +67,8 @@ DtlsSrtpTransport::DtlsSrtpTransport(std::shared_ptr<IceTransport> lower,
 }
 
 DtlsSrtpTransport::~DtlsSrtpTransport() {
+	stop(); // stop before deallocating
+
 	srtp_dealloc(mSrtpIn);
 	srtp_dealloc(mSrtpOut);
 }

+ 3 - 3
src/transport.hpp

@@ -41,10 +41,10 @@ public:
 
 	virtual ~Transport() { stop(); }
 
-	virtual void start() {}
+	virtual void start() { mStopped = false; }
 
 	virtual bool stop() {
-		if (mShutdown.exchange(true))
+		if (mStopped.exchange(true))
 			return false;
 
 		// We don't want incoming() to be called by the lower layer anymore
@@ -95,7 +95,7 @@ private:
 	synchronized_callback<message_ptr> mRecvCallback;
 
 	std::atomic<State> mState = State::Disconnected;
-	std::atomic<bool> mShutdown = false;
+	std::atomic<bool> mStopped = true;
 };
 
 } // namespace rtc