<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div>So full disclosure it's been a while. But it does look like the connection was accepted by the server, the client sent 334 bytes of data and 33 seconds later the client disconnected.</div>

<div> </div>

<div>To me this would mean that the OS accepted the connection because Qt was listening on it, and Qt failed to emit incommingConnection() or  emit readyRead(). Looking at the source, this class is a very thin wrapper around QTcpServer. In the docs, it says if you have more than the maxPendingConnections() limit (30) it will start emitting errors. " QWebSocketServer will emit the error() signal with the QWebSocketProtocol::CloseCodeAbnormalDisconnection close code when the maximum of connections has been reached."</div>

<div>Given that it takes time for this to show up, this may be it. Also if you have a lot of clients, you might take a while, make sure that you socket->deleteLater()  when the connection is closed. </div>

<div> </div>

<div>I can't be sure how you are using it, but my next steps would be to:</div>

<div>- QWebSocketServer::error()</div>

<div>- make sure idle (implement your own timeout mechanism) and closed connections are deleteLater()ed.</div>

<div>- maybe maintain a list of connections and log that?</div>

<div>- Check your threading model. If you're not multithreaded maybe some previous client is blocking you? (Log incommingConnection, with object addresses)</div>

<div> </div>

<div> </div>

<div> </div>

<div> </div>

<div> 
<div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="margin:0 0 10px 0;"><b>Sent:</b> Wednesday, April 03, 2019 at 1:32 PM<br/>
<b>From:</b> "Jakub Narolewski" <izowiuz@gmail.com><br/>
<b>To:</b> "Jason H" <jhihn@gmx.com><br/>
<b>Cc:</b> "interest@qt-project.org" <interest@qt-project.org><br/>
<b>Subject:</b> RE: [Interest] QWebSocketServer - server randomly stops acceptingconnections</div>

<div name="quoted-content"><!--p.MsoNormal, li.MsoNormal, div.MsoNormal {
        margin: 0.0cm;
        font-size: 11.0pt;
        font-family: Calibri , sans-serif;
}
a:link, span.MsoHyperlink {
        color: blue;
        text-decoration: underline;
}
a:visited, span.MsoHyperlinkFollowed {
        color: rgb(149,79,114);
        text-decoration: underline;
}
*.MsoChpDefault {
}
div.WordSection1 {
        page: WordSection1;
}
-->
<div>
<div class="WordSection1">
<p class="MsoNormal">Hello Jason,</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Thank you very much for your reply.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">I’m not sure if I can / should directly attach binaries here. I’ve uploaded a wireshark dump of the connection attempt at:</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal"><a href="https://drive.google.com/open?id=1juNXd7pkI9Xryt_enjh6i2LWm3RL5iQV" target="_blank">https://drive.google.com/open?id=1juNXd7pkI9Xryt_enjh6i2LWm3RL5iQV</a></p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">I call listen() method with QHostAddress::Any parameter value:</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">m_wsServer->listen(QHostAddress::Any, m_port)</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">No proxy is used.</p>

<p class="MsoNormal">No other custom, network oriented software is running on this box. Only vanilla stuff that came post VPS provisioning.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal"> </p>

<div style="border: none;border-top: solid rgb(225,225,225) 1.0pt;padding: 3.0pt 0.0cm 0.0cm 0.0cm;">
<p class="MsoNormal" style="border: none;padding: 0.0cm;"><b>From: </b><a href="mailto:jhihn@gmx.com" onclick="parent.window.location.href='mailto:jhihn@gmx.com'; return false;" target="_blank">Jason H</a><br/>
<b>Sent: </b>03 April 2019 18:23<br/>
<b>To: </b><a href="mailto:izowiuz@gmail.com" onclick="parent.window.location.href='mailto:izowiuz@gmail.com'; return false;" target="_blank">Jakub Narolewski</a><br/>
<b>Cc: </b><a href="mailto:interest@qt-project.org" onclick="parent.window.location.href='mailto:interest@qt-project.org'; return false;" target="_blank">interest@qt-project.org</a><br/>
<b>Subject: </b>Re: [Interest] QWebSocketServer - server randomly stops acceptingconnections</p>
</div>

<p class="MsoNormal"> </p>

<p class="MsoNormal"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">What happens when you telnet to it?</span></p>

