Re: overrideCacheControlPrivate

From: Krasi Zlatev <krasi@dont-contact.us>
Date: Mon, 11 Jun 2001 09:10:09 +0300 (EEST)

in store.c:

void
storeSetPublicKey(StoreEntry * e)
{

......
   /*
     * We can't make RELEASE_REQUEST objects public......
     * If RELEASE_REQUEST is set, then ENTRY_CACHABLE should not
     * be set, and storeSetPublicKey() should not be called.
     */

    assert(!EBIT_TEST(e->flags, RELEASE_REQUEST));
    newkey = storeKeyPublic(mem->url, mem->method);
    if ((e2 = (StoreEntry *) hash_lookup(store_table, newkey))) {

        debug(20, 3) ("storeSetPublicKey: Making old '%s' private.\n", mem->url$
        storeSetPrivateKey(e2);

/* here it is*/
        storeRelease(e2);

        newkey = storeKeyPublic(mem->url, mem->method);
    }

If I comment the lines between {}, the object is not removed.

storeRelease() is after htppCachableReply, so if I want to
prevent RELEASE_REQUEST
flag from being set I have to make it earlier.

Unless it is OK to kill this check "We can't make RELEASE_REQUEST objects
public".

Thanks for the reply.

Krasi Zlatev
032/ 944 138
Network Administration
EWeb
Enjoy!

On Mon, 11 Jun 2001, Henrik Nordstrom wrote:

> Krasi Zlatev wrote:
> >
> > > If you have RELEASE_REQUEST then you are already too late. It has been
> > > decided that the object should be removed from the cache. From this
> > > there is no point of return.
> >
> > So as I understand I have to prevent release request flag being set for
> > that object.And from your words I seem to be too late doing that in
> > httpCachableReply.
>
> It should not be too late there, but if RELEASE_REQUEST is already set
> on the object then it is.
>
> Start by figuring out why the object got released (storeRelease() was
> called).
>
> --
> Henrik Nordstrom
> Squid Hacker
>
Received on Mon Jun 11 2001 - 00:20:07 MDT

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:14:03 MST