- From: joe bester <bester@mcs.anl.gov>
- Date: Sat, 25 Sep 1999 14:59:40 -0500
- To: www-lib@w3.org
I'm implementing an application level-stream on top of the libwww interface. I've found that if I return HT_WOULD_BLOCK from the put_block method, then the stream will not be sent any more data. In particular, I am initializing the request like this: request = HTRequest_new(); HTRequest_addRange(request, "bytes", "0-1,1-2,2-3,3-4,4-5,5-6,6-7"); HTRequest_setOutputFormat(request, WWW_SOURCE); HTRequest_setPreemptive(request, YES); rc = HTLoadToStream(url, stream, request); The test_stream alternately returns HT_WOULD_BLOCK and HT_OK. I've tried modifying the HTReader_read method to continue through the loop if the net->readStream->isa->put_block returns HT_WOULD_BLOCK. This has the effect of making all of the byte ranges get sent to my stream, respecting my HT_WOULD_BLOCK responses. However, if I do block, then I have a problem after I receive the last byte range. The HTReader_read loops through one extra time through the read loop, causing it to block until the http server closes the socket. Is there a way to have a stream block and still get all of the data aimed at it? Thanks for any help, eoJ -- Joseph Bester Phone: (630) 252-1496 Mathematics & Computer Science Fax: (630) 252-5986 Argonne National Laboratory Email: bester@mcs.anl.gov Argonne, IL 60439
Received on Saturday, 25 September 1999 15:59:41 UTC