From 34e7db5a9331ef5ef81fc736692c519f0758db43 Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 3 Jul 2020 10:46:35 +0800 Subject: [PATCH] RTC: Fix the DTLS bug --- trunk/src/app/srs_app_rtc_conn.cpp | 5 +++++ trunk/src/app/srs_app_rtc_dtls.cpp | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index ba8b46a34..07966a6a3 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -166,6 +166,11 @@ srs_error_t SrsSecurityTransport::on_dtls(char* data, int nb_data) srs_error_t SrsSecurityTransport::on_dtls_handshake_done() { srs_error_t err = srs_success; + + if (handshake_done) { + return err; + } + srs_trace("rtc session=%s, DTLS handshake done.", session_->id().c_str()); handshake_done = true; diff --git a/trunk/src/app/srs_app_rtc_dtls.cpp b/trunk/src/app/srs_app_rtc_dtls.cpp index 199f1283f..838bcb9ce 100644 --- a/trunk/src/app/srs_app_rtc_dtls.cpp +++ b/trunk/src/app/srs_app_rtc_dtls.cpp @@ -390,7 +390,8 @@ srs_error_t SrsDtls::do_handshake() int ssl_err = SSL_get_error(dtls, ret); switch(ssl_err) { - case SSL_ERROR_NONE: { + case SSL_ERROR_NONE: { + handshake_done = true; if ((callback == NULL) || ((err = callback->on_dtls_handshake_done()) != srs_success)) { return srs_error_wrap(err, "dtls handshake done handle"); }