]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
hierarchy logging was broken for SSL
authorwessels <>
Fri, 11 Jun 1999 03:06:23 +0000 (03:06 +0000)
committerwessels <>
Fri, 11 Jun 1999 03:06:23 +0000 (03:06 +0000)
src/forward.cc
src/protos.h
src/ssl.cc
src/tunnel.cc

index 705d294aac3c8da5a41f7e8b2250b9015a531b50..c08895c2e97e3ff01d13b665e6f4f75ed384563f 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: forward.cc,v 1.60 1999/05/19 19:57:43 wessels Exp $
+ * $Id: forward.cc,v 1.61 1999/06/10 21:06:23 wessels Exp $
  *
  * DEBUG: section 17    Request Forwarding
  * AUTHOR: Duane Wessels
@@ -61,16 +61,6 @@ fwdServerFree(FwdServer * fs)
     memFree(fs, MEM_FWD_SERVER);
 }
 
-static void
-fwdServersFree(FwdServer ** FS)
-{
-    FwdServer *fs;
-    while ((fs = *FS)) {
-       *FS = fs->next;
-       fwdServerFree(fs);
-    }
-}
-
 static void
 fwdStateFree(FwdState * fwdState)
 {
@@ -385,6 +375,16 @@ fwdReforward(FwdState * fwdState)
 
 /* PUBLIC FUNCTIONS */
 
+void
+fwdServersFree(FwdServer ** FS)
+{
+    FwdServer *fs;
+    while ((fs = *FS)) {
+       *FS = fs->next;
+       fwdServerFree(fs);
+    }
+}
+
 void
 fwdStart(int fd, StoreEntry * e, request_t * r, struct in_addr client_addr,
     struct in_addr my_addr)
index 3e0c4237fc3865cf93ca2d8a9b2a603c379c4a51..afe2a881c178ed78253163ec11318c0028433d2e 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: protos.h,v 1.338 1999/06/10 06:10:32 wessels Exp $
+ * $Id: protos.h,v 1.339 1999/06/10 21:06:24 wessels Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -683,6 +683,7 @@ extern void fwdUnregister(int fd, FwdState *);
 extern void fwdComplete(FwdState * fwdState);
 extern void fwdInit(void);
 extern int fwdReforwardableStatus(http_status s);
+extern void fwdServersFree(FwdServer ** FS);
 
 extern void urnStart(request_t *, StoreEntry *);
 
index ae11bd9077914114cefa18d06a55d0e0b20f41fa..9dad0e1c0cbf68f1e4d6278b4f533cc9a5f45606 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ssl.cc,v 1.96 1999/05/19 19:57:50 wessels Exp $
+ * $Id: ssl.cc,v 1.97 1999/06/10 21:06:26 wessels Exp $
  *
  * DEBUG: section 26    Secure Sockets Layer Proxy
  * AUTHOR: Duane Wessels
@@ -40,13 +40,13 @@ typedef struct {
     char *host;                        /* either request->host or proxy host */
     u_short port;
     request_t *request;
+    FwdServer *servers;
     struct {
        int fd;
        int len;
        char *buf;
     } client, server;
     size_t *size_ptr;          /* pointer to size in an ConnStateData for logging */
-    int proxying;
 #if DELAY_POOLS
     delay_id delay_id;
 #endif
@@ -104,6 +104,7 @@ sslStateFree(SslStateData * sslState)
     safe_free(sslState->server.buf);
     safe_free(sslState->client.buf);
     safe_free(sslState->url);
+    fwdServersFree(&sslState->servers);
     sslState->host = NULL;
     requestUnlink(sslState->request);
     sslState->request = NULL;
@@ -388,7 +389,7 @@ sslConnectDone(int fdnotused, int status, void *data)
        err->callback_data = sslState;
        errorSend(sslState->client.fd, err);
     } else {
-       if (sslState->proxying)
+       if (sslState->servers->peer)
            sslProxyConnected(sslState->server.fd, sslState);
        else
            sslConnected(sslState->server.fd, sslState);
@@ -506,7 +507,6 @@ sslPeerSelectComplete(FwdServer * fs, void *data)
     SslStateData *sslState = data;
     request_t *request = sslState->request;
     peer *g = NULL;
-
     if (fs == NULL) {
        ErrorState *err;
        err = errorCon(ERR_CANNOT_FORWARD, HTTP_SERVICE_UNAVAILABLE);
@@ -516,7 +516,7 @@ sslPeerSelectComplete(FwdServer * fs, void *data)
        errorSend(sslState->client.fd, err);
        return;
     }
-    sslState->proxying = fs->peer ? 1 : 0;
+    sslState->servers = fs;
     sslState->host = fs->peer ? fs->peer->host : request->host;
     if (fs->peer == NULL) {
        sslState->port = request->port;
@@ -534,6 +534,9 @@ sslPeerSelectComplete(FwdServer * fs, void *data)
        sslState->delay_id = 0;
     }
 #endif
+    hierarchyNote(&sslState->request->hier,
+       fs->peer ? fs->code : DIRECT,
+       sslState->host);
     commConnectStart(sslState->server.fd,
        sslState->host,
        sslState->port,
index c30077f29cf7c8d1385118a60acc9b3f87d8399b..1e587be50aa78ea35bb3dc607403d1b37433a19a 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: tunnel.cc,v 1.96 1999/05/19 19:57:50 wessels Exp $
+ * $Id: tunnel.cc,v 1.97 1999/06/10 21:06:26 wessels Exp $
  *
  * DEBUG: section 26    Secure Sockets Layer Proxy
  * AUTHOR: Duane Wessels
@@ -40,13 +40,13 @@ typedef struct {
     char *host;                        /* either request->host or proxy host */
     u_short port;
     request_t *request;
+    FwdServer *servers;
     struct {
        int fd;
        int len;
        char *buf;
     } client, server;
     size_t *size_ptr;          /* pointer to size in an ConnStateData for logging */
-    int proxying;
 #if DELAY_POOLS
     delay_id delay_id;
 #endif
@@ -104,6 +104,7 @@ sslStateFree(SslStateData * sslState)
     safe_free(sslState->server.buf);
     safe_free(sslState->client.buf);
     safe_free(sslState->url);
+    fwdServersFree(&sslState->servers);
     sslState->host = NULL;
     requestUnlink(sslState->request);
     sslState->request = NULL;
@@ -388,7 +389,7 @@ sslConnectDone(int fdnotused, int status, void *data)
        err->callback_data = sslState;
        errorSend(sslState->client.fd, err);
     } else {
-       if (sslState->proxying)
+       if (sslState->servers->peer)
            sslProxyConnected(sslState->server.fd, sslState);
        else
            sslConnected(sslState->server.fd, sslState);
@@ -506,7 +507,6 @@ sslPeerSelectComplete(FwdServer * fs, void *data)
     SslStateData *sslState = data;
     request_t *request = sslState->request;
     peer *g = NULL;
-
     if (fs == NULL) {
        ErrorState *err;
        err = errorCon(ERR_CANNOT_FORWARD, HTTP_SERVICE_UNAVAILABLE);
@@ -516,7 +516,7 @@ sslPeerSelectComplete(FwdServer * fs, void *data)
        errorSend(sslState->client.fd, err);
        return;
     }
-    sslState->proxying = fs->peer ? 1 : 0;
+    sslState->servers = fs;
     sslState->host = fs->peer ? fs->peer->host : request->host;
     if (fs->peer == NULL) {
        sslState->port = request->port;
@@ -534,6 +534,9 @@ sslPeerSelectComplete(FwdServer * fs, void *data)
        sslState->delay_id = 0;
     }
 #endif
+    hierarchyNote(&sslState->request->hier,
+       fs->peer ? fs->code : DIRECT,
+       sslState->host);
     commConnectStart(sslState->server.fd,
        sslState->host,
        sslState->port,