HTTP SSL Data back from post, but onBeginWork not fired

Giganews Newsgroups
Subject: HTTP SSL Data back from post, but onBeginWork not fired
Posted by:  Molando (a…@cd.de)
Date: Tue, 13 Sep 2005

Hello. Sorry for the long description, but this has had me stumped for a few
weeks.

I am using windows 2k. Latest version of Indy.

IdHTTP + IdSSLIOHandlerSocketOpenSSL

I am connecting to a https site, sending some XML with a post operation,
then receiving some gziped data back.

The post operation I am using is one that takes the URL, the strings, and
returns a stream.

The machines talk to each other fine, the SSL connection is being formed
perfectly. The XML data is always being sent over, and its contents have
been verified many times. There are no firewalls, or parts on the either
machine that will cause any problems.

With a packet sniffer, I see that I always get the correct response back.
But onWorkBegin is not always being called.

If I use dialup, it will work around 90% of the time. Normally in runs, so I
dial up one time, and all will be perfect, the next time 3 or 4 will work in
a row, or maybe onWorkBegin will not be called at all for 10 attempts, but
work on the 11th. The program is being reset each time.

When I use our internal network to connect out, then it is the reverse, all
the data is recorded fine (there and back) in the packet sniffer, but
onBeginWork does not get called 95% of the time.

From tracing it appears that the program first starts to branch around

IdSSLOpenSSL :

TIdSSLIOHandlerSocketOpenSSL.ReadFromSource

When the program works:

    repeat

      if Readable(ATimeout) then begin // is false

When the program Fails, this part returns true

I also noticed in idHTTP

function TIdHTTPResponse.GetKeepAlive: Boolean;

is being called just before the onwork event is called. It is never called
when it fails.

The timeout is set to infinite.

When the system fails, there is not a long delay. Quicker than when it
works.

Hopefully I am just missing a setting. If not could somebody point me in the
right direction.

Thanks in advance,

    Jonathan.

Replies