diff options
author | Michael Tuexen <tuexen@fh-muenster.de> | 2020-05-26 21:39:39 +0200 |
---|---|---|
committer | Michael Tuexen <tuexen@fh-muenster.de> | 2020-05-26 21:39:39 +0200 |
commit | fbadabe48671c3273d2cf3e478e38cdd4d471c15 (patch) | |
tree | 8c4746cc527f2339c3e5c5ee663a732da3445de7 | |
parent | 4069ba5b9587bd7c99d964756b527d6259f0d3da (diff) | |
download | usrsctp-fbadabe48671c3273d2cf3e478e38cdd4d471c15.tar.gz |
Cleanup error reporting.
-rw-r--r-- | programs/ekr_client.c | 26 | ||||
-rw-r--r-- | programs/ekr_loop.c | 30 | ||||
-rw-r--r-- | programs/ekr_loop_offload.c | 38 | ||||
-rw-r--r-- | programs/ekr_loop_upcall.c | 38 | ||||
-rw-r--r-- | programs/ekr_peer.c | 24 | ||||
-rw-r--r-- | programs/ekr_server.c | 26 | ||||
-rw-r--r-- | programs/tsctp.c | 13 |
7 files changed, 118 insertions, 77 deletions
diff --git a/programs/ekr_client.c b/programs/ekr_client.c index 6aa045dc..936416f5 100644 --- a/programs/ekr_client.c +++ b/programs/ekr_client.c @@ -161,7 +161,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 SOCKET fd; #else - int fd; + int fd, rc; #endif struct socket *s; #ifdef _WIN32 @@ -176,13 +176,13 @@ main(int argc, char *argv[]) #endif if (argc < 4) { - printf("error: this program requires 4 arguments!\n"); + fprintf(stderr, "error: this program requires 4 arguments!\n"); exit(EXIT_FAILURE); } #ifdef _WIN32 if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { - printf("WSAStartup failed\n"); + fprintf(stderr, "WSAStartup failed\n"); exit (EXIT_FAILURE); } #endif @@ -190,7 +190,7 @@ main(int argc, char *argv[]) /* set up a connected UDP socket */ #ifdef _WIN32 if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -206,12 +206,12 @@ main(int argc, char *argv[]) #endif sin.sin_port = htons(atoi(argv[2])); if (!inet_pton(AF_INET, argv[1], &sin.sin_addr.s_addr)){ - printf("error: invalid address\n"); + fprintf(stderr, "error: invalid address\n"); exit(EXIT_FAILURE); } #ifdef _WIN32 if (bind(fd, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -232,7 +232,7 @@ main(int argc, char *argv[]) } #ifdef _WIN32 if (connect(fd, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("connect() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "connect() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -247,9 +247,15 @@ main(int argc, char *argv[]) usrsctp_sysctl_set_sctp_ecn_enable(0); usrsctp_register_address((void *)&fd); #ifdef _WIN32 - tid = CreateThread(NULL, 0, &handle_packets, (void *)&fd, 0, NULL); + if ((tid = CreateThread(NULL, 0, &handle_packets, (void *)&fd, 0, NULL)) == NULL) { + fprintf(stderr, "CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } #else - pthread_create(&tid, NULL, &handle_packets, (void *)&fd); + if ((rc = pthread_create(&tid, NULL, &handle_packets, (void *)&fd)) != 0) { + fprintf(stderr, "pthread_create: %s\n", strerror(rc)); + exit(EXIT_FAILURE); + } #endif if ((s = usrsctp_socket(AF_CONN, SOCK_STREAM, IPPROTO_SCTP, receive_cb, NULL, 0, &fd)) == NULL) { perror("usrsctp_socket"); @@ -299,7 +305,7 @@ main(int argc, char *argv[]) TerminateThread(tid, 0); WaitForSingleObject(tid, INFINITE); if (closesocket(fd) == SOCKET_ERROR) { - printf("closesocket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "closesocket() failed with error: %d\n", WSAGetLastError()); } WSACleanup(); #else diff --git a/programs/ekr_loop.c b/programs/ekr_loop.c index 35154f67..3a9920db 100644 --- a/programs/ekr_loop.c +++ b/programs/ekr_loop.c @@ -267,7 +267,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 SOCKET fd_c, fd_s; #else - int fd_c, fd_s; + int fd_c, fd_s, rc; #endif struct socket *s_c, *s_s, *s_l; #ifdef _WIN32 @@ -294,7 +294,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { - printf("WSAStartup failed\n"); + debug_printf("WSAStartup failed\n"); exit (EXIT_FAILURE); } #endif @@ -302,11 +302,11 @@ main(int argc, char *argv[]) /* set up a connected UDP socket */ #ifdef _WIN32 if ((fd_c = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + debug_printf("socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if ((fd_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + debug_printf("socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -335,11 +335,11 @@ main(int argc, char *argv[]) sin_s.sin_addr.s_addr = htonl(INADDR_LOOPBACK); #ifdef _WIN32 if (bind(fd_c, (struct sockaddr *)&sin_c, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + debug_printf("bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if (bind(fd_s, (struct sockaddr *)&sin_s, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + debug_printf("bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -372,16 +372,22 @@ main(int argc, char *argv[]) } #endif #ifdef _WIN32 - tid_c = CreateThread(NULL, 0, &handle_packets, (void *)&fd_c, 0, NULL); - tid_s = CreateThread(NULL, 0, &handle_packets, (void *)&fd_s, 0, NULL); + if ((tid_c = CreateThread(NULL, 0, &handle_packets, (void *)&fd_c, 0, NULL)) == NULL) { + debug_printf("CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } + if ((tid_s = CreateThread(NULL, 0, &handle_packets, (void *)&fd_s, 0, NULL)) == NULL) { + debug_printf("CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } #else - if (pthread_create(&tid_c, NULL, &handle_packets, (void *)&fd_c)) { - perror("pthread_create tid_c"); + if ((rc = pthread_create(&tid_c, NULL, &handle_packets, (void *)&fd_c)) != 0) { + fprintf(stderr, "pthread_create tid_c: %s\n", strerror(rc)); exit(EXIT_FAILURE); } - if (pthread_create(&tid_s, NULL, &handle_packets, (void *)&fd_s)) { - perror("pthread_create tid_s"); + if ((rc = pthread_create(&tid_s, NULL, &handle_packets, (void *)&fd_s)) != 0) { + fprintf(stderr, "pthread_create tid_s: %s\n", strerror(rc)); exit(EXIT_FAILURE); }; #endif diff --git a/programs/ekr_loop_offload.c b/programs/ekr_loop_offload.c index 5184bef1..a49a32ad 100644 --- a/programs/ekr_loop_offload.c +++ b/programs/ekr_loop_offload.c @@ -285,7 +285,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 SOCKET fd_c, fd_s; #else - int fd_c, fd_s; + int fd_c, fd_s, rc; #endif struct socket *s_c, *s_s, *s_l; #ifdef _WIN32 @@ -310,7 +310,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { - printf("WSAStartup failed\n"); + fprintf(stderr, "WSAStartup failed\n"); exit (EXIT_FAILURE); } #endif @@ -319,11 +319,11 @@ main(int argc, char *argv[]) /* set up a connected UDP socket */ #ifdef _WIN32 if ((fd_c = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if ((fd_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -352,11 +352,11 @@ main(int argc, char *argv[]) sin_s.sin_addr.s_addr = htonl(INADDR_LOOPBACK); #ifdef _WIN32 if (bind(fd_c, (struct sockaddr *)&sin_c, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if (bind(fd_s, (struct sockaddr *)&sin_s, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -371,11 +371,11 @@ main(int argc, char *argv[]) #endif #ifdef _WIN32 if (connect(fd_c, (struct sockaddr *)&sin_s, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("connect() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "connect() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if (connect(fd_s, (struct sockaddr *)&sin_c, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("connect() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "connect() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -389,16 +389,22 @@ main(int argc, char *argv[]) } #endif #ifdef _WIN32 - tid_c = CreateThread(NULL, 0, &handle_packets, (void *)&fd_c, 0, NULL); - tid_s = CreateThread(NULL, 0, &handle_packets, (void *)&fd_s, 0, NULL); + if ((tid_c = CreateThread(NULL, 0, &handle_packets, (void *)&fd_c, 0, NULL)) == NULL) { + fprintf(stderr, "CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } + if ((tid_s = CreateThread(NULL, 0, &handle_packets, (void *)&fd_s, 0, NULL)) == NULL) { + fprintf(stderr, "CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } #else - if (pthread_create(&tid_c, NULL, &handle_packets, (void *)&fd_c)) { - perror("pthread_create tid_c"); + if ((rc = pthread_create(&tid_c, NULL, &handle_packets, (void *)&fd_c)) != 0) { + fprintf(stderr, "pthread_create tid_c: %s\n", strerror(rc)); exit(EXIT_FAILURE); } - if (pthread_create(&tid_s, NULL, &handle_packets, (void *)&fd_s)) { - perror("pthread_create tid_s"); + if ((rc = pthread_create(&tid_s, NULL, &handle_packets, (void *)&fd_s)) != 0) { + fprintf(stderr, "pthread_create tid_s: %s\n", strerror(rc)); exit(EXIT_FAILURE); }; #endif @@ -531,11 +537,11 @@ main(int argc, char *argv[]) TerminateThread(tid_s, 0); WaitForSingleObject(tid_s, INFINITE); if (closesocket(fd_c) == SOCKET_ERROR) { - printf("closesocket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "closesocket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if (closesocket(fd_s) == SOCKET_ERROR) { - printf("closesocket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "closesocket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } WSACleanup(); diff --git a/programs/ekr_loop_upcall.c b/programs/ekr_loop_upcall.c index 717dfce5..aa9091dd 100644 --- a/programs/ekr_loop_upcall.c +++ b/programs/ekr_loop_upcall.c @@ -300,7 +300,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 SOCKET fd_c, fd_s; #else - int fd_c, fd_s; + int fd_c, fd_s, rc; #endif struct socket *s_c, *s_s, *s_l; #ifdef _WIN32 @@ -325,7 +325,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { - printf("WSAStartup failed\n"); + fprintf(stderr, "WSAStartup failed\n"); exit (EXIT_FAILURE); } #endif @@ -333,11 +333,11 @@ main(int argc, char *argv[]) /* set up a connected UDP socket */ #ifdef _WIN32 if ((fd_c = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if ((fd_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -366,11 +366,11 @@ main(int argc, char *argv[]) sin_s.sin_addr.s_addr = htonl(INADDR_LOOPBACK); #ifdef _WIN32 if (bind(fd_c, (struct sockaddr *)&sin_c, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if (bind(fd_s, (struct sockaddr *)&sin_s, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -385,11 +385,11 @@ main(int argc, char *argv[]) #endif #ifdef _WIN32 if (connect(fd_c, (struct sockaddr *)&sin_s, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("connect() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "connect() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if (connect(fd_s, (struct sockaddr *)&sin_c, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("connect() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "connect() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -403,16 +403,22 @@ main(int argc, char *argv[]) } #endif #ifdef _WIN32 - tid_c = CreateThread(NULL, 0, &handle_packets, (void *)&fd_c, 0, NULL); - tid_s = CreateThread(NULL, 0, &handle_packets, (void *)&fd_s, 0, NULL); + if ((tid_c = CreateThread(NULL, 0, &handle_packets, (void *)&fd_c, 0, NULL)) == NULL) { + fprintf(stderr, "CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } + if ((tid_s = CreateThread(NULL, 0, &handle_packets, (void *)&fd_s, 0, NULL)) == NULL) { + fprintf(stderr, "CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } #else - if (pthread_create(&tid_c, NULL, &handle_packets, (void *)&fd_c)) { - perror("pthread_create tid_c"); + if ((rc = pthread_create(&tid_c, NULL, &handle_packets, (void *)&fd_c)) != 0) { + fprintf(stderr, "pthread_create tid_c: %s\n", strerror(rc)); exit(EXIT_FAILURE); } - if (pthread_create(&tid_s, NULL, &handle_packets, (void *)&fd_s)) { - perror("pthread_create tid_s"); + if ((rc = pthread_create(&tid_s, NULL, &handle_packets, (void *)&fd_s)) != 0) { + fprintf(stderr, "pthread_create tid_s: %s\n", strerror(rc)); exit(EXIT_FAILURE); }; #endif @@ -565,11 +571,11 @@ main(int argc, char *argv[]) TerminateThread(tid_s, 0); WaitForSingleObject(tid_s, INFINITE); if (closesocket(fd_c) == SOCKET_ERROR) { - printf("closesocket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "closesocket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } if (closesocket(fd_s) == SOCKET_ERROR) { - printf("closesocket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "closesocket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } WSACleanup(); diff --git a/programs/ekr_peer.c b/programs/ekr_peer.c index f278d5bc..a94f5f1a 100644 --- a/programs/ekr_peer.c +++ b/programs/ekr_peer.c @@ -156,7 +156,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 SOCKET fd; #else - int fd; + int fd, rc; #endif struct socket *s; #ifdef _WIN32 @@ -177,7 +177,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { - printf("WSAStartup failed\n"); + fprintf(stderr, "WSAStartup failed\n"); exit(EXIT_FAILURE); } #endif @@ -185,7 +185,7 @@ main(int argc, char *argv[]) /* set up a connected UDP socket */ #ifdef _WIN32 if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -206,7 +206,7 @@ main(int argc, char *argv[]) } #ifdef _WIN32 if (bind(fd, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -227,7 +227,7 @@ main(int argc, char *argv[]) } #ifdef _WIN32 if (connect(fd, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("connect() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "connect() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -237,9 +237,15 @@ main(int argc, char *argv[]) } #endif #ifdef _WIN32 - tid = CreateThread(NULL, 0, &handle_packets, (void *)&fd, 0, NULL); + if ((tid = CreateThread(NULL, 0, &handle_packets, (void *)&fd, 0, NULL)) == NULL) { + fprintf(stderr, "CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } #else - pthread_create(&tid, NULL, &handle_packets, (void *)&fd); + if ((rc = pthread_create(&tid, NULL, &handle_packets, (void *)&fd)) != 0) { + fprintf(stderr, "pthread_create: %s\n", strerror(rc)); + exit(EXIT_FAILURE); + } #endif #ifdef SCTP_DEBUG usrsctp_sysctl_set_sctp_debug_on(SCTP_DEBUG_NONE); @@ -306,7 +312,7 @@ main(int argc, char *argv[]) sndinfo.snd_context = 0; sndinfo.snd_assoc_id = 0; if (usrsctp_sendv(s, line, strlen(line), NULL, 0, (void *)&sndinfo, - (socklen_t)sizeof(struct sctp_sndinfo), SCTP_SENDV_SNDINFO, 0) < 0) { + (socklen_t)sizeof(struct sctp_sndinfo), SCTP_SENDV_SNDINFO, 0) < 0) { perror("usrsctp_sendv"); } } @@ -321,7 +327,7 @@ main(int argc, char *argv[]) TerminateThread(tid, 0); WaitForSingleObject(tid, INFINITE); if (closesocket(fd) == SOCKET_ERROR) { - printf("closesocket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "closesocket() failed with error: %d\n", WSAGetLastError()); } WSACleanup(); #else diff --git a/programs/ekr_server.c b/programs/ekr_server.c index 2fdfcc2f..d8d9d1ce 100644 --- a/programs/ekr_server.c +++ b/programs/ekr_server.c @@ -161,7 +161,7 @@ main(int argc, char *argv[]) #ifdef _WIN32 SOCKET fd; #else - int fd; + int fd, rc; #endif struct socket *s; #ifdef _WIN32 @@ -174,13 +174,13 @@ main(int argc, char *argv[]) #endif if (argc < 4) { - printf("error: this program requires 4 arguments!\n"); + fprintf(stderr, "error: this program requires 4 arguments!\n"); exit(EXIT_FAILURE); } #ifdef _WIN32 if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { - printf("WSAStartup failed\n"); + fprintf(stderr, "WSAStartup failed\n"); exit (EXIT_FAILURE); } #endif @@ -188,7 +188,7 @@ main(int argc, char *argv[]) /* set up a connected UDP socket */ #ifdef _WIN32 if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) { - printf("socket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "socket() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -204,12 +204,12 @@ main(int argc, char *argv[]) #endif sin.sin_port = htons(atoi(argv[2])); if (!inet_pton(AF_INET, argv[1], &sin.sin_addr.s_addr)){ - printf("error: invalid address\n"); + fprintf(stderr, "error: invalid address\n"); exit(EXIT_FAILURE); } #ifdef _WIN32 if (bind(fd, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("bind() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "bind() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -230,7 +230,7 @@ main(int argc, char *argv[]) } #ifdef _WIN32 if (connect(fd, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - printf("connect() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "connect() failed with error: %d\n", WSAGetLastError()); exit(EXIT_FAILURE); } #else @@ -245,9 +245,15 @@ main(int argc, char *argv[]) usrsctp_sysctl_set_sctp_ecn_enable(0); usrsctp_register_address((void *)&fd); #ifdef _WIN32 - tid = CreateThread(NULL, 0, &handle_packets, (void *)&fd, 0, NULL); + if ((tid = CreateThread(NULL, 0, &handle_packets, (void *)&fd, 0, NULL)) == NULL) { + fprintf(stderr, "CreateThread() failed with error: %d\n", GetLastError()); + exit(EXIT_FAILURE); + } #else - pthread_create(&tid, NULL, &handle_packets, (void *)&fd); + if ((rc = pthread_create(&tid, NULL, &handle_packets, (void *)&fd)) != 0) { + fprintf(stderr, "pthread_create: %s\n", strerror(rc)); + exit(EXIT_FAILURE); + } #endif if ((s = usrsctp_socket(AF_CONN, SOCK_STREAM, IPPROTO_SCTP, receive_cb, NULL, 0, NULL)) == NULL) { perror("usrsctp_socket"); @@ -283,7 +289,7 @@ main(int argc, char *argv[]) TerminateThread(tid, 0); WaitForSingleObject(tid, INFINITE); if (closesocket(fd) == SOCKET_ERROR) { - printf("closesocket() failed with error: %d\n", WSAGetLastError()); + fprintf(stderr, "closesocket() failed with error: %d\n", WSAGetLastError()); } WSACleanup(); #else diff --git a/programs/tsctp.c b/programs/tsctp.c index f6e010d3..b94f5016 100644 --- a/programs/tsctp.c +++ b/programs/tsctp.c @@ -329,7 +329,7 @@ client_receive_cb(struct socket *sock, union sctp_sockstore addr, void *data, int main(int argc, char **argv) { #ifndef _WIN32 - int c; + int c, rc; #endif socklen_t addr_len; struct sockaddr_in local_addr; @@ -647,10 +647,15 @@ int main(int argc, char **argv) continue; } #ifdef _WIN32 - tid = CreateThread(NULL, 0, &handle_connection, (void *)conn_sock, 0, NULL); + if ((tid = CreateThread(NULL, 0, &handle_connection, (void *)conn_sock, 0, NULL)) == NULL) { + fprintf(stderr, "CreateThread() failed with error: %d\n", GetLastError()); #else - pthread_create(&tid, NULL, &handle_connection, (void *)conn_sock); + if ((rc = pthread_create(&tid, NULL, &handle_connection, (void *)conn_sock)) != 0) { + fprintf(stderr, "pthread_create: %s\n", strerror(rc)); #endif + usrsctp_close(*conn_sock); + continue; + } } if (verbose) { /* const char *inet_ntop(int af, const void *src, char *dst, socklen_t size) @@ -725,7 +730,7 @@ int main(int argc, char **argv) signal(SIGALRM, stop_sender); alarm(runtime); #else - printf("You cannot set the runtime in Windows yet\n"); + fprintf(stderr, "You cannot set the runtime in Windows yet\n"); exit(-1); #endif } |