diff options
author | Liong Sauw Ming <ming@teluu.com> | 2012-06-20 10:39:05 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2012-06-20 10:39:05 +0000 |
commit | 8f176cf7c8af5c681b7b616500b6eb32adb28887 (patch) | |
tree | b4aba22b23c9d59115b0f190e161933c05f6d667 /pjsip/src/pjsip-ua | |
parent | 253bf3c598087e7d4b11d0c0cb3940551becfcdc (diff) |
Fixed #1537: Via rewrite: putting the right IP address in Via sent-by for outgoing requests
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4173 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip-ua')
-rw-r--r-- | pjsip/src/pjsip-ua/sip_reg.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/pjsip/src/pjsip-ua/sip_reg.c b/pjsip/src/pjsip-ua/sip_reg.c index c02c17bb..2bbc81b9 100644 --- a/pjsip/src/pjsip-ua/sip_reg.c +++ b/pjsip/src/pjsip-ua/sip_reg.c @@ -90,6 +90,8 @@ struct pjsip_regc pj_uint32_t delay_before_refresh; pjsip_route_hdr route_set; pjsip_hdr hdr_list; + pjsip_host_port via_addr; + const void *via_tp; /* Authorization sessions. */ pjsip_auth_clt_sess auth_sess; @@ -808,6 +810,21 @@ static void schedule_registration ( pjsip_regc *regc, pj_int32_t expiration ) } } +PJ_DEF(pj_status_t) pjsip_regc_set_via_sent_by( pjsip_regc *regc, + pjsip_host_port *via_addr, + pjsip_transport *via_tp) +{ + PJ_ASSERT_RETURN(regc, PJ_EINVAL); + + if (!via_addr) + pj_bzero(®c->via_addr, sizeof(regc->via_addr)); + else + regc->via_addr = *via_addr; + regc->via_tp = via_tp; + + return PJ_SUCCESS; +} + PJ_DEF(pj_status_t) pjsip_regc_set_delay_before_refresh( pjsip_regc *regc, pj_uint32_t delay ) @@ -1262,6 +1279,12 @@ PJ_DEF(pj_status_t) pjsip_regc_send(pjsip_regc *regc, pjsip_tx_data *tdata) */ pjsip_tx_data_add_ref(tdata); + /* If via_addr is set, use this address for the Via header. */ + if (regc->via_addr.host.slen > 0) { + tdata->via_addr = regc->via_addr; + tdata->via_tp = regc->via_tp; + } + /* Need to unlock the regc temporarily while sending the message to * prevent deadlock (https://trac.pjsip.org/repos/ticket/1247). * It should be safe to do this since the regc's refcount has been |