diff --git a/src/apps/common/apputils.c b/src/apps/common/apputils.c index a4b7dc35..d13d5e97 100644 --- a/src/apps/common/apputils.c +++ b/src/apps/common/apputils.c @@ -64,6 +64,7 @@ #include #endif +#include #include #include #include @@ -90,7 +91,7 @@ int socket_set_nonblocking(evutil_socket_t fd) { ioctlsocket(fd, FIONBIO, (unsigned long *)&nonblocking); #else if (fcntl(fd, F_SETFL, O_NONBLOCK) == -1) { - perror("O_NONBLOCK"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "O_NONBLOCK: %s\n", strerror(errno)); return -1; } #endif @@ -122,8 +123,8 @@ int set_sock_buf_size(evutil_socket_t fd, int sz0) { } if (sz < 1) { - perror("Cannot set socket rcv size"); - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Cannot set rcv sock size %d on fd %d\n", sz0, fd); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot set receive sock size %d on fd %d. Error: %s\n", sz0, fd, + strerror(errno)); } sz = sz0; @@ -136,8 +137,8 @@ int set_sock_buf_size(evutil_socket_t fd, int sz0) { } if (sz < 1) { - perror("Cannot set socket snd size"); - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Cannot set snd sock size %d on fd %d\n", sz0, fd); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot set send socket size %d on fd %d. Error: %s\n", sz0, fd, + strerror(errno)); } return 0; @@ -206,7 +207,7 @@ int socket_set_reusable(evutil_socket_t fd, int flag, SOCKET_TYPE st) { int on = flag; const int ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const void *)&on, (socklen_t)sizeof(on)); if (ret < 0) { - perror("SO_REUSEADDR"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "SO_REUSEADDR: %s\n", strerror(errno)); } } #endif @@ -218,7 +219,7 @@ int socket_set_reusable(evutil_socket_t fd, int flag, SOCKET_TYPE st) { int on = flag; int ret = setsockopt(fd, IPPROTO_SCTP, SCTP_REUSE_PORT, (const void *)&on, (socklen_t)sizeof(on)); if (ret < 0) { - perror("SCTP_REUSE_PORT"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "SCTP_REUSE_PORT: %s\n", strerror(errno)); } } } @@ -249,9 +250,10 @@ int sock_bind_to_device(evutil_socket_t fd, const unsigned char *ifname) { if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, (const void *)&ifr, sizeof(ifr)) < 0) { if (socket_eperm()) { - perror("You must obtain superuser privileges to bind a socket to device"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "You must obtain superuser privileges to bind a socket to device: %s\n", + strerror(errno)); } else { - perror("Cannot bind socket to device"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot bind socket to device: %s\n", strerror(errno)); } return -1; @@ -285,7 +287,7 @@ int addr_connect(evutil_socket_t fd, const ioa_addr *addr, int *out_errno) { } if (err < 0 && !socket_einprogress()) { - perror("Connect"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Connect: %s\n", strerror(errno)); } return err; @@ -318,11 +320,9 @@ int addr_bind(evutil_socket_t fd, const ioa_addr *addr, int reusable, int debug, } if (ret < 0) { if (debug) { - const int err = socket_errno(); - perror("bind"); char str[MAX_IOA_ADDR_STRING]; addr_to_string(addr, str); - TURN_LOG_FUNC(TURN_LOG_LEVEL_WARNING, "Trying to bind fd %d to <%s>: errno=%d\n", fd, str, err); + TURN_LOG_FUNC(TURN_LOG_LEVEL_WARNING, "Trying to bind fd %d to <%s>: errno=%d\n", fd, str, socket_errno()); } } return ret; @@ -364,7 +364,7 @@ int get_raw_socket_ttl(evutil_socket_t fd, int family) { #else socklen_t slen = (socklen_t)sizeof(ttl); if (getsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, (void *)&ttl, &slen) < 0) { - perror("get HOPLIMIT on socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "get HOPLIMIT on socket: %s\n", strerror(errno)); return TTL_IGNORE; } #endif @@ -377,7 +377,7 @@ int get_raw_socket_ttl(evutil_socket_t fd, int family) { #else socklen_t slen = (socklen_t)sizeof(ttl); if (getsockopt(fd, IPPROTO_IP, IP_TTL, (void *)&ttl, &slen) < 0) { - perror("get TTL on socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "get TTL on socket: %s\n", strerror(errno)); return TTL_IGNORE; } #endif @@ -400,7 +400,7 @@ int get_raw_socket_tos(evutil_socket_t fd, int family) { #else socklen_t slen = (socklen_t)sizeof(tos); if (getsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, (void *)&tos, &slen) < 0) { - perror("get TCLASS on socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "get TCLASS on socket: %s\n", strerror(errno)); return -1; } #endif @@ -413,7 +413,7 @@ int get_raw_socket_tos(evutil_socket_t fd, int family) { #else socklen_t slen = (socklen_t)sizeof(tos); if (getsockopt(fd, IPPROTO_IP, IP_TOS, (void *)&tos, &slen) < 0) { - perror("get TOS on socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "get TOS on socket: %s\n", strerror(errno)); return -1; } #endif @@ -433,7 +433,7 @@ int set_raw_socket_ttl(evutil_socket_t fd, int family, int ttl) { #else CORRECT_RAW_TTL(ttl); if (setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, (const void *)&ttl, sizeof(ttl)) < 0) { - perror("set HOPLIMIT on socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "set HOPLIMIT on socket: %s\n", strerror(errno)); return -1; } #endif @@ -444,7 +444,7 @@ int set_raw_socket_ttl(evutil_socket_t fd, int family, int ttl) { #else CORRECT_RAW_TTL(ttl); if (setsockopt(fd, IPPROTO_IP, IP_TTL, (const void *)&ttl, sizeof(ttl)) < 0) { - perror("set TTL on socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "set TTL on socket: %s\n", strerror(errno)); return -1; } #endif @@ -462,7 +462,7 @@ int set_raw_socket_tos(evutil_socket_t fd, int family, int tos) { #else CORRECT_RAW_TOS(tos); if (setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, (const void *)&tos, sizeof(tos)) < 0) { - perror("set TCLASS on socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "set TCLASS on socket: %s\n", strerror(errno)); return -1; } #endif @@ -472,7 +472,7 @@ int set_raw_socket_tos(evutil_socket_t fd, int family, int tos) { UNUSED_ARG(tos); #else if (setsockopt(fd, IPPROTO_IP, IP_TOS, (const void *)&tos, sizeof(tos)) < 0) { - perror("set TOS on socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "set TOS on socket: %s\n", strerror(errno)); return -1; } #endif @@ -562,9 +562,8 @@ int set_socket_df(evutil_socket_t fd, int family, int value) { } if (ret < 0) { int err = socket_errno(); - perror("set socket df:"); - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "%s: set sockopt failed: fd=%d, err=%d, family=%d\n", __FUNCTION__, fd, err, - family); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: set sockopt failed: fd=%d, err=%d, family=%d. Error: %s\n", __FUNCTION__, + fd, err, family, strerror(errno)); } } #elif defined(IPPROTO_IP) && defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DO) && defined(IP_PMTUDISC_DONT) // LINUX @@ -588,8 +587,7 @@ int set_socket_df(evutil_socket_t fd, int family, int value) { #endif } if (ret < 0) { - perror("set DF"); - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "%s: set sockopt failed\n", __FUNCTION__); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: set sockopt failed. Error: %s\n", __FUNCTION__, strerror(errno)); } } #else @@ -1193,7 +1191,7 @@ void ignore_sigpipe(void) { #if defined(__linux__) || defined(__APPLE__) /* Ignore SIGPIPE from TCP sockets */ if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { - perror("Cannot set SIGPIPE handler"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot set SIGPIPE handler: %s\n", strerror(errno)); } #endif } @@ -1239,7 +1237,7 @@ unsigned long set_system_parameters(int max_resources) { struct rlimit rlim; if (getrlimit(RLIMIT_NOFILE, &rlim) < 0) { - perror("Cannot get system limit"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot get system limit: %s\n", strerror(errno)); } else { rlim.rlim_cur = rlim.rlim_max; while ((setrlimit(RLIMIT_NOFILE, &rlim) < 0) && (rlim.rlim_cur > 0)) { diff --git a/src/apps/common/ns_turn_utils.c b/src/apps/common/ns_turn_utils.c index 7c71aeb5..e114fc48 100644 --- a/src/apps/common/ns_turn_utils.c +++ b/src/apps/common/ns_turn_utils.c @@ -60,8 +60,9 @@ #endif #endif -#include // for tolower -#include // for memcmp, strstr, strcmp, strdup, strlen +#include // for tolower +#include +#include // for memcmp, strstr, strcmp, strdup, strlen, strerror ////////// LOG TIME OPTIMIZATION /////////// @@ -96,7 +97,7 @@ int turn_mutex_lock(const turn_mutex *mutex) { int ret = 0; ret = pthread_mutex_lock((pthread_mutex_t *)mutex->mutex); if (ret < 0) { - perror("Mutex lock"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Mutex lock: %s\n", strerror(errno)); } return ret; } else { @@ -110,7 +111,7 @@ int turn_mutex_unlock(const turn_mutex *mutex) { int ret = 0; ret = pthread_mutex_unlock((pthread_mutex_t *)mutex->mutex); if (ret < 0) { - perror("Mutex unlock"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Mutex unlock: %s\n", strerror(errno)); } return ret; } else { @@ -126,12 +127,12 @@ int turn_mutex_init(turn_mutex *mutex) { mutex->mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); if (!(mutex->mutex)) { - perror("Cannot allocate mutex"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot allocate mutex: %s\n", strerror(errno)); return -1; } if (pthread_mutex_init((pthread_mutex_t *)mutex->mutex, NULL) != 0) { - perror("Cannot init mutex"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot init mutex: %s\n", strerror(errno)); free(mutex->mutex); mutex->mutex = NULL; return -1; @@ -148,23 +149,23 @@ int turn_mutex_init_recursive(turn_mutex *mutex) { pthread_mutexattr_t attr; if (pthread_mutexattr_init(&attr) != 0) { - perror("Cannot init mutex attr"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot init mutex attr: %s\n", strerror(errno)); return -1; } if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) != 0) { - perror("Cannot set type on mutex attr"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot set type on mutex attr: %s\n", strerror(errno)); return -1; } mutex->mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); if (!(mutex->mutex)) { - perror("Cannot allocate mutex"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot allocate mutex: %s\n", strerror(errno)); return -1; } if (pthread_mutex_init((pthread_mutex_t *)mutex->mutex, &attr) != 0) { - perror("Cannot init mutex"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot init mutex: %s\n", strerror(errno)); free(mutex->mutex); mutex->mutex = NULL; return -1; diff --git a/src/apps/peer/udpserver.c b/src/apps/peer/udpserver.c index ef25a370..4a6b35fa 100644 --- a/src/apps/peer/udpserver.c +++ b/src/apps/peer/udpserver.c @@ -35,6 +35,7 @@ #include "udpserver.h" #include "apputils.h" #include "stun_buffer.h" +#include #include // for USHRT_MAX @@ -93,7 +94,7 @@ static int udp_create_server_socket(server_type *const server, const char *const evutil_socket_t udp_fd = socket(server_addr->ss.sa_family, RELAY_DGRAM_SOCKET_TYPE, RELAY_DGRAM_SOCKET_PROTOCOL); if (udp_fd < 0) { - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "socket: %s\n", strerror(errno)); free(server_addr); return -1; } diff --git a/src/apps/relay/dtls_listener.c b/src/apps/relay/dtls_listener.c index f5b63aee..99e2e048 100644 --- a/src/apps/relay/dtls_listener.c +++ b/src/apps/relay/dtls_listener.c @@ -34,6 +34,7 @@ #include "apputils.h" #include "mainrelay.h" +#include #include "dtls_listener.h" #include "ns_ioalib_impl.h" @@ -497,8 +498,7 @@ static int create_new_connected_udp_socket(dtls_listener_relay_server_type *serv evutil_socket_t udp_fd = socket(s->local_addr.ss.sa_family, CLIENT_DGRAM_SOCKET_TYPE, CLIENT_DGRAM_SOCKET_PROTOCOL); if (udp_fd < 0) { - perror("socket"); - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Cannot allocate new socket\n", __FUNCTION__); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Cannot allocate new socket. Error: %s\n", __FUNCTION__, strerror(errno)); return -1; } @@ -724,9 +724,7 @@ start_udp_cycle: if (bsize < 0) { if (!to_block && !conn_reset) { - const int ern = socket_errno(); - perror(__FUNCTION__); - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: recvfrom error %d\n", __FUNCTION__, ern); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: recvfrom error %d\n", __FUNCTION__, socket_errno()); } ioa_network_buffer_delete(server->e, server->sm.m.sm.nd.nbh); server->sm.m.sm.nd.nbh = NULL; @@ -824,7 +822,7 @@ static int create_server_socket(dtls_listener_relay_server_type *server, int rep udp_listen_fd = socket(server->addr.ss.sa_family, CLIENT_DGRAM_SOCKET_TYPE, CLIENT_DGRAM_SOCKET_PROTOCOL); if (udp_listen_fd < 0) { - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: socket error: %s\n", __FUNCTION__, strerror(errno)); return -1; } @@ -846,17 +844,18 @@ static int create_server_socket(dtls_listener_relay_server_type *server, int rep retry_addr_bind: if (addr_bind(udp_listen_fd, &server->addr, 1, 1, UDP_SOCKET) < 0) { - perror("Cannot bind local socket to addr"); char saddr[MAX_IOA_ADDR_STRING]; addr_to_string(&server->addr, saddr); - TURN_LOG_FUNC(TURN_LOG_LEVEL_WARNING, "Cannot bind DTLS/UDP listener socket to addr %s\n", saddr); + TURN_LOG_FUNC(TURN_LOG_LEVEL_WARNING, "Cannot bind DTLS/UDP listener socket to addr %s. Error: %s\n", saddr, + strerror(errno)); if (addr_bind_cycle++ < max_binding_time) { TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Trying to bind DTLS/UDP listener socket to addr %s, again...\n", saddr); sleep(1); goto retry_addr_bind; } - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Fatal final failure: cannot bind DTLS/UDP listener socket to addr %s\n", - saddr); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, + "Fatal final failure: cannot bind DTLS/UDP listener socket to addr %s. Error: %s\n", saddr, + strerror(errno)); exit(-1); } } @@ -906,7 +905,7 @@ static int reopen_server_socket(dtls_listener_relay_server_type *server, evutil_ const ioa_socket_raw udp_listen_fd = socket(server->addr.ss.sa_family, CLIENT_DGRAM_SOCKET_TYPE, CLIENT_DGRAM_SOCKET_PROTOCOL); if (udp_listen_fd < 0) { - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: socket error: %s\n", __FUNCTION__, strerror(errno)); FUNCEND; return -1; } @@ -919,14 +918,14 @@ static int reopen_server_socket(dtls_listener_relay_server_type *server, evutil_ set_ioa_socket_buf_size(server->udp_listen_s, server->ts->sock_buf_size); if (sock_bind_to_device(udp_listen_fd, (unsigned char *)server->ifname) < 0) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Cannot bind listener socket to device %s\n", server->ifname); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot bind listener socket to device %s. Error: %s\n", server->ifname, + strerror(errno)); } if (addr_bind(udp_listen_fd, &server->addr, 1, 1, UDP_SOCKET) < 0) { - perror("Cannot bind local socket to addr"); char saddr[MAX_IOA_ADDR_STRING]; addr_to_string(&server->addr, saddr); - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Cannot bind listener socket to addr %s\n", saddr); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot bind local socket to addr %s. Error: %s\n", saddr, strerror(errno)); return -1; } diff --git a/src/apps/relay/mainrelay.c b/src/apps/relay/mainrelay.c index c8c7acba..a18547c6 100644 --- a/src/apps/relay/mainrelay.c +++ b/src/apps/relay/mainrelay.c @@ -33,6 +33,7 @@ */ #include "mainrelay.h" +#include #include "dbdrivers/dbdriver.h" @@ -3041,7 +3042,7 @@ static void drop_privileges(void) { if (procgroupid_set) { if (getgid() != procgroupid) { if (setgid(procgroupid) != 0) { - perror("setgid: Unable to change group privileges"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "setgid: Unable to change group privileges: %s\n", strerror(errno)); exit(-1); } else { TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "New GID: %s(%lu)\n", procgroupname, (unsigned long)procgroupid); @@ -3054,7 +3055,7 @@ static void drop_privileges(void) { if (procuserid_set) { if (procuserid != getuid()) { if (setuid(procuserid) != 0) { - perror("setuid: Unable to change user privileges"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "setuid: Unable to change user privileges: %s\n", strerror(errno)); exit(-1); } else { TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "New UID: %s(%lu)\n", procusername, (unsigned long)procuserid); @@ -3830,7 +3831,7 @@ static void set_ctx(SSL_CTX **out, const char *protocol, const SSL_METHOD *metho if (turn_params.dh_file[0]) { FILE *paramfile = fopen(turn_params.dh_file, "r"); if (!paramfile) { - perror("Cannot open DH file"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot open DH file: %s\n", strerror(errno)); } else { OSSL_DECODER_CTX *dctx = OSSL_DECODER_CTX_new_for_pkey(&dh, "PEM", NULL, "DH", EVP_PKEY_KEY_PARAMETERS, NULL, NULL); @@ -3875,7 +3876,7 @@ static void set_ctx(SSL_CTX **out, const char *protocol, const SSL_METHOD *metho FILE *f = fopen(turn_params.secret_key_file, "r"); if (!f) { - perror("Cannot open Secret-Key file"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot open Secret-Key file: %s\n", strerror(errno)); } else { fseek(f, 0, SEEK_SET); rc = fread(turn_params.secret_key, sizeof(char), 16, f); diff --git a/src/apps/relay/netengine.c b/src/apps/relay/netengine.c index 13915f77..70eb3294 100644 --- a/src/apps/relay/netengine.c +++ b/src/apps/relay/netengine.c @@ -33,6 +33,7 @@ */ #include "mainrelay.h" +#include #include "ns_turn_ioalib.h" @@ -96,7 +97,7 @@ static void barrier_wait_func(const char *func, int line) { br = pthread_barrier_wait(&barrier); if ((br < 0) && (br != PTHREAD_BARRIER_SERIAL_THREAD)) { const int err = socket_errno(); - perror("barrier wait"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "barrier wait: %s\n", strerror(errno)); printf("%s:%s:%d: %d\n", __FUNCTION__, func, line, err); } } while (((br < 0) && (br != PTHREAD_BARRIER_SERIAL_THREAD)) && socket_eintr()); @@ -785,7 +786,7 @@ static int handle_relay_message(relay_server_handle rs, struct message_to_relay break; } default: { - perror("Weird buffer type\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Weird buffer type: %s\n", strerror(errno)); } } } @@ -811,7 +812,7 @@ static void relay_receive_message(struct bufferevent *bev, void *ptr) { while ((n = evbuffer_remove(input, &sm, sizeof(struct message_to_relay))) > 0) { if (n != sizeof(struct message_to_relay)) { - perror("Weird buffer error\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Weird buffer error: %s\n", strerror(errno)); continue; } @@ -828,7 +829,7 @@ static void relay_receive_auth_message(struct bufferevent *bev, void *ptr) { while ((n = evbuffer_remove(input, &am, sizeof(struct auth_message))) > 0) { if (n != sizeof(struct auth_message)) { - perror("Weird auth_buffer error\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Weird auth_buffer error: %s\n", strerror(errno)); continue; } @@ -864,12 +865,12 @@ static void listener_receive_message(struct bufferevent *bev, void *ptr) { while ((n = evbuffer_remove(input, &mm, sizeof(struct message_to_listener))) > 0) { if (n != sizeof(struct message_to_listener)) { - perror("Weird buffer error\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Weird buffer error: %s\n", strerror(errno)); continue; } if (mm.t != LMT_TO_CLIENT) { - perror("Weird buffer type\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Weird buffer type: %s\n", strerror(errno)); continue; } @@ -1069,7 +1070,7 @@ static void setup_barriers(void) { #if !defined(TURN_NO_THREAD_BARRIERS) { if (pthread_barrier_init(&barrier, NULL, barrier_count) != 0) { - perror("barrier init"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "barrier init: %s\n", strerror(errno)); } } @@ -1164,7 +1165,7 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) { ++udp_relay_server_index; pthread_t thr; if (pthread_create(&thr, NULL, run_udp_listener_thread, turn_params.listener.aux_udp_services[index][0])) { - perror("Cannot create aux listener thread\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot create aux listener thread: %s\n", strerror(errno)); exit(-1); } pthread_detach(thr); @@ -1191,7 +1192,7 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) { ++udp_relay_server_index; pthread_t thr; if (pthread_create(&thr, NULL, run_udp_listener_thread, turn_params.listener.udp_services[index][0])) { - perror("Cannot create listener thread\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot create listener thread: %s\n", strerror(errno)); exit(-1); } pthread_detach(thr); @@ -1210,7 +1211,7 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) { ++udp_relay_server_index; pthread_t thr; if (pthread_create(&thr, NULL, run_udp_listener_thread, turn_params.listener.udp_services[index + 1][0])) { - perror("Cannot create listener thread\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot create listener thread: %s\n", strerror(errno)); exit(-1); } pthread_detach(thr); @@ -1235,7 +1236,7 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) { ++udp_relay_server_index; pthread_t thr; if (pthread_create(&thr, NULL, run_udp_listener_thread, turn_params.listener.dtls_services[index][0])) { - perror("Cannot create listener thread\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot create listener thread: %s\n", strerror(errno)); exit(-1); } pthread_detach(thr); @@ -1255,7 +1256,7 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) { ++udp_relay_server_index; pthread_t thr; if (pthread_create(&thr, NULL, run_udp_listener_thread, turn_params.listener.dtls_services[index + 1][0])) { - perror("Cannot create listener thread\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot create listener thread: %s\n", strerror(errno)); exit(-1); } pthread_detach(thr); @@ -1734,7 +1735,7 @@ static void setup_general_relay_servers(void) { if (turn_params.general_relay_servers_number > 0 && turn_params.net_engine_version == NEV_UDP_SOCKET_PER_THREAD) { if (pthread_barrier_init(&relay_setup_barrier, NULL, (unsigned int)get_real_general_relay_servers_number() + 1) != 0) { - perror("relay_setup_barrier init"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "relay_setup_barrier init: %s\n", strerror(errno)); } } #endif @@ -1757,7 +1758,7 @@ static void setup_general_relay_servers(void) { general_relay_servers[i]->id = (turnserver_id)i; general_relay_servers[i]->sm = sm; if (pthread_create(&(general_relay_servers[i]->thr), NULL, run_general_relay_thread, general_relay_servers[i])) { - perror("Cannot create relay thread\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot create relay thread: %s\n", strerror(errno)); exit(-1); } pthread_detach(general_relay_servers[i]->thr); @@ -1828,7 +1829,7 @@ static void setup_auth_server(struct auth_server *as) { pthread_attr_t attr; if (pthread_attr_init(&attr) || pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) || pthread_create(&(as->thr), &attr, run_auth_server_thread, as)) { - perror("Cannot create auth thread\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot create auth thread: %s\n", strerror(errno)); exit(-1); } } @@ -1853,7 +1854,7 @@ static void setup_admin_server(void) { adminserver.verbose = turn_params.verbose; if (pthread_create(&(adminserver.thr), NULL, run_admin_server_thread, &adminserver)) { - perror("Cannot create cli thread\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot create cli thread: %s\n", strerror(errno)); exit(-1); } diff --git a/src/apps/relay/ns_ioalib_engine_impl.c b/src/apps/relay/ns_ioalib_engine_impl.c index 7c392d60..2ba686b4 100644 --- a/src/apps/relay/ns_ioalib_engine_impl.c +++ b/src/apps/relay/ns_ioalib_engine_impl.c @@ -36,6 +36,7 @@ #include "ns_turn_server.h" #include "ns_turn_session.h" #include "ns_turn_utils.h" +#include #include "apputils.h" #include "stun_buffer.h" @@ -783,7 +784,7 @@ int set_raw_socket_ttl_options(evutil_socket_t fd, int family) { #else int recv_ttl_on = 1; if (setsockopt(fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, (const void *)&recv_ttl_on, sizeof(recv_ttl_on)) < 0) { - perror("cannot set recvhoplimit\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "cannot set recvhoplimit: %s\n", strerror(errno)); } #endif } else { @@ -792,7 +793,7 @@ int set_raw_socket_ttl_options(evutil_socket_t fd, int family) { #else int recv_ttl_on = 1; if (setsockopt(fd, IPPROTO_IP, IP_RECVTTL, (const void *)&recv_ttl_on, sizeof(recv_ttl_on)) < 0) { - perror("cannot set recvttl\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "cannot set recvttl: %s\n", strerror(errno)); } #endif } @@ -807,7 +808,7 @@ int set_raw_socket_tos_options(evutil_socket_t fd, int family) { #else int recv_tos_on = 1; if (setsockopt(fd, IPPROTO_IPV6, IPV6_RECVTCLASS, (const void *)&recv_tos_on, sizeof(recv_tos_on)) < 0) { - perror("cannot set recvtclass\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "cannot set recvtclass: %s\n", strerror(errno)); } #endif } else { @@ -816,7 +817,7 @@ int set_raw_socket_tos_options(evutil_socket_t fd, int family) { #else int recv_tos_on = 1; if (setsockopt(fd, IPPROTO_IP, IP_RECVTOS, (const void *)&recv_tos_on, sizeof(recv_tos_on)) < 0) { - perror("cannot set recvtos\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "cannot set recvtos: %s\n", strerror(errno)); } #endif } @@ -836,7 +837,7 @@ int set_socket_options_fd(evutil_socket_t fd, SOCKET_TYPE st, int family) { so_linger.l_onoff = 1; so_linger.l_linger = 0; if (setsockopt(fd, SOL_SOCKET, SO_LINGER, (const void *)&so_linger, sizeof(so_linger)) < 1) { - // perror("setsolinger") + // TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "setsolinger: %s\n", strerror(errno)) ; } } @@ -854,7 +855,7 @@ int set_socket_options_fd(evutil_socket_t fd, SOCKET_TYPE st, int family) { on = 1; #endif if (setsockopt(fd, IPPROTO_IP, IP_RECVERR, (const void *)&on, sizeof(on)) < 0) { - perror("IP_RECVERR"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "IP_RECVERR: %s\n", strerror(errno)); } } #endif @@ -866,7 +867,7 @@ int set_socket_options_fd(evutil_socket_t fd, SOCKET_TYPE st, int family) { on = 1; #endif if (setsockopt(fd, IPPROTO_IPV6, IPV6_RECVERR, (const void *)&on, sizeof(on)) < 0) { - perror("IPV6_RECVERR"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "IPV6_RECVERR: %s\n", strerror(errno)); } } #endif @@ -924,14 +925,14 @@ ioa_socket_handle create_unbound_relay_ioa_socket(ioa_engine_handle e, int famil case UDP_SOCKET: fd = socket(family, RELAY_DGRAM_SOCKET_TYPE, RELAY_DGRAM_SOCKET_PROTOCOL); if (fd < 0) { - perror("UDP socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "UDP socket: %s\n", strerror(errno)); return NULL; } break; case TCP_SOCKET: fd = socket(family, RELAY_STREAM_SOCKET_TYPE, RELAY_STREAM_SOCKET_PROTOCOL); if (fd < 0) { - perror("TCP socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "TCP socket: %s\n", strerror(errno)); return NULL; } break; @@ -1042,7 +1043,7 @@ int create_relay_ioa_sockets(ioa_engine_handle e, ioa_socket_handle client_s, in } *rtcp_s = create_unbound_relay_ioa_socket(e, relay_addr.ss.sa_family, UDP_SOCKET, RELAY_RTCP_SOCKET); if (*rtcp_s == NULL) { - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "socket: %s\n", strerror(errno)); IOA_CLOSE_SOCKET(*rtp_s); addr_set_port(&local_addr, port); turnipports_release(tp, transport, &local_addr); @@ -1091,7 +1092,7 @@ int create_relay_ioa_sockets(ioa_engine_handle e, ioa_socket_handle client_s, in addr_set_port(&rtcp_local_addr, rtcp_port); turnipports_release(tp, transport, &rtcp_local_addr); } - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "socket: %s\n", strerror(errno)); return -1; } @@ -1293,7 +1294,7 @@ ccs_end: */ s->fd = socket(s->family, RELAY_STREAM_SOCKET_TYPE, RELAY_STREAM_SOCKET_PROTOCOL); if (s->fd < 0) { - perror("TCP socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "TCP socket: %s\n", strerror(errno)); if (ret) { set_ioa_socket_session(ret, NULL); IOA_CLOSE_SOCKET(ret); @@ -1565,19 +1566,18 @@ ioa_socket_handle detach_ioa_socket(ioa_socket_handle s) { TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Detaching NULL socket\n"); } else { if ((s->magic != SOCKET_MAGIC) || (s->done)) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "!!! %s detach on bad socket: %p, st=%d, sat=%d\n", __FUNCTION__, s, s->st, - s->sat); - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "!!! %s socket: %p was closed\n", __FUNCTION__, s); - return ret; - } - if (s->tobeclosed) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "!!! %s detach on tobeclosed socket: %p, st=%d, sat=%d\n", __FUNCTION__, s, + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s detach on bad socket: %p, st=%d, sat=%d. Closed.\n", __FUNCTION__, s, s->st, s->sat); return ret; } + if (s->tobeclosed) { + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s detach on tobeclosed socket: %p, st=%d, sat=%d\n", __FUNCTION__, s, s->st, + s->sat); + return ret; + } if (!(s->e)) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "!!! %s detach on socket without engine: %p, st=%d, sat=%d\n", __FUNCTION__, - s, s->st, s->sat); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s detach on socket without engine: %p, st=%d, sat=%d\n", __FUNCTION__, s, + s->st, s->sat); return ret; } @@ -1585,8 +1585,8 @@ ioa_socket_handle detach_ioa_socket(ioa_socket_handle s) { if (s->parent_s) { if ((s->st != UDP_SOCKET) && (s->st != DTLS_SOCKET)) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "!!! %s detach on non-UDP child socket: %p, st=%d, sat=%d\n", __FUNCTION__, - s, s->st, s->sat); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s detach on non-UDP child socket: %p, st=%d, sat=%d\n", __FUNCTION__, s, + s->st, s->sat); return ret; } } @@ -1596,8 +1596,8 @@ ioa_socket_handle detach_ioa_socket(ioa_socket_handle s) { if (s->parent_s) { udp_fd = socket(s->local_addr.ss.sa_family, CLIENT_DGRAM_SOCKET_TYPE, CLIENT_DGRAM_SOCKET_PROTOCOL); if (udp_fd < 0) { - perror("socket"); - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Cannot allocate new socket\n", __FUNCTION__); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Cannot allocate new socket. Error: %s\n", __FUNCTION__, + strerror(errno)); return ret; } if (sock_bind_to_device(udp_fd, (unsigned char *)(s->e->relay_ifname)) < 0) { @@ -3261,7 +3261,7 @@ int send_data_from_ioa_socket_nbh(ioa_socket_handle s, ioa_addr *dest_addr, ioa_ s->in_write = 1; if (bufferevent_write(s->bev, ioa_network_buffer_data(nbh), ioa_network_buffer_get_size(nbh)) < 0) { ret = -1; - perror("bufev send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "bufev send: %s\n", strerror(errno)); log_socket_event(s, "socket write failed, to be closed", 1); s->tobeclosed = 1; s->broken = 1; @@ -3301,7 +3301,7 @@ int send_data_from_ioa_socket_nbh(ioa_socket_handle s, ioa_addr *dest_addr, ioa_ #if defined(EADDRNOTAVAIL) const int perr = socket_errno(); #endif - perror("udp send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "udp send: %s\n", strerror(errno)); #if defined(EADDRNOTAVAIL) if (dest_addr && (perr == EADDRNOTAVAIL)) { char sfrom[MAX_IOA_ADDR_STRING] = ""; @@ -3353,7 +3353,7 @@ int send_data_from_ioa_socket_tcp(ioa_socket_handle s, const void *data, size_t s->in_write = 1; if (bufferevent_write(s->bev, data, sz) < 0) { ret = -1; - perror("bufev send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "bufev send: %s\n", strerror(errno)); log_socket_event(s, "socket write failed, to be closed", 1); s->tobeclosed = 1; s->broken = 1; diff --git a/src/apps/relay/tls_listener.c b/src/apps/relay/tls_listener.c index 32af9770..b9c4de17 100644 --- a/src/apps/relay/tls_listener.c +++ b/src/apps/relay/tls_listener.c @@ -34,6 +34,7 @@ #include "apputils.h" #include "mainrelay.h" +#include #include "ns_turn_utils.h" @@ -197,7 +198,7 @@ static int create_server_listener(tls_listener_relay_server_type *server) { tls_listen_fd = socket(server->addr.ss.sa_family, CLIENT_STREAM_SOCKET_TYPE, CLIENT_STREAM_SOCKET_PROTOCOL); if (tls_listen_fd < 0) { - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "socket: %s\n", strerror(errno)); return -1; } @@ -211,7 +212,7 @@ static int create_server_listener(tls_listener_relay_server_type *server) { retry_addr_bind: if (addr_bind(tls_listen_fd, &server->addr, 1, 1, TCP_SOCKET) < 0) { - perror("Cannot bind local socket to addr"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot bind local socket to addr: %s\n", strerror(errno)); char saddr[MAX_IOA_ADDR_STRING]; addr_to_string(&server->addr, saddr); TURN_LOG_FUNC(TURN_LOG_LEVEL_WARNING, "Cannot bind TLS/TCP listener socket to addr %s\n", saddr); diff --git a/src/apps/relay/turn_admin_server.c b/src/apps/relay/turn_admin_server.c index 312cefe0..36565987 100644 --- a/src/apps/relay/turn_admin_server.c +++ b/src/apps/relay/turn_admin_server.c @@ -31,6 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ +#include #include #include #include @@ -1406,16 +1407,15 @@ void setup_admin_thread(void) { adminserver.listen_fd = socket(cli_addr.ss.sa_family, ADMIN_STREAM_SOCKET_TYPE, ADMIN_STREAM_SOCKET_PROTOCOL); if (adminserver.listen_fd < 0) { - perror("socket"); - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot open CLI socket\n"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot open CLI socket. Error: %s\n", strerror(errno)); return; } if (addr_bind(adminserver.listen_fd, &cli_addr, 1, 1, TCP_SOCKET) < 0) { - perror("Cannot bind CLI socket to addr"); char saddr[MAX_IOA_ADDR_STRING]; addr_to_string(&cli_addr, saddr); - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot bind CLI listener socket to addr %s\n", saddr); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot bind CLI listener socket to addr %s. Error: %s\n", saddr, + strerror(errno)); socket_closesocket(adminserver.listen_fd); return; } diff --git a/src/apps/uclient/startuclient.c b/src/apps/uclient/startuclient.c index 4f23ec1b..2bbdfb6b 100644 --- a/src/apps/uclient/startuclient.c +++ b/src/apps/uclient/startuclient.c @@ -36,6 +36,7 @@ #include "ns_turn_ioalib.h" // for ioa_engine_handle #include "ns_turn_msg.h" #include "ns_turn_utils.h" +#include #include "apputils.h" #include "session.h" @@ -202,7 +203,7 @@ int socket_connect(evutil_socket_t clnet_fd, ioa_addr *remote_addr, int *connect if (*connect_err == EADDRINUSE) { return +1; } - perror("connect"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "connect: %s\n", strerror(errno)); TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "%s: cannot connect to remote addr: %d\n", __FUNCTION__, *connect_err); exit(-1); } @@ -233,7 +234,7 @@ start_socket: use_sctp ? SCTP_CLIENT_STREAM_SOCKET_PROTOCOL : (use_tcp ? CLIENT_STREAM_SOCKET_PROTOCOL : CLIENT_DGRAM_SOCKET_PROTOCOL)); if (clnet_fd < 0) { - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "socket: %s\n", strerror(errno)); exit(-1); } @@ -438,7 +439,7 @@ beg_allocate: } allocate_sent = 1; } else { - perror("send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "send: %s\n", strerror(errno)); exit(1); } } @@ -573,7 +574,7 @@ beg_allocate: /* Try again ? */ } } else { - perror("recv"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "recv: %s\n", strerror(errno)); exit(-1); break; } @@ -696,7 +697,7 @@ beg_allocate: send_buffer(clnet_info, &request_message, 0, 0); } } else { - perror("send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "send: %s\n", strerror(errno)); exit(1); } } @@ -743,7 +744,7 @@ beg_allocate: /* Try again ? */ } } else { - perror("recv"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "recv: %s\n", strerror(errno)); exit(-1); break; } @@ -785,7 +786,7 @@ beg_bind: } cb_sent = true; } else { - perror("send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "send: %s\n", strerror(errno)); exit(1); } } @@ -834,7 +835,7 @@ beg_bind: /* Try again ? */ } } else { - perror("recv"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "recv: %s\n", strerror(errno)); exit(-1); break; } @@ -884,7 +885,7 @@ beg_cp: } cp_sent = true; } else { - perror("send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "send: %s\n", strerror(errno)); exit(1); } } @@ -933,7 +934,7 @@ beg_cp: /* Try again ? */ } } else { - perror("recv"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "recv: %s\n", strerror(errno)); exit(-1); } } @@ -1459,7 +1460,7 @@ int turn_tcp_connect(bool verbose, app_ur_conn_info *clnet_info, ioa_addr *peer_ } cp_sent = true; } else { - perror("send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "send: %s\n", strerror(errno)); exit(1); } } @@ -1505,7 +1506,7 @@ beg_cb: if (errorOK) { return 0; } - perror("send"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "send: %s\n", strerror(errno)); exit(1); } } @@ -1561,7 +1562,7 @@ beg_cb: if (errorOK) { return 0; } - perror("recv"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "recv: %s\n", strerror(errno)); exit(-1); } } @@ -1578,7 +1579,7 @@ again: clnet_fd = socket(elem->pinfo.remote_addr.ss.sa_family, CLIENT_STREAM_SOCKET_TYPE, CLIENT_STREAM_SOCKET_PROTOCOL); if (clnet_fd < 0) { - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "socket: %s\n", strerror(errno)); exit(-1); } @@ -1617,7 +1618,7 @@ again: clnet_fd = socket(elem->pinfo.remote_addr.ss.sa_family, CLIENT_STREAM_SOCKET_TYPE, CLIENT_STREAM_SOCKET_PROTOCOL); if (clnet_fd < 0) { - perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "socket: %s\n", strerror(errno)); exit(-1); } if (sock_bind_to_device(clnet_fd, client_ifname) < 0) { @@ -1638,7 +1639,7 @@ again: continue; } else { - perror("connect"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "connect: %s\n", strerror(errno)); TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "%s: cannot connect to remote addr\n", __FUNCTION__); exit(-1); }