X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=src%2Ftlsproxy.c;h=3d9e80fb532938679eab674ebe520b0cc9c599ee;hb=6c7e972612c7bd8f98308d08c4576064b7cbe4eb;hp=ea0578b78bae88673a8c45f9e8cdbc50897ca395;hpb=ab61fefa275656266f5f5ed55697c019dccd5fd7;p=tlsproxy%2Ftlsproxy.git diff --git a/src/tlsproxy.c b/src/tlsproxy.c index ea0578b..3d9e80f 100644 --- a/src/tlsproxy.c +++ b/src/tlsproxy.c @@ -32,9 +32,11 @@ #include #include +#if GNUTLS_VERSION_NUMBER <= 0x020b00 /* Necessary for GnuTLS when used with threads. */ #include 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; @@ -73,7 +75,7 @@ static void sigint_handler(int signal); static void parse_arguments(int argc, char **argv); static void print_usage(const char *argv); -static char *slurp_file(const char *path); +static char *slurp_text_file(const char *path); static void initialize_gnutls(void); static void deinitialize_gnutls(void); @@ -159,7 +161,7 @@ int main(int argc, char **argv) { } /* 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)); @@ -187,7 +189,7 @@ int main(int argc, char **argv) { 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); @@ -256,7 +258,7 @@ static void parse_arguments(int argc, char **argv) { /* Default values. */ thread_count = 10; #ifdef DEBUG - global_log_level = LOG_DEBUG_LEVEL; + global_log_level = LOG_DEBUG1_LEVEL; #else global_log_level = LOG_WARNING_LEVEL; #endif @@ -265,7 +267,7 @@ static void parse_arguments(int argc, char **argv) { while ((option = getopt(argc, argv, "a:d:p:t:uh?")) != -1) { switch (option) { case 'a': { - http_digest_authorization = slurp_file(optarg); + http_digest_authorization = slurp_text_file(optarg); if (http_digest_authorization == NULL) { fprintf(stderr, "failed to open authorization file '%s': ", optarg); @@ -362,8 +364,18 @@ static void print_usage(const char *argv) { fprintf(stderr, " WARNING: might be a security problem!\n"); } +#if 0 +static void log_function_gnutls(int level, const char *string) { + (void)level; + fprintf(stderr, " => %s", string); +} +#endif + 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,11 +392,17 @@ static void initialize_gnutls(void) { gcry_strerror(error)); exit(EXIT_FAILURE); } +#endif /* Initialize GnuTLS. */ result = gnutls_global_init(); GNUTLS_ERROR_EXIT(result, "gnutls_global_init()"); +#if 0 + gnutls_global_set_log_level(10); + gnutls_global_set_log_function(log_function_gnutls); +#endif + /* Setup GnuTLS cipher suites. */ result = gnutls_priority_init(&global_tls_priority_cache, "NORMAL", NULL); GNUTLS_ERROR_EXIT(result, "gnutls_priority_init()"); @@ -427,7 +445,7 @@ static void *worker_thread(void *unused) { return NULL; } -static char *slurp_file(const char *path) { +static char *slurp_text_file(const char *path) { struct stat stat; size_t size_read; char *content = NULL;