Subject [firebird-support] TCP connection issue
Author Paul Beach
<<The firebird log file on a newly installed machine shows the following

MAIN-PC Fri Jan 09 15:01:03 2015
INET/inet_error: read errno = 10054

MAIN-PC Fri Jan 09 15:01:04 2015
Unable to complete network request to host "Main-PC".
Error reading data from the connection.

This has happened a couple of times today, once in the morning and one
in the afternoon, with one of the client PCs reporting an ISC error this
morning but no error shown in the afternoon.

I have checked the system (Windows 7) event log and their doesn't appear
to be any errors. The system is running the standard windows Firewall
and windows defender (no other security apps).

Does anyone have any suggestions of where to look next?>>

INET/inet_error: read errno = 10054
WSAECONNRESET 10054 Connection reset by peer.

An existing connection was forcibly closed by the remote host. This normally results if the peer application on the remote host is
suddenly stopped, the host is rebooted, the host or remote network interface is disabled, or the remote host uses a hard close (see
setsockopt for more information on the SO_LINGER option on the remote socket).

This error may also result if a connection was broken due to keep-alive activity detecting a failure while one or more operations
are in progress. Operations that were in progress fail with WSAENETRESET. Subsequent operations fail with WSAECONNRESET.
This happens if a sockets client is actively sending or receiving data to or from a Firebird Server, and the network connection is
lost. If a client crashes or a network error occurs (for example, an intermediate router goes down), the server has no way of
knowing this, unless it tries to use send(). In this case send fails with the WSAECONNRESET error.

How does an application know that the remote end has terminated the connection? The answer depends on whether the remote end
terminated the connection gracefully or abortively. If the termination was abortive, then send() and recv() calls will fail with the
So, in simpler terms the socket that is the end point of the other connection has gone. Either the Firebird server has crashed, or
the application using the Firebird client has disconnected abnormally (the application may also have crashed). You need to make a
new connection, as the existing connection(s) can no longer be used. If these are infrequent, there is probably nothing to worry
about, a client may have rebooted their system, or has been turned off without disconnecting from the database server. However if
they are frequent, then you need to look at what may be causing the disconnections, either in the application or on the network.

Paul Beach
Tel (France): +33 (0) 2 47 58 30 43
Mob (France): +33 (0) 6 79 24 32 32