TCP RST al iniciar el protocolo de enlace AMQP

TCP RST al iniciar el protocolo de enlace AMQP

Estoy ejecutando Rabbitmq-c v0.8.0 en OpenWRT (ar71xx), en un dispositivo que actúa como cliente en una LAN. El mismo sistema parece comportarse de manera diferente detrás de diferentes enrutadores.

Los problemas que veo son (esto es parte de mi código):

_socket  = amqp_tcp_socket_new( _connection );

if( _socket == NULL )
{
    log_error( "connect(): can't create a new socket");
    return false;
}

status = amqp_socket_open_noblock( _socket, _host.c_str(), _port, &_openTimeOut);

if( status  !=  AMQP_STATUS_OK  )
{
    log_error( "connect(): can't open socket: %d", status);
    return false;
}

Y aquí, no estoy seguro dependiendo de qué, el error devuelto es -13 o -9. Después de profundizar en el código de Rabbitmq-c, entiendo que estos dos códigos de retorno dependen principalmente de llamadas poll() o connect(), pero no veo cuál de los posibles casos podría estar sucediendo aquí.

Por otro lado, como mencioné, esto sucede detrás de dos enrutadores diferentes; en uno de ellos (el exitoso), veo que después de las consultas DNS para obtener la IP del host que tiene el servidor, el cliente envía TCP SYN y ACK'ed por el servidor, mientras que en el otro, el cliente envía SYN, El servidor recibe ACK y el cliente envía RST inmediatamente después, lo que podría significar que indica que está cerrando la conexión.

Me gustaría entender en qué casos un cliente Rabbitmq podría estar emitiendo un RST al servidor.

información relacionada