|
5 | 5 | #include "rtp.h" |
6 | 6 |
|
7 | 7 | #include <assert.h> |
8 | | -#include <errno.h> |
9 | 8 | #include <stdlib.h> |
10 | 9 | #include <string.h> |
11 | 10 |
|
@@ -768,22 +767,35 @@ void rtp_stop_receiving(Tox *tox) |
768 | 767 | tox_callback_friend_lossy_packet_per_pktid(tox, nullptr, RTP_TYPE_VIDEO); |
769 | 768 | } |
770 | 769 |
|
| 770 | +/** |
| 771 | + * Log the neterror error if any. |
| 772 | + * |
| 773 | + * @param error the error from rtp_send_custom_lossy_packet. |
| 774 | + * @param rdata_size The package length to be shown in the log. |
| 775 | + */ |
| 776 | +static void rtp_report_error_maybe(const Logger *log, Tox_Err_Friend_Custom_Packet error, uint16_t rdata_size) |
| 777 | +{ |
| 778 | + if (error != TOX_ERR_FRIEND_CUSTOM_PACKET_OK) { |
| 779 | + char *netstrerror = net_new_strerror(net_error()); |
| 780 | + const char *toxerror = tox_err_friend_custom_packet_to_string(error); |
| 781 | + LOGGER_WARNING(log, "RTP send failed (len: %u)! tox error: %s net error: %s", |
| 782 | + rdata_size, toxerror, netstrerror); |
| 783 | + net_kill_strerror(netstrerror); |
| 784 | + } |
| 785 | +} |
| 786 | + |
771 | 787 | static void rtp_send_piece(const Logger *log, Tox *tox, uint32_t friend_number, const struct RTPHeader *header, |
772 | 788 | const uint8_t *data, uint8_t *rdata, uint16_t length) |
773 | 789 | { |
774 | 790 | rtp_header_pack(rdata + 1, header); |
775 | 791 | memcpy(rdata + 1 + RTP_HEADER_SIZE, data, length); |
776 | 792 |
|
| 793 | + const uint16_t rdata_size = length + RTP_HEADER_SIZE + 1; |
| 794 | + |
777 | 795 | Tox_Err_Friend_Custom_Packet error; |
778 | | - tox_friend_send_lossy_packet(tox, friend_number, |
779 | | - rdata, length + RTP_HEADER_SIZE + 1, &error); |
| 796 | + tox_friend_send_lossy_packet(tox, friend_number, rdata, rdata_size, &error); |
780 | 797 |
|
781 | | - if (error != TOX_ERR_FRIEND_CUSTOM_PACKET_OK) { |
782 | | - char *netstrerror = net_new_strerror(net_error()); |
783 | | - LOGGER_WARNING(log, "RTP send failed (len: %d)! tox error: %s, net error: %s", |
784 | | - length + RTP_HEADER_SIZE + 1, tox_err_friend_custom_packet_to_string(error), netstrerror); |
785 | | - net_kill_strerror(netstrerror); |
786 | | - } |
| 798 | + rtp_report_error_maybe(log, error, rdata_size); |
787 | 799 | } |
788 | 800 |
|
789 | 801 | static struct RTPHeader rtp_default_header(const RTPSession *session, uint32_t length, bool is_keyframe) |
|
0 commit comments