Browse Source

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

- Can occur when TCP connections go away without the WebSocket being
  closed properly.
Peter Dunkley 12 năm trước cách đây
mục cha
commit
c837bba9f6
1 tập tin đã thay đổi với 3 bổ sung3 xóa
  1. 3 3
      modules/websocket/ws_conn.c

+ 3 - 3
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)