We continue to look into these half open connections. It appears that for some reason some packets get dropped for some users during the connection cleanup. Essentially closing a connection involves various stages at which both the client and the server exchange various packets (FIN, ACK) to close the connection gracefully at both ends. Our server is sending the correct replies to close requests according to our packet logs, but these replies never arrive at the affected user's system according to packet dumps created by affected users. This usually indicates that something in between the client and the server is dropping these packets. Since there are dozens of different routers involved on the way from our server to the client, which are often operated by different companies, the error finding process has been extremely slow and tedious. The half open connections shouldn't affect anyone though. There is no traffic going through these connections. They just occupy a few bytes of RAM until they eventually time out and are cleaned up by the operating system.