Subject | Re: How to troubleshoot "connection rejected by remote interface" error? Something has got wrong... |
---|---|
Author | |
Post date | 2019-01-09T14:26:06Z |
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?
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...