mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
RTC: Refine error and log for DTLS
This commit is contained in:
parent
51bf3707a9
commit
ed95124743
2 changed files with 32 additions and 15 deletions
|
@ -396,9 +396,6 @@ srs_error_t SrsDtls::do_handshake()
|
|||
switch(ssl_err) {
|
||||
case SSL_ERROR_NONE: {
|
||||
handshake_done = true;
|
||||
if (((err = callback->on_dtls_handshake_done()) != srs_success)) {
|
||||
return srs_error_wrap(err, "dtls done");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -413,16 +410,18 @@ srs_error_t SrsDtls::do_handshake()
|
|||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (out_bio_len <= 0) {
|
||||
return err;
|
||||
}
|
||||
|
||||
// Trace the detail of DTLS packet.
|
||||
trace((char*)out_bio_data, out_bio_len, false);
|
||||
trace((uint8_t*)out_bio_data, out_bio_len, false);
|
||||
|
||||
if ((err = callback->write_dtls_data(out_bio_data, out_bio_len)) != srs_success) {
|
||||
if (handshake_done) {
|
||||
if (((err = callback->on_dtls_handshake_done()) != srs_success)) {
|
||||
return srs_error_wrap(err, "dtls done");
|
||||
}
|
||||
}
|
||||
|
||||
if (out_bio_len > 0 && (err = callback->write_dtls_data(out_bio_data, out_bio_len)) != srs_success) {
|
||||
return srs_error_wrap(err, "dtls send size=%u, data=[%s]", out_bio_len,
|
||||
srs_string_dumps_hex((char*)out_bio_data, out_bio_len, 32).c_str());
|
||||
}
|
||||
|
@ -455,7 +454,7 @@ srs_error_t SrsDtls::do_on_dtls(char* data, int nb_data)
|
|||
}
|
||||
|
||||
// Trace the detail of DTLS packet.
|
||||
trace((char*)data, nb_data, true);
|
||||
trace((uint8_t*)data, nb_data, true);
|
||||
|
||||
if ((r0 = BIO_write(bio_in, data, nb_data)) <= 0) {
|
||||
// TODO: 0 or -1 maybe block, use BIO_should_retry to check.
|
||||
|
@ -482,11 +481,29 @@ srs_error_t SrsDtls::do_on_dtls(char* data, int nb_data)
|
|||
return err;
|
||||
}
|
||||
|
||||
void SrsDtls::trace(char* data, int size, bool incoming)
|
||||
void SrsDtls::trace(uint8_t* data, int length, bool incoming)
|
||||
{
|
||||
// change_cipher_spec(20), alert(21), handshake(22), application_data(23)
|
||||
// @see https://tools.ietf.org/html/rfc2246#section-6.2.1
|
||||
srs_trace("DTLS: %s size=%u", (incoming? "RECV":"SEND"), size);
|
||||
if (length <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t content_type = 0;
|
||||
if (length >= 1) {
|
||||
content_type = (uint8_t)data[0];
|
||||
}
|
||||
|
||||
uint16_t size = 0;
|
||||
if (length >= 13) {
|
||||
size = uint16_t(data[11])<<8 | uint16_t(data[12]);
|
||||
}
|
||||
|
||||
uint8_t handshake_type = 0;
|
||||
if (length >= 14) {
|
||||
handshake_type = (uint8_t)data[13];
|
||||
}
|
||||
|
||||
srs_trace("DTLS: %s length=%u, content-type=%u, size=%u, handshake-type=%u", (incoming? "RECV":"SEND"),
|
||||
length, content_type, size, handshake_type);
|
||||
}
|
||||
|
||||
srs_error_t SrsDtls::start_active_handshake()
|
||||
|
|
|
@ -119,7 +119,7 @@ public:
|
|||
srs_error_t on_dtls(char* data, int nb_data);
|
||||
private:
|
||||
srs_error_t do_on_dtls(char* data, int nb_data);
|
||||
void trace(char* data, int size, bool incoming);
|
||||
void trace(uint8_t* data, int length, bool incoming);
|
||||
public:
|
||||
srs_error_t get_srtp_key(std::string& recv_key, std::string& send_key);
|
||||
private:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue