]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/blobdiff - src/tlsproxy.c
Fix compile with current GnuTLS versions.
[tlsproxy/tlsproxy.git] / src / tlsproxy.c
index be1789a111a8b6356b9200021e211efe443ed7d5..40729f08c8240938ea24dca75597a96115c2c474 100644 (file)
 #include <sys/types.h>
 #include <unistd.h>
 
+#if GNUTLS_VERSION_NUMBER <= 0x020b00
 /* Necessary for GnuTLS when used with threads. */
 #include <gcrypt.h>
 GCRY_THREAD_OPTION_PTHREAD_IMPL;
+#endif
 
 
 /* Size of ringbuffer. */
@@ -53,7 +55,7 @@ GCRY_THREAD_OPTION_PTHREAD_IMPL;
 
 
 /* Server should shut down. Set by SIGINT handler. */
-static volatile int done = 0;
+static volatile int done; /* = 0 */
 
 /* Number of threads. */
 static size_t thread_count;
@@ -107,8 +109,8 @@ int main(int argc, char **argv) {
         return EXIT_FAILURE;
     }
 
+    memset(&action, 0, sizeof(action));
     sigemptyset(&action.sa_mask);
-    action.sa_flags   = 0;
 #ifdef DEBUG
     /* Setup our SIGINT signal handler which allows a "normal" termination of
      * the server in DEBUG mode. */
@@ -153,13 +155,13 @@ int main(int argc, char **argv) {
 #else
     server_socket = socket(PF_INET6, SOCK_STREAM, 0);
 #endif
-    if (server_socket == -1) {
+    if (server_socket < 0) {
         perror("socket()");
         return EXIT_FAILURE;
     }
 
     /* Fast rebinding for debug mode, could cause invalid packets. */
-    if (global_log_level >= LOG_DEBUG_LEVEL) {
+    if (global_log_level >= LOG_DEBUG1_LEVEL) {
         int socket_option = 1;
         setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR,
                    &socket_option, sizeof(socket_option));
@@ -177,17 +179,17 @@ int main(int argc, char **argv) {
     server_in.sin6_port   = htons((uint16_t)port); /* port to bind to */
 #endif
     if (bind(server_socket, (struct sockaddr *)&server_in,
-                            sizeof(server_in)) == -1) {
+                            sizeof(server_in)) != 0) {
         perror("bind()");
         return EXIT_FAILURE;
     }
     /* And accept connections. */
-    if (listen(server_socket, 5) == -1) {
+    if (listen(server_socket, 5) != 0) {
         perror("listen()");
         return EXIT_FAILURE;
     }
 
-    if (global_log_level >= LOG_DEBUG_LEVEL) {
+    if (global_log_level >= LOG_DEBUG1_LEVEL) {
         printf("tlsproxy %s\n", VERSION);
         printf("Listening for connections on port %d.\n", port);
 
@@ -200,7 +202,7 @@ int main(int argc, char **argv) {
     while (!done) {
         /* Accept new connection. */
         client_socket = accept(server_socket, NULL, NULL);
-        if (client_socket == -1) {
+        if (client_socket < 0) {
             perror("accept()");
             break;
         }
@@ -364,6 +366,9 @@ static void print_usage(const char *argv) {
 
 static void initialize_gnutls(void) {
     int result;
+/* Recent versions of GnuTLS automatically initialize the cryptography layer
+ * in gnutls_global_init(). */
+#if GNUTLS_VERSION_NUMBER <= 0x020b00
     gcry_error_t error;
 
     /* Thread safe setup. Must be called before gnutls_global_init(). */
@@ -380,6 +385,7 @@ static void initialize_gnutls(void) {
                                                    gcry_strerror(error));
         exit(EXIT_FAILURE);
     }
+#endif
 
     /* Initialize GnuTLS. */
     result = gnutls_global_init();