Why do I get connection refused or reset when using the Windows ODBC-ODBC Bridge server?

The Easysoft ODBC-ODBC Bridge server thread listens for incoming connections from ODBC-ODBC Bridge clients. Once a connection is accepted, the ODBC-ODBC Bridge server creates a new thread or process to handle the connection. During the startup phase for a new connection thread or process, the server doesn't accept other connections. Starting a new connection handler is usually very quick but to avoid new incoming connections being dropped, the server attempts to set the listen backlog queue to 20. The listen backlog queue allows the TCP/IP stack to queue incoming connections until the server is ready.

If the listen backlog queue is full, the TCP/IP stack rejects further connections, which therefore never reach the ODBC-ODBC Bridge server.

On older versions of Windows, the maximum backlog queue is 5. Because the ODBC-ODBC Bridge server is usually pretty quick at accepting connections, this low backlog value is not usually a problem. However, it does mean that multiple connection attempts in a short period of time can fill the backlog queue. This makes Windows NT Workstation, Windows 95, and Windows 98 a bad choice for a high-load ODBC-ODBC Bridge server.

The ODBC-ODBC Bridge server could use SOMAXCONN in Winsock2 to set the listen backlog queue to its maximum value (this has no effect on Windows NT Workstation, Windows 95, and Windows 98). However, large backlogs make SYN flood attacks much more effective. because the queue is non-pageable system memory.

The ODBC-ODBC Bridge client can give the backlog queue time to free up by making multiple connection attempts.