Hi Juliusz,

About line 228 client.c from the head branch of the polipo.

       /* The request has already been validated when it first got
           into the queue */
        if(connection->request) {
            if(connection->request->object != NULL)
                httpClientNoticeRequest(connection->request, 1);
            else
                assert(connection->flags & CONN_READER);
        }

Why it is sure that the request is already checked? I think once the 
code runs to here, the requestor was served already. When the request 
got into the queue while the object was in progress, it was not clear if 
the object were good for caching.

Regards,
Ming

Juliusz Chroboczek wrote:
>> When a client request find an object that is in progress state. If there is
>> nothing to prove that the object is not cache-able. For example, the object
>> is new OBJECT_INITIAL. The request will be attached to the object to share
>> the server reply.
>>     
>
> Right.
>
>   
>> When the server replies to the object and indicate that it is not
>> cache-able. The object is privatized or marked not cache-able so that later
>> request won't match it.
>>     
>
> Not quite.  First, note that Polipo has two notions of ``private'', which
> is unfortunate but historical (I initially didn't understand they were
> separate notions).  There's OBJECT_PRIVATE, which means that an object will
> be discarded from the cache as soon as it's safe, and there's HTTP_PRIVATE,
> which implies that it must be revalidated under some circumstances.
>
>   
>> But how does polipo re-issue the other requests already attached to the
>> object?
>>     
>
> Out of the requests that caused this object to be fetched, one is
> distinguished as having caused the fetch; this is the one stored in
> object->requestor.  If an object turns out to be unservable for a request,
> then the request cannot be the requestor, and it will be fetched requested
> again by clientNoticeRequest, which is called from client.c at line 1415.
>
> The original instance will subsequently be privatised by supersedeObject,
> called by httpServerHandlerHeaders, and the remaining client-side requests
> will switch to a new object in the messy code around line 1384 in client.c.
>
> Yes, it's a mess.  All of this needs a redesign.  Anyone willing to pay me
> 6 moths' salary?  (Just kidding, I'm happy with my job.)
>
>                                         Juliusz
>
> ------------------------------------------------------------------------------
> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
> The future of the web can't happen without you.  Join us at MIX09 to help
> pave the way to the Next Web now. Learn more and register at
> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
> _______________________________________________
> Polipo-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/polipo-users
>   


------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
Polipo-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/polipo-users

Reply via email to