1
0
mirror of https://github.com/coturn/coturn.git synced 2025-10-30 14:31:29 +01:00

more debug information

This commit is contained in:
mom040267 2014-10-15 06:44:53 +00:00
parent e50080c753
commit 7973a31f01
7 changed files with 77 additions and 82 deletions

View File

@ -747,11 +747,27 @@ static void del_tm_ptr(void *ptr, const char *id) {
pthread_mutex_unlock(&tm); pthread_mutex_unlock(&tm);
} }
static void tm_id(char *id, const char* file, int line) { static void tm_id(char *id, const char* function, int line) {
sprintf(id,"%s:%d",file,line); sprintf(id,"%s:%d",function,line);
} }
#define TM_START() char id[128];tm_id(id,file,line);tm_init() #define TM_START() char id[128];tm_id(id,function,line);tm_init()
extern "C" void* debug_ptr_add_func(void *ptr, const char* function, int line) {
TM_START();
add_tm_ptr(ptr,id);
return ptr;
}
extern "C" void debug_ptr_del_func(void *ptr, const char* function, int line) {
TM_START();
del_tm_ptr(ptr,id);
}
extern "C" void tm_print_func(void); extern "C" void tm_print_func(void);
void tm_print_func(void) { void tm_print_func(void) {
@ -765,8 +781,8 @@ void tm_print_func(void) {
pthread_mutex_unlock(&tm); pthread_mutex_unlock(&tm);
} }
extern "C" void *turn_malloc_func(size_t sz, const char* file, int line); extern "C" void *turn_malloc_func(size_t sz, const char* function, int line);
void *turn_malloc_func(size_t sz, const char* file, int line) { void *turn_malloc_func(size_t sz, const char* function, int line) {
TM_START(); TM_START();
@ -777,8 +793,8 @@ void *turn_malloc_func(size_t sz, const char* file, int line) {
return ptr; return ptr;
} }
extern "C" void *turn_realloc_func(void *ptr, size_t old_sz, size_t new_sz, const char* file, int line); extern "C" void *turn_realloc_func(void *ptr, size_t old_sz, size_t new_sz, const char* function, int line);
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* function, int line) {
UNUSED_ARG(old_sz); UNUSED_ARG(old_sz);
@ -794,8 +810,8 @@ void *turn_realloc_func(void *ptr, size_t old_sz, size_t new_sz, const char* fil
return ptr; return ptr;
} }
extern "C" void turn_free_func(void *ptr, size_t sz, const char* file, int line); extern "C" void turn_free_func(void *ptr, size_t sz, const char* function, int line);
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* function, int line) {
UNUSED_ARG(sz); UNUSED_ARG(sz);
@ -816,8 +832,8 @@ void turn_free_simple(void *ptr) {
free(ptr); free(ptr);
} }
extern "C" void *turn_calloc_func(size_t number, size_t size, const char* file, int line); extern "C" void *turn_calloc_func(size_t number, size_t size, const char* function, int line);
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* function, int line) {
TM_START(); TM_START();
@ -828,8 +844,8 @@ void *turn_calloc_func(size_t number, size_t size, const char* file, int line) {
return ptr; return ptr;
} }
extern "C" char *turn_strdup_func(const char* s, const char* file, int line); extern "C" char *turn_strdup_func(const char* s, const char* function, int line);
char *turn_strdup_func(const char* s, const char* file, int line) { char *turn_strdup_func(const char* s, const char* function, int line) {
TM_START(); TM_START();

View File

@ -266,7 +266,7 @@ static ioa_socket_handle dtls_server_input_handler(dtls_listener_relay_server_ty
timeout.tv_usec = 0; timeout.tv_usec = 0;
BIO_ctrl(wbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &timeout); BIO_ctrl(wbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &timeout);
connecting_ssl = SSL_new(server->dtls_ctx); connecting_ssl = SSL_NEW(server->dtls_ctx);
SSL_set_accept_state(connecting_ssl); SSL_set_accept_state(connecting_ssl);
@ -285,7 +285,7 @@ static ioa_socket_handle dtls_server_input_handler(dtls_listener_relay_server_ty
SSL_set_shutdown(connecting_ssl, SSL_RECEIVED_SHUTDOWN); SSL_set_shutdown(connecting_ssl, SSL_RECEIVED_SHUTDOWN);
SSL_shutdown(connecting_ssl); SSL_shutdown(connecting_ssl);
} }
SSL_free(connecting_ssl); SSL_FREE(connecting_ssl);
} }
return rc; return rc;
@ -536,7 +536,7 @@ static int create_new_connected_udp_socket(
timeout.tv_usec = 0; timeout.tv_usec = 0;
BIO_ctrl(wbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &timeout); BIO_ctrl(wbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &timeout);
connecting_ssl = SSL_new(server->dtls_ctx); connecting_ssl = SSL_NEW(server->dtls_ctx);
SSL_set_accept_state(connecting_ssl); SSL_set_accept_state(connecting_ssl);
@ -552,7 +552,7 @@ static int create_new_connected_udp_socket(
SSL_set_shutdown(connecting_ssl, SSL_RECEIVED_SHUTDOWN); SSL_set_shutdown(connecting_ssl, SSL_RECEIVED_SHUTDOWN);
SSL_shutdown(connecting_ssl); SSL_shutdown(connecting_ssl);
} }
SSL_free(connecting_ssl); SSL_FREE(connecting_ssl);
IOA_CLOSE_SOCKET(ret); IOA_CLOSE_SOCKET(ret);
return -1; return -1;
} }

