TCP RST при инициализации рукопожатия AMQP [rabbitmq-c]

Я запускаю 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 на сервер.

0 ответов

Другие вопросы по тегам