]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/blobdiff - src/tlsproxy.c
src/tlsproxy.c: Add missing htonl() for INADDR_ANY.
[tlsproxy/tlsproxy.git] / src / tlsproxy.c
index b67e666ed6f9e57f79faba9c3d985b22a5f1b2ff..7a27f5531335368b6e80be8fa7ee159c4ea54919 100644 (file)
@@ -73,7 +73,9 @@ static SEM *ringbuffer_free; /* Space for another element in the buffer? */
 static SEM *ringbuffer_lock; /* Read lock. */
 
 
+#ifdef DEBUG
 static void sigint_handler(int signal);
+#endif
 
 static void parse_arguments(int argc, char **argv);
 static void print_usage(const char *argv);
@@ -87,7 +89,11 @@ static void worker_thread(void);
 int main(int argc, char **argv) {
     int port;
     int client_socket, server_socket;
+#ifdef USE_IPV4_ONLY
+    struct sockaddr_in server_in;
+#else
     struct sockaddr_in6 server_in;
+#endif
 
     size_t i;
     pthread_t *threads;
@@ -104,11 +110,13 @@ int main(int argc, char **argv) {
     }
 
     /* Setup our SIGINT signal handler which allows a "normal" termination of
-     * the server. */
+     * the server in DEBUG mode. */
     sigemptyset(&action.sa_mask);
-    action.sa_handler = sigint_handler;
     action.sa_flags   = 0;
+#ifdef DEBUG
+    action.sa_handler = sigint_handler;
     sigaction(SIGINT, &action, NULL);
+#endif
     /* Ignore SIGPIPEs. */
     action.sa_handler = SIG_IGN;
     sigaction(SIGPIPE, &action, NULL);
@@ -150,7 +158,11 @@ int main(int argc, char **argv) {
         threads[i] = thread;
     }
 
+#ifdef USE_IPV4_ONLY
+    server_socket = socket(PF_INET, SOCK_STREAM, 0);
+#else
     server_socket = socket(PF_INET6, SOCK_STREAM, 0);
+#endif
     if (-1 == server_socket) {
         perror("socket()");
         return EXIT_FAILURE;
@@ -167,9 +179,15 @@ int main(int argc, char **argv) {
 
     /* Bind to the listen socket. */
     memset(&server_in, 0, sizeof(server_in));
+#ifdef USE_IPV4_ONLY
+    server_in.sin_family      = AF_INET;               /* IPv4 only */
+    server_in.sin_addr.s_addr = htonl(INADDR_ANY);     /* bind to any address */
+    server_in.sin_port        = htons((uint16_t)port); /* port to bind to */
+#else
     server_in.sin6_family = AF_INET6;              /* IPv6 (and IPv4) */
     server_in.sin6_addr   = in6addr_any;           /* bind to any address */
     server_in.sin6_port   = htons((uint16_t)port); /* port to bind to */
+#endif
     if (-1 == bind(server_socket, (struct sockaddr *)&server_in,
                                   sizeof(server_in))) {
         perror("bind()");
@@ -236,11 +254,13 @@ int main(int argc, char **argv) {
     return EXIT_FAILURE;
 }
 
+#ifdef DEBUG
 static void sigint_handler(int signal_number) {
     (void)signal_number;
 
     done = 1;
 }
+#endif
 
 static void parse_arguments(int argc, char **argv) {
     int option;