--------------------- PatchSet 8918 Date: 2007/02/13 23:18:15 Author: hno Branch: storework Tag: (none) Log: Kill ETag cache processing for now. Will get resurrected later in some form when Vary is added back. Members: src/HttpRequest.c:1.17.2.1->1.17.2.2 src/client_side.c:1.168.2.1->1.168.2.2 src/http.c:1.56.2.2->1.56.2.3 src/structs.h:1.139.2.1->1.139.2.2 Index: squid/src/HttpRequest.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/HttpRequest.c,v retrieving revision 1.17.2.1 retrieving revision 1.17.2.2 diff -u -r1.17.2.1 -r1.17.2.2 --- squid/src/HttpRequest.c 13 Feb 2007 10:47:31 -0000 1.17.2.1 +++ squid/src/HttpRequest.c 13 Feb 2007 23:18:15 -0000 1.17.2.2 @@ -70,7 +70,6 @@ if (req->range) httpHdrRangeDestroy(req->range); stringClean(&req->extacl_log); - assert(req->etags == NULL); safe_free(req->etag); if (req->pinned_connection) cbdataUnlock(req->pinned_connection); Index: squid/src/client_side.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/client_side.c,v retrieving revision 1.168.2.1 retrieving revision 1.168.2.2 diff -u -r1.168.2.1 -r1.168.2.2 --- squid/src/client_side.c 13 Feb 2007 10:47:31 -0000 1.168.2.1 +++ squid/src/client_side.c 13 Feb 2007 23:18:15 -0000 1.168.2.2 @@ -668,97 +668,6 @@ } static void -clientHandleETagMiss(clientHttpRequest * http) -{ - StoreEntry *entry = http->entry; - request_t *request = http->request; - - request->done_etag = 1; - safe_free(request->etag); - storeClientUnregister(http->sc, entry, http); - storeUnlockObject(entry); - http->entry = NULL; - clientProcessRequest(http); -} - -static void -clientHandleETagReply(void *data, char *buf, ssize_t size) -{ - clientHttpRequest *http = data; - StoreEntry *entry = http->entry; - MemObject *mem; - const char *url = storeUrl(entry); - http_status status; - debug(33, 3) ("clientHandleETagReply: %s, %d bytes\n", url, (int) size); - if (entry == NULL) { - /* client aborted */ - return; - } - if (size < 0 && !EBIT_TEST(entry->flags, ENTRY_ABORTED)) { - clientHandleETagMiss(http); - return; - } - mem = entry->mem_obj; - status = mem->reply->sline.status; - if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) { - debug(33, 3) ("clientHandleETagReply: ABORTED '%s'\n", url); - clientHandleETagMiss(http); - return; - } - if (STORE_PENDING == entry->store_status && 0 == status) { - debug(33, 3) ("clientHandleETagReply: Incomplete headers for '%s'\n", url); - if (size >= CLIENT_SOCK_SZ) { - /* will not get any bigger than that */ - debug(33, 3) ("clientHandleETagReply: Reply is too large '%s'\n", url); - clientHandleETagMiss(http); - } else { - storeClientCopy(http->sc, entry, - http->out.offset + size, - http->out.offset, - CLIENT_SOCK_SZ, - buf, - clientHandleETagReply, - http); - } - return; - } - if (HTTP_NOT_MODIFIED == mem->reply->sline.status) { - /* Remember the ETag and restart */ - clientHandleETagMiss(http); - return; - } - /* Send the new object to the client */ - clientSendMoreHeaderData(data, buf, size); - return; -} - -static void -clientProcessETag(clientHttpRequest * http) -{ - char *url = http->uri; - StoreEntry *entry = NULL; - debug(33, 3) ("clientProcessETag: '%s'\n", http->uri); - entry = storeCreateEntry(url, http->request->flags, http->request->method); - http->sc = storeClientRegister(entry, http); -#if DELAY_POOLS - /* delay_id is already set on original store client */ - delaySetStoreClient(http->sc, delayClient(http)); -#endif - http->entry = entry; - http->out.offset = 0; - fwdStart(http->conn->fd, http->entry, http->request); - /* Register with storage manager to receive updates when data comes in. */ - if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) - debug(33, 0) ("clientProcessETag: found ENTRY_ABORTED object\n"); - storeClientCopy(http->sc, entry, - http->out.offset, - http->out.offset, - CLIENT_SOCK_SZ, http->readbuf, - clientHandleETagReply, - http); -} - -static void clientProcessExpired(void *data) { clientHttpRequest *http = data; @@ -3334,10 +3243,6 @@ storeComplete(http->entry); return; } - if (r->etags) { - clientProcessETag(http); - return; - } http->entry = clientCreateStoreEntry(http, r->method, r->flags); if (Config.onoff.collapsed_forwarding && r->flags.cachable && !r->flags.need_validation && (r->method = METHOD_GET || r->method == METHOD_HEAD)) { http->entry->mem_obj->refresh_timestamp = squid_curtime; Index: squid/src/http.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/http.c,v retrieving revision 1.56.2.2 retrieving revision 1.56.2.3 diff -u -r1.56.2.2 -r1.56.2.3 --- squid/src/http.c 13 Feb 2007 11:41:26 -0000 1.56.2.2 +++ squid/src/http.c 13 Feb 2007 23:18:19 -0000 1.56.2.3 @@ -944,12 +944,15 @@ if (request->etag) { etags = httpHeaderGetList(hdr_in, HDR_IF_NONE_MATCH); strListAddUnique(&etags, request->etag, ','); - } else if (request->etags) { + } +#if NOT_NOW + if (request->etags) { int i; etags = httpHeaderGetList(hdr_in, HDR_IF_NONE_MATCH); for (i = 0; i < request->etags->count; i++) strListAddUnique(&etags, request->etags->items[i], ','); } +#endif if (strLen(etags)) httpHeaderPutStr(hdr_out, HDR_IF_NONE_MATCH, strBuf(etags)); stringClean(&etags); Index: squid/src/structs.h =================================================================== RCS file: /cvsroot/squid-sf//squid/src/structs.h,v retrieving revision 1.139.2.1 retrieving revision 1.139.2.2 diff -u -r1.139.2.1 -r1.139.2.2 --- squid/src/structs.h 13 Feb 2007 10:47:35 -0000 1.139.2.1 +++ squid/src/structs.h 13 Feb 2007 23:18:21 -0000 1.139.2.2 @@ -1893,9 +1893,7 @@ err_type err_type; char *peer_login; /* Configured peer login:password */ time_t lastmod; /* Used on refreshes */ - Array *etags; /* possible known entity tags (Vary MISS) */ char *etag; /* current entity tag, cache validation */ - unsigned int done_etag:1; /* We have done clientProcessETag on this, don't attempt it again */ char *urlgroup; /* urlgroup, returned by redirectors */ char *peer_domain; /* Configured peer forceddomain */ BODY_HANDLER *body_reader; @@ -2486,12 +2484,6 @@ struct error_map_entry *map; }; -struct _VaryData { - char *key; - char *etag; - Array etags; -}; - struct _HttpMsgBuf { const char *buf; size_t size;