Я запускаю rabbitmq-c v0.8.0 на OpenWRT (ar71xx) на устройстве, действующем как клиент в локальной сети. Одна и та же система ведет себя по-разному за разными маршрутизаторами.
Я вижу следующие проблемы (это часть моего кода):
_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;
}
И здесь, не уверен в зависимости от чего, возвращается ошибка -13 o -9. Покопавшись в коде rabbitmq-c, я понял, что эти два кода возврата в основном полагаются на вызовы poll () или connect (), но я не вижу, какой из возможных случаев может здесь произойти.
С другой стороны, как я уже упоминал, это происходит за двумя разными маршрутизаторами; в одном из них (успешном) я вижу, что после DNS-запросов для получения IP-адреса хоста, который имеет сервер, клиент отправляет TCP SYN и ACK, подтвержденный сервером, в то время как в другом клиент отправляет SYN, серверные ACK и клиент отправляет RST сразу после этого, что может означать, что он закрывает соединение.
Я хотел бы понять, в каких случаях клиент rabbitmq может отправлять RST на сервер.