mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
Refine code
This commit is contained in:
parent
fd605fc4ac
commit
05441d6354
1 changed files with 21 additions and 16 deletions
|
@ -1132,25 +1132,25 @@ srs_error_t SrsRtcPublishStream::on_rtp(char* data, int nb_data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We must parse the TWCC from RTP header before SRTP unprotect, because:
|
// We must parse the TWCC from RTP header before SRTP unprotect, because:
|
||||||
// 1. Client may send some padding packets with invalid SequenceNumber, which causes the SRTP fail.
|
// 1. Client may send some padding packets with invalid SequenceNumber, which causes the SRTP fail.
|
||||||
// 2. Server may send multiple duplicated NACK to client, and got more than one ARQ packet, which also fail SRTP.
|
// 2. Server may send multiple duplicated NACK to client, and got more than one ARQ packet, which also fail SRTP.
|
||||||
// so, we must parse the header before SRTP unprotect(which may fail and drop packet).
|
// so, we must parse the header before SRTP unprotect(which may fail and drop packet).
|
||||||
if (twcc_id_) {
|
if (twcc_id_) {
|
||||||
uint16_t twcc_sn = 0;
|
uint16_t twcc_sn = 0;
|
||||||
if ((err = h.get_twcc_sequence_number(twcc_sn)) == srs_success) {
|
if ((err = h.get_twcc_sequence_number(twcc_sn)) == srs_success) {
|
||||||
if((err = on_twcc(twcc_sn)) != srs_success) {
|
if((err = on_twcc(twcc_sn)) != srs_success) {
|
||||||
return srs_error_wrap(err, "on twcc");
|
return srs_error_wrap(err, "on twcc");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
srs_error_reset(err);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
srs_error_reset(err);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// If payload type is configed to drop, ignore this packet.
|
// If payload type is configed to drop, ignore this packet.
|
||||||
if (pt_to_drop_ && pt_to_drop_ == h.get_payload_type()) {
|
if (pt_to_drop_ && pt_to_drop_ == h.get_payload_type()) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decrypt the cipher to plaintext RTP data.
|
// Decrypt the cipher to plaintext RTP data.
|
||||||
int nb_unprotected_buf = nb_data;
|
int nb_unprotected_buf = nb_data;
|
||||||
|
@ -1159,6 +1159,7 @@ srs_error_t SrsRtcPublishStream::on_rtp(char* data, int nb_data)
|
||||||
// We try to decode the RTP header for more detail error informations.
|
// We try to decode the RTP header for more detail error informations.
|
||||||
SrsBuffer b(data, nb_data); SrsRtpHeader h; h.ignore_padding(true);
|
SrsBuffer b(data, nb_data); SrsRtpHeader h; h.ignore_padding(true);
|
||||||
srs_error_t r0 = h.decode(&b); srs_freep(r0); // Ignore any error for header decoding.
|
srs_error_t r0 = h.decode(&b); srs_freep(r0); // Ignore any error for header decoding.
|
||||||
|
|
||||||
err = srs_error_wrap(err, "marker=%u, pt=%u, seq=%u, ts=%u, ssrc=%u, pad=%u, payload=%uB", h.get_marker(), h.get_payload_type(),
|
err = srs_error_wrap(err, "marker=%u, pt=%u, seq=%u, ts=%u, ssrc=%u, pad=%u, payload=%uB", h.get_marker(), h.get_payload_type(),
|
||||||
h.get_sequence(), h.get_timestamp(), h.get_ssrc(), h.get_padding(), nb_data - b.pos());
|
h.get_sequence(), h.get_timestamp(), h.get_ssrc(), h.get_padding(), nb_data - b.pos());
|
||||||
|
|
||||||
|
@ -1172,6 +1173,10 @@ srs_error_t SrsRtcPublishStream::on_rtp(char* data, int nb_data)
|
||||||
|
|
||||||
// Handle the plaintext RTP packet.
|
// Handle the plaintext RTP packet.
|
||||||
if ((err = do_on_rtp(unprotected_buf, nb_unprotected_buf)) != srs_success) {
|
if ((err = do_on_rtp(unprotected_buf, nb_unprotected_buf)) != srs_success) {
|
||||||
|
// We try to decode the RTP header for more detail error informations.
|
||||||
|
SrsBuffer b(data, nb_data); SrsRtpHeader h; h.ignore_padding(true);
|
||||||
|
srs_error_t r0 = h.decode(&b); srs_freep(r0); // Ignore any error for header decoding.
|
||||||
|
|
||||||
int nb_header = h.nb_bytes();
|
int nb_header = h.nb_bytes();
|
||||||
const char* body = unprotected_buf + nb_header;
|
const char* body = unprotected_buf + nb_header;
|
||||||
int nb_body = nb_unprotected_buf - nb_header;
|
int nb_body = nb_unprotected_buf - nb_header;
|
||||||
|
|
Loading…
Reference in a new issue