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. ----- 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