You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
hello.
I am testing openssl producer with heartbeat on centos7.8 and redhat9.0 x86_64 ,
version of rabbitmq-c is 0.14.0
version of openssl is 1.1.1m
the server is rabbitmq-server (RabbitMQ 3.8.19).
netstat shows the recv queue buffer memory leak.
Proto Recv-Q Send-Q
tcp 846301 0
I find the server send 32 ssize_t data but amqp_ssl_socket_recv only read 8 ssize_t data each heartbeat time.
so I add a loop to read data, it looks like the problem is solved.
but I don't know if it was done the right way or if there are other potential problems.
amqp_openssl.c
static ssize_t amqp_ssl_socket_recv(void *base, void *buf, size_t len,
AMQP_UNUSED int flags) {
struct amqp_ssl_socket_t *self = (struct amqp_ssl_socket_t *)base;
int received, tmp_received;
if (-1 == self->sockfd) {
return AMQP_STATUS_SOCKET_CLOSED;
}
/* SSL_read takes an int for length of buffer, protect against len being
* larger than larger than what SSL_read can take */
if (len > INT_MAX) {
return AMQP_STATUS_INVALID_PARAMETER;
}
ERR_clear_error();
self->internal_error = 0;
received = 0;
while (len > received)
{
tmp_received = SSL_read(self->ssl, buf + received, (int)(len - received));
if (tmp_received <= 0) {
if (0 == received) {
received = tmp_received;
}
break;
}
received += tmp_received;
}
if (0 >= received) {
self->internal_error = SSL_get_error(self->ssl, received);
switch (self->internal_error) {
case SSL_ERROR_WANT_READ:
received = AMQP_PRIVATE_STATUS_SOCKET_NEEDREAD;
break;
case SSL_ERROR_WANT_WRITE:
received = AMQP_PRIVATE_STATUS_SOCKET_NEEDWRITE;
break;
case SSL_ERROR_ZERO_RETURN:
received = AMQP_STATUS_CONNECTION_CLOSED;
break;
default:
received = AMQP_STATUS_SSL_ERROR;
break;
}
}
return (ssize_t)received;
}
The text was updated successfully, but these errors were encountered:
hello.
I am testing openssl producer with heartbeat on centos7.8 and redhat9.0 x86_64 ,
version of rabbitmq-c is 0.14.0
version of openssl is 1.1.1m
the server is rabbitmq-server (RabbitMQ 3.8.19).
netstat shows the recv queue buffer memory leak.
Proto Recv-Q Send-Q
tcp 846301 0
I find the server send 32 ssize_t data but amqp_ssl_socket_recv only read 8 ssize_t data each heartbeat time.
so I add a loop to read data, it looks like the problem is solved.
but I don't know if it was done the right way or if there are other potential problems.
amqp_openssl.c
The text was updated successfully, but these errors were encountered: