--------------------- PatchSet 12324 Date: 2008/07/20 20:33:17 Author: hno Branch: SQUID_2_7 Tag: (none) Log: Make clientCacheHit bail out gracefuly if hitting an aborted object The change to properly signal aborted requests have seem to have opened some conditions where objects may be aborted while we swap in the headers. This change makes cache hits on aborted objects a soft error, falling back on cache miss (same as a swapin failure). Members: src/client_side.c:1.754.2.18->1.754.2.19 Index: squid/src/client_side.c =================================================================== RCS file: /cvsroot/squid/squid/src/client_side.c,v retrieving revision 1.754.2.18 retrieving revision 1.754.2.19 diff -u -r1.754.2.18 -r1.754.2.19 --- squid/src/client_side.c 18 Jul 2008 00:47:48 -0000 1.754.2.18 +++ squid/src/client_side.c 20 Jul 2008 20:33:17 -0000 1.754.2.19 @@ -1,6 +1,6 @@ /* - * $Id: client_side.c,v 1.754.2.18 2008/07/18 00:47:48 hno Exp $ + * $Id: client_side.c,v 1.754.2.19 2008/07/20 20:33:17 hno Exp $ * * DEBUG: section 33 Client-side Routines * AUTHOR: Duane Wessels @@ -2226,10 +2226,15 @@ http->log_type = LOG_TCP_SWAPFAIL_MISS; clientProcessMiss(http); return; + } else if (EBIT_TEST(e->flags, ENTRY_ABORTED)) { + /* aborted object */ + debug(33, 3) ("clientCacheHit: hit an aborted object %s\n", http->uri); + http->log_type = LOG_TCP_SWAPFAIL_MISS; + clientProcessMiss(http); + return; } mem = e->mem_obj; debug(33, 3) ("clientCacheHit: %s = %d\n", http->uri, rep->sline.status); - assert(!EBIT_TEST(e->flags, ENTRY_ABORTED)); /* * This particular logic is a bit hairy.