<html 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:Verdana;
        panose-1:2 11 6 4 3 5 4 4 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;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-GB link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hello Jason,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you very much for your reply. </p><p class=MsoNormal><o:p> </o:p></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><o:p> </o:p></p><p class=MsoNormal>https://drive.google.com/open?id=1juNXd7pkI9Xryt_enjh6i2LWm3RL5iQV</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I call listen() method with QHostAddress::Any parameter value:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>m_wsServer->listen(QHostAddress::Any, m_port)</p><p class=MsoNormal><o:p> </o:p></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><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>From: </b><a href="mailto:jhihn@gmx.com">Jason H</a><br><b>Sent: </b>03 April 2019 18:23<br><b>To: </b><a href="mailto:izowiuz@gmail.com">Jakub Narolewski</a><br><b>Cc: </b><a href="mailto:interest@qt-project.org">interest@qt-project.org</a><br><b>Subject: </b>Re: [Interest] QWebSocketServer - server randomly stops acceptingconnections</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>What happens when you telnet to it?<o:p></o:p></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?<o:p></o:p></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?<o:p></o:p></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)<o:p></o:p></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?<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'> <o:p></o:p></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.<o:p></o:p></span></p></div><div style='border:none;border-left:solid #C3D9E5 1.5pt;padding:0cm 0cm 0cm 8.0pt;margin-left:7.5pt;margin-top:7.5pt;margin-right:3.75pt;margin-bottom:3.75pt;word-wrap: break-word;-webkit-nbsp-mode: space;-webkit-line-break: after-white-space' name=quote><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<o:p></o:p></span></p></div><div name=quoted-content><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>But here is the thing.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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:<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>void i9ms::Server::dumpServerStatus() const<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>{<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>                qInfo() << "[Server status]"<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>                                                << "isListening:" << m_wsServer->isListening()<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>                                                << "hasPendingConnections:" << m_wsServer->hasPendingConnections()<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>                                                << "errorString:" << m_wsServer->errorString();<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'>}<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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:<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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: ""<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:7.5pt'><span style='font-size:9.0pt;font-family:"Verdana",sans-serif'> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;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.<o:p></o:p></span></p></div></div></div></div></div><p class=MsoNormal style='mso-margin-top-alt:0cm;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><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>