- Bug 3497: Bad ssl_crtd db size file causes infinite loop
- Bug 3490: part 1: SegFault opening FTP active data connections
- Bug 3490: Crash writing Apache Common and Referer/Useragent logs
+ - Bug 3458: Icon Serving (squid-internal-static) Broken
- Bug 3457: Display TLS error details in ERR_SECURE_CONNECT_FAIL
- Bug 3381: 32-bit overflow assertion in StatHist
- Bug 3324: loadFromFile: parse error while reading template file
// are we using a shared memory cache?
if (Config.memShared && IamWorkerProcess()) {
- assert(new_status != IN_MEMORY); // we do not call this otherwise
+ // enumerate calling cases if shared memory is enabled
+ assert(new_status != IN_MEMORY || EBIT_TEST(flags, ENTRY_SPECIAL));
// This method was designed to update replacement policy, not to
// actually purge something from the memory cache (TODO: rename?).
// Shared memory cache does not have a policy that needs updates.
if (mem_status == IN_MEMORY)
return;
+ if (EBIT_TEST(flags, ENTRY_SPECIAL))
+ return; // cannot trim because we do not load them again
+
if (!preserveSwappable) {
if (mem_obj->policyLowestOffsetToKeep(0) == 0) {
/* Nothing to do */
void
StoreController::reference(StoreEntry &e)
{
+ // special entries do not belong to any specific Store, but are IN_MEMORY
+ if (EBIT_TEST(e.flags, ENTRY_SPECIAL))
+ return;
+
/* Notify the fs that we're referencing this object again */
if (e.swap_dirn > -1)
{
bool keepInStoreTable = true; // keep if there are no objections
+ // special entries do not belong to any specific Store, but are IN_MEMORY
+ if (EBIT_TEST(e.flags, ENTRY_SPECIAL))
+ return keepInStoreTable;
+
/* Notify the fs that we're not referencing this object any more */
if (e.swap_filen > -1)
StoreController::handleIdleEntry(StoreEntry &e)
{
bool keepInLocalMemory = false;
+
+ if (EBIT_TEST(e.flags, ENTRY_SPECIAL)) {
+ // Icons (and cache digests?) should stay in store_table until we
+ // have a dedicated storage for them (that would not purge them).
+ // They are not managed [well] by any specific Store handled below.
+ keepInLocalMemory = true;
+ } else
if (memStore) {
memStore->considerKeeping(e);
// leave keepInLocalMemory false; memStore maintains its own cache
return;
}
+ debugs(20, 5, HERE << "keepInLocalMemory: " << keepInLocalMemory);
+
// TODO: move this into [non-shared] memory cache class when we have one
if (keepInLocalMemory) {
e.setMemStatus(IN_MEMORY);