View File

@ -1305,11 +1305,7 @@ static void connect_eventcb(struct bufferevent *bev, short events, void *ptr)
if (events & BEV_EVENT_CONNECTED) { if (events & BEV_EVENT_CONNECTED) {
ret->conn_cb = NULL; ret->conn_cb = NULL;
ret->conn_arg = NULL; ret->conn_arg = NULL;
if(ret->conn_bev) { BUFFEREVENT_FREE(ret->conn_bev);
bufferevent_disable(ret->conn_bev,EV_READ|EV_WRITE);
bufferevent_free(ret->conn_bev);
ret->conn_bev=NULL;
}
ret->connected = 1; ret->connected = 1;
if(cb) { if(cb) {
cb(1,arg); cb(1,arg);
@ -1318,11 +1314,7 @@ static void connect_eventcb(struct bufferevent *bev, short events, void *ptr)
/* An error occured while connecting. */ /* An error occured while connecting. */
ret->conn_cb = NULL; ret->conn_cb = NULL;
ret->conn_arg = NULL; ret->conn_arg = NULL;
if(ret->conn_bev) { BUFFEREVENT_FREE(ret->conn_bev);
bufferevent_disable(ret->conn_bev,EV_READ|EV_WRITE);
bufferevent_free(ret->conn_bev);
ret->conn_bev=NULL;
}
if(cb) { if(cb) {
cb(0,arg); cb(0,arg);
} }
@ -1364,15 +1356,12 @@ ioa_socket_handle ioa_create_connecting_tcp_relay_socket(ioa_socket_handle s, io
set_ioa_socket_session(ret, s->session); set_ioa_socket_session(ret, s->session);
if(ret->conn_bev) { BUFFEREVENT_FREE(ret->conn_bev);
bufferevent_disable(ret->conn_bev,EV_READ|EV_WRITE);
bufferevent_free(ret->conn_bev);
ret->conn_bev=NULL;
}
ret->conn_bev = bufferevent_socket_new(ret->e->event_base, ret->conn_bev = bufferevent_socket_new(ret->e->event_base,
ret->fd, ret->fd,
BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS);
debug_ptr_add(ret->conn_bev);
bufferevent_setcb(ret->conn_bev, NULL, NULL, connect_eventcb, ret); bufferevent_setcb(ret->conn_bev, NULL, NULL, connect_eventcb, ret);
ret->conn_arg = arg; ret->conn_arg = arg;
@ -1577,16 +1566,8 @@ static void close_socket_net_data(ioa_socket_handle s)
evconnlistener_free(s->list_ev); evconnlistener_free(s->list_ev);
s->list_ev = NULL; s->list_ev = NULL;
} }
if(s->conn_bev) { BUFFEREVENT_FREE(s->conn_bev);
bufferevent_disable(s->conn_bev,EV_READ|EV_WRITE); BUFFEREVENT_FREE(s->bev);
bufferevent_free(s->conn_bev);
s->conn_bev=NULL;
}
if(s->bev) {
bufferevent_disable(s->bev,EV_READ|EV_WRITE);
bufferevent_free(s->bev);
s->bev=NULL;
}
if (s->ssl) { if (s->ssl) {
if (!s->broken) { if (!s->broken) {
@ -1607,8 +1588,7 @@ static void close_socket_net_data(ioa_socket_handle s)
log_socket_event(s, "SSL shutdown received, socket to be closed",0); log_socket_event(s, "SSL shutdown received, socket to be closed",0);
} }
} }
SSL_free(s->ssl); SSL_FREE(s->ssl);
s->ssl = NULL;
} }
if (s->fd >= 0) { if (s->fd >= 0) {
@ -1630,18 +1610,10 @@ void detach_socket_net_data(ioa_socket_handle s)
} }
s->acb = NULL; s->acb = NULL;
s->acbarg = NULL; s->acbarg = NULL;
if(s->conn_bev) { BUFFEREVENT_FREE(s->conn_bev);
bufferevent_disable(s->conn_bev,EV_READ|EV_WRITE);
bufferevent_free(s->conn_bev);
s->conn_bev=NULL;
}
s->conn_arg=NULL; s->conn_arg=NULL;
s->conn_cb=NULL; s->conn_cb=NULL;
if(s->bev) { BUFFEREVENT_FREE(s->bev);
bufferevent_disable(s->bev,EV_READ|EV_WRITE);
bufferevent_free(s->bev);
s->bev=NULL;
}
} }
} }
@ -2382,7 +2354,7 @@ static int socket_input_worker(ioa_socket_handle s)
#if defined(SSL_TXT_TLSV1_2) #if defined(SSL_TXT_TLSV1_2)
case TURN_TLS_v1_2: case TURN_TLS_v1_2:
if(s->e->tls_ctx_v1_2) { if(s->e->tls_ctx_v1_2) {
set_socket_ssl(s,SSL_new(s->e->tls_ctx_v1_2)); set_socket_ssl(s,SSL_NEW(s->e->tls_ctx_v1_2));
STRCPY(s->orig_ctx_type,"TLSv1.2"); STRCPY(s->orig_ctx_type,"TLSv1.2");
} }
break; break;
@ -2390,20 +2362,20 @@ static int socket_input_worker(ioa_socket_handle s)
#if defined(SSL_TXT_TLSV1_1) #if defined(SSL_TXT_TLSV1_1)
case TURN_TLS_v1_1: case TURN_TLS_v1_1:
if(s->e->tls_ctx_v1_1) { if(s->e->tls_ctx_v1_1) {
set_socket_ssl(s,SSL_new(s->e->tls_ctx_v1_1)); set_socket_ssl(s,SSL_NEW(s->e->tls_ctx_v1_1));
STRCPY(s->orig_ctx_type,"TLSv1.1"); STRCPY(s->orig_ctx_type,"TLSv1.1");
} }
break; break;
#endif #endif
case TURN_TLS_v1_0: case TURN_TLS_v1_0:
if(s->e->tls_ctx_v1_0) { if(s->e->tls_ctx_v1_0) {
set_socket_ssl(s,SSL_new(s->e->tls_ctx_v1_0)); set_socket_ssl(s,SSL_NEW(s->e->tls_ctx_v1_0));
STRCPY(s->orig_ctx_type,"TLSv1.0"); STRCPY(s->orig_ctx_type,"TLSv1.0");
} }
break; break;
default: default:
if(s->e->tls_ctx_ssl23) { if(s->e->tls_ctx_ssl23) {
set_socket_ssl(s,SSL_new(s->e->tls_ctx_ssl23)); set_socket_ssl(s,SSL_NEW(s->e->tls_ctx_ssl23));
STRCPY(s->orig_ctx_type,"SSLv23"); STRCPY(s->orig_ctx_type,"SSLv23");
} else { } else {
s->tobeclosed = 1; s->tobeclosed = 1;
@ -2416,6 +2388,7 @@ static int socket_input_worker(ioa_socket_handle s)
s->ssl, s->ssl,
BUFFEREVENT_SSL_ACCEPTING, BUFFEREVENT_SSL_ACCEPTING,
BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS);
debug_ptr_add(s->bev);
bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev, bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev,
eventcb_bev, s); eventcb_bev, s);
bufferevent_setwatermark(s->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK); bufferevent_setwatermark(s->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK);
@ -2431,6 +2404,7 @@ static int socket_input_worker(ioa_socket_handle s)
s->bev = bufferevent_socket_new(s->e->event_base, s->bev = bufferevent_socket_new(s->e->event_base,
s->fd, s->fd,
BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS);
debug_ptr_add(s->bev);
bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev, bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev,
eventcb_bev, s); eventcb_bev, s);
bufferevent_setwatermark(s->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK); bufferevent_setwatermark(s->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK);
@ -3255,6 +3229,7 @@ int register_callback_on_ioa_socket(ioa_engine_handle e, ioa_socket_handle s, in
s->bev = bufferevent_socket_new(s->e->event_base, s->bev = bufferevent_socket_new(s->e->event_base,
s->fd, s->fd,
BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS);
debug_ptr_add(s->bev);
bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev, bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev,
eventcb_bev, s); eventcb_bev, s);
bufferevent_setwatermark(s->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK); bufferevent_setwatermark(s->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK);
@ -3272,19 +3247,21 @@ int register_callback_on_ioa_socket(ioa_engine_handle e, ioa_socket_handle s, in
#if !defined(TURN_NO_TLS) #if !defined(TURN_NO_TLS)
if(!(s->ssl)) { if(!(s->ssl)) {
//??? how we can get to this point ??? //??? how we can get to this point ???
set_socket_ssl(s,SSL_new(e->tls_ctx_ssl23)); set_socket_ssl(s,SSL_NEW(e->tls_ctx_ssl23));
STRCPY(s->orig_ctx_type,"SSLv23"); STRCPY(s->orig_ctx_type,"SSLv23");
s->bev = bufferevent_openssl_socket_new(s->e->event_base, s->bev = bufferevent_openssl_socket_new(s->e->event_base,
s->fd, s->fd,
s->ssl, s->ssl,
BUFFEREVENT_SSL_ACCEPTING, BUFFEREVENT_SSL_ACCEPTING,
BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS);
debug_ptr_add(s->bev);
} else { } else {
s->bev = bufferevent_openssl_socket_new(s->e->event_base, s->bev = bufferevent_openssl_socket_new(s->e->event_base,
s->fd, s->fd,
s->ssl, s->ssl,
BUFFEREVENT_SSL_OPEN, BUFFEREVENT_SSL_OPEN,
BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS);
debug_ptr_add(s->bev);
} }
bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev, bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev,
eventcb_bev, s); eventcb_bev, s);

View File

@ -882,12 +882,7 @@ static void close_cli_session(struct cli_session* cs)
cs->ts = NULL; cs->ts = NULL;
} }
if(cs->bev) { BUFFEREVENT_FREE(cs->bev);
bufferevent_flush(cs->bev,EV_READ|EV_WRITE,BEV_FLUSH);
bufferevent_disable(cs->bev,EV_READ|EV_WRITE);
bufferevent_free(cs->bev);
cs->bev=NULL;
}
if(cs->fd>=0) { if(cs->fd>=0) {
close(cs->fd); close(cs->fd);
@ -1175,6 +1170,7 @@ static void cliserver_input_handler(struct evconnlistener *l, evutil_socket_t fd
clisession->bev = bufferevent_socket_new(cliserver.event_base, clisession->bev = bufferevent_socket_new(cliserver.event_base,
fd, fd,
BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS);
debug_ptr_add(clisession->bev);
bufferevent_setcb(clisession->bev, cli_socket_input_handler_bev, NULL, bufferevent_setcb(clisession->bev, cli_socket_input_handler_bev, NULL,
cli_eventcb_bev, clisession); cli_eventcb_bev, clisession);
bufferevent_setwatermark(clisession->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK); bufferevent_setwatermark(clisession->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK);

View File

@ -80,7 +80,7 @@ static SSL* tls_connect(ioa_socket_raw fd, ioa_addr *remote_addr)
{ {
int ctxtype = (int)(((unsigned long)random())%root_tls_ctx_num); int ctxtype = (int)(((unsigned long)random())%root_tls_ctx_num);
SSL *ssl = SSL_new(root_tls_ctx[ctxtype]); SSL *ssl = SSL_NEW(root_tls_ctx[ctxtype]);
if(use_tcp) { if(use_tcp) {
SSL_set_fd(ssl, fd); SSL_set_fd(ssl, fd);
@ -590,8 +590,7 @@ static int clnet_allocate(int verbose,
int close_socket = (int)(random()%2); int close_socket = (int)(random()%2);
if(ssl && !close_socket) { if(ssl && !close_socket) {
SSL_shutdown(ssl); SSL_shutdown(ssl);
SSL_free(ssl); SSL_FREE(ssl);
ssl = NULL;
fd = -1; fd = -1;
} else if(fd>=0) { } else if(fd>=0) {
close(fd); close(fd);
@ -615,7 +614,7 @@ static int clnet_allocate(int verbose,
if(ssl) { if(ssl) {
SSL_shutdown(ssl); SSL_shutdown(ssl);
SSL_free(ssl); SSL_FREE(ssl);
} else if(fd>=0) { } else if(fd>=0) {
close(fd); close(fd);
} }

View File

@ -140,8 +140,7 @@ static void uc_delete_session_elem_data(app_ur_session* cdi) {
SSL_shutdown(cdi->pinfo.tcp_conn[i]->tcp_data_ssl); SSL_shutdown(cdi->pinfo.tcp_conn[i]->tcp_data_ssl);
} }
if(cdi->pinfo.tcp_conn[i]->tcp_data_ssl) { if(cdi->pinfo.tcp_conn[i]->tcp_data_ssl) {
SSL_free(cdi->pinfo.tcp_conn[i]->tcp_data_ssl); SSL_FREE(cdi->pinfo.tcp_conn[i]->tcp_data_ssl);
cdi->pinfo.tcp_conn[i]->tcp_data_ssl = NULL;
} }
if(cdi->pinfo.tcp_conn[i]->tcp_data_fd>=0) { if(cdi->pinfo.tcp_conn[i]->tcp_data_fd>=0) {
socket_closesocket(cdi->pinfo.tcp_conn[i]->tcp_data_fd); socket_closesocket(cdi->pinfo.tcp_conn[i]->tcp_data_fd);
@ -165,8 +164,7 @@ static void uc_delete_session_elem_data(app_ur_session* cdi) {
} }
} }
if(cdi->pinfo.ssl) { if(cdi->pinfo.ssl) {
SSL_free(cdi->pinfo.ssl); SSL_FREE(cdi->pinfo.ssl);
cdi->pinfo.ssl = NULL;
} }
if(cdi->pinfo.fd>=0) { if(cdi->pinfo.fd>=0) {
socket_closesocket(cdi->pinfo.fd); socket_closesocket(cdi->pinfo.fd);
@ -865,8 +863,7 @@ static int start_client(const char *remote_address, int port,
clnet_info_rtcp, &chnum_rtcp); clnet_info_rtcp, &chnum_rtcp);
if(clnet_info_probe.ssl) { if(clnet_info_probe.ssl) {
SSL_free(clnet_info_probe.ssl); SSL_FREE(clnet_info_probe.ssl);
clnet_info_probe.ssl = NULL;
clnet_info_probe.fd = -1; clnet_info_probe.fd = -1;
} else if(clnet_info_probe.fd != -1) { } else if(clnet_info_probe.fd != -1) {
socket_closesocket(clnet_info_probe.fd); socket_closesocket(clnet_info_probe.fd);
@ -971,8 +968,7 @@ static int start_c2c(const char *remote_address, int port,
clnet_info2_rtcp, &chnum2_rtcp); clnet_info2_rtcp, &chnum2_rtcp);
if(clnet_info_probe.ssl) { if(clnet_info_probe.ssl) {
SSL_free(clnet_info_probe.ssl); SSL_FREE(clnet_info_probe.ssl);
clnet_info_probe.ssl = NULL;
clnet_info_probe.fd = -1; clnet_info_probe.fd = -1;
} else if(clnet_info_probe.fd != -1) { } else if(clnet_info_probe.fd != -1) {
socket_closesocket(clnet_info_probe.fd); socket_closesocket(clnet_info_probe.fd);

View File

@ -120,13 +120,17 @@ static inline u64bits _ioa_ntoh64(u64bits v)
#define TURN_LOG_FUNC(level, ...) printf (__VA_ARGS__) #define TURN_LOG_FUNC(level, ...) printf (__VA_ARGS__)
void tm_print_func(void); void tm_print_func(void);
void *turn_malloc_func(size_t sz, const char* file, int line); void *turn_malloc_func(size_t sz, const char* function, int line);
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* function, int line);
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* function, int line);
void turn_free_simple(void *ptr); void turn_free_simple(void *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* function, int line);
char *turn_strdup_func(const char* s, const char* file, int line); char *turn_strdup_func(const char* s, const char* function, int line);
void* debug_ptr_add_func(void *ptr, const char* function, int line);
void debug_ptr_del_func(void *ptr, const char* function, int line);
#define debug_ptr_add(ptr) debug_ptr_add_func((ptr),__FUNCTION__,__LINE__)
#define debug_ptr_del(ptr) debug_ptr_del_func((ptr),__FUNCTION__,__LINE__)
#define tm_print() tm_print_func() #define tm_print() tm_print_func()
#define turn_malloc(sz) turn_malloc_func((size_t)(sz),__FUNCTION__,__LINE__) #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_free(ptr,sz) turn_free_func((ptr),(size_t)(sz),__FUNCTION__,__LINE__)
@ -136,6 +140,8 @@ static inline u64bits _ioa_ntoh64(u64bits v)
#else #else
#define debug_ptr_add(ptr) (ptr)
#define debug_ptr_del(ptr)
#define tm_print() #define tm_print()
#define turn_malloc(sz) malloc((size_t)(sz)) #define turn_malloc(sz) malloc((size_t)(sz))
#define turn_free(ptr,sz) free((ptr)) #define turn_free(ptr,sz) free((ptr))
@ -146,6 +152,11 @@ static inline u64bits _ioa_ntoh64(u64bits v)
#endif #endif
#define SSL_NEW(ctx) ((SSL*)debug_ptr_add(SSL_new(ctx)))
#define SSL_FREE(ssl) do { debug_ptr_del(ssl); SSL_free(ssl); ssl = NULL; } while(0)
#define BUFFEREVENT_FREE(be) do { if(be) { debug_ptr_del(be); bufferevent_flush(be,EV_READ|EV_WRITE,BEV_FLUSH); bufferevent_disable(be,EV_READ|EV_WRITE); bufferevent_free(be); be = NULL;} } while(0)
#define turn_time() ((turn_time_t)time(NULL)) #define turn_time() ((turn_time_t)time(NULL))
typedef int vint; typedef int vint;