Zitat von Micah Cowan <[EMAIL PROTECTED]>:

> > Zitat von Jochen Roderburg <[EMAIL PROTECTED]>:
> >
> >> So it looks now to me, that the new error (local timestamp not set to
> remote)
> >> only occurs in the cases when no HEAD is used.
> >
> > This (new) piece of code in http.c (line 2666 ff.) looks very suspicious to
> me,
> > especially the "time_came_from_head" bit:
> >
> >               /* Reparse time header, in case it's changed. */
> >               if (time_came_from_head
> >                   && hstat.remote_time && hstat.remote_time[0])
> >                 {
> >                   newtmr = http_atotm (hstat.remote_time);
> >                   if (newtmr != -1)
> >                     tmr = newtmr;
> >                 }
>
> The intent behind this code is to ensure that we parse the Last-Modified
> date again, even if we already parsed Last-Modified, if the last one we
> parsed came from the HEAD.

Hmm, yes, but that is not what it does  ;-)

I mean, it does not parse the date again "even if" it was already parsed, but
"only if" it was already parsed. So especially it does *not* parse it if there
had been no HEAD at all before.

And the only other code I found which parses the remote date is in the part
which handles the logic around the timestamping option. In older versions this
was a conditional block starting with  if (!got_head) ...  , now it starts with
 if (send_head_first && !got_head) ...   Could this mean that this code is now
only executed when a HEAD response is examined ??

Anyway, I think everything is ok again when you just eliminate this
time_came_from_head logic completely. The above piece of code then just sets
the local timestamp to the last remote timestamp which was seen and does not
care from which HEAD or GET requests it actually came.

Jochen Roderburg
ZAIK/RRZK
University of Cologne
Robert-Koch-Str. 10             Tel.:   +49-221/478-7024
D-50931 Koeln                   E-Mail: [EMAIL PROTECTED]
Germany

Reply via email to