]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/blobdiff - src/connection.c
src/connection.c: Fix switched variables in read_from_write_to().
[tlsproxy/tlsproxy.git] / src / connection.c
index 4160c7feff77388206b3459bf82f18c8f2734eeb..8f78bba6c373a6078b5421bb5787d5bbcb73fdea 100644 (file)
@@ -28,9 +28,9 @@
 #include <poll.h>
 
 
-/* Maximum line of the request line. Longer request lines are aborted with an
- * error. The standard doesn't specify a maximum line length but this should
- * be a good limit to make processing simpler. */
+/* Maximum line of a HTTP request line. Longer request lines are aborted with
+ * an error. The standard doesn't specify a maximum line length but this
+ * should be a good limit to make processing simpler. */
 #define MAX_REQUEST_LINE 4096
 
 
@@ -71,10 +71,10 @@ void handle_connection(int client_socket) {
 
     /* Read request line (CONNECT ..) and headers (they are discarded). */
     result = read_http_request(client_fd, buffer, sizeof(buffer));
-    if (result == -1) {
-        /* Read error. */
+    if (-1 == result) {
+        /* Read error, client_fd already closed. */
         return;
-    } else if (result == -2) {
+    } else if (-2 == result) {
         /* EOF */
         send_close_bad_request(client_fd);
         return;
@@ -110,6 +110,7 @@ void handle_connection(int client_socket) {
     server_fd = fdopen(server_socket, "a+");
     if (NULL == server_fd) {
         send_close_forwarding_failure(client_fd);
+        close(server_socket);
         return;
     }
 
@@ -120,11 +121,11 @@ void handle_connection(int client_socket) {
 
         /* Read response line from proxy server. */
         result = read_http_request(server_fd, buffer, sizeof(buffer));
-        if (result == -1) {
-            /* Read error. */
+        if (-1 == result) {
+            /* Read error, server_fd already closed. */
             send_close_forwarding_failure(client_fd);
             return;
-        } else if (result == -2) {
+        } else if (-2 == result) {
             /* EOF */
             fclose(server_fd);
             send_close_forwarding_failure(client_fd);
@@ -270,8 +271,8 @@ static int read_from_write_to(int from, int to) {
         return -1;
     }
     if (size_read != size_written) {
-        printf("only written %ld of %ld bytes!\n", (long int)size_read,
-                                                   (long int)size_written);
+        printf("only written %ld of %ld bytes!\n", (long int)size_written,
+                                                   (long int)size_read);
         return -1;
     }
 
@@ -338,7 +339,7 @@ static int connect_to_host(const char *hostname, const char *port) {
 
 /* Parse HTTP CONNECT request string and save its parameters.
  *
- * The following format is expected: "CONNECT host:port HTTP/1.y".
+ * The following format is expected: "CONNECT host:port HTTP/1.x".
  *
  * request and host must have the same size! port must be at least 6 bytes
  * long (5 + '\0').