mirror of
https://github.com/coturn/coturn.git
synced 2025-10-26 12:31:00 +01:00
memory debug
This commit is contained in:
parent
58efbf9635
commit
5177adb626
@ -549,7 +549,7 @@ void set_execdir(void)
|
|||||||
/* On some systems, this may give us the execution path */
|
/* On some systems, this may give us the execution path */
|
||||||
char *_var = getenv("_");
|
char *_var = getenv("_");
|
||||||
if(_var && *_var) {
|
if(_var && *_var) {
|
||||||
_var = strdup(_var);
|
_var = turn_strdup(_var);
|
||||||
char *edir=_var;
|
char *edir=_var;
|
||||||
if(edir[0]!='.')
|
if(edir[0]!='.')
|
||||||
edir = strstr(edir,"/");
|
edir = strstr(edir,"/");
|
||||||
@ -559,7 +559,7 @@ void set_execdir(void)
|
|||||||
edir = dirname(_var);
|
edir = dirname(_var);
|
||||||
if(c_execdir)
|
if(c_execdir)
|
||||||
turn_free(c_execdir,strlen(c_execdir)+1);
|
turn_free(c_execdir,strlen(c_execdir)+1);
|
||||||
c_execdir = strdup(edir);
|
c_execdir = turn_strdup(edir);
|
||||||
turn_free(_var,strlen(_var)+1);
|
turn_free(_var,strlen(_var)+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -604,7 +604,7 @@ char* find_config_file(const char *config_file, int print_file_name)
|
|||||||
FILE *f = fopen(config_file, "r");
|
FILE *f = fopen(config_file, "r");
|
||||||
if (f) {
|
if (f) {
|
||||||
fclose(f);
|
fclose(f);
|
||||||
full_path_to_config_file = strdup(config_file);
|
full_path_to_config_file = turn_strdup(config_file);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|||||||
@ -250,10 +250,10 @@ redis_context_handle redisLibeventAttach(struct event_base *base, char *ip0, int
|
|||||||
e->allocated = 1;
|
e->allocated = 1;
|
||||||
e->context = ac;
|
e->context = ac;
|
||||||
e->base = base;
|
e->base = base;
|
||||||
e->ip = strdup(ip);
|
e->ip = turn_strdup(ip);
|
||||||
e->port = port;
|
e->port = port;
|
||||||
if(pwd)
|
if(pwd)
|
||||||
e->pwd = strdup(pwd);
|
e->pwd = turn_strdup(pwd);
|
||||||
e->db = db;
|
e->db = db;
|
||||||
|
|
||||||
/* Register functions to start/stop listening for events */
|
/* Register functions to start/stop listening for events */
|
||||||
|
|||||||
@ -295,11 +295,11 @@ static void set_log_file_name_func(char *base, char *f, size_t fsz)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char logdate[125];
|
char logdate[125];
|
||||||
char *tail=strdup(".log");
|
char *tail=turn_strdup(".log");
|
||||||
|
|
||||||
get_date(logdate,sizeof(logdate));
|
get_date(logdate,sizeof(logdate));
|
||||||
|
|
||||||
char *base1=strdup(base);
|
char *base1=turn_strdup(base);
|
||||||
|
|
||||||
int len=(int)strlen(base1);
|
int len=(int)strlen(base1);
|
||||||
|
|
||||||
@ -319,11 +319,11 @@ static void set_log_file_name_func(char *base, char *f, size_t fsz)
|
|||||||
break;
|
break;
|
||||||
else if(base1[len]=='.') {
|
else if(base1[len]=='.') {
|
||||||
turn_free(tail,strlen(tail)+1);
|
turn_free(tail,strlen(tail)+1);
|
||||||
tail=strdup(base1+len);
|
tail=turn_strdup(base1+len);
|
||||||
base1[len]=0;
|
base1[len]=0;
|
||||||
if(strlen(tail)<2) {
|
if(strlen(tail)<2) {
|
||||||
turn_free(tail,strlen(tail)+1);
|
turn_free(tail,strlen(tail)+1);
|
||||||
tail = strdup(".log");
|
tail = turn_strdup(".log");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -656,3 +656,158 @@ int get_canonic_origin(const char* o, char *co, int sz)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
static volatile int tmm_init = 0;
|
||||||
|
static pthread_mutex_t tm;
|
||||||
|
|
||||||
|
typedef void* ptrtype;
|
||||||
|
typedef set<ptrtype> ptrs_t;
|
||||||
|
typedef map<string,ptrs_t> str_to_ptrs_t;
|
||||||
|
typedef map<ptrtype,string> ptr_to_str_t;
|
||||||
|
|
||||||
|
static str_to_ptrs_t str_to_ptrs;
|
||||||
|
static ptr_to_str_t ptr_to_str;
|
||||||
|
|
||||||
|
static void tm_init(void) {
|
||||||
|
if(!tmm_init) {
|
||||||
|
pthread_mutex_init(&tm,NULL);
|
||||||
|
tmm_init = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void add_tm_ptr(void *ptr, const char *id) {
|
||||||
|
|
||||||
|
UNUSED_ARG(ptr);
|
||||||
|
UNUSED_ARG(id);
|
||||||
|
|
||||||
|
if(!ptr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pthread_mutex_lock(&tm);
|
||||||
|
|
||||||
|
string sid(id);
|
||||||
|
if(str_to_ptrs.find(sid) == str_to_ptrs.end()) {
|
||||||
|
set<ptrtype> sp;
|
||||||
|
str_to_ptrs[sid]=sp;
|
||||||
|
}
|
||||||
|
|
||||||
|
str_to_ptrs[sid].insert(ptr);
|
||||||
|
ptr_to_str[ptr]=sid;
|
||||||
|
|
||||||
|
pthread_mutex_unlock(&tm);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void del_tm_ptr(void *ptr, const char *id) {
|
||||||
|
|
||||||
|
UNUSED_ARG(ptr);
|
||||||
|
UNUSED_ARG(id);
|
||||||
|
|
||||||
|
if(!ptr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pthread_mutex_lock(&tm);
|
||||||
|
|
||||||
|
ptr_to_str_t::iterator pts_iter = ptr_to_str.find(ptr);
|
||||||
|
if(pts_iter != ptr_to_str.end()) {
|
||||||
|
string sid = pts_iter->second;
|
||||||
|
ptr_to_str.erase(pts_iter);
|
||||||
|
if(str_to_ptrs.find(sid) != str_to_ptrs.end()) {
|
||||||
|
str_to_ptrs[sid].erase(ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pthread_mutex_unlock(&tm);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void tm_id(char *id, const char* file, int line) {
|
||||||
|
sprintf(id,"%s:%d",file,line);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TM_START() char id[128];tm_id(id,file,line);tm_init()
|
||||||
|
|
||||||
|
void tm_print_func(void);
|
||||||
|
void tm_print_func(void) {
|
||||||
|
pthread_mutex_lock(&tm);
|
||||||
|
printf("=============================================\n");
|
||||||
|
for(str_to_ptrs_t::const_iterator iter=str_to_ptrs.begin();iter != str_to_ptrs.end();++iter) {
|
||||||
|
printf("%s: %s: %d\n",__FUNCTION__,iter->first.c_str(),(int)(iter->second.size()));
|
||||||
|
}
|
||||||
|
printf("=============================================\n");
|
||||||
|
pthread_mutex_unlock(&tm);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *turn_malloc_func(size_t sz, const char* file, int line);
|
||||||
|
void *turn_malloc_func(size_t sz, const char* file, int line) {
|
||||||
|
|
||||||
|
TM_START();
|
||||||
|
|
||||||
|
void *ptr = malloc(sz);
|
||||||
|
|
||||||
|
add_tm_ptr(ptr,id);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *turn_realloc_func(void *ptr, size_t old_sz, size_t new_sz, const char* file, int line);
|
||||||
|
void *turn_realloc_func(void *ptr, size_t old_sz, size_t new_sz, const char* file, int line) {
|
||||||
|
|
||||||
|
UNUSED_ARG(old_sz);
|
||||||
|
|
||||||
|
TM_START();
|
||||||
|
|
||||||
|
del_tm_ptr(ptr,id);
|
||||||
|
|
||||||
|
ptr = realloc(ptr,new_sz);
|
||||||
|
|
||||||
|
add_tm_ptr(ptr,id);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void turn_free_func(void *ptr, size_t sz, const char* file, int line);
|
||||||
|
void turn_free_func(void *ptr, size_t sz, const char* file, int line) {
|
||||||
|
|
||||||
|
UNUSED_ARG(sz);
|
||||||
|
|
||||||
|
TM_START();
|
||||||
|
|
||||||
|
del_tm_ptr(ptr,id);
|
||||||
|
|
||||||
|
free(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *turn_calloc_func(size_t number, size_t size, const char* file, int line);
|
||||||
|
void *turn_calloc_func(size_t number, size_t size, const char* file, int line) {
|
||||||
|
|
||||||
|
TM_START();
|
||||||
|
|
||||||
|
void *ptr = calloc(number,size);
|
||||||
|
|
||||||
|
add_tm_ptr(ptr,id);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *turn_strdup_func(const char* s, const char* file, int line);
|
||||||
|
char *turn_strdup_func(const char* s, const char* file, int line) {
|
||||||
|
|
||||||
|
TM_START();
|
||||||
|
|
||||||
|
char *ptr = strdup(s);
|
||||||
|
|
||||||
|
add_tm_ptr(ptr,id);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -59,7 +59,7 @@ typedef struct _Ryconninfo Ryconninfo;
|
|||||||
static void RyconninfoFree(Ryconninfo *co) {
|
static void RyconninfoFree(Ryconninfo *co) {
|
||||||
if(co) {
|
if(co) {
|
||||||
if(co->host) turn_free(co->host, strlen(co->host)+1);
|
if(co->host) turn_free(co->host, strlen(co->host)+1);
|
||||||
if(co->dbname) turn_free(co->dbname, strlen(co->username)+1);
|
if(co->dbname) turn_free(co->dbname, strlen(co->dbname)+1);
|
||||||
if(co->password) turn_free(co->password, strlen(co->password)+1);
|
if(co->password) turn_free(co->password, strlen(co->password)+1);
|
||||||
ns_bzero(co,sizeof(Ryconninfo));
|
ns_bzero(co,sizeof(Ryconninfo));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1034,7 +1034,7 @@ static void set_option(int c, char *value)
|
|||||||
if(value) {
|
if(value) {
|
||||||
char *div = strchr(value,'/');
|
char *div = strchr(value,'/');
|
||||||
if(div) {
|
if(div) {
|
||||||
char *nval=strdup(value);
|
char *nval=turn_strdup(value);
|
||||||
div = strchr(nval,'/');
|
div = strchr(nval,'/');
|
||||||
div[0]=0;
|
div[0]=0;
|
||||||
++div;
|
++div;
|
||||||
|
|||||||
@ -168,7 +168,7 @@ static void add_aux_server_list(const char *saddr, turn_server_addrs_list_t *lis
|
|||||||
if(make_ioa_addr_from_full_string((const u08bits*)saddr, 0, &addr)!=0) {
|
if(make_ioa_addr_from_full_string((const u08bits*)saddr, 0, &addr)!=0) {
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong full address format: %s\n",saddr);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong full address format: %s\n",saddr);
|
||||||
} else {
|
} else {
|
||||||
list->addrs = (ioa_addr*)realloc(list->addrs,sizeof(ioa_addr)*(list->size+1));
|
list->addrs = (ioa_addr*)turn_realloc(list->addrs,0,sizeof(ioa_addr)*(list->size+1));
|
||||||
addr_cpy(&(list->addrs[(list->size)++]),&addr);
|
addr_cpy(&(list->addrs[(list->size)++]),&addr);
|
||||||
{
|
{
|
||||||
u08bits s[1025];
|
u08bits s[1025];
|
||||||
@ -196,7 +196,7 @@ static void add_alt_server(const char *saddr, int default_port, turn_server_addr
|
|||||||
if(make_ioa_addr_from_full_string((const u08bits*)saddr, default_port, &addr)!=0) {
|
if(make_ioa_addr_from_full_string((const u08bits*)saddr, default_port, &addr)!=0) {
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong IP address format: %s\n",saddr);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong IP address format: %s\n",saddr);
|
||||||
} else {
|
} else {
|
||||||
list->addrs = (ioa_addr*)realloc(list->addrs,sizeof(ioa_addr)*(list->size+1));
|
list->addrs = (ioa_addr*)turn_realloc(list->addrs,0,sizeof(ioa_addr)*(list->size+1));
|
||||||
addr_cpy(&(list->addrs[(list->size)++]),&addr);
|
addr_cpy(&(list->addrs[(list->size)++]),&addr);
|
||||||
{
|
{
|
||||||
u08bits s[1025];
|
u08bits s[1025];
|
||||||
@ -233,7 +233,7 @@ static void del_alt_server(const char *saddr, int default_port, turn_server_addr
|
|||||||
if(found) {
|
if(found) {
|
||||||
|
|
||||||
size_t j;
|
size_t j;
|
||||||
ioa_addr *new_addrs = (ioa_addr*)malloc(sizeof(ioa_addr)*(list->size-1));
|
ioa_addr *new_addrs = (ioa_addr*)turn_malloc(sizeof(ioa_addr)*(list->size-1));
|
||||||
for(j=0;j<i;++j) {
|
for(j=0;j<i;++j) {
|
||||||
addr_cpy(&(new_addrs[j]),&(list->addrs[j]));
|
addr_cpy(&(new_addrs[j]),&(list->addrs[j]));
|
||||||
}
|
}
|
||||||
@ -241,7 +241,7 @@ static void del_alt_server(const char *saddr, int default_port, turn_server_addr
|
|||||||
addr_cpy(&(new_addrs[j]),&(list->addrs[j+1]));
|
addr_cpy(&(new_addrs[j]),&(list->addrs[j+1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
free(list->addrs);
|
turn_free(list->addrs,0);
|
||||||
list->addrs = new_addrs;
|
list->addrs = new_addrs;
|
||||||
list->size -= 1;
|
list->size -= 1;
|
||||||
|
|
||||||
@ -298,9 +298,9 @@ void add_listener_addr(const char* addr) {
|
|||||||
}
|
}
|
||||||
++turn_params.listener.addrs_number;
|
++turn_params.listener.addrs_number;
|
||||||
++turn_params.listener.services_number;
|
++turn_params.listener.services_number;
|
||||||
turn_params.listener.addrs = (char**)realloc(turn_params.listener.addrs, sizeof(char*)*turn_params.listener.addrs_number);
|
turn_params.listener.addrs = (char**)turn_realloc(turn_params.listener.addrs, 0, sizeof(char*)*turn_params.listener.addrs_number);
|
||||||
turn_params.listener.addrs[turn_params.listener.addrs_number-1]=strdup(sbaddr);
|
turn_params.listener.addrs[turn_params.listener.addrs_number-1]=turn_strdup(sbaddr);
|
||||||
turn_params.listener.encaddrs = (ioa_addr**)realloc(turn_params.listener.encaddrs, sizeof(ioa_addr*)*turn_params.listener.addrs_number);
|
turn_params.listener.encaddrs = (ioa_addr**)turn_realloc(turn_params.listener.encaddrs, 0, sizeof(ioa_addr*)*turn_params.listener.addrs_number);
|
||||||
turn_params.listener.encaddrs[turn_params.listener.addrs_number-1]=(ioa_addr*)turn_malloc(sizeof(ioa_addr));
|
turn_params.listener.encaddrs[turn_params.listener.addrs_number-1]=(ioa_addr*)turn_malloc(sizeof(ioa_addr));
|
||||||
addr_cpy(turn_params.listener.encaddrs[turn_params.listener.addrs_number-1],&baddr);
|
addr_cpy(turn_params.listener.encaddrs[turn_params.listener.addrs_number-1],&baddr);
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Listener address to use: %s\n",sbaddr);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Listener address to use: %s\n",sbaddr);
|
||||||
@ -325,8 +325,8 @@ int add_relay_addr(const char* addr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
++turn_params.relays_number;
|
++turn_params.relays_number;
|
||||||
turn_params.relay_addrs = (char**)realloc(turn_params.relay_addrs, sizeof(char*)*turn_params.relays_number);
|
turn_params.relay_addrs = (char**)turn_realloc(turn_params.relay_addrs, 0, sizeof(char*)*turn_params.relays_number);
|
||||||
turn_params.relay_addrs[turn_params.relays_number-1]=strdup(sbaddr);
|
turn_params.relay_addrs[turn_params.relays_number-1]=turn_strdup(sbaddr);
|
||||||
|
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Relay address to use: %s\n",sbaddr);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Relay address to use: %s\n",sbaddr);
|
||||||
return 1;
|
return 1;
|
||||||
@ -1539,6 +1539,9 @@ void run_listener_server(struct listener_server *ls)
|
|||||||
run_events(ls->event_base, ls->ioa_eng);
|
run_events(ls->event_base, ls->ioa_eng);
|
||||||
|
|
||||||
rollover_logfile();
|
rollover_logfile();
|
||||||
|
|
||||||
|
tm_print();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -174,7 +174,7 @@ int get_realm_options_by_origin(char *origin, realm_options_t* ro)
|
|||||||
realm_params_t rp;
|
realm_params_t rp;
|
||||||
get_realm_data(realm, &rp);
|
get_realm_data(realm, &rp);
|
||||||
ns_bcopy(&(rp.options),ro,sizeof(realm_options_t));
|
ns_bcopy(&(rp.options),ro,sizeof(realm_options_t));
|
||||||
free(realm);
|
turn_free(realm,strlen(realm)+1);
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
TURN_MUTEX_UNLOCK(&o_to_realm_mutex);
|
TURN_MUTEX_UNLOCK(&o_to_realm_mutex);
|
||||||
@ -291,7 +291,7 @@ const char* get_secrets_list_elem(secrets_list_t *sl, size_t i)
|
|||||||
void add_to_secrets_list(secrets_list_t *sl, const char* elem)
|
void add_to_secrets_list(secrets_list_t *sl, const char* elem)
|
||||||
{
|
{
|
||||||
if(sl && elem) {
|
if(sl && elem) {
|
||||||
sl->secrets = (char**)realloc(sl->secrets,(sizeof(char*)*(sl->sz+1)));
|
sl->secrets = (char**)turn_realloc(sl->secrets,0,(sizeof(char*)*(sl->sz+1)));
|
||||||
sl->secrets[sl->sz] = strdup(elem);
|
sl->secrets[sl->sz] = strdup(elem);
|
||||||
sl->sz += 1;
|
sl->sz += 1;
|
||||||
}
|
}
|
||||||
@ -707,7 +707,7 @@ int check_new_allocation_quota(u08bits *user, int oauth, u08bits *realm)
|
|||||||
} else {
|
} else {
|
||||||
++(rp->status.total_current_allocs);
|
++(rp->status.total_current_allocs);
|
||||||
}
|
}
|
||||||
turn_free(username,strlen(username)+1);
|
turn_free(username,strlen((char*)username)+1);
|
||||||
ur_string_map_unlock(rp->status.alloc_counters);
|
ur_string_map_unlock(rp->status.alloc_counters);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -730,7 +730,7 @@ void release_allocation_quota(u08bits *user, int oauth, u08bits *realm)
|
|||||||
if (rp->status.total_current_allocs)
|
if (rp->status.total_current_allocs)
|
||||||
--(rp->status.total_current_allocs);
|
--(rp->status.total_current_allocs);
|
||||||
ur_string_map_unlock(rp->status.alloc_counters);
|
ur_string_map_unlock(rp->status.alloc_counters);
|
||||||
turn_free(username, strlen(username)+1);
|
turn_free(username, strlen((char*)username)+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -839,8 +839,8 @@ int add_user_account(char *user, int dynamic)
|
|||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong key format: %s\n",s);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong key format: %s\n",s);
|
||||||
} if(convert_string_key_to_binary(keysource, *key, sz)<0) {
|
} if(convert_string_key_to_binary(keysource, *key, sz)<0) {
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong key: %s\n",s);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong key: %s\n",s);
|
||||||
free(usname);
|
turn_free(usname,strlen(usname)+1);
|
||||||
free(key);
|
turn_free(key,sizeof(hmackey_t));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -857,7 +857,7 @@ int add_user_account(char *user, int dynamic)
|
|||||||
ur_string_map_unlock(turn_params.default_users_db.ram_db.static_accounts);
|
ur_string_map_unlock(turn_params.default_users_db.ram_db.static_accounts);
|
||||||
}
|
}
|
||||||
turn_params.default_users_db.ram_db.users_number++;
|
turn_params.default_users_db.ram_db.users_number++;
|
||||||
free(usname);
|
turn_free(usname,strlen(usname)+1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1153,7 +1153,7 @@ int adminuser(u08bits *user, u08bits *realm, u08bits *pwd, u08bits *secret, u08b
|
|||||||
}
|
}
|
||||||
|
|
||||||
add_and_cont:
|
add_and_cont:
|
||||||
content = (char**)realloc(content, sizeof(char*) * (++csz));
|
content = (char**)turn_realloc(content, 0, sizeof(char*) * (++csz));
|
||||||
content[csz - 1] = strdup(s0);
|
content[csz - 1] = strdup(s0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1168,7 +1168,7 @@ int adminuser(u08bits *user, u08bits *realm, u08bits *pwd, u08bits *secret, u08b
|
|||||||
for(i=0;i<sz;i++) {
|
for(i=0;i<sz;i++) {
|
||||||
snprintf(us+strlen(us),sizeof(us)-strlen(us),"%02x",(unsigned int)key[i]);
|
snprintf(us+strlen(us),sizeof(us)-strlen(us),"%02x",(unsigned int)key[i]);
|
||||||
}
|
}
|
||||||
content = (char**)realloc(content,sizeof(char*)*(++csz));
|
content = (char**)turn_realloc(content,0,sizeof(char*)*(++csz));
|
||||||
content[csz-1]=strdup(us);
|
content[csz-1]=strdup(us);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1199,7 +1199,7 @@ int adminuser(u08bits *user, u08bits *realm, u08bits *pwd, u08bits *secret, u08b
|
|||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
rename(dir,full_path_to_userdb_file);
|
rename(dir,full_path_to_userdb_file);
|
||||||
free(dir);
|
turn_free(dir,dirsz+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -1396,15 +1396,15 @@ static void ip_list_free(ip_range_list_t *l)
|
|||||||
size_t i;
|
size_t i;
|
||||||
for(i=0;i<l->ranges_number;++i) {
|
for(i=0;i<l->ranges_number;++i) {
|
||||||
if(l->ranges && l->ranges[i])
|
if(l->ranges && l->ranges[i])
|
||||||
free(l->ranges[i]);
|
turn_free(l->ranges[i],0);
|
||||||
if(l->encaddrsranges && l->encaddrsranges[i])
|
if(l->encaddrsranges && l->encaddrsranges[i])
|
||||||
free(l->encaddrsranges[i]);
|
turn_free(l->encaddrsranges[i],0);
|
||||||
}
|
}
|
||||||
if(l->ranges)
|
if(l->ranges)
|
||||||
free(l->ranges);
|
turn_free(l->ranges,0);
|
||||||
if(l->encaddrsranges)
|
if(l->encaddrsranges)
|
||||||
free(l->encaddrsranges);
|
turn_free(l->encaddrsranges,0);
|
||||||
free(l);
|
turn_free(l,sizeof(ip_range_list_t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1446,14 +1446,14 @@ int add_ip_list_range(const char * range0, ip_range_list_t * list)
|
|||||||
|
|
||||||
if (make_ioa_addr((const u08bits*) range, 0, &min) < 0) {
|
if (make_ioa_addr((const u08bits*) range, 0, &min) < 0) {
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong address format: %s\n", range);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong address format: %s\n", range);
|
||||||
free(range);
|
turn_free(range,0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (separator) {
|
if (separator) {
|
||||||
if (make_ioa_addr((const u08bits*) separator + 1, 0, &max) < 0) {
|
if (make_ioa_addr((const u08bits*) separator + 1, 0, &max) < 0) {
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong address format: %s\n", separator + 1);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Wrong address format: %s\n", separator + 1);
|
||||||
free(range);
|
turn_free(range,0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1465,9 +1465,9 @@ int add_ip_list_range(const char * range0, ip_range_list_t * list)
|
|||||||
*separator = '-';
|
*separator = '-';
|
||||||
|
|
||||||
++(list->ranges_number);
|
++(list->ranges_number);
|
||||||
list->ranges = (char**) realloc(list->ranges, sizeof(char*) * list->ranges_number);
|
list->ranges = (char**) turn_realloc(list->ranges, 0, sizeof(char*) * list->ranges_number);
|
||||||
list->ranges[list->ranges_number - 1] = range;
|
list->ranges[list->ranges_number - 1] = range;
|
||||||
list->encaddrsranges = (ioa_addr_range**) realloc(list->encaddrsranges, sizeof(ioa_addr_range*) * list->ranges_number);
|
list->encaddrsranges = (ioa_addr_range**) turn_realloc(list->encaddrsranges, 0, sizeof(ioa_addr_range*) * list->ranges_number);
|
||||||
|
|
||||||
list->encaddrsranges[list->ranges_number - 1] = (ioa_addr_range*) turn_malloc(sizeof(ioa_addr_range));
|
list->encaddrsranges[list->ranges_number - 1] = (ioa_addr_range*) turn_malloc(sizeof(ioa_addr_range));
|
||||||
|
|
||||||
|
|||||||
@ -111,10 +111,32 @@ static inline u64bits _ioa_ntoh64(u64bits v)
|
|||||||
#define ioa_ntoh64 _ioa_ntoh64
|
#define ioa_ntoh64 _ioa_ntoh64
|
||||||
#define ioa_hton64 _ioa_ntoh64
|
#define ioa_hton64 _ioa_ntoh64
|
||||||
|
|
||||||
#define turn_malloc(sz) malloc(sz)
|
#if defined(TURN_MEMORY_DEBUG)
|
||||||
#define turn_free(ptr,sz) free(ptr)
|
|
||||||
#define turn_realloc(ptr, old_sz, new_sz) realloc((ptr),(new_sz))
|
void tm_print_func(void);
|
||||||
#define turn_calloc(number, sz) calloc((number),(sz))
|
void *turn_malloc_func(size_t sz, const char* file, int line);
|
||||||
|
void *turn_realloc_func(void *ptr, size_t old_sz, size_t new_sz, const char* file, int line);
|
||||||
|
void turn_free_func(void *ptr, size_t sz, const char* file, int line);
|
||||||
|
void *turn_calloc_func(size_t number, size_t size, const char* file, int line);
|
||||||
|
char *turn_strdup_func(const char* s, const char* file, int line);
|
||||||
|
|
||||||
|
#define tm_print() tm_print_func()
|
||||||
|
#define turn_malloc(sz) turn_malloc_func((size_t)(sz),__FUNCTION__,__LINE__)
|
||||||
|
#define turn_free(ptr,sz) turn_free_func((ptr),(size_t)(sz),__FUNCTION__,__LINE__)
|
||||||
|
#define turn_realloc(ptr, old_sz, new_sz) turn_realloc_func((ptr),(size_t)(old_sz),(size_t)(new_sz),__FUNCTION__,__LINE__)
|
||||||
|
#define turn_calloc(number, sz) turn_calloc_func((number),(size_t)(sz),__FUNCTION__,__LINE__)
|
||||||
|
#define turn_strdup(s) turn_strdup_func((s),__FUNCTION__,__LINE__)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define tm_print()
|
||||||
|
#define turn_malloc(sz) malloc((size_t)(sz))
|
||||||
|
#define turn_free(ptr,sz) free((ptr))
|
||||||
|
#define turn_realloc(ptr, old_sz, new_sz) realloc((ptr),(size_t)(new_sz))
|
||||||
|
#define turn_calloc(number, sz) calloc((number),(size_t)(sz))
|
||||||
|
#define turn_strdup(s) strdup((s))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#define turn_time() ((turn_time_t)time(NULL))
|
#define turn_time() ((turn_time_t)time(NULL))
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user