Frans van Daalen wrote: > Arno, > > I tested this url and your change (only GetHeaderLineNext) and yes > with connection "keep-alive" of no setting on connection all is fine. > However with connection set to "close" the relocation fails on the > third one. If I try to find where it hangs it shows > > DoRequestSync > ....Application.ProcessMessages > with fstate = httpwaitingbody.
Hmm, I'm still not familiar with this component (looks rather complicated), however that error doesn't happen if I include the second change. Just tested HTTP1.1 with Connection := 'Close' successfully, are you able to reproduce the same? Arno > > > ----- Original Message ----- > From: "Arno Garrels" <[EMAIL PROTECTED]> > To: "ICS support mailing" <twsocket@elists.org> > Sent: Tuesday, July 04, 2006 8:07 AM > Subject: Re: [twsocket] THttpCli v6 - Relocation Problem > > >> Frans van Daalen wrote: >>> If you want me to >>> check it in detail just let me know and I will do so for you. >> >> Thanks, could you please check my small changes below? Try with both >> HTTP 1.0/1.1, with as well as w/o property Connection set to 'Keep- >> Alive'/ 'Close'. >> It's working here using GET, only I'm not sure whether it might have >> some other side effects, RequestDone is not triggered on each >> relocation. Problem URL: >> http://feeds.feedburner.com/foxsports/RSS/headlines?m=4765 leads to >> three relocations, first goes to a different host. >> >> >> 1 - procedure THttpCli.GetHeaderLineNext >> >> [..] >> { FContentLength = -1 when server doesn't send a value } >> if ((FContentLength = -1) and { Added 12/03/2004 } >> ((FStatusCode < 200) or { Added 12/03/2004 } >> (FStatusCode = 204) or { Added 12/03/2004 } >> (FStatusCode = 301) or { Added 06/10/2004 } >> (FStatusCode = 302) or { Added 06/10/2004 } >> (FStatusCode = 304) or { Added 12/03/2004 } >> (FStatusCode = 401) or { Added 12/28/2005 } >> //AG 12/28/05 >> (FStatusCode = 407))) { Added 12/28/2005 } >> //AG 12/28/05 >> or >> (FContentLength = 0) >> or >> (FRequestType = httpHEAD) then begin >> { TriggerHeaderEnd; }{ Removed 10/01/2004 } >> if {(FResponseVer = '1.0') or (FRequestVer = '1.0') or} >> { [rawbite 31.08.2004 Connection controll] } >> FCloseReq then begin >> if FLocationFlag then { Added 16/02/2004 >> } StartRelocation { Added >> 16/02/2004 } else begin { >> Added 16/02/2004 } if FRequestType = httpHEAD >> then begin { Added 23/07/04 } >> { With HEAD command, we don't expect a >> document } >> { but some server send one >> } >> FReceiveLen := 0; { Cancel received >> ta } >> StateChange(httpWaitingBody); >> FNext := nil; >> end; >> FCtrlSocket.CloseDelayed; { Added 10/01/2004 >> } end; >> end >> => else begin // not FCloseReq >> => if FLocationFlag then >> => StartRelocation >> else >> SetReady; >> => end; >> Exit; >> end; >> [..] >> >> >> 2 - Not so important, but LocationChangeCurCount has been counted >> incorrectly. >> procedure THttpCli.StartRelocation >> [..] >> FRcvdCount := 0; >> FReceiveLen := 0; >> FHeaderLineCount := 0; >> FBodyLineCount := 0; >> >> if {(FResponseVer = '1.1') and} >> { [rawbite 31.08.2004 Connection controll] } >> (FCurrentHost = FHostName) and >> (FCurrentPort = FPort) and >> (FCurrentProtocol = FProtocol) and >> (not FCloseReq) then begin { SAE 01/06/04 } >> >> { This block moved 03/07/2006 } >> => { V1.90 25 Nov 2005 - restrict number of relocations to >> avoid continuous loops } >> inc (FLocationChangeCurCount) ; >> if FLocationChangeCurCount > FLocationChangeMaxCount then >> begin AllowMoreRelocations := false; >> if Assigned (FOnLocationChangeExceeded) then >> FOnLocationChangeExceeded(Self, >> FLocationChangeCurCount, >> AllowMoreRelocations); if not AllowMoreRelocations then >> begin SetReady; >> exit; >> end; >> => end; >> >> { No need to disconnect } >> { Trigger the location changed event 27/04/2003 } >> [..] >> >> >> --- >> Arno Garrels [TeamICS] >> http://www.overbyte.be/eng/overbyte/teamics.html >> >> >> Frans van Daalen wrote: >>> ----- Original Message ----- >>> From: "Arno Garrels" <[EMAIL PROTECTED]> >>> ..> >>>> Since I've never been using THttpCli in one of my applications I'm >>>> not very familiar with HTTP as well as the THttpCli. That's why I >>>> wonder whether it is intented to trigger RequestDone on each >>>> relocation or not (sometimes it's triggered in V5, V6 >>>> sometimesnot), probably someone more familiar with the component >>>> can clear me up? With two simple changes I can make the >>>> FollowRelocation feature working for the problem URL of the OP, >>>> however w/o RequestDone being triggered on relocation. >>>> >>>> >>> If I remember correctly, to late to really check it :), requestdone >>> is only triggered after relocate is finished (followreloc is true). >>> I use v6 beta and the thttpcli for some years now. If you want me to >>> check it in detail just let me know and I will do so for you. >> -- >> To unsubscribe or change your settings for TWSocket mailing list >> please goto http://www.elists.org/mailman/listinfo/twsocket >> Visit our website at http://www.overbyte.be -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be