From a40abf8df2b3ed2e2b292851786e2488b1389fd5 Mon Sep 17 00:00:00 2001 From: winlin Date: Mon, 3 Aug 2020 18:18:15 +0800 Subject: [PATCH] RTC: Refine error log --- trunk/src/app/srs_app_listener.cpp | 12 +++++++++++- trunk/src/app/srs_app_rtc_server.cpp | 9 +++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/trunk/src/app/srs_app_listener.cpp b/trunk/src/app/srs_app_listener.cpp index 0c4386d59..7094bdbcf 100755 --- a/trunk/src/app/srs_app_listener.cpp +++ b/trunk/src/app/srs_app_listener.cpp @@ -42,13 +42,15 @@ using namespace std; #include #include - // set the max packet size. #define SRS_UDP_MAX_PACKET_SIZE 65535 // sleep in srs_utime_t for udp recv packet. #define SrsUdpPacketRecvCycleInterval 0 +// Set the byte at specified position. +#define _srs_set_byte(data, size, b, index) if (index < size) b = data[index] + ISrsUdpHandler::ISrsUdpHandler() { } @@ -541,8 +543,16 @@ srs_error_t SrsUdpMuxListener::cycle() SrsContextRestore(cid); err = handler->on_udp_packet(&skt); } + // Use pithy print to show more smart information. if (err != srs_success) { if (pp_pkt_handler_err->can_print(err)) { + // Append more information. + if (true) { + char* data = skt.data(); int size = skt.size(); + uint8_t b0 = 0, b1 = 0; _srs_set_byte(data, size, b0, 0); _srs_set_byte(data, size, b1, 1); uint8_t b2 = 0, b3 = 0; _srs_set_byte(data, size, b2, 2); _srs_set_byte(data, size, b3, 3); + uint8_t b4 = 0, b5 = 0; _srs_set_byte(data, size, b4, 4); _srs_set_byte(data, size, b5, 5); uint8_t b6 = 0, b7 = 0; _srs_set_byte(data, size, b6, 6); _srs_set_byte(data, size, b7, 7); + err = srs_error_wrap(err, "size=%u, data=[%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x]", size, b0, b1, b2, b3, b4, b5, b6, b7); + } srs_warn("handle udp pkt, count=%u, err: %s", pp_pkt_handler_err->nn_count, srs_error_desc(err).c_str()); } srs_freep(err); diff --git a/trunk/src/app/srs_app_rtc_server.cpp b/trunk/src/app/srs_app_rtc_server.cpp index da19ccab0..ccafc026e 100644 --- a/trunk/src/app/srs_app_rtc_server.cpp +++ b/trunk/src/app/srs_app_rtc_server.cpp @@ -309,7 +309,6 @@ srs_error_t SrsRtcServer::on_udp_packet(SrsUdpMuxSocket* skt) srs_info("recv stun packet from %s, use-candidate=%d, ice-controlled=%d, ice-controlling=%d", peer_id.c_str(), ping.get_use_candidate(), ping.get_ice_controlled(), ping.get_ice_controlling()); - // TODO: FIXME: For ICE trickle, we may get STUN packets before SDP answer, so maybe should response it. if (!session) { session = find_session_by_username(ping.get_username()); @@ -318,8 +317,10 @@ srs_error_t SrsRtcServer::on_udp_packet(SrsUdpMuxSocket* skt) session->switch_to_context(); } } + + // TODO: FIXME: For ICE trickle, we may get STUN packets before SDP answer, so maybe should response it. if (!session) { - return srs_error_new(ERROR_RTC_STUN, "can not find session, stun username=%s, peer_id=%s", + return srs_error_new(ERROR_RTC_STUN, "no session, stun username=%s, peer_id=%s", ping.get_username().c_str(), peer_id.c_str()); } @@ -328,7 +329,7 @@ srs_error_t SrsRtcServer::on_udp_packet(SrsUdpMuxSocket* skt) // For DTLS, RTCP or RTP, which does not support peer address changing. if (!session) { - return srs_error_new(ERROR_RTC_STUN, "can not find session, peer_id=%s", peer_id.c_str()); + return srs_error_new(ERROR_RTC_STUN, "no session, peer_id=%s", peer_id.c_str()); } if (is_dtls((uint8_t*)data, size)) { @@ -340,7 +341,7 @@ srs_error_t SrsRtcServer::on_udp_packet(SrsUdpMuxSocket* skt) return session->on_rtp(data, size); } - return srs_error_new(ERROR_RTC_UDP, "unknown udp packet type"); + return srs_error_new(ERROR_RTC_UDP, "unknown packet"); } srs_error_t SrsRtcServer::listen_api()