#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. */
/* 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;
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. */
#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));
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);
while (!done) {
/* Accept new connection. */
client_socket = accept(server_socket, NULL, NULL);
- if (client_socket == -1) {
+ if (client_socket < 0) {
perror("accept()");
break;
}
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(). */
gcry_strerror(error));
exit(EXIT_FAILURE);
}
+#endif
/* Initialize GnuTLS. */
result = gnutls_global_init();