- From: Peter Chan <pchan@netgravity.com>
- Date: Fri, 26 Feb 1999 11:41:05 -0800
- To: <frystyk@w3.org>, <www-lib@w3.org>
Thanks for the quick reply. I tried the patch, but mget still failes with status = HT_INTERRUPTED (-902) after 50 requests. I am trying this against an Apache 1.3.3 server, which is supposedly HTTP 1.1. Peter ----- Original Message ----- From: Henrik Frystyk Nielsen <frystyk@w3.org> Newsgroups: w3c.www-lib To: <pchan@netgravity.com>; <raff@nuvomedia.com> Sent: Friday, February 26, 1999 7:37 AM Subject: Re: libwww flow control? > > >Henrik Frystyk Nielsen wrote: > >> !> I do something similar on Win98, sending one request only when the >> !> previous terminates, and I get the error too, but I cannot figure >> !> out what's going on (some sites always generate the error, some >> !> sites don't). > >Now I see what is going on - the problem is with old HTTP/1.0 server >which don't send any content length header field in the response. Libwww >mistook this as the connection being closed prematurely - in fact the >download work out just fine. > >Try this patch - it also allows Mikhail Grouchinski to figure out how >many requests are active/pending on a host object :) > >-- >Henrik Frystyk Nielsen, >World Wide Web Consortium >http://www.w3.org/People/Frystyk ---------------------------------------------------------------------------- ---- >Index: Library/src/HTHost.c >=================================================================== >RCS file: /sources/public/libwww/Library/src/HTHost.c,v >retrieving revision 2.59 >diff -r2.59 HTHost.c >1223a1224,1233 >> PUBLIC int HTHost_numberOfOutstandingNetObjects (HTHost * host) >> { >> return host ? HTList_count(host->pipeline) : -1; >> } >> >> PUBLIC int HTHost_numberOfPendingNetObjects (HTHost * host) >> { >> return host ? HTList_count(host->pending) : -1; >> } >> >Index: Library/src/HTHost.html >=================================================================== >RCS file: /sources/public/libwww/Library/src/HTHost.html,v >retrieving revision 2.26 >diff -r2.26 HTHost.html >427a428,437 >> How many Pending and Outstanding Net objects are there on a Host? >> </H3> >> <P> >> You can query how many Het objects (essentially requests) are outstanding >> or pending on a host object using these methods: >> <PRE> >> extern int HTHost_numberOfOutstandingNetObjects (HTHost * host); >> extern int HTHost_numberOfPendingNetObjects (HTHost * host); >> </PRE> >> <H3> >Index: Library/src/HTTP.c >=================================================================== >RCS file: /sources/public/libwww/Library/src/HTTP.c,v >retrieving revision 1.178 >diff -r1.178 HTTP.c >25a26 >> #include "HTNetMan.h" >990,992c991,1006 >< HTRequest_addError(request, ERR_FATAL, NO, HTERR_INTERRUPTED, >< NULL, 0, "HTLoadHTTP"); >< HTTPCleanup(request, HT_INTERRUPTED); >--- >> long read_len = HTNet_bytesRead(net); >> long doc_len = HTAnchor_length(anchor); >> >> /* >> ** It is OK to get a close if a) we don't pipeline and b) >> ** we have the expected amount of data. In case we don't >> ** know how much data to expect, we must accept it asis. >> */ >> if (HTHost_numberOfOutstandingNetObjects(host) == 1 && >> (doc_len<0 || doc_len==read_len)) { >> HTTPCleanup(request, HT_LOADED); >> } else { >> HTRequest_addError(request, ERR_FATAL, NO, HTERR_INTERRUPTED, >> NULL, 0, "HTLoadHTTP"); >> HTTPCleanup(request, HT_INTERRUPTED); >> } >
Received on Friday, 26 February 1999 14:44:30 UTC