Newsgroups : Borland : borland.public.delphi.internet.winsock : 2007 Nov : Re: Indy 10 and winsock error 10053
| Subject: | Re: Indy 10 and winsock error 10053 |
| Posted by: | "Remy Lebeau (TeamB)" (no.spam@no.spam.com) |
| Date: | Wed, 28 Nov 2007 11:02:26 |
"Don Wilcox" <don@drdwilcox.com> wrote in message
news:474da10e$1@newsgroups.borland.com...
> It is in C++. I post here only because the traffic is better.
Please don't do that. There is plenty of traffic in the C++ newsgroups.
> if (svc.SubString(1, 5) == "https") {
> // Need an SSL IOHandler
> TIdSSLIOHandlerSocketOpenSSL *ioh = new
> TIdSSLIOHandlerSocketOpenSSL(http);
> ioh->Port = 443;
> ioh->UseNagle = false;
> } // if
You are instantiating an SSL IOHandler, but you are not actually assigning
it to the TIdHTTP at all.
> std::auto_ptr<TMemoryStream> req(new TMemoryStream);
> req->Write(rqXML.data(), rqXML.Length());
Did you verify that Write() is actualy writing all of the data in full?
Write() has a return value that indicates the number of bytes actually
written to the stream.
Rather than using TMemoryStream, how about TStringStream instead?
std::auto_ptr<TStringStream> req(new TStringStream(rqXML));
Then you are not making a second copy of the data at all.
> // Add the SOAPAction HTTP Header to the Request
> String hdr = "SOAPAction: \"" + fAction.Server + fAction.Name + "\"";
> http->Request->CustomHeaders->Clear();
> http->Request->CustomHeaders->Add(hdr);
http->Request->CustomHeaders->Values["SOAPAction"] = \"" +
fAction.Server + fAction.Name + "\";
> Again, it works up to something less than 8MB.
You said 5 MB earlier.
> It gets to the third packet
How are you determining that? How large are the packets?
Gambit
none