1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

RTC: Support dup DTLS done. Support create publisher/player after DTLS done.

This commit is contained in:
winlin 2020-08-11 12:24:01 +08:00
parent f54bf8d9be
commit a06a750a1b

View file

@ -1862,6 +1862,12 @@ srs_error_t SrsRtcConnection::on_connection_established()
{ {
srs_error_t err = srs_success; srs_error_t err = srs_success;
// If DTLS done packet received many times, such as ARQ, ignore.
if(ESTABLISHED == state_) {
return err;
}
state_ = ESTABLISHED;
srs_trace("RTC: session pub=%u, sub=%u, to=%dms connection established", publishers_.size(), players_.size(), srs_trace("RTC: session pub=%u, sub=%u, to=%dms connection established", publishers_.size(), players_.size(),
srsu2msi(session_timeout)); srsu2msi(session_timeout));
@ -3008,6 +3014,13 @@ srs_error_t SrsRtcConnection::create_player(SrsRequest* req, std::map<uint32_t,
} }
srs_trace("RTC connection player gcc=%d", twcc_id); srs_trace("RTC connection player gcc=%d", twcc_id);
// If DLTS done, start the player. Because maybe create some players after DTLS done.
if(ESTABLISHED == state_) {
if(srs_success != (err = player->start())) {
return srs_error_wrap(err, "start player");
}
}
return err; return err;
} }
@ -3082,6 +3095,13 @@ srs_error_t SrsRtcConnection::create_publisher(SrsRequest* req, SrsRtcStreamDesc
} }
} }
// If DLTS done, start the publisher. Because maybe create some publishers after DTLS done.
if(ESTABLISHED == state()) {
if(srs_success != (err = publisher->start())) {
return srs_error_wrap(err, "start publisher");
}
}
return err; return err;
} }