static void initialize_gnutls(void);
static void deinitialize_gnutls(void);
-static void worker_thread(void);
+static void *worker_thread(void *unused);
int main(int argc, char **argv) {
port = atoi(argv[argc - 1]);
if (port <= 0 || port > 0xffff ) {
- print_usage(argv[0]);
- fprintf(stderr, "\ninvalid port: '%s'\n", argv[argc - 1]);
+ fprintf(stderr, "invalid port: '%s'\n", argv[argc - 1]);
return EXIT_FAILURE;
}
return EXIT_FAILURE;
}
for (i = 0; i < thread_count; i++) {
- errno = pthread_create(threads + i, NULL,
- (void * (*)(void *))&worker_thread,
- NULL);
+ errno = pthread_create(threads + i, NULL, &worker_thread, NULL);
if (errno != 0) {
perror("failed to create worker thread");
return EXIT_FAILURE;
}
}
- free(ringbuffer_full);
- free(ringbuffer_free);
- free(ringbuffer_lock);
+ sem_del(ringbuffer_full);
+ sem_del(ringbuffer_free);
+ sem_del(ringbuffer_lock);
free(threads);
case 'd': {
global_log_level = atoi(optarg);
if (global_log_level < 0) {
- print_usage(argv[0]);
- fprintf(stderr, "\n-d positive number required: '%s'\n",
+ fprintf(stderr, "-d positive number required: '%s'\n",
optarg);
exit(EXIT_FAILURE);
}
|| strlen(position + 1) == 0
|| atoi(position + 1) <= 0
|| atoi(position + 1) > 0xffff) {
- print_usage(argv[0]);
- fprintf(stderr, "\ninvalid -p: '%s', format host:port\n",
- optarg);
+ fprintf(stderr, "invalid -p: '%s', format host:port\n",
+ optarg);
exit(EXIT_FAILURE);
}
}
case 't': {
if (atoi(optarg) <= 0) {
- print_usage(argv[0]);
- fprintf(stderr, "\n-t positive number required: '%s'\n",
+ fprintf(stderr, "-t positive number required: '%s'\n",
optarg);
exit(EXIT_FAILURE);
}
}
if (optind >= argc) {
- print_usage(argv[0]);
- fprintf(stderr, "\nport missing\n");
+ fprintf(stderr, "port missing\n");
exit(EXIT_FAILURE);
}
}
gnutls_global_deinit();
}
-static void worker_thread(void) {
+static void *worker_thread(void *unused) {
int client_socket;
+ (void)unused;
+
for (;;) {
/* Get next element from ring buffer. */
P(ringbuffer_full);
handle_connection(client_socket);
}
+
+ return NULL;
}