FS-12010: [mod_sofia, mod_valet_parking, mod_enum] Fix memory leaks on FreeSWITCH shutdown.
This commit is contained in:
parent
b6b3d78567
commit
96aac32237
|
@ -75,6 +75,9 @@ static struct {
|
||||||
int retries;
|
int retries;
|
||||||
int random;
|
int random;
|
||||||
char *nameserver[ENUM_MAXNAMESERVERS];
|
char *nameserver[ENUM_MAXNAMESERVERS];
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
char *nameserver_buf;
|
||||||
|
#endif
|
||||||
} globals;
|
} globals;
|
||||||
|
|
||||||
SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_root, globals.root);
|
SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_root, globals.root);
|
||||||
|
@ -164,7 +167,6 @@ static switch_status_t load_config(void)
|
||||||
if (!globals.nameserver[0]) {
|
if (!globals.nameserver[0]) {
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
DWORD data_sz;
|
DWORD data_sz;
|
||||||
char* buf;
|
|
||||||
RegOpenKeyEx(HKEY_LOCAL_MACHINE,
|
RegOpenKeyEx(HKEY_LOCAL_MACHINE,
|
||||||
"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
|
"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
|
||||||
0, KEY_QUERY_VALUE, &hKey);
|
0, KEY_QUERY_VALUE, &hKey);
|
||||||
|
@ -172,15 +174,15 @@ static switch_status_t load_config(void)
|
||||||
if (hKey) {
|
if (hKey) {
|
||||||
RegQueryValueEx(hKey, "DhcpNameServer", NULL, NULL, NULL, &data_sz);
|
RegQueryValueEx(hKey, "DhcpNameServer", NULL, NULL, NULL, &data_sz);
|
||||||
if (data_sz) {
|
if (data_sz) {
|
||||||
buf = (char*)malloc(data_sz + 1);
|
globals.nameserver_buf = (char*)malloc(data_sz + 1);
|
||||||
|
|
||||||
RegQueryValueEx(hKey, "DhcpNameServer", NULL, NULL, (LPBYTE)buf, &data_sz);
|
RegQueryValueEx(hKey, "DhcpNameServer", NULL, NULL, (LPBYTE)globals.nameserver_buf, &data_sz);
|
||||||
|
|
||||||
if(buf[data_sz - 1] != 0) {
|
if(globals.nameserver_buf[data_sz - 1] != 0) {
|
||||||
buf[data_sz] = 0;
|
globals.nameserver_buf[data_sz] = 0;
|
||||||
}
|
}
|
||||||
switch_replace_char(buf, ' ', 0, SWITCH_FALSE); /* only use the first entry ex "192.168.1.1 192.168.1.2" */
|
switch_replace_char(globals.nameserver_buf, ' ', 0, SWITCH_FALSE); /* only use the first entry ex "192.168.1.1 192.168.1.2" */
|
||||||
globals.nameserver[0] = buf;
|
globals.nameserver[0] = globals.nameserver_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
|
@ -924,6 +926,9 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_enum_shutdown)
|
||||||
|
|
||||||
switch_safe_free(globals.root);
|
switch_safe_free(globals.root);
|
||||||
switch_safe_free(globals.isn_root);
|
switch_safe_free(globals.isn_root);
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
switch_safe_free(globals.nameserver_buf);
|
||||||
|
#endif
|
||||||
|
|
||||||
return SWITCH_STATUS_UNLOAD;
|
return SWITCH_STATUS_UNLOAD;
|
||||||
}
|
}
|
||||||
|
|
|
@ -933,6 +933,7 @@ static void pres_event_handler(switch_event_t *event)
|
||||||
|
|
||||||
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_valet_parking_shutdown)
|
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_valet_parking_shutdown)
|
||||||
{
|
{
|
||||||
|
switch_event_unbind_callback(pres_event_handler);
|
||||||
switch_core_hash_destroy(&globals.hash);
|
switch_core_hash_destroy(&globals.hash);
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6473,6 +6473,12 @@ void mod_sofia_shutdown_cleanup() {
|
||||||
|
|
||||||
su_deinit();
|
su_deinit();
|
||||||
|
|
||||||
|
/*
|
||||||
|
Release the clone of the default SIP parser
|
||||||
|
created by `sip_update_default_mclass(sip_extend_mclass(NULL))` call with NULL argument
|
||||||
|
*/
|
||||||
|
free(sip_default_mclass());
|
||||||
|
|
||||||
switch_mutex_lock(mod_sofia_globals.hash_mutex);
|
switch_mutex_lock(mod_sofia_globals.hash_mutex);
|
||||||
switch_core_hash_destroy(&mod_sofia_globals.profile_hash);
|
switch_core_hash_destroy(&mod_sofia_globals.profile_hash);
|
||||||
switch_core_hash_destroy(&mod_sofia_globals.gateway_hash);
|
switch_core_hash_destroy(&mod_sofia_globals.gateway_hash);
|
||||||
|
|
Loading…
Reference in New Issue