- From: Mike Bytnar <mbytnar@auvo.com>
- Date: Fri, 27 Apr 2001 16:16:36 -0500
- To: www-lib@w3.org
My client code makes asynchronous HTTP POSTs from separate threads using
the code below.
However, I cannot make more than one POST to a remote server at the same
time. libwww sits in a poll until the previous POST returns a result.
The first line seems to have no effect on the serializing (pipelining)
of the requests.
How can I force libwww to concurrently, and non-serially process HTTP
POST requests?
Regards,
--Mike
(Ripped from a library using libwww.
This lists the order and names of the relevant calls used.)
<begin snippet>
HTTP_setConnectionMode(HTTP_11_NO_PIPELINING);
HTProfile_newRobot(appname, appversion);
HTTP_setBodyWriteDelay (SMALLEST_LEGAL_LIBWWW_TIMEOUT,
SMALLEST_LEGAL_LIBWWW_TIMEOUT);
retval->request = HTRequest_new();
HTRequest_setContext(retval->request, retval);
target_stream = HTStreamToChunk(retval->request,
&retval->response_data, 0);
retval->source_anchor = HTTmpAnchor(NULL);
HTAnchor_setDocument(retval->source_anchor, retval->serialized_xml);
HTAnchor_setFormat(retval->source_anchor, HTAtom_for("text/xml"));
HTAnchor_setLength(retval->source_anchor,
get_size(retval->serialized_xml));
retval->dest_anchor = HTAnchor_findAddress(server->_server_url);
HTRequest_addAfter(request, &asynch_terminate_handler, NULL, NULL,
HT_ALL,
HT_FILTER_LAST, NO);
ok = HTPostAnchor(src, dst, request);
/* The poll occurs burried inside HTEventList_newLoop(), causing
another
asynchronously created HTRequest to block. Resulting in
serialization by libwww. */
while (!retval->is_done)
HTEventList_newLoop();
<end snippet>
Received on Friday, 27 April 2001 17:16:46 UTC