Changeset 5493 for pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c
- Timestamp:
- Dec 6, 2016 11:23:39 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c
r5492 r5493 570 570 { 571 571 opt->flag &= ~(PJSUA_CALL_UNHOLD | PJSUA_CALL_UPDATE_CONTACT | 572 PJSUA_CALL_NO_SDP_OFFER | PJSUA_CALL_REINIT_MEDIA); 572 PJSUA_CALL_NO_SDP_OFFER | PJSUA_CALL_REINIT_MEDIA | 573 PJSUA_CALL_UPDATE_VIA); 573 574 } 574 575 … … 637 638 638 639 return PJ_SUCCESS; 640 } 641 642 static void dlg_set_via(pjsip_dialog *dlg, pjsua_acc *acc) 643 { 644 if (acc->cfg.allow_via_rewrite && acc->via_addr.host.slen > 0) { 645 pjsip_dlg_set_via_sent_by(dlg, &acc->via_addr, acc->via_tp); 646 } else if (!pjsua_sip_acc_is_using_stun(acc->index)) { 647 /* Choose local interface to use in Via if acc is not using 648 * STUN. See https://trac.pjsip.org/repos/ticket/1804 649 */ 650 pjsip_host_port via_addr; 651 const void *via_tp; 652 653 if (pjsua_acc_get_uac_addr(acc->index, dlg->pool, &acc->cfg.id, 654 &via_addr, NULL, NULL, 655 &via_tp) == PJ_SUCCESS) 656 { 657 pjsip_dlg_set_via_sent_by(dlg, &via_addr, 658 (pjsip_transport*)via_tp); 659 } 660 } 639 661 } 640 662 … … 778 800 pjsip_dlg_inc_lock(dlg); 779 801 780 if (acc->cfg.allow_via_rewrite && acc->via_addr.host.slen > 0) { 781 pjsip_dlg_set_via_sent_by(dlg, &acc->via_addr, acc->via_tp); 782 } else if (!pjsua_sip_acc_is_using_stun(acc_id)) { 783 /* Choose local interface to use in Via if acc is not using 784 * STUN. See https://trac.pjsip.org/repos/ticket/1804 785 */ 786 pjsip_host_port via_addr; 787 const void *via_tp; 788 789 if (pjsua_acc_get_uac_addr(acc_id, dlg->pool, &acc->cfg.id, 790 &via_addr, NULL, NULL, 791 &via_tp) == PJ_SUCCESS) 792 { 793 pjsip_dlg_set_via_sent_by(dlg, &via_addr, 794 (pjsip_transport*)via_tp); 795 } 796 } 802 dlg_set_via(dlg, acc); 797 803 798 804 /* Calculate call's secure level */ … … 2500 2506 } 2501 2507 2508 if ((options & PJSUA_CALL_UPDATE_VIA) && 2509 pjsua_acc_is_valid(call->acc_id)) 2510 { 2511 dlg_set_via(call->inv->dlg, &pjsua_var.acc[call->acc_id]); 2512 } 2513 2502 2514 /* Create re-INVITE with new offer */ 2503 2515 status = pjsip_inv_reinvite( call->inv, new_contact, sdp, &tdata); … … 2621 2633 } 2622 2634 2635 if ((call->opt.flag & PJSUA_CALL_UPDATE_VIA) && 2636 pjsua_acc_is_valid(call->acc_id)) 2637 { 2638 dlg_set_via(call->inv->dlg, &pjsua_var.acc[call->acc_id]); 2639 } 2640 2623 2641 /* Create re-INVITE with new offer */ 2624 2642 status = pjsip_inv_reinvite( call->inv, new_contact, sdp, &tdata); … … 2728 2746 { 2729 2747 new_contact = &pjsua_var.acc[call->acc_id].contact; 2748 } 2749 2750 if ((call->opt.flag & PJSUA_CALL_UPDATE_VIA) && 2751 pjsua_acc_is_valid(call->acc_id)) 2752 { 2753 dlg_set_via(call->inv->dlg, &pjsua_var.acc[call->acc_id]); 2730 2754 } 2731 2755
Note: See TracChangeset
for help on using the changeset viewer.