From 4f66959ed325ed6dd58c8b48f80d42aaca1902bd Mon Sep 17 00:00:00 2001 From: Dragos Oancea Date: Thu, 1 Aug 2019 18:05:00 +0000 Subject: [PATCH] FS-11973: [mod_event_multicast] add mutex and checks on hash ptrs on shutdown --- .../mod_event_multicast/mod_event_multicast.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c b/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c index 3a5c011996..7fe2911ba6 100644 --- a/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c +++ b/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c @@ -493,6 +493,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_event_multicast_shutdown) globals.running = 0; switch_event_unbind_callback(event_handler); + switch_mutex_lock(globals.mutex); if (globals.udp_socket) { switch_socket_shutdown(globals.udp_socket, 2); } @@ -501,11 +502,16 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_event_multicast_shutdown) switch_event_free_subclass(MULTICAST_PEERUP); switch_event_free_subclass(MULTICAST_PEERDOWN); - switch_core_hash_destroy(&globals.event_hash); - switch_core_hash_destroy(&globals.peer_hash); + if (globals.event_hash) { + switch_core_hash_destroy(&globals.event_hash); + } + if (globals.peer_hash) { + switch_core_hash_destroy(&globals.peer_hash); + } switch_safe_free(globals.address); switch_safe_free(globals.bindings); + switch_mutex_unlock(globals.mutex); return SWITCH_STATUS_SUCCESS; }