mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +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;
|
version_ = SrsDtlsVersionAuto;
|
||||||
|
|
||||||
trd = NULL;
|
trd = NULL;
|
||||||
client_state_ = SrsDtlsStateInit;
|
state_ = SrsDtlsStateInit;
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsDtls::~SrsDtls()
|
SrsDtls::~SrsDtls()
|
||||||
|
@ -409,8 +409,11 @@ srs_error_t SrsDtls::on_dtls(char* data, int nb_data)
|
||||||
{
|
{
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
// When got packet, always stop the ARQ.
|
// When got packet, stop the ARQ if server in the first ARQ state SrsDtlsStateServerHello.
|
||||||
if (role_ == SrsDtlsRoleClient && client_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();
|
stop_arq();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -97,12 +97,12 @@ public:
|
||||||
|
|
||||||
// The state for DTLS client.
|
// The state for DTLS client.
|
||||||
enum SrsDtlsState {
|
enum SrsDtlsState {
|
||||||
SrsDtlsStateInit,
|
SrsDtlsStateInit, // Start.
|
||||||
SrsDtlsStateClientHello,
|
SrsDtlsStateClientHello, // Should start ARQ thread.
|
||||||
SrsDtlsStateServerHello,
|
SrsDtlsStateServerHello, // We are in the first ARQ state.
|
||||||
SrsDtlsStateClientCertificate,
|
SrsDtlsStateClientCertificate, // Should start ARQ thread again.
|
||||||
SrsDtlsStateServerDone,
|
SrsDtlsStateServerDone, // We are in the second ARQ state.
|
||||||
SrsDtlsStateClientDone,
|
SrsDtlsStateClientDone, // Done.
|
||||||
};
|
};
|
||||||
|
|
||||||
class SrsDtls : public ISrsCoroutineHandler
|
class SrsDtls : public ISrsCoroutineHandler
|
||||||
|
@ -127,7 +127,7 @@ private:
|
||||||
// @note If passive(DTLS server), the ARQ is driven by DTLS client.
|
// @note If passive(DTLS server), the ARQ is driven by DTLS client.
|
||||||
SrsCoroutine* trd;
|
SrsCoroutine* trd;
|
||||||
// The DTLS-client state to drive the ARQ thread.
|
// The DTLS-client state to drive the ARQ thread.
|
||||||
SrsDtlsState client_state_;
|
SrsDtlsState state_;
|
||||||
|
|
||||||
// @remark: dtls_role_ default value is DTLS_SERVER.
|
// @remark: dtls_role_ default value is DTLS_SERVER.
|
||||||
SrsDtlsRole role_;
|
SrsDtlsRole role_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue