Changeset 4985
- Timestamp:
- Mar 2, 2015 3:04:19 AM (10 years ago)
- Location:
- pjproject/trunk/pjsip
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/include/pjsip-ua/sip_inv.h
r4653 r4985 411 411 void *mod_data[PJSIP_MAX_MODULE];/**< Modules data. */ 412 412 struct pjsip_timer *timer; /**< Session Timers. */ 413 pj_bool_t following_fork; /**< Internal, following 414 forked media? */ 413 415 }; 414 416 -
pjproject/trunk/pjsip/src/pjsip-ua/sip_inv.c
r4975 r4985 1895 1895 } 1896 1896 1897 /* Initialize info that we are following forked media */ 1898 inv->following_fork = PJ_FALSE; 1899 1897 1900 /* MUST NOT do multiple SDP offer/answer in a single transaction, 1898 1901 * EXCEPT if: … … 1947 1950 return status; 1948 1951 } 1952 1953 inv->following_fork = PJ_TRUE; 1949 1954 1950 1955 } else { -
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c
r4980 r4985 2691 2691 pjmedia_transport_info tp_info; 2692 2692 pjmedia_srtp_info *srtp_info; 2693 2694 if (call->inv->following_fork) { 2695 /* Normally media transport will automatically restart 2696 * itself (if needed, based on info from the SDP) in 2697 * pjmedia_transport_media_start(), however in "following 2698 * forked media" case (see #1644), we need to explicitly 2699 * restart it as it cannot detect fork scenario from 2700 * the SDP only. 2701 */ 2702 status = pjmedia_transport_media_stop(call_med->tp); 2703 if (status != PJ_SUCCESS) { 2704 PJ_PERROR(1,(THIS_FILE, status, 2705 "pjmedia_transport_media_stop() failed " 2706 "for call_id %d media %d", 2707 call_id, mi)); 2708 continue; 2709 } 2710 status = pjmedia_transport_media_create(call_med->tp, 2711 tmp_pool, 2712 0, NULL, mi); 2713 if (status != PJ_SUCCESS) { 2714 PJ_PERROR(1,(THIS_FILE, status, 2715 "pjmedia_transport_media_create() failed " 2716 "for call_id %d media %d", 2717 call_id, mi)); 2718 continue; 2719 } 2720 } 2693 2721 2694 2722 /* Start/restart media transport based on info in SDP */
Note: See TracChangeset
for help on using the changeset viewer.