- From: Henrik Frystyk Nielsen <frystyk@w3.org>
- Date: Fri, 26 Feb 1999 10:37:26 -0500
- To: www-lib@w3.org
- To: pchan@netgravity.com, raff@nuvomedia.com
- Message-ID: <36D6BFB6.E5743983@w3.org>
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 10:37:31 UTC