Browse Source

SRTP global init and cleanup

Paul-Louis Ageneau 5 years ago
parent
commit
2868a941e1
2 changed files with 12 additions and 11 deletions
  1. 7 9
      src/dtlssrtptransport.cpp
  2. 5 2
      src/dtlssrtptransport.hpp

+ 7 - 9
src/dtlssrtptransport.cpp

@@ -28,17 +28,18 @@ using std::to_string;
 
 namespace rtc {
 
+void DtlsSrtpTransport::Init() { srtp_init(); }
+
+void DtlsSrtpTransport::Cleanup() { srtp_shutdown(); }
+
 DtlsSrtpTransport::DtlsSrtpTransport(std::shared_ptr<IceTransport> lower,
                                      shared_ptr<Certificate> certificate,
                                      verifier_callback verifierCallback,
-                                     message_callback recvCallback,
+                                     message_callback srtpRecvCallback,
                                      state_callback stateChangeCallback)
     : DtlsTransport(lower, certificate, std::move(verifierCallback),
                     std::move(stateChangeCallback)),
-      mRecvCallback(std::move(recvCallback)) {
-
-	// TODO: global init
-	srtp_init();
+      mSrtpRecvCallback(std::move(srtpRecvCallback)) { // distinct from Transport recv callback
 
 	PLOG_DEBUG << "Initializing SRTP transport";
 
@@ -58,9 +59,6 @@ bool DtlsSrtpTransport::stop() {
 		return false;
 
 	srtp_dealloc(mSrtp);
-
-	// TODO: global cleanup
-	srtp_shutdown();
 	return true;
 }
 
@@ -102,7 +100,7 @@ void DtlsSrtpTransport::incoming(message_ptr message) {
 	}
 	PLOG_VERBOSE << "Unprotected SRTP packet, size=" << size;
 	message->resize(size);
-	mRecvCallback(message);
+	mSrtpRecvCallback(message);
 }
 
 void DtlsSrtpTransport::postHandshake() {

+ 5 - 2
src/dtlssrtptransport.hpp

@@ -28,8 +28,11 @@ namespace rtc {
 
 class DtlsSrtpTransport final : public DtlsTransport {
 public:
+	static void Init();
+	static void Cleanup();
+
 	DtlsSrtpTransport(std::shared_ptr<IceTransport> lower, std::shared_ptr<Certificate> certificate,
-	                  verifier_callback verifierCallback, message_callback recvCallback,
+	                  verifier_callback verifierCallback, message_callback srtpRecvCallback,
 	                  state_callback stateChangeCallback);
 	~DtlsSrtpTransport();
 
@@ -40,7 +43,7 @@ private:
 	void incoming(message_ptr message) override;
 	void postHandshake() override;
 
-	message_callback mRecvCallback;
+	message_callback mSrtpRecvCallback;
 
 	srtp_t mSrtp;
 };