[sr-dev] git:master: modules/websocket: Fixed resource leak and infinite loop in websocket module

Peter Dunkley peter.dunkley at crocodile-rcs.com
Thu Dec 13 12:59:48 CET 2012


Module: sip-router
Branch: master
Commit: c837bba9f6808141e6d23daaecdea06fee39fa8a
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c837bba9f6808141e6d23daaecdea06fee39fa8a

Author: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Date:   Thu Dec 13 11:58:34 2012 +0000

modules/websocket: Fixed resource leak and infinite loop in websocket module

- Can occur when TCP connections go away without the WebSocket being
  closed properly.

---

 modules/websocket/ws_conn.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/modules/websocket/ws_conn.c b/modules/websocket/ws_conn.c
index dde1e25..0adde39 100644
--- a/modules/websocket/ws_conn.c
+++ b/modules/websocket/ws_conn.c
@@ -316,6 +316,9 @@ void wsconn_close_now(ws_connection_t *wsc)
 {
 	struct tcp_connection *con = tcpconn_get(wsc->id, 0, 0, 0, 0);
 
+	if (wsconn_rm(wsc, WSCONN_EVENTROUTE_YES) < 0)
+		LM_ERR("removing WebSocket connection\n");
+
 	if (con == NULL)
 	{
 		LM_ERR("getting TCP/TLS connection\n");
@@ -325,9 +328,6 @@ void wsconn_close_now(ws_connection_t *wsc)
 	con->send_flags.f |= SND_F_CON_CLOSE;
 	con->state = S_CONN_BAD;
 	con->timeout = get_ticks_raw();
-
-	if (wsconn_rm(wsc, WSCONN_EVENTROUTE_YES) < 0)
-		LM_ERR("removing WebSocket connection\n");
 }
 
 ws_connection_t *wsconn_get(int id)




More information about the sr-dev mailing list