amassari 2004/05/05 15:08:07 Modified: c/src/xercesc/util/NetAccessors/libWWW BinURLInputStream.cpp BinURLInputStream.hpp LibWWWNetAccessor.cpp Log: Content reported by a web site as text/xml is now read correctly; added an extra way of getting the size of the document in case no redirection has been performed Revision Changes Path 1.7 +18 -11 xml-xerces/c/src/xercesc/util/NetAccessors/libWWW/BinURLInputStream.cpp Index: BinURLInputStream.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/NetAccessors/libWWW/BinURLInputStream.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- BinURLInputStream.cpp 16 Jan 2004 14:29:21 -0000 1.6 +++ BinURLInputStream.cpp 5 May 2004 22:08:07 -0000 1.7 @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.7 2004/05/05 22:08:07 amassari + * Content reported by a web site as text/xml is now read correctly; added an extra way of getting the size of the document in case no redirection has been performed + * * Revision 1.6 2004/01/16 14:29:21 amassari * Removed usage of undeclared macro MIN * @@ -202,16 +205,21 @@ BOOL status = HTLoadToStream(uriAsCharStar, counterStrm, request); if (status == YES) { - // Patch by Artur Klauser - // When a redirection is processed in libWWW, it seems that - // HTAnchor_length(anchor) == -1 on the original anchor, whereas - // HTResponse_length(response) gives the correct content length of - // the redirection target. This has confusedfRemoteFileSize and it was - // not checked for a -1 response at all. - HTResponse * response = HTRequest_response (request); - fRemoteFileSize = HTResponse_length(response); - if (fRemoteFileSize < 0) { - ThrowXMLwithMemMgr(NetAccessorException, XMLExcepts::NetAcc_LengthError, fMemoryManager); + HTParentAnchor * anchor = HTRequest_anchor(request); + fRemoteFileSize=HTAnchor_length(anchor); + if(fRemoteFileSize < 0) + { + // Patch by Artur Klauser + // When a redirection is processed in libWWW, it seems that + // HTAnchor_length(anchor) == -1 on the original anchor, whereas + // HTResponse_length(response) gives the correct content length of + // the redirection target. This has confused fRemoteFileSize and it was + // not checked for a -1 response at all. + HTResponse * response = HTRequest_response (request); + fRemoteFileSize = HTResponse_length(response); + if (fRemoteFileSize < 0) { + ThrowXMLwithMemMgr(NetAccessorException, XMLExcepts::NetAcc_LengthError, fMemoryManager); + } } } @@ -295,7 +303,6 @@ fBytesProcessed += bytesAsked; retval = bytesAsked; } - else { // ...will need to read some more bytes out of the stream. 1.6 +4 -1 xml-xerces/c/src/xercesc/util/NetAccessors/libWWW/BinURLInputStream.hpp Index: BinURLInputStream.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/NetAccessors/libWWW/BinURLInputStream.hpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- BinURLInputStream.hpp 29 Jan 2004 11:51:20 -0000 1.5 +++ BinURLInputStream.hpp 5 May 2004 22:08:07 -0000 1.6 @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.6 2004/05/05 22:08:07 amassari + * Content reported by a web site as text/xml is now read correctly; added an extra way of getting the size of the document in case no redirection has been performed + * * Revision 1.5 2004/01/29 11:51:20 cargilld * Code cleanup changes to get rid of various compiler diagnostic messages. * @@ -164,7 +167,7 @@ XMLByte* fBuffer; unsigned int fBufferIndex; unsigned int fBufferSize; - unsigned int fRemoteFileSize; + int fRemoteFileSize; unsigned int fBytesProcessed; MemoryManager* fMemoryManager; }; 1.5 +12 -10 xml-xerces/c/src/xercesc/util/NetAccessors/libWWW/LibWWWNetAccessor.cpp Index: LibWWWNetAccessor.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/NetAccessors/libWWW/LibWWWNetAccessor.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- LibWWWNetAccessor.cpp 24 Dec 2003 15:24:13 -0000 1.4 +++ LibWWWNetAccessor.cpp 5 May 2004 22:08:07 -0000 1.5 @@ -82,8 +82,10 @@ // Initialize the libWWW library here. // HTProfile_newPreemptiveClient("XercesC", gXercesFullVersionStr); + HTConversion_add(HTFormat_conversion(), "text/xml", "*/*", HTThroughLine, 1.0, 0.0, 0.0); + HTConversion_add(HTFormat_conversion(), "application/xml", "*/*", HTThroughLine, 1.0, 0.0, 0.0); #ifdef XML_DEBUG - HTSetTraceMessageMask("sop"); + HTSetTraceMessageMask("sop"); #endif HTAlert_setInteractive(NO); HTHost_setEventTimeout(5000); @@ -94,13 +96,13 @@ { // Cleanup the libWWW library here. - /* Quote from http://www.w3.org/Library/src/HTProfil.html#Client: - * - * This call also supersedes the termination function for the - * Library core, HTLibTerminate() so that you don't have to call - * that after calling this function. - */ - HTProfile_delete(); + /* Quote from http://www.w3.org/Library/src/HTProfil.html#Client: + * + * This call also supersedes the termination function for the + * Library core, HTLibTerminate() so that you don't have to call + * that after calling this function. + */ + HTProfile_delete(); } @@ -112,7 +114,7 @@ case XMLURL::HTTP: { BinURLInputStream* retStrm = - new (urlSource.getMemoryManager()) BinURLInputStream(urlSource); + new (urlSource.getMemoryManager()) BinURLInputStream(urlSource); return retStrm; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]