<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.E-MailFormatvorlage19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">please keep the list in CC.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Have you looked already into the ws_keepalive function? It uses another method of iterating over the ws_connection list. It iterates over a ws_connection_id list with an index variable
 and uses wsconn_get(..) to get the actual connection.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Just guessing, but maybe this method works better for you.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Henning<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">-- <o:p>
</o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Henning Westerholt –
</span><span style="mso-fareast-language:EN-US"><a href="https://skalatan.de/blog/"><span lang="EN-GB" style="color:#0563C1">https://skalatan.de/blog/</span></a></span><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Kamailio services –
</span><span style="mso-fareast-language:EN-US"><a href="https://gilawa.com/"><span lang="EN-GB" style="color:#0563C1">https://gilawa.com</span></a></span><span style="mso-fareast-language:EN-US">
<span lang="EN-GB"><o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-left:35.4pt"><b>From:</b> Andrey Deykunov <deykunov@gmail.com>
<br>
<b>Sent:</b> Monday, May 25, 2020 5:26 PM<br>
<b>To:</b> Henning Westerholt <hw@skalatan.de><br>
<b>Subject:</b> Re: [sr-dev] Fwd: RPC command to close all WS connections.<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">Hi Henning,<o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">Thanks for your response. Kamailio has crashed when one of our scripts tried getting statistics about websocket module. As I see in core dump, shared memory was previously corrupted:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">GNU </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">gdb</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> (Debian </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">7.12</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-</span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">6</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">) </span><span style="font-size:10.5pt;font-family:Consolas;color:#F44747">7.12.0.20161007</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-git<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">Copyright</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> (C) </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">2016</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> Free Software Foundation, Inc.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">License GPLv3+: GNU GPL version </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">3</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> or later <http:</span><span style="font-size:10.5pt;font-family:Consolas;color:#6A9955">//<a href="http://gnu.org/licenses/gpl.html">gnu.org/licenses/gpl.html</a>></span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">This is free software: you are free to change and redistribute it.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">There is NO WARRANTY, to the extent permitted by law.  Type </span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"show copying"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">and </span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"show warranty"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">for</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> details.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">This GDB was configured as </span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"x86_64-linux-gnu"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">Type </span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"show configuration"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">for</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> configuration details.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">For bug reporting instructions, please see:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><http:</span><span style="font-size:10.5pt;font-family:Consolas;color:#6A9955">//<a href="http://www.gnu.org/software/gdb/bugs/">www.gnu.org/software/gdb/bugs/</a>>.</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">Find the GDB manual and other documentation resources online at:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><http:</span><span style="font-size:10.5pt;font-family:Consolas;color:#6A9955">//<a href="http://www.gnu.org/software/gdb/documentation/">www.gnu.org/software/gdb/documentation/</a>>.</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">For help, type </span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"help"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">Type </span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"apropos word"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> to search </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">for</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> commands related to </span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"word"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">...<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">Reading symbols from /var/lib/ums/sbin/kamailio...done.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">[New LWP </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">7234</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">]<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">[Thread debugging using libthread_db enabled]<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">Using host libthread_db library </span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"/lib/x86_64-linux-gnu/libthread_db.so.1"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">Core was generated by `/var/lib/ums/sbin/kamailio -m </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">2048</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> -M </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">12</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> -P /var/run/kamailio/kamailio.pid -f /</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'.</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">Program terminated with signal SIGSEGV, Segmentation fault.</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#0  __strcmp_sse2_unaligned ()</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">    at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:32</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#0  __strcmp_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:32</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#1  0x00007eff2ff2e2f5 in rpc_mod_print (rpc=0x7eff2f843540 <binrpc_callbacks>, ctx=0x7ffe484adb38, mname=0x18e4aa9 "websocket", stats=0x18ffd70, flag=2) at mod_stats.c:117</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#2  0x00007eff2ff2e0eb in rpc_mod_print_one (rpc=0x7eff2f843540 <binrpc_callbacks>, ctx=0x7ffe484adb38, mname=0x18e4aa9 "websocket", pkg_stats=0x18fe3b0, shm_stats=0x18ffd70, flag=2) at mod_stats.c:159</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#3  0x00007eff2ff2dee1 in rpc_mod_mem_stats_mode (rpc=0x7eff2f843540 <binrpc_callbacks>, ctx=0x7ffe484adb38, fmode=0) at mod_stats.c:239</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#4  0x00007eff2ff2d84f in rpc_mod_mem_stats (rpc=0x7eff2f843540 <binrpc_callbacks>, ctx=0x7ffe484adb38) at mod_stats.c:251</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#5  0x00007eff2f612c80 in process_rpc_req (buf=0x18e4a94 "</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\241\003\035</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">Cw</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\274</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">L</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\221\n</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">mod.stats", size=36, bytes_needed=0x7ffe484adf80, sh=0x7ffe484adef0, saved_state=0x18f4a98) at binrpc_run.c:678</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#6  0x00007eff2f60072f in handle_stream_read (s_c=0x18e4a60, idx=-1) at io_listener.c:511</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#7  0x00007eff2f5fc121 in handle_io (fm=0x7effb341f0a0, events=1, idx=-1) at io_listener.c:706</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#8  0x00007eff2f5fa93a in io_wait_loop_epoll (h=0x7eff2f843348 <io_h>, t=10, repeat=0) at ./../../core/io_wait.h:1062</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#9  0x00007eff2f5ee62c in io_listen_loop (fd_no=2, cs_lst=0x17f9940) at io_listener.c:281</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#10 0x00007eff2f62472c in mod_child (rank=0) at ctl.c:338</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#11 0x0000000000638c14 in init_mod_child (m=0x7effb3297cd8, rank=0) at core/sr_module.c:780</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#12 0x000000000063862d in init_mod_child (m=0x7effb32983a0, rank=0) at core/sr_module.c:776</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#13 0x000000000063862d in init_mod_child (m=0x7effb3298840, rank=0) at core/sr_module.c:776</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#14 0x000000000063862d in init_mod_child (m=0x7effb3298d50, rank=0) at core/sr_module.c:776</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#15 0x000000000063862d in init_mod_child (m=0x7effb32991f0, rank=0) at core/sr_module.c:776</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#16 0x000000000063862d in init_mod_child (m=0x7effb3299968, rank=0) at core/sr_module.c:776</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#17 0x000000000063862d in init_mod_child (m=0x7effb3299fd8, rank=0) at core/sr_module.c:776</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#18 0x000000000063862d in init_mod_child (m=0x7effb329a460, rank=0) at core/sr_module.c:776</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#19 0x00000000006385b2 in init_child (rank=0) at core/sr_module.c:825</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#20 0x000000000043140c in main_loop () at main.c:1753</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">#21 0x000000000043df6f in main (argc=9, argv=0x7ffe484b22b8) at main.c:2802 </span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">I assume that 'ws.close_all' could affect this corruption because failover service uses this command after node becomes passive. Also I'm using my slightly revised variant of ws_keepalive function with KEEPALIVE_MECHANISM_CONCHECK
 enabled.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">Perhaps, something went wrong while websocket connections were removed within this function:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">void</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">ws_keepalive</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">unsigned</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">int</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">ticks</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">, </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">void</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> *</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">param</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">{<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">int</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> check_time =<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">            (</span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">int</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">)</span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">time</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">NULL</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">) - </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">cfg_get</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(websocket, ws_cfg, keepalive_timeout);<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">ws_connection_id_t</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> *list_head = </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">NULL</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">ws_connection_t</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> *wsc = </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">NULL</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">int</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> i = </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">0</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">int</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> idx = (</span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">int</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">)(</span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">long</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">)param;<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">LM_INFO</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"Keepalive tick</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\n</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#6A9955">/* get an array of pointer to all ws connection */</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    list_head = </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_get_list_ids</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(idx);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(!list_head)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">return</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">;<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">while</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">list_head</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">[i].</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">id</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">!=-</span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">1</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">) {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        wsc = </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_get</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">list_head</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">[i].</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">id</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(wsc && </span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">wsc</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-></span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">last_used</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> < check_time) {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">            </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">wsc</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-></span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">state</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> == WS_S_CLOSING || </span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">wsc</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-></span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">awaiting_pong</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">) {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">LM_WARN</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"forcibly closing connection</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\n</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_close_now</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(wsc);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">            } </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">else</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> (ws_keepalive_mechanism == KEEPALIVE_MECHANISM_CONCHECK) {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                </span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">tcp_connection_t</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> *con = </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">tcpconn_get</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">wsc</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-></span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">id</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">, </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">0</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">, </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">0</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">, </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">0</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">, </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">0</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(con==</span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">NULL</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">) {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                    </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">LM_INFO</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"tcp connection has been lost -> removing ws_conn</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\n</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                    </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_rm</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(wsc, WSCONN_EVENTROUTE_YES) < </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">0</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                        </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">LM_ERR</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"removing WebSocket connection</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\n</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                } </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">else</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                    </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> (</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">con</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-></span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">state</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> == S_CONN_BAD) {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                        </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">LM_INFO</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"tcp connection is bad and supposed to be removed</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\n</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                        </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_rm</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(wsc, WSCONN_EVENTROUTE_YES) < </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">0</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                            </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">LM_ERR</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"removing WebSocket connection</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\n</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                        </span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">con</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-></span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">send_flags</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">.</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">f</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> |= SND_F_CON_CLOSE;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                        </span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">con</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">-></span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">timeout</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> = </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">get_ticks_raw</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">();<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                    }<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                    </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">tcpconn_put</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(con);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                }<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">            } </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">else</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">int</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> opcode = (ws_keepalive_mechanism == KEEPALIVE_MECHANISM_PING)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                                 ? OPCODE_PING<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                                 : OPCODE_PONG;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">                </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">ping_pong</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(wsc, opcode);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">            }<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        }<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(wsc) {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">            </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_put_id</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">list_head</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">[i].</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">id</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        }<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        i++;<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    }<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_put_list_ids</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(list_head);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">}<o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">Andrey <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">пн, 25 мая 2020 г. в 16:18, Henning Westerholt <<a href="mailto:hw@skalatan.de">hw@skalatan.de</a>>:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
Hi Andrey,<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
 <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB">as you know, there is an RPC command ws.close() and also a script function to close sessions remotely. So, it should be certainly possible to close the sessions over RPC.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB">Not being the author of this particular module, it is hard to say why it crashes. Try the usual debugging techniques, e.g. gdb to find more clues.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB">If you have a working version, please open a pull request. In case of more questions, just ask on this list again.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB">Cheers,</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB">Henning</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB">-- </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB">Henning Westerholt – </span><a href="https://skalatan.de/blog/" target="_blank"><span lang="EN-GB" style="color:#0563C1">https://skalatan.de/blog/</span></a><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB">Kamailio services – </span><a href="https://gilawa.com/" target="_blank"><span lang="EN-GB" style="color:#0563C1">https://gilawa.com</span></a>
<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:35.4pt">
<span lang="EN-GB"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
<b>From:</b> sr-dev <<a href="mailto:sr-dev-bounces@lists.kamailio.org" target="_blank">sr-dev-bounces@lists.kamailio.org</a>>
<b>On Behalf Of </b>Andrey Deykunov<br>
<b>Sent:</b> Monday, May 18, 2020 1:02 PM<br>
<b>To:</b> Kamailio (SER) - Development Mailing List <<a href="mailto:sr-dev@lists.kamailio.org" target="_blank">sr-dev@lists.kamailio.org</a>><br>
<b>Subject:</b> [sr-dev] Fwd: RPC command to close all WS connections.<o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;margin-left:70.8pt">
 <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
---------- Forwarded message ---------<br>
От: <strong><span style="font-family:"Calibri",sans-serif">Andrey Deykunov</span></strong> <<a href="mailto:deykunov@gmail.com" target="_blank">deykunov@gmail.com</a>><br>
Date: пн, 18 мая 2020 г. в 12:24<br>
Subject: RPC command to close all WS connections.<br>
To: Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>><o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;margin-left:70.8pt">
 <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
Hi Daniel,<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
We're using two nodes (active and passive) of our PBX server in production. When an active node becomes passive, we should forcibly close all WS connections, established by clients on this node. So, I've added 'ws.close_all' command to websocket module to let
 our failover service be able closing WS connections remotely.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
I've added the following code to ws_frame.c:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">void</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">ws_rpc_close_all</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">rpc_t</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> *</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">rpc</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">, </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">void</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> *</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">ctx</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">)</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">{</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">ws_connection_t</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> **list = </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">NULL</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">, **list_head = </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">NULL</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">;</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">ws_connection_t</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> *wsc = </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">NULL</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">;</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">int</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> ret;</span><o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    list_head = </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_get_list</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">();</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">if</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(!list_head)</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">return</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">;</span><o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> </span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    list = list_head;</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    wsc = *list_head;</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">while</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(wsc) {</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">LM_WARN</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"Closing connection</span><span style="font-size:10.5pt;font-family:Consolas;color:#D7BA7D">\n</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">"</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">);</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        ret = </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">close_connection</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(&wsc, LOCAL_CLOSE, </span><span style="font-size:10.5pt;font-family:Consolas;color:#B5CEA8">1000</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">, str_status_normal_closure);</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">        wsc = *(++list);</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    }</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">    </span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">wsconn_put_list</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">(list_head);</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">}</span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
but I think this code may be unsafe and could corrupt shared memory, because I've got some segfaults during failovers after adding this command.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
What do you think? Is it possible to close connections properly and safety for shared memory?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
Andrey<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:70.8pt">
 <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</body>
</html>