diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-12-28 08:51:58 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-12-28 08:51:58 +0000 |
commit | c31b7e9ae914c4a79534ae6f42d4d8de8b6465e7 (patch) | |
tree | 86a1f517ced9c7045f85ce5bb7f4cda43918804e /pjmedia/src | |
parent | d70f06c72122824cbabba385d16670a763eeb277 (diff) |
Ticket #433: Failure in media negotiation when SDP contains two audio media lines (thanks Arie Velthoen)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1639 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia/errno.c | 1 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/session.c | 22 |
2 files changed, 21 insertions, 2 deletions
diff --git a/pjmedia/src/pjmedia/errno.c b/pjmedia/src/pjmedia/errno.c index c2093430..300cbd44 100644 --- a/pjmedia/src/pjmedia/errno.c +++ b/pjmedia/src/pjmedia/errno.c @@ -58,6 +58,7 @@ static const struct PJ_BUILD_ERR( PJMEDIA_SDP_EINPT, "Invalid SDP payload type in media line" ), PJ_BUILD_ERR( PJMEDIA_SDP_EINFMTP, "Invalid SDP fmtp attribute" ), PJ_BUILD_ERR( PJMEDIA_SDP_EINRTCP, "Invalid SDP rtcp attribyte" ), + PJ_BUILD_ERR( PJMEDIA_SDP_EINPROTO, "Invalid SDP media transport protocol" ), /* SDP negotiator errors. */ PJ_BUILD_ERR( PJMEDIA_SDPNEG_EINSTATE, "Invalid SDP negotiator state for operation" ), diff --git a/pjmedia/src/pjmedia/session.c b/pjmedia/src/pjmedia/session.c index d0784a69..5c283354 100644 --- a/pjmedia/src/pjmedia/session.c +++ b/pjmedia/src/pjmedia/session.c @@ -53,8 +53,9 @@ static const pj_str_t ID_VIDEO = { "video", 5}; static const pj_str_t ID_IN = { "IN", 2 }; static const pj_str_t ID_IP4 = { "IP4", 3}; static const pj_str_t ID_IP6 = { "IP6", 3}; -/*static const pj_str_t ID_RTP_AVP = { "RTP/AVP", 7 };*/ -/*static const pj_str_t ID_SDP_NAME = { "pjmedia", 7 };*/ +static const pj_str_t ID_RTP_AVP = { "RTP/AVP", 7 }; +static const pj_str_t ID_RTP_SAVP = { "RTP/SAVP", 8 }; +//static const pj_str_t ID_SDP_NAME = { "pjmedia", 7 }; static const pj_str_t ID_RTPMAP = { "rtpmap", 6 }; static const pj_str_t ID_TELEPHONE_EVENT = { "telephone-event", 15 }; @@ -180,6 +181,8 @@ PJ_DEF(pj_status_t) pjmedia_stream_info_from_sdp( return PJMEDIA_EINVALIMEDIATYPE; } + /* Transport protocol */ + /* Transport type must be equal */ if (pj_stricmp(&rem_m->desc.transport, &local_m->desc.transport) != 0) @@ -188,6 +191,21 @@ PJ_DEF(pj_status_t) pjmedia_stream_info_from_sdp( return PJMEDIA_SDPNEG_EINVANSTP; } + if (pj_stricmp(&local_m->desc.transport, &ID_RTP_AVP) == 0) { + + si->proto = PJMEDIA_TP_PROTO_RTP_AVP; + + } else if (pj_stricmp(&local_m->desc.transport, &ID_RTP_SAVP) == 0) { + + si->proto = PJMEDIA_TP_PROTO_RTP_SAVP; + + } else { + + si->proto = PJMEDIA_TP_PROTO_UNKNOWN; + return PJMEDIA_SDP_EINPROTO; + } + + /* Check address family in remote SDP */ rem_af = pj_AF_UNSPEC(); if (pj_stricmp(&rem_conn->net_type, &ID_IN)==0) { |