<div>
<div>
<p class="MsoNormal"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Are you getting stuff (SYN_ACK) rom the OS, is the OS resetting (RST) the connection?</span></p>
</div>

<div>
<p class="MsoNormal"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Is this listening on localhost, virtual or a physical interface?</span></p>
</div>

<div>
<p class="MsoNormal"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Linux is generally bad at power managment and networking and maybe that has something to do with it? There is/was an issue with QNetworkAccessManager which after the task got suspended, would not work anymore (I saw this mostly on mobile OSs)</span></p>
</div>

<div>
<p class="MsoNormal"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Is it proxied? i.e. behind NGINX?</span></p>
</div>

<div>
<p class="MsoNormal"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> </span></p>
</div>

<div>
<p class="MsoNormal"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Wireshark dump of a connection attemp while it's dead would really help.</span></p>
</div>

<div style="border: none;border-left: solid rgb(195,217,229) 1.5pt;padding: 0.0cm 0.0cm 0.0cm 8.0pt;margin-left: 7.5pt;margin-top: 7.5pt;margin-right: 3.75pt;margin-bottom: 3.75pt;">
<div style="margin-bottom: 7.5pt;">
<p class="MsoNormal" style="margin-left: 7.5pt;"><b><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Sent:</span></b><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> Wednesday, April 03, 2019 at 11:59 AM<br/>
<b>From:</b> "Jakub Narolewski" <izowiuz@gmail.com><br/>
<b>To:</b> "interest@qt-project.org" <interest@qt-project.org><br/>
<b>Subject:</b> [Interest] QWebSocketServer - server randomly stops accepting connections</span></p>
</div>

<div>
<div>
<div>
<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">I have this one, strange problem with QWebSocketServer that is driving me insane.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">My project is a very simple, websocket-based online game server. It uses Qt SQL modules and makes use of some light QEvent'ing.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Up until recently I used uWebSockets to drive my wss communications. To make matters simpler to me I decided to reimplement 'network' part of the application using Qt native module - QWebSocketServer.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">It generally works nice - it survives my naive fuzzing tech and cleanly integrates with Qt's event loop.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> </span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">But here is the thing.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> </span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">It randomly, without any error, stops accepting incoming connections. This is VERY hard for me to debug. It happens anywhere between 8 to about 60ish hours after I start my debian unit with systemctl and is fixed immediately when I restart it's service.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">I'm connected to every possible error related signal from QWebSocketServer interface, ssl or otherwise - nothing is emited when this happens.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">When I ssh to my server I see nominal CPU and memory usage - no leaks, infinite loops or other fun things.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">I recently used QObject's timerEvent to spam some qInfos into sys logs. I log:</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> </span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">void i9ms::Server::dumpServerStatus() const</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">{</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">                qInfo() << "[Server status]"</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">                                                << "isListening:" << m_wsServer->isListening()</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">                                                << "hasPendingConnections:" << m_wsServer->hasPendingConnections()</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">                                                << "errorString:" << m_wsServer->errorString();</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">}</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> </span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Right now, at the time of writing this message, the server is 'frozen' for about 5 hours and all I see in logs are lines:</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> </span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Apr 03 16:56:12 vps504293 mrserver_release[22148]: [info    ]         [Server status] isListening: true hasPendingConnections: false errorString: ""</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> </span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">Problem goes away when I return to uWebSockets-based wss implementation. I let the test server run on it for weeks without problems.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">I have tested this on Ubuntu 18.04.2 LTS and Debian 9 both provided 'as-is' from my VPS provider - OVH.</span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;"> </span></p>

<p class="MsoNormal" style="margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">I appreciate any feedback or help, have no idea where to go from here. I could possibly try master or 5.12.X branches but this will force me to add 'another configure step' for deployment and is not trival.</span></p>
</div>
</div>
</div>
</div>
</div>

<p class="MsoNormal" style="margin-right: 3.75pt;margin-bottom: 3.75pt;margin-left: 7.5pt;"><span style="font-size: 9.0pt;font-family: Verdana , sans-serif;">_______________________________________________ Interest mailing list Interest@qt-project.org <a href="https://lists.qt-project.org/listinfo/interest" target="_blank">https://lists.qt-project.org/listinfo/interest</a></span></p>

<p class="MsoNormal"> </p>
</div>
</div>
</div>
</div>
</div>
</div></div></body></html>