aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Tuexen <tuexen@fh-muenster.de>2020-05-26 21:39:39 +0200
committerMichael Tuexen <tuexen@fh-muenster.de>2020-05-26 21:39:39 +0200
commitfbadabe48671c3273d2cf3e478e38cdd4d471c15 (patch)
tree8c4746cc527f2339c3e5c5ee663a732da3445de7
parent4069ba5b9587bd7c99d964756b527d6259f0d3da (diff)
downloadusrsctp-fbadabe48671c3273d2cf3e478e38cdd4d471c15.tar.gz
Cleanup error reporting.
-rw-r--r--programs/ekr_client.c26
-rw-r--r--programs/ekr_loop.c30
-rw-r--r--programs/ekr_loop_offload.c38
-rw-r--r--programs/ekr_loop_upcall.c38
-rw-r--r--programs/ekr_peer.c24
-rw-r--r--programs/ekr_server.c26
-rw-r--r--programs/tsctp.c13
7 files changed, 118 insertions, 77 deletions
diff --git a/programs/ekr_client.c b/programs/ekr_client.c
index 6aa045d..936416f 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 35154f6..3a9920d 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 5184bef..a49a32a 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 717dfce..aa9091d 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 f278d5b..a94f5f1 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 2fdfcc2..d8d9d1c 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 f6e010d..b94f501 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
}