summaryrefslogtreecommitdiff
path: root/res/res_pjsip_transport_websocket.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2014-08-24 18:53:06 +0000
committerJoshua Colp <jcolp@digium.com>2014-08-24 18:53:06 +0000
commit3592d4b39806ec581ab5995bd156fd987c759156 (patch)
tree91e1b668b5e97371bff2dde36a9e941137e6c48f /res/res_pjsip_transport_websocket.c
parent6fa02d1bfda4d18a8e06c722409b1027553187c5 (diff)
res_pjsip_transport_websocket: Ensure secure Websocket clients can be called.
This change enforces the transport in the Contact header for Websocket clients. Previously a client may provide a transport of 'ws' when it is actually using a transport of 'wss'. This would cause outgoing calls to fail as the existing connection could not be found. ........ Merged revisions 421931 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@421932 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_pjsip_transport_websocket.c')
-rw-r--r--res/res_pjsip_transport_websocket.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/res/res_pjsip_transport_websocket.c b/res/res_pjsip_transport_websocket.c
index 38b1071e2..92e018d38 100644
--- a/res/res_pjsip_transport_websocket.c
+++ b/res/res_pjsip_transport_websocket.c
@@ -300,6 +300,8 @@ static void websocket_cb(struct ast_websocket *session, struct ast_variable *par
*/
static pj_bool_t websocket_on_rx_msg(pjsip_rx_data *rdata)
{
+ static const pj_str_t STR_WS = { "ws", 2 };
+ static const pj_str_t STR_WSS = { "wss", 3 };
pjsip_contact_hdr *contact;
long type = rdata->tp_info.transport->key.type;
@@ -314,6 +316,7 @@ static pj_bool_t websocket_on_rx_msg(pjsip_rx_data *rdata)
pj_cstr(&uri->host, rdata->pkt_info.src_name);
uri->port = rdata->pkt_info.src_port;
+ pj_strdup(rdata->tp_info.pool, &uri->transport_param, (type == (long)transport_type_ws) ? &STR_WS : &STR_WSS);
}
rdata->msg_info.via->rport_param = 0;