Module: sip-router Branch: pd/websocket Commit: 242920ec30af3a954f8a193d417c671a29d383b4 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=242920ec...
Author: Peter Dunkley peter.dunkley@crocodile-rcs.com Committer: Peter Dunkley peter.dunkley@crocodile-rcs.com Date: Fri Jun 29 23:05:48 2012 +0100
core: Make sure that responses to requests received on a WebSocket are sent on existing connections
- WebSocket servers cannot create connections to WebSocket clients - so this setting is essential. - It does exactly the same thing as using set_reply_no_connect() in kamailio.cfg - but this way it is always on (as it must be) for WebSockets.
---
receive.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/receive.c b/receive.c index 4426b6d..9c53e0e 100644 --- a/receive.c +++ b/receive.c @@ -172,9 +172,9 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info) /* check for the alias stuff */ #ifdef USE_TCP if (msg->via1->alias && cfg_get(tcp, tcp_cfg, accept_aliases) && - (((rcv_info->proto==PROTO_TCP) && !tcp_disable) + (((rcv_info->proto==PROTO_TCP || rcv_info->proto==PROTO_WS) && !tcp_disable) #ifdef USE_TLS - || ((rcv_info->proto==PROTO_TLS) && !tls_disable) + || ((rcv_info->proto==PROTO_TLS || rcv_info->proto==PROTO_WSS) && !tls_disable) #endif ) ){ @@ -185,7 +185,12 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info) } } #endif - + + /* Force connection reuse for responses if the message arrived on a + WebSocket */ + if (rcv_info->proto==PROTO_WS || rcv_info->proto==PROTO_WSS) + msg->rpl_send_flags.f |= SND_F_FORCE_CON_REUSE; + /* skip: */ DBG("preparing to run routing scripts...\n"); #ifdef STATS