]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/blobdiff - src/tlsproxy.c
tests: Call stop_servers when the shell terminates.
[tlsproxy/tlsproxy.git] / src / tlsproxy.c
index 0f3481efab96694813d781b9eba91c7b08f5042a..ba8386b2125c9ddf56efae46848eb772ff484701 100644 (file)
@@ -76,7 +76,7 @@ static void print_usage(const char *argv);
 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) {
@@ -97,8 +97,7 @@ 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;
     }
 
@@ -136,9 +135,7 @@ int main(int argc, char **argv) {
         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;
@@ -225,9 +222,9 @@ int main(int argc, char **argv) {
         }
     }
 
-    free(ringbuffer_full);
-    free(ringbuffer_free);
-    free(ringbuffer_lock);
+    sem_del(ringbuffer_full);
+    sem_del(ringbuffer_free);
+    sem_del(ringbuffer_lock);
 
     free(threads);
 
@@ -264,8 +261,7 @@ static void parse_arguments(int argc, char **argv) {
             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);
                 }
@@ -280,9 +276,8 @@ static void parse_arguments(int argc, char **argv) {
                         || 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);
                 }
 
@@ -305,8 +300,7 @@ static void parse_arguments(int argc, char **argv) {
             }
             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);
                 }
@@ -325,8 +319,7 @@ static void parse_arguments(int argc, char **argv) {
     }
 
     if (optind >= argc) {
-        print_usage(argv[0]);
-        fprintf(stderr, "\nport missing\n");
+        fprintf(stderr, "port missing\n");
         exit(EXIT_FAILURE);
     }
 }
@@ -384,9 +377,11 @@ static void deinitialize_gnutls(void) {
     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);
@@ -403,4 +398,6 @@ static void worker_thread(void) {
 
         handle_connection(client_socket);
     }
+
+    return NULL;
 }