From 1dc50acfd10b48ca23e96a3311eaadec7aa40b86 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 15 Oct 2015 11:41:34 +0200 Subject: [PATCH] fix avpf attributes not set when SRTP-DTLS is used. --- coreapi/bellesip_sal/sal_sdp.c | 2 +- coreapi/sal.c | 41 +++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/coreapi/bellesip_sal/sal_sdp.c b/coreapi/bellesip_sal/sal_sdp.c index f5a55cb52..95fdd9ab6 100644 --- a/coreapi/bellesip_sal/sal_sdp.c +++ b/coreapi/bellesip_sal/sal_sdp.c @@ -331,7 +331,7 @@ static void stream_description_to_sdp ( belle_sdp_session_description_t *session } } - if ((rtp_port != 0) && ((stream->proto == SalProtoRtpAvpf) || (stream->proto == SalProtoRtpSavpf))) { + if ((rtp_port != 0) && sal_stream_description_has_avpf(stream)) { add_rtcp_fb_attributes(media_desc, md, stream); } diff --git a/coreapi/sal.c b/coreapi/sal.c index 7698e80b1..2c858298a 100644 --- a/coreapi/sal.c +++ b/coreapi/sal.c @@ -203,16 +203,51 @@ bool_t sal_stream_description_active(const SalStreamDescription *sd) { return (sd->rtp_port > 0); } +/*these are switch case, so that when a new proto is added we can't forget to modify this function*/ bool_t sal_stream_description_has_avpf(const SalStreamDescription *sd) { - return ((sd->proto == SalProtoRtpAvpf) || (sd->proto == SalProtoRtpSavpf) || (sd->proto == SalProtoUdpTlsRtpSavpf)); + switch (sd->proto){ + case SalProtoRtpAvpf: + case SalProtoRtpSavpf: + case SalProtoUdpTlsRtpSavpf: + return TRUE; + case SalProtoRtpAvp: + case SalProtoRtpSavp: + case SalProtoUdpTlsRtpSavp: + case SalProtoOther: + return FALSE; + } + return FALSE; } +/*these are switch case, so that when a new proto is added we can't forget to modify this function*/ bool_t sal_stream_description_has_srtp(const SalStreamDescription *sd) { - return ((sd->proto == SalProtoRtpSavp) || (sd->proto == SalProtoRtpSavpf)); + switch (sd->proto){ + case SalProtoRtpSavp: + case SalProtoRtpSavpf: + return TRUE; + case SalProtoRtpAvp: + case SalProtoRtpAvpf: + case SalProtoUdpTlsRtpSavpf: + case SalProtoUdpTlsRtpSavp: + case SalProtoOther: + return FALSE; + } + return FALSE; } bool_t sal_stream_description_has_dtls(const SalStreamDescription *sd) { - return ((sd->proto == SalProtoUdpTlsRtpSavp) || (sd->proto == SalProtoUdpTlsRtpSavpf)); + switch (sd->proto){ + case SalProtoUdpTlsRtpSavpf: + case SalProtoUdpTlsRtpSavp: + return TRUE; + case SalProtoRtpSavp: + case SalProtoRtpSavpf: + case SalProtoRtpAvp: + case SalProtoRtpAvpf: + case SalProtoOther: + return FALSE; + } + return FALSE; } bool_t sal_media_description_has_avpf(const SalMediaDescription *md) {