diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2013-03-19 07:39:25 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2013-03-19 07:39:25 +0000 |
commit | 7a36d0beac6c5e1253076a2b42d778fd389695e6 (patch) | |
tree | 79143a2ec1d21dae224bc77e30b94b7cc63bb443 /pjsip/src/pjsip/sip_util.c | |
parent | ba8d46d99f2952ac2831790179ec54b44b2138d2 (diff) |
Close #1645: Added run-time setting 'pjsip_cfg()->req_has_via_alias' and compile-time setting 'PJSIP_REQ_HAS_VIA_ALIAS', the default value is PJ_TRUE.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4442 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip/sip_util.c')
-rw-r--r-- | pjsip/src/pjsip/sip_util.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/pjsip/src/pjsip/sip_util.c b/pjsip/src/pjsip/sip_util.c index ed4fd9c0..411251d0 100644 --- a/pjsip/src/pjsip/sip_util.c +++ b/pjsip/src/pjsip/sip_util.c @@ -1201,6 +1201,28 @@ static void stateless_send_transport_cb( void *token, } via->rport_param = pjsip_cfg()->endpt.disable_rport ? -1 : 0; + /* Add/remove "alias" param to/from Via header on connection + * oriented/less transport, if configured. + */ + if (pjsip_cfg()->endpt.req_has_via_alias && + tdata->msg->type == PJSIP_REQUEST_MSG) + { + const pj_str_t ALIAS_STR = {"alias", 5}; + pjsip_param *alias_param; + pj_bool_t is_datagram; + + alias_param = pjsip_param_find(&via->other_param, &ALIAS_STR); + is_datagram = (stateless_data->cur_transport->flag & + PJSIP_TRANSPORT_DATAGRAM); + if (!is_datagram && !alias_param) { + alias_param = PJ_POOL_ZALLOC_T(tdata->pool, pjsip_param); + alias_param->name = ALIAS_STR; + pj_list_push_back(&via->other_param, alias_param); + } else if (is_datagram && alias_param) { + pj_list_erase(alias_param); + } + } + pjsip_tx_data_invalidate_msg(tdata); /* Send message using this transport. */ |