- Timestamp:
- Mar 19, 2013 3:51:10 AM (12 years ago)
- Location:
- pjproject/trunk/pjsip
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/include/pjsip/sip_config.h
r4285 r4441 112 112 pj_bool_t disable_tcp_switch; 113 113 114 /** 115 * Enable call media session to always be updated to the latest 116 * received early media SDP when receiving forked early media 117 * (multiple 183 responses with different To tag). 118 * 119 * Default is PJSIP_FOLLOW_EARLY_MEDIA_FORK. 120 */ 121 pj_bool_t follow_early_media_fork; 122 114 123 } endpt; 115 124 … … 293 302 294 303 /** 304 * Specify whether the call media session should be updated to the latest 305 * received early media SDP when receiving forked early media (multiple 183 306 * responses with different To tag). 307 * 308 * This option can also be controlled at run-time by the 309 * \a follow_early_media_fork setting in pjsip_cfg_t. 310 * 311 * Default is PJ_TRUE. 312 */ 313 #ifndef PJSIP_FOLLOW_EARLY_MEDIA_FORK 314 # define PJSIP_FOLLOW_EARLY_MEDIA_FORK PJ_TRUE 315 #endif 316 317 318 /** 295 319 * Accept call replace in early state when invite is not initiated 296 320 * by the user agent. RFC 3891 Section 3 disallows this, however, -
pjproject/trunk/pjsip/src/pjsip-ua/sip_inv.c
r4425 r4441 1736 1736 if (tsx_inv_data->sdp_done) { 1737 1737 pj_str_t res_tag; 1738 int st_code; 1738 1739 1739 1740 res_tag = rdata->msg_info.to->tag; 1740 1741 /* Allow final response after SDP has been negotiated in early 1742 * media, IF this response is a final response with different 1741 st_code = rdata->msg_info.msg->line.status.code; 1742 1743 /* Allow final/early response after SDP has been negotiated in early 1744 * media, IF this response is a final/early response with different 1743 1745 * tag. 1744 1746 */ 1745 1747 if (tsx->role == PJSIP_ROLE_UAC && 1746 rdata->msg_info.msg->line.status.code/100 == 2 && 1748 (st_code/100 == 2 || 1749 (st_code==183 && pjsip_cfg()->endpt.follow_early_media_fork)) && 1747 1750 tsx_inv_data->done_early && 1748 1751 pj_stricmp(&tsx_inv_data->done_tag, &res_tag)) … … 1750 1753 const pjmedia_sdp_session *reoffer_sdp = NULL; 1751 1754 1752 PJ_LOG(4,(inv->obj_name, "Received forked finalresponse "1755 PJ_LOG(4,(inv->obj_name, "Received forked %s response " 1753 1756 "after SDP negotiation has been done in early " 1754 "media. Renegotiating SDP..")); 1757 "media. Renegotiating SDP..", 1758 (st_code==183? "early" : "final" ))); 1755 1759 1756 1760 /* Retrieve original SDP offer from INVITE request */ … … 1764 1768 if (status != PJ_SUCCESS) { 1765 1769 PJ_LOG(1,(inv->obj_name, "Error updating local offer for " 1766 "forked 2xx response (err=%d)", status));1770 "forked 2xx/183 response (err=%d)", status)); 1767 1771 return status; 1768 1772 } -
pjproject/trunk/pjsip/src/pjsip/sip_config.c
r4285 r4441 30 30 0, 31 31 0, 32 PJSIP_DONT_SWITCH_TO_TCP 32 PJSIP_DONT_SWITCH_TO_TCP, 33 PJSIP_FOLLOW_EARLY_MEDIA_FORK 33 34 }, 34 35
Note: See TracChangeset
for help on using the changeset viewer.