I experienced the same RequestDone error and asked about it previously. I
handled it by checking de StatusCode. On a RequestDone with StatusCode = 0,
it's not the final one and more will follow. However, I seem to end up with
clients that never generate a RequestDone anymore... That means clients that
never finish, which stalls the complete download process.
I hope we can start the discussion again. Thanks.
--Merijn
Btw, I use C++ builder 6 too... Is this a builder-specific bug?
On 9/28/05, Bjørnar Nielsen [EMAIL PROTECTED] wrote:
First, i have not read the messages you write this follow up to.
This is a follow up. I wanted to report what appears to be a
related issue to the bug in THttpCli when a link is
redirected. It seems that the RequestDone is called twice.
This has already been reported and I've implemented a work
around in my program.
If you get data together with the redirection, mabe it is not a bug that
you
get requestdone twice?
I've discovered another issue in that it doesn't seem that
the RcvdStream is being cleared. For example, when a link is
requested using THttpCli and it is redirected, there can be
garbage at the beginning of RcvdStream.
RcvdStream should only contain the document obtained from the
redirected link and nothing from the original link that
caused the redirection.
I am using the latest release version and C++Builder 6.
I have reproduced this problem in my application using this
link provided by a user:
http://net1test.rhmware.com/marketingprimer
I have worked around this issue by clearing RcvdStream when
the LocationChange event is called using:
if (HttpCli-RcvdStream) {
HttpCli-RcvdStream-Seek(0,soFromBeginning);
}
If LocationChange is triggered before you have received all the data from
first request,
maybe you should clear the stream in requestdone instead,?
By the way, I hope the above is sufficient to clear the
stream but I'm not sure that it is. If it isn't can anyone
state the correct way to clear/reset a steam? I can't find it
in the documentation.
This only sets the position in the stream, in this case to the start of
the
stream. Then when you receive data, the data is written from the start of
the stream, overwriting previous data if there are any. If you use a
TMemoryStream, you can use Clear or SetSize, this will also delete old
data.
You can also delete the stream and make a new stream.
Regards Bjørnar
--
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