mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 11:51:57 +00:00
RTC: Refine code
This commit is contained in:
parent
92b59e308c
commit
761c880e55
2 changed files with 13 additions and 10 deletions
|
@ -259,7 +259,7 @@ SrsDtls::SrsDtls(ISrsDtlsCallback* cb)
|
|||
version_ = SrsDtlsVersionAuto;
|
||||
|
||||
trd = NULL;
|
||||
client_state_ = SrsDtlsStateInit;
|
||||
state_ = SrsDtlsStateInit;
|
||||
}
|
||||
|
||||
SrsDtls::~SrsDtls()
|
||||
|
@ -409,8 +409,11 @@ srs_error_t SrsDtls::on_dtls(char* data, int nb_data)
|
|||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
||||
// When got packet, always stop the ARQ.
|
||||
if (role_ == SrsDtlsRoleClient && client_state_ == SrsDtlsStateServerHello) {
|
||||
// When got packet, stop the ARQ if server in the first ARQ state SrsDtlsStateServerHello.
|
||||
// @note But for ARQ state, we should never stop the ARQ, for example, we are in the second ARQ sate
|
||||
// SrsDtlsStateServerDone, but we got previous late wrong packet ServeHello, which is not the expect
|
||||
// packet SessionNewTicket, we should never stop the ARQ thread.
|
||||
if (role_ == SrsDtlsRoleClient && state_ == SrsDtlsStateServerHello) {
|
||||
stop_arq();
|
||||
}
|
||||
|
||||
|
|
|
@ -97,12 +97,12 @@ public:
|
|||
|
||||
// The state for DTLS client.
|
||||
enum SrsDtlsState {
|
||||
SrsDtlsStateInit,
|
||||
SrsDtlsStateClientHello,
|
||||
SrsDtlsStateServerHello,
|
||||
SrsDtlsStateClientCertificate,
|
||||
SrsDtlsStateServerDone,
|
||||
SrsDtlsStateClientDone,
|
||||
SrsDtlsStateInit, // Start.
|
||||
SrsDtlsStateClientHello, // Should start ARQ thread.
|
||||
SrsDtlsStateServerHello, // We are in the first ARQ state.
|
||||
SrsDtlsStateClientCertificate, // Should start ARQ thread again.
|
||||
SrsDtlsStateServerDone, // We are in the second ARQ state.
|
||||
SrsDtlsStateClientDone, // Done.
|
||||
};
|
||||
|
||||
class SrsDtls : public ISrsCoroutineHandler
|
||||
|
@ -127,7 +127,7 @@ private:
|
|||
// @note If passive(DTLS server), the ARQ is driven by DTLS client.
|
||||
SrsCoroutine* trd;
|
||||
// The DTLS-client state to drive the ARQ thread.
|
||||
SrsDtlsState client_state_;
|
||||
SrsDtlsState state_;
|
||||
|
||||
// @remark: dtls_role_ default value is DTLS_SERVER.
|
||||
SrsDtlsRole role_;
|
||||
|
|
Loading…
Reference in a new issue