summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjmedia/src/pjmedia/sdp_neg.c13
-rw-r--r--tests/pjsua/scripts-sendto/126_sdp_with_port_0_and_no_rtpmap_for_dynamic_pt.py26
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)
+