diff options
-rw-r--r-- | pjmedia/src/pjmedia/sdp_neg.c | 13 | ||||
-rw-r--r-- | tests/pjsua/scripts-sendto/126_sdp_with_port_0_and_no_rtpmap_for_dynamic_pt.py | 26 |
2 files changed, 35 insertions, 4 deletions
diff --git a/pjmedia/src/pjmedia/sdp_neg.c b/pjmedia/src/pjmedia/sdp_neg.c index 9c4e9cfa..6ce097e3 100644 --- a/pjmedia/src/pjmedia/sdp_neg.c +++ b/pjmedia/src/pjmedia/sdp_neg.c @@ -1006,6 +1006,15 @@ static pj_status_t match_offer(pj_pool_t *pool, const pjmedia_sdp_media *master, *slave; pj_str_t pt_amr_need_adapt = {NULL, 0}; + /* If offer has zero port, just clone the offer and update direction */ + if (offer->desc.port == 0) { + answer = pjmedia_sdp_media_clone(pool, offer); + remove_all_media_directions(answer); + update_media_direction(pool, offer, answer); + *p_answer = answer; + return PJ_SUCCESS; + } + /* Set master/slave negotiator based on prefer_remote_codec_order. */ if (prefer_remote_codec_order) { master = offer; @@ -1218,10 +1227,6 @@ static pj_status_t match_offer(pj_pool_t *pool, } answer->desc.fmt_count = pt_answer_count; - /* If offer has zero port, set our answer with zero port too */ - if (offer->desc.port == 0) - answer->desc.port = 0; - /* Update media direction. */ update_media_direction(pool, offer, answer); diff --git a/tests/pjsua/scripts-sendto/126_sdp_with_port_0_and_no_rtpmap_for_dynamic_pt.py b/tests/pjsua/scripts-sendto/126_sdp_with_port_0_and_no_rtpmap_for_dynamic_pt.py new file mode 100644 index 00000000..a79a4138 --- /dev/null +++ b/tests/pjsua/scripts-sendto/126_sdp_with_port_0_and_no_rtpmap_for_dynamic_pt.py @@ -0,0 +1,26 @@ +# $Id$ +import inc_sip as sip +import inc_sdp as sdp + +sdp = \ +""" +v=0 +o=- 0 0 IN IP4 127.0.0.1 +s=- +c=IN IP4 127.0.0.1 +t=0 0 +m=video 0 RTP/AVP 100 +m=audio 5000 RTP/AVP 0 +""" + +pjsua_args = "--null-audio --auto-answer 200" +extra_headers = "" +include = ["Content-Type: application/sdp", # response must include SDP + "m=audio [1-9]+[0-9]* RTP/AVP[\\s\\S]+m=video 0 RTP/AVP" + ] +exclude = [] + +sendto_cfg = sip.SendtoCfg("SDP media with port 0 and no rtpmap for dynamic PT", pjsua_args, sdp, 200, + extra_headers=extra_headers, + resp_inc=include, resp_exc=exclude) + |