1 Index: squid/src/client_side.c
2 diff -c squid/src/client_side.c:1.561.2.48 squid/src/client_side.c:1.561.2.49
3 *** squid/src/client_side.c:1.561.2.48 Sun Dec 14 06:33:46 2003
4 --- squid/src/client_side.c Sun Dec 14 06:40:46 2003
8 static void clientBuildReplyHeader(clientHttpRequest * http, HttpReply * rep);
9 static clientHttpRequest *parseHttpRequestAbort(ConnStateData * conn, const char *uri);
10 static clientHttpRequest *parseHttpRequest(ConnStateData *, method_t *, int *, char **, size_t *);
11 + static void clientRedirectStart(clientHttpRequest * http);
12 static RH clientRedirectDone;
13 static void clientCheckNoCache(clientHttpRequest *);
14 static void clientCheckNoCacheDone(int answer, void *data);
17 http->uri = xstrdup(urlCanonical(http->request));
18 assert(http->redirect_state == REDIRECT_NONE);
19 http->redirect_state = REDIRECT_PENDING;
20 ! redirectStart(http, clientRedirectDone, http);
22 int require_auth = (answer == ACCESS_REQ_PROXY_AUTH || aclIsProxyAuth(AclMatchedName));
23 debug(33, 5) ("Access Denied: %s\n", http->uri);
25 http->uri = xstrdup(urlCanonical(http->request));
26 assert(http->redirect_state == REDIRECT_NONE);
27 http->redirect_state = REDIRECT_PENDING;
28 ! clientRedirectStart(http);
30 int require_auth = (answer == ACCESS_REQ_PROXY_AUTH || aclIsProxyAuth(AclMatchedName));
31 debug(33, 5) ("Access Denied: %s\n", http->uri);
35 authenticateAuthUserRequestLock(err->auth_user_request);
36 err->callback_data = NULL;
37 errorAppendEntry(http->entry, err);
42 + clientRedirectAccessCheckDone(int answer, void *data)
44 + clientHttpRequest *http = data;
45 + http->acl_checklist = NULL;
46 + if (answer == ACCESS_ALLOWED)
47 + redirectStart(http, clientRedirectDone, http);
49 + clientRedirectDone(http, NULL);
53 + clientRedirectStart(clientHttpRequest * http)
55 + debug(33, 5) ("clientRedirectStart: '%s'\n", http->uri);
56 + if (Config.Program.redirect == NULL) {
57 + clientRedirectDone(http, NULL);
60 + if (Config.accessList.redirector) {
61 + http->acl_checklist = clientAclChecklistCreate(Config.accessList.redirector, http);
62 + aclNBCheck(http->acl_checklist, clientRedirectAccessCheckDone, http);
64 + redirectStart(http, clientRedirectDone, http);
68 Index: squid/src/redirect.c
69 diff -c squid/src/redirect.c:1.88.2.2 squid/src/redirect.c:1.88.2.3
70 *** squid/src/redirect.c:1.88.2.2 Tue Sep 23 19:03:36 2003
71 --- squid/src/redirect.c Sun Dec 14 06:40:47 2003
76 debug(61, 5) ("redirectStart: '%s'\n", http->uri);
77 - if (Config.Program.redirect == NULL) {
78 - handler(data, NULL);
81 - if (Config.accessList.redirector) {
83 - memset(&ch, '\0', sizeof(ch));
84 - ch.src_addr = http->conn->peer.sin_addr;
85 - ch.my_addr = http->conn->me.sin_addr;
86 - ch.my_port = ntohs(http->conn->me.sin_port);
87 - ch.request = http->request;
88 - if (!aclCheckFast(Config.accessList.redirector, &ch)) {
89 - /* denied -- bypass redirector */
90 - handler(data, NULL);
94 if (Config.onoff.redirector_bypass && redirectors->stats.queue_size) {
95 /* Skip redirector if there is one request queued */