diff options
Diffstat (limited to 'programs/ekr_server.c')
-rw-r--r-- | programs/ekr_server.c | 26 |
1 files changed, 16 insertions, 10 deletions
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 |