]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
CONNECT now works!!! Woohoo!!!
authorGraham Leggett <minfrin@apache.org>
Sun, 8 Apr 2001 12:54:34 +0000 (12:54 +0000)
committerGraham Leggett <minfrin@apache.org>
Sun, 8 Apr 2001 12:54:34 +0000 (12:54 +0000)
the poll() loop was overhauled - many of the reads, writes and selects
were happening on the wrong sockets.
PR:
Obtained from:
Reviewed by:

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88767 13f79535-47bb-0310-9956-ffa450edef68

modules/proxy/proxy_connect.c

index de28835e2550718afbcd988833b3dc0a8ffcb2ac..2b7b9f88331451c3c9eca1451fa105a854f996a3 100644 (file)
@@ -283,10 +283,10 @@ int ap_proxy_connect_handler(request_rec *r, char *url,
                     "proxy: CONNECT: Returning 200 OK Status");
         nbytes = apr_snprintf(buffer, sizeof(buffer),
                              "HTTP/1.0 200 Connection Established" CRLF);
-        apr_send(sock, buffer, &nbytes);
+        apr_send(r->connection->client_socket, buffer, &nbytes);
         nbytes = apr_snprintf(buffer, sizeof(buffer),
                              "Proxy-agent: %s" CRLF CRLF, ap_get_server_version());
-        apr_send(sock, buffer, &nbytes);
+        apr_send(r->connection->client_socket, buffer, &nbytes);
     }
 
     ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r->server,
@@ -329,22 +329,23 @@ int ap_proxy_connect_handler(request_rec *r, char *url,
 
     /* Add the server side to the poll */
     apr_poll_socket_add(pollfd, sock, APR_POLLIN);
+    apr_poll_socket_add(pollfd, r->connection->client_socket, APR_POLLIN);
 
     while (1) { /* Infinite loop until error (one side closes the connection) */
-        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, NULL, "proxy: CONNECT: going to sleep (poll)");
+        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r->server, "proxy: CONNECT: going to sleep (poll)");
         if(apr_poll(pollfd, &pollcnt, -1) != APR_SUCCESS)
         {
            apr_socket_close(sock);
             ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "proxy: CONNECT: error apr_poll()");
             return HTTP_INTERNAL_SERVER_ERROR;
         }
-        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, NULL,
+        ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r->server,
                      "proxy: CONNECT: woke from select(), i=%d", pollcnt);
 
         if (pollcnt) {
             apr_poll_revents_get(&pollevent, sock, pollfd);
             if (pollevent & APR_POLLIN) {
-                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, NULL,
+                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r->server,
                              "proxy: CONNECT: sock was set");
                 nbytes = HUGE_STRING_LEN;
                 if(apr_recv(sock, buffer, &nbytes) == APR_SUCCESS) {
@@ -356,16 +357,16 @@ int ap_proxy_connect_handler(request_rec *r, char *url,
                         o += i;
                         nbytes -= i;
                     }
-                    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, NULL,
+                    ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r->server,
                                 "proxy: CONNECT: wrote %d bytes to client", nbytes);
                 }
                 else
                     break;
             }
 
-            apr_poll_revents_get(&pollevent, sock, pollfd);
+            apr_poll_revents_get(&pollevent, r->connection->client_socket, pollfd);
             if (pollevent & APR_POLLIN) {
-                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, NULL,
+                ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r->server,
                              "proxy: CONNECT: client was set");
                 nbytes = HUGE_STRING_LEN;
                 if(apr_recv(r->connection->client_socket, buffer, &nbytes) == APR_SUCCESS) {
@@ -378,7 +379,7 @@ int ap_proxy_connect_handler(request_rec *r, char *url,
                         nbytes -= i;
                     }
                     ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0,
-                        NULL, "proxy: CONNECT: wrote %d bytes to server", nbytes);
+                        r->server, "proxy: CONNECT: wrote %d bytes to server", nbytes);
                 }
                 else
                     break;