summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip/sip_util.c
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2013-03-19 07:39:25 +0000
committerNanang Izzuddin <nanang@teluu.com>2013-03-19 07:39:25 +0000
commit7a36d0beac6c5e1253076a2b42d778fd389695e6 (patch)
tree79143a2ec1d21dae224bc77e30b94b7cc63bb443 /pjsip/src/pjsip/sip_util.c
parentba8d46d99f2952ac2831790179ec54b44b2138d2 (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.c22
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. */