
Estou executando o RabbitMQ-C v0.8.0 em um OpenWRT (ar71xx), em um dispositivo que atua como cliente em uma LAN. O mesmo sistema parece se comportar de maneira diferente em roteadores diferentes.
Os problemas que estou vendo são (isso faz parte do meu 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;
}
E aqui, não tenho certeza dependendo do que, o erro retornado é -13 ou -9. Depois de me aprofundar no código RabbitMQ-C, entendo que esses dois códigos de retorno dependem principalmente de chamadas poll() ou connect(), mas não consigo ver qual dos casos possíveis pode estar acontecendo aqui.
Por outro lado, como mencionei, isso acontece atrás de dois roteadores diferentes; em um deles (o bem-sucedido), vejo que após as consultas DNS para obter o IP do host que o servidor possui, o cliente envia TCP SYN e ACK'ed pelo servidor, enquanto no outro o cliente envia SYN, os ACKs do servidor e o cliente enviam o RST logo em seguida, o que pode significar que indica que está fechando a conexão.
Gostaria de entender em quais casos um cliente RabbitMQ poderia estar emitindo um RST para o servidor.