I think I've found a problem with how HttpProt handles relocation.
First, I have to give some background. I'm using Turbo Delphi 2006 and
using an older version of ICS (HttpProt.pas ver 1.94 last updated
12/10/06). I haven't kept up with the latest revisions or followed them
too closely so I didn't know if this problem had been corrected in a later
version. To try to find out, I downloaded some later versions from the
Overbyte web site. I checked: OverbyteIcsV5.zip (HttpProt.pas ver 1.94
last updated: 7/13/08) and OverbyteIcsV6_RC1.zip (OverbyteIcsHttpProt.pas
ver 6.00.5 last updated: 6/25/08) and OverbyteIcsV7_Alpha1.zip
(OverbyteIcsHttpProt.pas ver 6.00.6 last updated: 7/17/08). I found the
same problem in each of these versions so I think I need to bring it to
people's attention.
The problem is in: THttpCli.GetHeaderLineNext where it's handling a
non-proxy relocation to an absolute location (near line 2800 in the
source). The code is:
{ We are not using a proxy }
else begin
if Data[1] = '/' then begin
{ Absolute location }
FPath := Data;
if Proto = '' then
Proto := 'http';
FLocation := Proto + '://' + FHostName + FPath;
end
The problem is that Proto has never been set at this time. When the check
(if Proto = '' then) is made, the relocation will switch us from https to
http. I modified the code to the following:
{ We are not using a proxy }
else begin
ParseURL(FURL, proto, user, pass, Host, port, Path);
if Data[1] = '/' then begin
{ Absolute location }
FPath := Data;
if Proto = '' then
Proto := 'http';
FLocation := Proto + '://' + FHostName + FPath;
end
This corrected the problem for me. It should also correct the same problem
for Relative location in the next block of code.
Since I'm not working with the latest versions, I thought I'd pass this
along so that someone who is working with the current version could correct it.
Thanks.
Steve
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be