diff --git a/daemon/jitter_buffer.c b/daemon/jitter_buffer.c index 898eb0ca8..d70b34b98 100644 --- a/daemon/jitter_buffer.c +++ b/daemon/jitter_buffer.c @@ -93,7 +93,7 @@ static int get_clock_rate(struct media_packet *mp, int payload_type) { } static struct jb_packet* get_jb_packet(struct media_packet *mp, const str *s) { - if (rtp_payload(&mp->rtp, &mp->payload, s)) + if (!(mp->rtp = rtp_payload(&mp->payload, s))) return NULL; char *buf = bufferpool_alloc(media_bufferpool, s->len + RTP_BUFFER_HEAD_ROOM + RTP_BUFFER_TAIL_ROOM); diff --git a/daemon/media_socket.c b/daemon/media_socket.c index 39273ff5a..b34137900 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -2320,7 +2320,7 @@ static void media_packet_rtp_in(struct packet_handler_ctx *phc) const char *unkern = NULL; - if (G_LIKELY(!phc->rtcp && !rtp_payload(&phc->mp.rtp, &phc->mp.payload, &phc->s))) { + if (G_LIKELY(!phc->rtcp && (phc->mp.rtp = rtp_payload(&phc->mp.payload, &phc->s)))) { unkern = __stream_ssrc_in(phc->in_srtp, phc->mp.rtp->ssrc, &phc->mp.ssrc_in, &phc->mp.media->ssrc_hash_in); diff --git a/daemon/rtp.c b/daemon/rtp.c index e12181b9f..874c9c9da 100644 --- a/daemon/rtp.c +++ b/daemon/rtp.c @@ -109,7 +109,7 @@ int rtp_avp2savp(str *s, struct crypto_context *c, struct ssrc_entry_call *ssrc_ if (G_UNLIKELY(!ssrc_ctx)) return -1; - if (rtp_payload(&rtp, &payload, s)) + if (!(rtp = rtp_payload(&payload, s))) return -1; if (check_session_keys(c)) return -1; @@ -149,7 +149,7 @@ int rtp_update_index(str *s, struct packet_stream *ps, struct ssrc_entry_call *s if (G_UNLIKELY(!ssrc)) return -1; - if (rtp_payload(&rtp, NULL, s)) + if (!(rtp = rtp_payload(NULL, s))) return -1; g_autoptr(crypto_debug_string) cds = NULL; packet_index(ssrc, rtp, &cds); @@ -165,7 +165,7 @@ int rtp_savp2avp(str *s, struct crypto_context *c, struct ssrc_entry_call *ssrc_ if (G_UNLIKELY(!ssrc_ctx)) return -1; - if (rtp_payload(&rtp, &payload, s)) + if (!(rtp = rtp_payload(&payload, s))) return -1; if (check_session_keys(c)) return -1; diff --git a/lib/rtplib.c b/lib/rtplib.c index 028e23418..909efa0c3 100644 --- a/lib/rtplib.c +++ b/lib/rtplib.c @@ -59,7 +59,7 @@ const int num_rfc_rtp_payload_types = G_N_ELEMENTS(rfc_rtp_payload_types); -int rtp_payload(struct rtp_header **out, str *p, const str *s) { +struct rtp_header *rtp_payload(str *p, const str *s) { struct rtp_header *rtp; struct rtp_extension *ext; const char *err; @@ -74,7 +74,7 @@ int rtp_payload(struct rtp_header **out, str *p, const str *s) { goto error; if (!p) - goto done; + return rtp; *p = *s; /* fixed header */ @@ -95,14 +95,11 @@ int rtp_payload(struct rtp_header **out, str *p, const str *s) { goto error; } -done: - *out = rtp; - - return 0; + return rtp; error: ilog(LOG_DEBUG | LOG_FLAG_LIMIT, "Error parsing RTP header: %s", err); - return -1; + return NULL; } diff --git a/lib/rtplib.h b/lib/rtplib.h index cc2e59450..8e7c54830 100644 --- a/lib/rtplib.h +++ b/lib/rtplib.h @@ -127,7 +127,8 @@ extern const struct rtp_payload_type rfc_rtp_payload_types[]; extern const int num_rfc_rtp_payload_types; -int rtp_payload(struct rtp_header **out, str *p, const str *s); +__attribute__((nonnull(2))) +struct rtp_header *rtp_payload(str *p, const str *s); int rtp_padding(const struct rtp_header *header, str *payload); const struct rtp_payload_type *rtp_get_rfc_payload_type(unsigned int type); const struct rtp_payload_type *rtp_get_rfc_codec(const str *codec); diff --git a/recording-daemon/packet.c b/recording-daemon/packet.c index 77be65b62..b76bf062d 100644 --- a/recording-daemon/packet.c +++ b/recording-daemon/packet.c @@ -184,7 +184,7 @@ void packet_process(stream_t *stream, unsigned char *buf, unsigned len) { if (rtcp_demux_is_rtcp(&bufstr)) goto ignore; // for now - if (rtp_payload(&packet->rtp, &packet->payload, &bufstr)) + if (!(packet->rtp = rtp_payload(&packet->payload, &bufstr))) goto err; if (rtp_padding(packet->rtp, &packet->payload)) goto err;