Index: squid/src/forward.c diff -u squid/src/forward.c:1.1.1.12.2.4 squid/src/forward.c:1.1.1.12.2.5 --- squid/src/forward.c:1.1.1.12.2.4 Thu May 20 00:46:53 1999 +++ squid/src/forward.c Sun Jun 6 02:27:54 1999 @@ -54,24 +54,6 @@ static int FwdReplyCodes[MAX_FWD_STATS_IDX + 1][HTTP_INVALID_HEADER + 1]; static void -fwdServerFree(FwdServer * fs) -{ - if (fs->peer) - cbdataUnlock(fs->peer); - 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) { StoreEntry *e = fwdState->entry; @@ -90,7 +72,7 @@ } if (storePendingNClients(e) > 0) assert(!EBIT_TEST(e->flags, ENTRY_FWD_HDR_WAIT)); - fwdServersFree(&fwdState->servers); + freeFwdServers(&fwdState->servers); requestUnlink(fwdState->request); fwdState->request = NULL; storeUnregisterAbort(e); @@ -149,7 +131,7 @@ } else { /* Use next. The last "direct" entry is retried multiple times */ fwdState->servers = fs->next; - fwdServerFree(fs); + freeFwdServer(fs); } } /* use eventAdd to break potential call sequence loops */ @@ -387,7 +369,7 @@ return 0; assert(fs); fwdState->servers = fs->next; - fwdServerFree(fs); + freeFwdServer(fs); if (fwdState->servers == NULL) { debug(17, 3) ("fwdReforward: No forward-servers left\n"); return 0; Index: squid/src/peer_select.c diff -u squid/src/peer_select.c:1.1.1.28.2.6 squid/src/peer_select.c:1.1.1.28.2.7 --- squid/src/peer_select.c:1.1.1.28.2.6 Thu May 20 00:54:51 1999 +++ squid/src/peer_select.c Sun Jun 6 02:27:54 1999 @@ -653,3 +653,22 @@ FS = &(*FS)->next; *FS = fs; } + +void +freeFwdServer(FwdServer *fs) +{ + if (fs->peer) + cbdataUnlock(fs->peer); + memFree(fs, MEM_FWD_SERVER); +} + +void +freeFwdServers(FwdServer ** FS) +{ + FwdServer *fs; + while ((fs = *FS)) { + *FS = fs->next; + freeFwdServer(fs); + } +} + Index: squid/src/protos.h diff -u squid/src/protos.h:1.1.1.40.2.4 squid/src/protos.h:1.1.1.40.2.5 --- squid/src/protos.h:1.1.1.40.2.4 Thu May 20 00:54:51 1999 +++ squid/src/protos.h Sun Jun 6 02:27:54 1999 @@ -622,6 +622,8 @@ #if USE_HTCP extern void neighborsHtcpReply(const cache_key *, htcpReplyData *, const struct sockaddr_in *); #endif +extern void freeFwdServer(FwdServer *); +extern void freeFwdServers(FwdServer **); extern void netdbInit(void); extern void netdbHandlePingReply(const struct sockaddr_in *from, int hops, int rtt); Index: squid/src/ssl.c diff -u squid/src/ssl.c:1.1.1.17 squid/src/ssl.c:1.1.1.17.2.1 --- squid/src/ssl.c:1.1.1.17 Wed May 19 23:27:21 1999 +++ squid/src/ssl.c Sun Jun 6 02:27:55 1999 @@ -40,13 +40,13 @@ 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 @@ safe_free(sslState->server.buf); safe_free(sslState->client.buf); safe_free(sslState->url); + freeFwdServers(&sslState->servers); sslState->host = NULL; requestUnlink(sslState->request); sslState->request = NULL; @@ -113,6 +114,8 @@ cbdataFree(sslState); } + + #if DELAY_POOLS static int sslDeferServerRead(int fdnotused, void *data) @@ -388,10 +391,15 @@ err->callback_data = sslState; errorSend(sslState->client.fd, err); } else { - if (sslState->proxying) + if (sslState->servers->peer) { + hierarchyNote(&sslState->request->hier, sslState->servers->code, + sslState->host); sslProxyConnected(sslState->server.fd, sslState); - else + } else { + hierarchyNote(&sslState->request->hier, sslState->servers->code, + fd_table[sslState->server.fd].ipaddr); sslConnected(sslState->server.fd, sslState); + } commSetTimeout(sslState->server.fd, Config.Timeout.read, sslTimeout, @@ -516,7 +524,7 @@ 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;