I created this GDB script ``` define check_wsc while(wsc->state == WS_S_REMOVING) p wsc->id p wsc->rmticks cont end end
at 183996 b ws_conn.c:694 condition 1 wsc->state == WS_S_REMOVING set pagination off c check_wsc ``` Where I watch the process with 183996 is `WEBSOCKET TIMER`. ``` [root@ippbx-0a ~]# kamcmd ps | grep WEBSOCKET 183989 WEBSOCKET KEEPALIVE 183992 WEBSOCKET KEEPALIVE 183994 WEBSOCKET KEEPALIVE 183996 WEBSOCKET TIMER ```
Script output shows the webssocket `rmticks` always increased and timeout for `rm_delay_interval` never fired. For me that is a reason why websocket connection cannot be closed.
``` (gdb) c Continuing.
Breakpoint 1, ws_timer (ticks=78432190, param=0x0) at ws_conn.c:694 694 if(wsc->state == WS_S_REMOVING (gdb) check_wsc $1 = 541 $2 = 78432190
Breakpoint 1, ws_timer (ticks=78432191, param=0x0) at ws_conn.c:694 694 if(wsc->state == WS_S_REMOVING $13 = 541 $14 = 78432191
Breakpoint 1, ws_timer (ticks=78432192, param=0x0) at ws_conn.c:694 694 if(wsc->state == WS_S_REMOVING $25 = 541 $26 = 78432192
Breakpoint 1, ws_timer (ticks=78432193, param=0x0) at ws_conn.c:694 694 if(wsc->state == WS_S_REMOVING $37 = 541 $38 = 78432193
Breakpoint 1, ws_timer (ticks=78432194, param=0x0) at ws_conn.c:694 694 if(wsc->state == WS_S_REMOVING $49 = 541 $50 = 78432194
Breakpoint 1, ws_timer (ticks=78432195, param=0x0) at ws_conn.c:694 694 if(wsc->state == WS_S_REMOVING $61 = 541 $62 = 78432195 ```