X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=src%2Fconnection.c;h=170302c9fdaf9894267c91da2ebd4934a27a6843;hb=f3ca90e517a9ae54e831e5a5b91fcc2afb9df5bf;hp=5a08de7431f07733179982b48e3cf7bac8e4d737;hpb=b7ce41b809a3b3533d398c0da8fd9787c149434c;p=tlsproxy%2Ftlsproxy.git diff --git a/src/connection.c b/src/connection.c index 5a08de7..170302c 100644 --- a/src/connection.c +++ b/src/connection.c @@ -106,7 +106,7 @@ void handle_connection(int client_socket) { * certificate. */ int validation_failed; - LOG(DEBUG, "new connection"); + LOG(DEBUG1, "new connection"); server_socket = -1; client_fd_read = NULL; @@ -134,7 +134,7 @@ void handle_connection(int client_socket) { send_bad_request(client_fd_write); goto out; } else if (result == -3) { - LOG(DEBUG, "read_http_request(): proxy authentication failed"); + LOG(DEBUG1, "read_http_request(): proxy authentication failed"); send_authentication_required(client_fd_write); goto out; } @@ -145,15 +145,15 @@ void handle_connection(int client_socket) { goto out; } - LOG(DEBUG, "target: %s:%s (HTTP 1.%d)", host, port, version_minor); + LOG(DEBUG1, "target: %s:%s (HTTP 1.%d)", host, port, version_minor); /* Connect to proxy server or directly to server. */ if (global_proxy_host != NULL && global_proxy_port != NULL) { - LOG(DEBUG, "connecting to %s:%s", global_proxy_host, - global_proxy_port); + LOG(DEBUG1, "connecting to %s:%s", global_proxy_host, + global_proxy_port); server_socket = connect_to_host(global_proxy_host, global_proxy_port); } else { - LOG(DEBUG, "connecting to %s:%s", host, port); + LOG(DEBUG1, "connecting to %s:%s", host, port); server_socket = connect_to_host(host, port); } @@ -194,7 +194,7 @@ void handle_connection(int client_socket) { } } - LOG(DEBUG, "connection to server established"); + LOG(DEBUG1, "connection to server established"); /* If the -u option is used and we don't know this hostname's server * certificate then just pass through the connection and let the client @@ -209,13 +209,13 @@ void handle_connection(int client_socket) { fprintf(client_fd_write, "\r\n"); fflush(client_fd_write); - LOG(DEBUG, "transferring data"); + LOG(DEBUG1, "transferring data"); /* Proxy data between client and server until one side is done * (EOF or error). */ transfer_data(client_socket, server_socket); - LOG(DEBUG, "finished transferring data"); + LOG(DEBUG1, "finished transferring data"); goto out; } @@ -235,7 +235,7 @@ void handle_connection(int client_socket) { } server_session_init = 1; - LOG(DEBUG, "starting server TLS handshake"); + LOG(DEBUG1, "starting server TLS handshake"); /* Try to establish TLS handshake between us and server. */ result = gnutls_handshake(server_session); @@ -247,7 +247,7 @@ void handle_connection(int client_socket) { } server_session_started = 1; - LOG(DEBUG, "server TLS handshake finished"); + LOG(DEBUG1, "server TLS handshake finished"); /* Make sure the server certificate is valid and known. */ if (verify_tls_connection(server_session, host) != 0) { @@ -278,7 +278,7 @@ void handle_connection(int client_socket) { fprintf(client_fd_write, "\r\n"); fflush(client_fd_write); - LOG(DEBUG, "starting client TLS handshake"); + LOG(DEBUG1, "starting client TLS handshake"); /* Try to establish TLS handshake between client and us. */ result = gnutls_handshake(client_session); @@ -290,7 +290,7 @@ void handle_connection(int client_socket) { } client_session_started = 1; - LOG(DEBUG, "client TLS handshake finished"); + LOG(DEBUG1, "client TLS handshake finished"); /* Tell the client that the verification failed. Shouldn't be necessary as * the client should terminate the connection because he received the @@ -300,14 +300,14 @@ void handle_connection(int client_socket) { goto out; } - LOG(DEBUG, "transferring TLS data"); + LOG(DEBUG1, "transferring TLS data"); /* Proxy data between client and server until one side is done (EOF or * error). */ transfer_data_tls(client_socket, server_socket, client_session, server_session); - LOG(DEBUG, "finished transferring TLS data"); + LOG(DEBUG1, "finished transferring TLS data"); out: /* Close TLS sessions if necessary. Use GNUTLS_SHUT_RDWR so the data is @@ -338,7 +338,7 @@ out: } else if (server_socket != -1) { close(server_socket); } - LOG(DEBUG, "connection to server closed"); + LOG(DEBUG1, "connection to server closed"); /* Close connection to client. */ if (client_fd_read != NULL) { if (client_fd_write != NULL) { @@ -348,9 +348,9 @@ out: } else { close(client_socket); } - LOG(DEBUG, "connection to client closed"); + LOG(DEBUG1, "connection to client closed"); - LOG(DEBUG, "connection finished"); + LOG(DEBUG1, "connection finished"); } @@ -618,6 +618,8 @@ static void transfer_data(int client, int server) { fds[1].events = POLLIN | POLLPRI | POLLHUP | POLLERR; fds[1].revents = 0; + LOG(DEBUG1, "transfer_data(): %d -> %d", client, server); + for (;;) { int result = poll(fds, 2 /* fd count */, -1 /* no timeout */); if (result < 0) { @@ -658,8 +660,6 @@ static int read_from_write_to(int from, int to) { ssize_t size_written; char buffer[4096]; - LOG(DEBUG, "read_from_write_to(): %d -> %d", from, to); - size_read = read(from, buffer, sizeof(buffer)); if (size_read < 0) { LOG_PERROR(WARNING, "read_from_write_to(): read()"); @@ -703,8 +703,8 @@ static void transfer_data_tls(int client, int server, if (gnutls_record_get_max_size(server_session) < buffer_size) { buffer_size = gnutls_record_get_max_size(server_session); } - LOG(DEBUG, "transfer_data_tls(): suggested buffer size: %ld", - (long int)buffer_size); + LOG(DEBUG1, "transfer_data_tls(): suggested buffer size: %ld", + (long int)buffer_size); for (;;) { int result = poll(fds, 2 /* fd count */, -1 /* no timeout */); @@ -750,10 +750,10 @@ static int read_from_write_to_tls(gnutls_session_t from, char buffer[16384]; if (buffer_size > sizeof(buffer)) { + LOG(WARNING, "read_from_write_to_tls(): reduced buffer size to %ld", + (long int)(sizeof(buffer))); buffer_size = sizeof(buffer); } - LOG(DEBUG, "read_from_write_to_tls(): used buffer size: %ld", - (long int)buffer_size); size_read = gnutls_record_recv(from, buffer, buffer_size); if (size_read < 0) { @@ -819,14 +819,14 @@ static int connect_to_host(const char *hostname, const char *port) { server->ai_socktype, server->ai_protocol); if (server_socket < 0) { - LOG_PERROR(DEBUG, "connect_to_host(): socket(), trying next"); + LOG_PERROR(DEBUG1, "connect_to_host(): socket(), trying next"); continue; } if (connect(server_socket, server->ai_addr, server->ai_addrlen) == 0) { break; } - LOG_PERROR(DEBUG, "connect_to_host(): connect(), trying next"); + LOG_PERROR(DEBUG1, "connect_to_host(): connect(), trying next"); close(server_socket); }