mirror of
https://github.com/coturn/coturn.git
synced 2025-10-28 05:21:00 +01:00
more debug information
This commit is contained in:
parent
e50080c753
commit
7973a31f01
@ -747,11 +747,27 @@ static void del_tm_ptr(void *ptr, const char *id) {
|
||||
pthread_mutex_unlock(&tm);
|
||||
}
|
||||
|
||||
static void tm_id(char *id, const char* file, int line) {
|
||||
sprintf(id,"%s:%d",file,line);
|
||||
static void tm_id(char *id, const char* function, int 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);
|
||||
void tm_print_func(void) {
|
||||
@ -765,8 +781,8 @@ void tm_print_func(void) {
|
||||
pthread_mutex_unlock(&tm);
|
||||
}
|
||||
|
||||
extern "C" void *turn_malloc_func(size_t sz, const char* file, int line);
|
||||
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* function, int line) {
|
||||
|
||||
TM_START();
|
||||
|
||||
@ -777,8 +793,8 @@ void *turn_malloc_func(size_t sz, const char* file, int line) {
|
||||
return ptr;
|
||||
}
|
||||
|
||||
extern "C" 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) {
|
||||
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* function, int line) {
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
extern "C" 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) {
|
||||
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* function, int line) {
|
||||
|
||||
UNUSED_ARG(sz);
|
||||
|
||||
@ -816,8 +832,8 @@ void turn_free_simple(void *ptr) {
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
extern "C" 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) {
|
||||
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* function, int line) {
|
||||
|
||||
TM_START();
|
||||
|
||||
@ -828,8 +844,8 @@ void *turn_calloc_func(size_t number, size_t size, const char* file, int line) {
|
||||
return ptr;
|
||||
}
|
||||
|
||||
extern "C" char *turn_strdup_func(const char* s, const char* file, int line);
|
||||
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* function, int line) {
|
||||
|
||||
TM_START();
|
||||
|
||||
|
||||
@ -266,7 +266,7 @@ static ioa_socket_handle dtls_server_input_handler(dtls_listener_relay_server_ty
|
||||
timeout.tv_usec = 0;
|
||||
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);
|
||||
|
||||
@ -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_shutdown(connecting_ssl);
|
||||
}
|
||||
SSL_free(connecting_ssl);
|
||||
SSL_FREE(connecting_ssl);
|
||||
}
|
||||
|
||||
return rc;
|
||||
@ -536,7 +536,7 @@ static int create_new_connected_udp_socket(
|
||||
timeout.tv_usec = 0;
|
||||
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);
|
||||
|
||||
@ -552,7 +552,7 @@ static int create_new_connected_udp_socket(
|
||||
SSL_set_shutdown(connecting_ssl, SSL_RECEIVED_SHUTDOWN);
|
||||
SSL_shutdown(connecting_ssl);
|
||||
}
|
||||
SSL_free(connecting_ssl);
|
||||
SSL_FREE(connecting_ssl);
|
||||
IOA_CLOSE_SOCKET(ret);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1305,11 +1305,7 @@ static void connect_eventcb(struct bufferevent *bev, short events, void *ptr)
|
||||
if (events & BEV_EVENT_CONNECTED) {
|
||||
ret->conn_cb = NULL;
|
||||
ret->conn_arg = NULL;
|
||||
if(ret->conn_bev) {
|
||||
bufferevent_disable(ret->conn_bev,EV_READ|EV_WRITE);
|
||||
bufferevent_free(ret->conn_bev);
|
||||
ret->conn_bev=NULL;
|
||||
}
|
||||
BUFFEREVENT_FREE(ret->conn_bev);
|
||||
ret->connected = 1;
|
||||
if(cb) {
|
||||
cb(1,arg);
|
||||
@ -1318,11 +1314,7 @@ static void connect_eventcb(struct bufferevent *bev, short events, void *ptr)
|
||||
/* An error occured while connecting. */
|
||||
ret->conn_cb = NULL;
|
||||
ret->conn_arg = NULL;
|
||||
if(ret->conn_bev) {
|
||||
bufferevent_disable(ret->conn_bev,EV_READ|EV_WRITE);
|
||||
bufferevent_free(ret->conn_bev);
|
||||
ret->conn_bev=NULL;
|
||||
}
|
||||
BUFFEREVENT_FREE(ret->conn_bev);
|
||||
if(cb) {
|
||||
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);
|
||||
|
||||
if(ret->conn_bev) {
|
||||
bufferevent_disable(ret->conn_bev,EV_READ|EV_WRITE);
|
||||
bufferevent_free(ret->conn_bev);
|
||||
ret->conn_bev=NULL;
|
||||
}
|
||||
BUFFEREVENT_FREE(ret->conn_bev);
|
||||
|
||||
ret->conn_bev = bufferevent_socket_new(ret->e->event_base,
|
||||
ret->fd,
|
||||
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);
|
||||
|
||||
ret->conn_arg = arg;
|
||||
@ -1577,16 +1566,8 @@ static void close_socket_net_data(ioa_socket_handle s)
|
||||
evconnlistener_free(s->list_ev);
|
||||
s->list_ev = NULL;
|
||||
}
|
||||
if(s->conn_bev) {
|
||||
bufferevent_disable(s->conn_bev,EV_READ|EV_WRITE);
|
||||
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;
|
||||
}
|
||||
BUFFEREVENT_FREE(s->conn_bev);
|
||||
BUFFEREVENT_FREE(s->bev);
|
||||
|
||||
if (s->ssl) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
SSL_free(s->ssl);
|
||||
s->ssl = NULL;
|
||||
SSL_FREE(s->ssl);
|
||||
}
|
||||
|
||||
if (s->fd >= 0) {
|
||||
@ -1630,18 +1610,10 @@ void detach_socket_net_data(ioa_socket_handle s)
|
||||
}
|
||||
s->acb = NULL;
|
||||
s->acbarg = NULL;
|
||||
if(s->conn_bev) {
|
||||
bufferevent_disable(s->conn_bev,EV_READ|EV_WRITE);
|
||||
bufferevent_free(s->conn_bev);
|
||||
s->conn_bev=NULL;
|
||||
}
|
||||
BUFFEREVENT_FREE(s->conn_bev);
|
||||
s->conn_arg=NULL;
|
||||
s->conn_cb=NULL;
|
||||
if(s->bev) {
|
||||
bufferevent_disable(s->bev,EV_READ|EV_WRITE);
|
||||
bufferevent_free(s->bev);
|
||||
s->bev=NULL;
|
||||
}
|
||||
BUFFEREVENT_FREE(s->bev);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2382,7 +2354,7 @@ static int socket_input_worker(ioa_socket_handle s)
|
||||
#if defined(SSL_TXT_TLSV1_2)
|
||||
case TURN_TLS_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");
|
||||
}
|
||||
break;
|
||||
@ -2390,20 +2362,20 @@ static int socket_input_worker(ioa_socket_handle s)
|
||||
#if defined(SSL_TXT_TLSV1_1)
|
||||
case TURN_TLS_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");
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case TURN_TLS_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");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
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");
|
||||
} else {
|
||||
s->tobeclosed = 1;
|
||||
@ -2416,6 +2388,7 @@ static int socket_input_worker(ioa_socket_handle s)
|
||||
s->ssl,
|
||||
BUFFEREVENT_SSL_ACCEPTING,
|
||||
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,
|
||||
eventcb_bev, s);
|
||||
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->fd,
|
||||
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,
|
||||
eventcb_bev, s);
|
||||
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->fd,
|
||||
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,
|
||||
eventcb_bev, s);
|
||||
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(!(s->ssl)) {
|
||||
//??? 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");
|
||||
s->bev = bufferevent_openssl_socket_new(s->e->event_base,
|
||||
s->fd,
|
||||
s->ssl,
|
||||
BUFFEREVENT_SSL_ACCEPTING,
|
||||
BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS);
|
||||
debug_ptr_add(s->bev);
|
||||
} else {
|
||||
s->bev = bufferevent_openssl_socket_new(s->e->event_base,
|
||||
s->fd,
|
||||
s->ssl,
|
||||
BUFFEREVENT_SSL_OPEN,
|
||||
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,
|
||||
eventcb_bev, s);
|
||||
|
||||
@ -882,12 +882,7 @@ static void close_cli_session(struct cli_session* cs)
|
||||
cs->ts = NULL;
|
||||
}
|
||||
|
||||
if(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;
|
||||
}
|
||||
BUFFEREVENT_FREE(cs->bev);
|
||||
|
||||
if(cs->fd>=0) {
|
||||
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,
|
||||
fd,
|
||||
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,
|
||||
cli_eventcb_bev, clisession);
|
||||
bufferevent_setwatermark(clisession->bev, EV_READ|EV_WRITE, 0, BUFFEREVENT_HIGH_WATERMARK);
|
||||
|
||||
@ -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);
|
||||
|
||||
SSL *ssl = SSL_new(root_tls_ctx[ctxtype]);
|
||||
SSL *ssl = SSL_NEW(root_tls_ctx[ctxtype]);
|
||||
|
||||
if(use_tcp) {
|
||||
SSL_set_fd(ssl, fd);
|
||||
@ -590,8 +590,7 @@ static int clnet_allocate(int verbose,
|
||||
int close_socket = (int)(random()%2);
|
||||
if(ssl && !close_socket) {
|
||||
SSL_shutdown(ssl);
|
||||
SSL_free(ssl);
|
||||
ssl = NULL;
|
||||
SSL_FREE(ssl);
|
||||
fd = -1;
|
||||
} else if(fd>=0) {
|
||||
close(fd);
|
||||
@ -615,7 +614,7 @@ static int clnet_allocate(int verbose,
|
||||
|
||||
if(ssl) {
|
||||
SSL_shutdown(ssl);
|
||||
SSL_free(ssl);
|
||||
SSL_FREE(ssl);
|
||||
} else if(fd>=0) {
|
||||
close(fd);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
if(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;
|
||||
SSL_FREE(cdi->pinfo.tcp_conn[i]->tcp_data_ssl);
|
||||
}
|
||||
if(cdi->pinfo.tcp_conn[i]->tcp_data_fd>=0) {
|
||||
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) {
|
||||
SSL_free(cdi->pinfo.ssl);
|
||||
cdi->pinfo.ssl = NULL;
|
||||
SSL_FREE(cdi->pinfo.ssl);
|
||||
}
|
||||
if(cdi->pinfo.fd>=0) {
|
||||
socket_closesocket(cdi->pinfo.fd);
|
||||
@ -865,8 +863,7 @@ static int start_client(const char *remote_address, int port,
|
||||
clnet_info_rtcp, &chnum_rtcp);
|
||||
|
||||
if(clnet_info_probe.ssl) {
|
||||
SSL_free(clnet_info_probe.ssl);
|
||||
clnet_info_probe.ssl = NULL;
|
||||
SSL_FREE(clnet_info_probe.ssl);
|
||||
clnet_info_probe.fd = -1;
|
||||
} else if(clnet_info_probe.fd != -1) {
|
||||
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);
|
||||
|
||||
if(clnet_info_probe.ssl) {
|
||||
SSL_free(clnet_info_probe.ssl);
|
||||
clnet_info_probe.ssl = NULL;
|
||||
SSL_FREE(clnet_info_probe.ssl);
|
||||
clnet_info_probe.fd = -1;
|
||||
} else if(clnet_info_probe.fd != -1) {
|
||||
socket_closesocket(clnet_info_probe.fd);
|
||||
|
||||
@ -120,13 +120,17 @@ static inline u64bits _ioa_ntoh64(u64bits v)
|
||||
#define TURN_LOG_FUNC(level, ...) printf (__VA_ARGS__)
|
||||
|
||||
void tm_print_func(void);
|
||||
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_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* function, int line);
|
||||
void turn_free_func(void *ptr, size_t sz, const char* function, int line);
|
||||
void turn_free_simple(void *ptr);
|
||||
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);
|
||||
void *turn_calloc_func(size_t number, size_t size, const char* function, 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 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__)
|
||||
@ -136,6 +140,8 @@ static inline u64bits _ioa_ntoh64(u64bits v)
|
||||
|
||||
#else
|
||||
|
||||
#define debug_ptr_add(ptr) (ptr)
|
||||
#define debug_ptr_del(ptr)
|
||||
#define tm_print()
|
||||
#define turn_malloc(sz) malloc((size_t)(sz))
|
||||
#define turn_free(ptr,sz) free((ptr))
|
||||
@ -146,6 +152,11 @@ static inline u64bits _ioa_ntoh64(u64bits v)
|
||||
|
||||
#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))
|
||||
|
||||
typedef int vint;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user