mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-13 07:45:26 +00:00
FS-10833: [mod_amqp] memory leak on reconnection attempt to RabbitMQ broker
Memory leak happening during reconnection attempt after connectivity loss with RabbitMQ broker. With these changes, memory leak issue has been addressed and the object has been properly freed.
This commit is contained in:
parent
e99fa26257
commit
d311a06a83
@ -109,7 +109,7 @@ switch_status_t mod_amqp_connection_open(mod_amqp_connection_t *connections, mod
|
||||
|
||||
if (!(socket = amqp_tcp_socket_new(newConnection))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not create TCP socket\n");
|
||||
return SWITCH_STATUS_GENERR;
|
||||
goto err;
|
||||
}
|
||||
|
||||
connection_attempt = connections;
|
||||
@ -130,7 +130,7 @@ switch_status_t mod_amqp_connection_open(mod_amqp_connection_t *connections, mod
|
||||
|
||||
if (!connection_attempt) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Profile[%s] could not connect to any AMQP brokers\n", profile_name);
|
||||
return SWITCH_STATUS_GENERR;
|
||||
goto err;
|
||||
}
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Profile[%s] opened socket connection to AMQP broker %s:%d\n",
|
||||
@ -150,13 +150,15 @@ switch_status_t mod_amqp_connection_open(mod_amqp_connection_t *connections, mod
|
||||
if (mod_amqp_log_if_amqp_error(status, "Logging in")) {
|
||||
mod_amqp_connection_close(*active);
|
||||
*active = NULL;
|
||||
return SWITCH_STATUS_GENERR;
|
||||
goto err;
|
||||
}
|
||||
|
||||
// Open a channel (1). This is fairly standard
|
||||
amqp_channel_open(newConnection, 1);
|
||||
if (mod_amqp_log_if_amqp_error(amqp_get_rpc_reply(newConnection), "Opening channel")) {
|
||||
return SWITCH_STATUS_GENERR;
|
||||
mod_amqp_connection_close(*active);
|
||||
*active = NULL;
|
||||
goto err;
|
||||
}
|
||||
|
||||
(*active)->state = newConnection;
|
||||
@ -166,6 +168,12 @@ switch_status_t mod_amqp_connection_open(mod_amqp_connection_t *connections, mod
|
||||
}
|
||||
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
|
||||
err:
|
||||
if (newConnection) {
|
||||
amqp_destroy_connection(newConnection);
|
||||
}
|
||||
return SWITCH_STATUS_GENERR;
|
||||
}
|
||||
|
||||
switch_status_t mod_amqp_connection_create(mod_amqp_connection_t **conn, switch_xml_t cfg, switch_memory_pool_t *pool)
|
||||
|
Loading…
x
Reference in New Issue
Block a user