[sr-dev] git:pd/websocket: core: Make sure that responses to requests received on a WebSocket are sent on existing connections

Peter Dunkley peter.dunkley at crocodile-rcs.com
Sat Jun 30 00:11:56 CEST 2012


Module: sip-router
Branch: pd/websocket
Commit: 242920ec30af3a954f8a193d417c671a29d383b4
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=242920ec30af3a954f8a193d417c671a29d383b4

Author: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley at 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




More information about the sr-dev mailing list