From 9186b3bb6fb61862a1c0ff69378dd5e9c26e436f Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 11 Apr 2013 14:25:46 +0200 Subject: [PATCH] check stream direction in session description --- coreapi/bellesip_sal/sal_sdp.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/coreapi/bellesip_sal/sal_sdp.c b/coreapi/bellesip_sal/sal_sdp.c index a0586e824..2f1b763f0 100644 --- a/coreapi/bellesip_sal/sal_sdp.c +++ b/coreapi/bellesip_sal/sal_sdp.c @@ -168,7 +168,7 @@ int sdp_to_media_description(belle_sdp_session_description_t *session_desc, Sal int valid_count = 0; char tmp[256], tmp2[256]; int nb=0; - + SalStreamDir stream_dir=SalStreamSendRecv; desc->n_active_streams = 0; desc->n_total_streams = 0; @@ -178,6 +178,18 @@ int sdp_to_media_description(belle_sdp_session_description_t *session_desc, Sal if (belle_sdp_session_description_get_bandwidth(session_desc,"AS") >0) { desc->bandwidth=belle_sdp_session_description_get_bandwidth(session_desc,"AS"); } + /*in some very rare case, session attribute may set stream dir*/ + if (belle_sdp_session_description_get_attribute(session_desc,"sendrecv")) { + stream_dir=SalStreamSendRecv; + } else if (belle_sdp_session_description_get_attribute(session_desc,"sendonly")) { + stream_dir=SalStreamSendOnly; + } else if (belle_sdp_session_description_get_attribute(session_desc,"recvonly")) { + stream_dir=SalStreamRecvOnly; + } else if (belle_sdp_session_description_get_attribute(session_desc,"inactive")) { + stream_dir=SalStreamInactive; + } + + for(media_desc_it=belle_sdp_session_description_get_media_descriptions(session_desc) ;media_desc_it!=NULL ;media_desc_it=media_desc_it->next) { @@ -229,7 +241,7 @@ int sdp_to_media_description(belle_sdp_session_description_t *session_desc, Sal } else if (belle_sdp_media_description_get_attribute(media_desc,"inactive")) { stream->dir=SalStreamInactive; } else { - stream->dir=SalStreamSendRecv; + stream->dir=stream_dir; /*takes default value if not present*/ } /* for each payload type */