It is superserver. I tried to skim the source code - tha call stack is:
INET_analyze INET_connect send_full(port, packet) xdr_protocol(&port->port_send, packet) / bool_t xdr_protocol(XDR* xdrs, PACKET* p) case op_connect: { connect = &p->p_cnct; //is this really some function call? Function with name/address p_cnct? So - the call packet->p_cnct determines all. I hoped to narrow down the call stack to the single socket operation from which I could deduce the result of packet->p_operation (the full list of possible values are in the protocol.h P_OP enumeration) but at present I can not do it. My understanding is that p_cnct is expanded further and the resulting determination of the value of p_operation involves both technical (e.g. connectivity issues) and logical (e.g. some kind of processing of connection data done by Firebird server) factors, so I can not rely that those factors would be logged in some journals of the operating system. I see that xdr_protocol involved DEBUG_XDR_PACKET(xdrs, p); i.e. I could catch the error using the debug relesae of the server/client... But I am not user whether I can put debug release in the production environment...