AMQP 핸드셰이크 시작 시 TCP RST 입력

AMQP 핸드셰이크 시작 시 TCP RST 입력

저는 LAN에서 클라이언트 역할을 하는 장치의 OpenWRT(ar71xx)에서 Rabbitmq-c v0.8.0을 실행하고 있습니다. 동일한 시스템이 라우터마다 다르게 동작하는 것 같습니다.

내가 보고 있는 문제는 다음과 같습니다(이것은 내 코드의 일부입니다).

_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 또는 -9인지 확실하지 않습니다. Rabbitmq-c 코드를 자세히 살펴본 후 이 두 반환 코드가 주로 poll() 또는 connect() 호출에 의존한다는 것을 알았지만 여기서는 어떤 경우가 발생할 수 있는지 알 수 없습니다.

반면에 앞서 언급했듯이 이는 두 개의 서로 다른 라우터 뒤에서 발생합니다. 그 중 하나(성공적인 것)에서는 서버가 가지고 있는 호스트 IP를 얻기 위한 DNS 쿼리 후에 클라이언트가 서버에 의해 TCP SYN 및 ACK'을 보내는 반면, 다른 하나에서는 클라이언트가 SYN을 보내는 것을 볼 수 있습니다. 서버 ACK와 클라이언트는 바로 직후에 RST를 보냅니다. 이는 연결을 닫고 있음을 의미할 수 있습니다.

Rabbitmq 클라이언트가 서버에 RST를 발행할 수 있는 경우를 이해하고 싶습니다.

관련 정보