From eddff91357d1f3cd3bf4a1310826420d389a5c34 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 29 Jul 2025 09:17:56 -0400 Subject: [PATCH] MT#63317 annotate rtcp_payload Change-Id: I2a08441c0c7e262d3d7a43e8fabc0a5766de7c7f --- daemon/media_socket.c | 2 +- daemon/rtcp.c | 15 +++++++-------- include/rtcp.h | 3 ++- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/daemon/media_socket.c b/daemon/media_socket.c index b34137900..53e7453dd 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -2350,7 +2350,7 @@ static void media_packet_rtp_in(struct packet_handler_ctx *phc) g_atomic_pointer_set(&phc->mp.stream->rtp_stats_cache, rtp_s); } } - else if (phc->rtcp && !rtcp_payload(&phc->mp.rtcp, NULL, &phc->s)) { + else if (phc->rtcp && (phc->mp.rtcp = rtcp_payload(NULL, &phc->s))) { unkern = __stream_ssrc_in(phc->in_srtp, phc->mp.rtcp->ssrc, &phc->mp.ssrc_in, &phc->mp.media->ssrc_hash_in); } diff --git a/daemon/rtcp.c b/daemon/rtcp.c index 173ce7ff1..2554b5a9a 100644 --- a/daemon/rtcp.c +++ b/daemon/rtcp.c @@ -797,7 +797,7 @@ error: return -1; } -int rtcp_payload(struct rtcp_packet **out, str *p, const str *s) { +struct rtcp_packet *rtcp_payload(str *p, const str *s) { struct rtcp_packet *rtcp; const char *err; @@ -829,17 +829,16 @@ int rtcp_payload(struct rtcp_packet **out, str *p, const str *s) { ok: if (!p) - goto done; + return rtcp; *p = *s; str_shift(p, sizeof(*rtcp)); -done: - *out = rtcp; - return 0; + return rtcp; + error: ilogs(rtcp, LOG_DEBUG | LOG_FLAG_LIMIT, "Error parsing RTCP header: %s", err); - return -1; + return NULL; } /* rfc 3711 section 3.4 */ @@ -851,7 +850,7 @@ int rtcp_avp2savp(str *s, struct crypto_context *c, struct ssrc_entry_call *ssrc if (G_UNLIKELY(!ssrc_ctx)) return -1; - if (rtcp_payload(&rtcp, &payload, s)) + if (!(rtcp = rtcp_payload(&payload, s))) return -1; if (check_session_keys(c)) return -1; @@ -900,7 +899,7 @@ int rtcp_savp2avp(str *s, struct crypto_context *c, struct ssrc_entry_call *ssrc if (G_UNLIKELY(!ssrc_ctx)) return -1; - if (rtcp_payload(&rtcp, &payload, s)) + if (!(rtcp = rtcp_payload(&payload, s))) return -1; if (check_session_keys(c)) return -1; diff --git a/include/rtcp.h b/include/rtcp.h index e38c45d29..e92202ea8 100644 --- a/include/rtcp.h +++ b/include/rtcp.h @@ -20,7 +20,8 @@ extern struct rtcp_handler *rtcp_sink_handler; int rtcp_avp2savp(str *, struct crypto_context *, struct ssrc_entry_call *); int rtcp_savp2avp(str *, struct crypto_context *, struct ssrc_entry_call *); -int rtcp_payload(struct rtcp_packet **out, str *p, const str *s); +__attribute__((nonnull(2))) +struct rtcp_packet *rtcp_payload(str *p, const str *s); int rtcp_parse(GQueue *q, struct media_packet *); void rtcp_list_free(GQueue *q);