Movatterモバイル変換
[0]ホーム
COLLECTED BY
Organization:
Alexa Crawls Starting in 1996,
Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the
Wayback Machine after an embargo period.
this data is currently not publicly accessible.
The Wayback Machine - https://web.archive.org/web/20100620062129/http://www.w3.org:80/Library/User/History.html


Change History of libwww
This is a list of changes tolibwww in reversechronological order. See also thereleasenotes for thelatest release.
This is a minor release that mainly provides bug fixes and smallenhancements that have been commited to CVS since the last release. VladimirKoslov provided indispensable help for testing and preparing the Win32release. Special thanks to Wayne Davison, Art Barstow, Peter Stamfest, ZhuQun-Ying, Jens Meggers, Ken Olum for their contributions.
- Summary of principal changes (theChangeLog provides a detailed account)
- The following sample applications could core dump under Windows:
head.c, getheaders.c, chunk.c, chunkbody.c, multichunk.c - When retrieving an object from the cache, the HTTP headers associated with the object weren't stored in the HTResponse object.
- The cache garbage collector could go into an endless loop.
- The HTResponse object now returns the HTTP reason.
- Update of expat to version 19990728.
- Optimization, enhancements, and bugs fixes to the HTRDF module
- Some memory leaks and compiler warning fixes.
- The robot could hang when accessing local files.
- Optimization of the HTChunk and HTHash modules.
- Outstanding bugs
- The
webbot crashes from time to time under Windows. It seems to be a problem while reading therobots.txt file, where the application frees a request that's still registred in the Windows async. loop., - The
tiny.c sample application doesn't prompt the user with a text input. - Interpretation ofFD_CLOSE under Windows.
- The FTP implementation has memory leaks and doesn't remember the path or authentication information correctly.
- Compiling with -O2 and -Wall reveals some unitialized variables in HTDIR and HTFTP.
- To do
- Compile the answers to the libwww survey (volunteers are welcome).
This is the proper first 5.3 release. We changed the minor release numberas many people had started to refer to the previous release as 5.3.0.
- What's new
- Art Barstow (barstow@w3.org): fixed a bug with the handling of parseType="Literal" by the RDF parser. None of the elements [and attributes if there were any] were added to the literal. The only string that was added to the literal was the elements' content (aka CDATA).
- Changed the Makefile so that .html->.h file conversion will only be done with Perl. This is faster than using the www tool.
- Updated the latest autoconf, automake, and libtools scripts. Now using the separateconfig.guess and config.sub scripts.
- Extended the libwww/SSL API with HTSSL_setProtocol () and HTSSL_verifyDepth () functions to allow to change the TSL/SSL default protocol and the certificate verification depth. The wwwssl application was updated accordingly.
- Diverse documentation updates provided by Fox One.
- Fixed bugs
- The www wasn't able to convert .html files into .h ones anymore.
- theExtrnals.html file wasn't being generated on all platforms.
- Applied diverse patches for libwww/SSL which should correct the multiple request and Post problems that people had signaled. Many thanks to Heiner Kallweit and Gertjan van Winger for their contributions.
- Other patches I (unfortunately) forgot to note down and am too lazy to get them out from CVS... (sorry, will keep better notes next time!)
- Outstanding bugs
- Interpretation ofFD_CLOSE under Windows.
- The FTP implementation has memory leaks and doesn't remember the path or authentication information correctly.
This is the first release done after Henrik's depart from W3C. We'recalling it a pre-release, as we're not sure if we prepared it correctly.Special thanks to Henrik Frystik, Fox One, Vladimir Koslov, Rafaelle Sena,and all the other libwww User's Community for their patches and continuoussupport.
- What's new
- Included all the patches commited to CVS since the last release. It's been over a year since the last release and we don't have an exact count of what was commited. Many of them consisted of memory leak fixes and fixup with the asynchronous event handlers and timers under Win32.
- Integrated the libwww-SSL code back into libwww (the US export restriction doesn't apply anymore to source code).
- Upgraded expat to v1.1.
- Merged the outstanding Amaya libwww changes into the main tree.
For this release, special thanks go to thelibwww hackers Olga Antropova,Vladimir Kozlov, John Punin Olga Antropova, Jose Kahan, Vladimir Kozlov, JohnPunin, Bob Racko, and Raffaele Sena for all their hard work and cool newfeatures including:
Alsoin progress is work onRelease 5.2.6, Feb 24, 1999
This release is the has a lot of bug fixes and new features - primarily asa result of lots of really cool work done by people hacking away on libwwwincluding:
Release 5.2, Nov 1, 1998
This release is the first release after thelibwwwCVS Repository was made public in May 1998. At the time of the releasethere were more than 500 checked out versions of the libwww code base andnumerous people have contributed to this release in form ofbug fixes, extensions, and new features.
New Features
- Added a method in theHTAccess API for posting forms and returning the response as aHTChunk object
- Added handler for unknown content encodings in theCommand Line tool to be a through line (identity decoding) using thebest matching mechanism
- Added support forregex handling of proxies so that you can now say something like this: all URIs matching this regex goes to this proxy, all others go to this, etc.
- Better control of how much data is being sent in the REQUEST OBJECT. Now you can both get the total number of bytes read and written as well as the number of entity (body) bytes read and written. This uses features provided by the HTNet object
- The default implementation ofprogress notifications now uses the new HTRequest bytes read/written methods.
- The mime parser inHTMIME.c andHTMIMERq.c now uses the updated control of bytes read/written.
- Added support for version conflict detection inWeb Commander (update all of WinCom area)
- TheWeb Commander - the Win32 GUI PUT sample application has been updated from the ground up - try it out!
Bug Fixes
Release 5.1m May 21, 1998
New Features
- Changed theencoding streamstack builder to supportbest matching capabilities. This means that you now can register a default decoder like this:
HTFormat_addCoding("*", HTIdentityCoding, HTIdentityCoding, 0.3), for example whereHTIdentityCoding is a coder provided by libwww. - Added support forwriting outLink: header fields whenuploading a document. TheLink: header field is use to represent link relationship between documents
- ChangedHTEscape to deal with silly MSDos file type escaping of the drive name (using ":").
- Added support forautomatic authentication (!) in theCommand Line Tool so that it is now possible to authenticate from scripts etc.
- Direct access to the CVS repository - checkout libwww and work with the latest version!
- Made sure that we write more often as we check for expired timers in HTWriter.c
- Added a "repetitive" flag to timers so that they can be created to say call me every 30ms over and over again
- Added support for building libwww as a shared library on Unix (it is already using DLLs on Windows). If you have any problems with shared libraries on your platform thenrun configure with the
--disable-shared flag and you will only get the static version. If you are using libwww as a shared library but donot use thelibwww HTML parser then you MUST include thisdummy implementation of theHText interface somewhere in your code. The reason for this is that the HText interface may be called (it depends a bit on how your platform supports shared libraries) but an implementation isn't provided. - Added support forMySQL access inthis simple SQL interface which takes care of most os the common problems encountered when talking to an SQL server. Currently I use this forhandling logging inthe webbotbut many other features like persistent caching, preferences, etc. can use theSQL module as well. You can also see somecool examples of how to use the robot's logs when queryingMySQL throughwww-sql.
- Changed the name of "config.h" to "wwwconf.h" as thefirst name caused conflicts with other packages
- Changed the name of "sysdep.h" to "wwwsys.h" for the same reason
Bug Fixes
- Fixed a bug in thegeneration of relative URIs which caused the creation of incorrect relative URIs. Libwww uses relative URIs in the HTTP referer field and other places to save (often significant) amount of bandwidth.
- Decreased default max number of outstanding (pipelined) requests from 100 to 50
- Does now check whether we get a broken pipe when writing to the network from expired timers. This was a bug that it didn't.
- Applied thefollowing patches
- Fixed a problem in the HTWWWStr.c that caused aY2K bug if strftime isn't available on the system on where libwww is running
Release 5.1l March 25, 1998
This is a small add-on to 5.1k that was released two days ago. It has afew fixes that was discovered while working with the latestArena browser.
Bug Fixes
- Minor stuff that made PUT work nicer from a user perspective (when to ask what questions, etc)
- Fixed a few things in the direct WAIS access module
Release 5.1k March 23, 1998
New Features
- Added a simple "single user lock" on the persistent cache as it gets confused if multiple users are using it.
- On Unic, the header files are now installed when running "make install". The default location is"/usr/local/include/w3c-libwww".
- On Unix, aset of icons that can be used when browsing local file directories are also installed - the default location is "/usr/local/share/w3c-libwww"
Bug Fixes
- These are the patches that I have received for the current release. They will be applied to this upcoming release.
- Fixed a few bugs that makeArena run on top of the latest version
Release 5.1j March 9, 1998
New Features
- Made the distinction between Transfer-Encoding and Content-Transfer-Encoding clear - they were somewhat mixed up before. Libwww also now supports multiple transfer-codings as well as multiple content-codings as required byHTTP/1.1.
- Changed theStream Stack to not call the
SaveLocally stream any more but instead return an ErrorStream. The reason for this is that there are several places in the stram stack building algorithm where we might want to save the file to local file: when there is a content type that we don't understand, a content-encoding, or a transfer-encoding (or a combination of these) that we don't understand. Now we can make sure that theSaveLocally stream is only called once - Added support for "identity" transfer-coding and content-coding
- Added support for Allow header when doing PUT and POST
Bug Fixes
- Fixed a problem handling wrong HTTP responses from NCSA HTTPD derived servers (they don't include a version number when responding to an HTTP/1.1 request)
- PUT now works much more reliable, and it also works on Windows (at least NT, I haven't tested it on 95).
- Fixed a refresh problem in theLine Mode Browser which caused it to sometimes render the screen twice.
Release 5.1f January 1998
New Features
Bug Fixes
- Fixed some problems in the HTRelative function inHTParse.
Release 5.1e January 1998
New Features
Bug Fixes
- Fixed bug inouputstream that caused buffer to be overwritten in some cases when blocked on write
Release 5.1d December 1997
Bug Fixes
New Features
- Better logging facilities with support formultiple log objects including referer logging, Common Log File format logging and general logging filters.
Release 5.1c September 1997
Release 5.1b April 1997
Bug Fixes
- Fixed a problem inHTRules.c as described inthis bug report
- Fixed coredump problem inHTGetTmpFileName() as described inthis bug report. This affects also theHTCache module which relies on temporary file names
- Made thepersistent cache more robust which in some cases will save a segmentation fault
- Fixed problem inwwwsys.h as reported inthis bug report
- Fixed problem where a request was not flushed if using blocking sockets as reported bythis bug report.
- A limitation in the current persistent cache is that it only works in non-preemptive mode. Hence if using blocking sockets then the cache should be disabled. This is now the default behavior in thelibwww profiles.
- Bug fixed that caused the
maxsock variable used inselect() not to be decreased when deleting a socket in the defaultevent manager - Changed the connection management so that it complies with theConnection Management draft by Jim Gettys and Alan Freier. The HTTP client now closes idle connections after 60 seconds which is a heuristic period chosen by Jeff Mogul in the paper "The Case for Persistent-Connection HTTP". The number can be dynamically changed using the
HTHost_setPersistTimeout()and theHTHost_persistTimeout()methods. This could be made more advanced so that we take into account any information given in the "Keep-Alive" header but isn't for now. - Fixed a problem when a HTTP/1.1 server sent a response including aConnection: close header using the close of the TCP connection as a delimiter. This problem was pointed out inthis bug report
- Fixed security hole handlingHTTP 305 proxy redirection codes. The proxy location returned in the responses was enabled as a permanent proxy without any notification. The operation now requires explicit acknowledgement from the user
- Fixed potential (but small) security whole handlingparsing a new rules file. This operation now requires explicit acknowledgement from the user.
Release 5.1 February 18 1997
New Features and APIs
- Added support pipelining
- Support for zlib based decompression in content encoding
Bug Fixes
This release was originally called 4.1 but because we now have a completeHTTP/1.1 client side implemenation including apersistent cache manager and full supportfor uploading documents, we decided to call itversion 5.0 instead.
The focus for version 5.0 of theW3C Sample Code Libraryis to provide a set of higher level, application specific APIs for accessingthe Web. These APIs - calledprofiles -will help the application, a Web client for example, to more easily use thefull potential of the application independentLibrary core. Also, the Library contains asignificantly better interface for easy access to the Web through alarge set of functions specialized to performcertain Web operations likePUT,POST,DELETE,GET andHEAD.
This release contains aTCL add-on to the Robotexample application and aDeja GNU Test suitefor the Library. Also, it supportHTTP/1.1including persistent connections, two-wayPUT, and thehost header. There is also a samplePEPimplementation, that although incomplete can give an idea of where we'reheaded using PEP.
Bug Fixes
- Changed
HTGetTmpName not to use tempnam() anymore as it caused problems. - Added argument to
HTParseTime so that we can decide whether we want to expand relative times or not. - The request pointer passed to aprogress notification may be
NULL -be aware!
Release 4.1b5 August 24 1996
Release 4.1b5 is mainly a bug fix release after intensive testing againsttheCommon Lisp Serverwhich also is aHTTP/1.1 application. However, it also has a few new features worthnoting.
New Features
- Added support for theentity-tagvalidator headers:
If-Match andIf-None-Match and also for thedate validatorsIf-Modified-Since andIf-Unmodified-Since. We only use either etags or date stamps and theentity-tag validators have precedence over thedate validators. - Added acinclude.m4 in the WWW directory. The file is used by automake
- Changed theconfigure script to handle the location of the icons distributed as part of the libwww distribution package.
- Added full support for
Cache-Control header andConnection header. Both headers can have an association list of name value pairs as directives. - Moved the memory cache handler (history handler) from theline mode browser to be aBEFOREfilter which can be used by other applications as well. It is now included as part of theclient profile.
- Changed theexpiration handling API to not include any notification messages. Any messages to be transmitted to the user is now handled by theAlert manager.
- Addedpersistent cache manager to theclient profile.
- Addedvalidation command to the line mode browser
- Changed the cache validation management in theRequest object. The validation scheme is now compatible with HTTP/1.1 caching including handling of the history list. We have changed the validation enumerations from
HT_ANY_VERSION,HT_MEM_REFRESH,HT_CACHE_REFRESH,HT_FORCE_RELOADHT_CACHE_OK,HT_CACHE_FLUSH_MEM,HT_CACHE_VALIDATE,HT_CACHE_FLUSH.
Bug Fixes
- Fixed problem when getting a
connection header with theclose directive. The problem caused libwww to loop as it recursively tried to free the input stream pipe - Fixed bug in access authentication which could cause libwww to loop if the top level of the site was protected.
- Fixed bug that caused a core dump if receiving a message body without any
content-type. Now the data is passed to theguessing stream which hopefully can handle it.
Release 4.1b4 August 20 1996
HTTP version 1.1 allows for effective use of persistent connections.However, in orderto make this work, a client application must be capable ofrecovering from a closed connection between sent requests. The beta 4 versionof libwww supports automatic connection recovery and provides thefunctionality for performing pipelining of requests. That is, there can bemultiple outstanding requests on the same connection In order to do this, therelease contains modifications to theChannel Object, theHost object and theNet object.
New Features
- Added support for case-insensitive searching for proxies via environment variables
- Added support for proxy authentication
- Changed handling of proxies so that they are not included in the URL but is now instead part of the request object. This allows for better handling of proxies and also for more freely use of the proxy filter as it doesn't affect the other filters anymore.
- Added support for TRACE HTTP method in theHTAccess module.
- Updated News DLL and incorporated News patches fromMaciej Puzio
HT_PERSISTENT is now obsolete and should be replaced byHT_PENDING- The
HTChannelMode enumeration describing the flow of a channel has been replaced byHTTransportMode as it is now a part of the transport object and not the channel object HTNet_idle() has been removed and replaced byHTNet_isIdle(). The function returns YES if there are no pending requests in libwww at all.- Add support for checking public information about a host and use this information when issuing a PUT, for example. Also add check for host element inHTAccess when doing PUT. We may have public information available
- Changed the return codes defined inHTUtilsto reflect the values of the HTTP spec.
- Added support for
305 Use Proxy redirections - UpdatedHTDir module to better use the fact that we know that an entry is a directory or not. Now it appends a '/' to the URL if it is a directory. That way we often avoid a redirection.
- Removed WWWRules as interface and merged it with theWWWApp interface. The reason was that the two were highly alike and depended on each other
Bug Fixes
- Fixed problem with uploading directory listing using chunked encoding
- Fixed autoconf to handle WAIS and updated the HTWAIS.c module
- Fixed race problem in PUT on alphas
- Tested reentrant version of libwww (uses
_REENTRANT define) - Fixed problem in file name conversion from URL to local format on Windows
Release 4.1b3 July 20 1996
Thefile access module now does contentnegotiation by default. This means that all local file access (including fromclient applications)do content negotiation when accessing localfiles. Content negotiation can be turned off by setting a flag in therequest object.
A main difference in beta 3 is that we now have a set of "application profiles" that helps theapplication to initializelibwww core towork as a typical client, robot or other type of application. This shouldreplace the huge initialization procedure seen in previous versions. This isin fact a result of the core being so flexible - it is inly a framework foraccessing the Web. The application must initialize all the functionality atrun-time. You can see the various profile functions in theWWWInit interface.
The second main difference is that theBEFORE andAFTERfilters have been more explicit than before. TheHTLoadStart andHTLoadTerminate functions actually covered many typicalBEFORE andAFTER filter functions like looking for proxies,searching the cache, looking for rule file matching, and logging etc.
However, two functions were not covered by this:redirection andauthentication. That is why the application in previous version had tosupply this functionality. However, in beta 3 we have split up theHTLoadStart andHTLoadTerminte functions into aset of filters which each perform only asingle function, for example looking for proxies. The split has twofunctions: first it shows how you can use filtes to add new functionality tothe Library and second it can be used by more types of applications. A resultof the new filters is that we also have default redirection andauthentication filters so you don't have to provide this anymore.
Thefilters are set up as part of theprofiles so you will normally not have toregister them individually.
New features and Changes
- IntroducedHTUserprofile class to handle host and user specific information
- AddedChunked decoding and encoding module
- A host name is not expanded to afqdn name as it is not reliable enough. Now we just keep it as is, that is we don't expandwww towww.w3.org, for example.
- UpdatedHTML parser to support
BASE tag andLINK tag - Added new access methods to theHTAccess module. It is now part of theWWWApp interface
- Updated theIcon module and added icons to the distribution file
- Added aStream to Chunk converterfor easier conversion of streams into dynamic memory buffers
- IntroducedHTLib as a new core module. It contains generic information about the core which used to be in the HTAccess module.
- Added support forHTTP/1.1. Most of the HTTP/1.1 specification is now in place, we still need some headers and some features but this version can be considered to be compliant.
- Added suport for proxy authentication as specified by HTTP/1.1
- Added support for case-insensitive searching for proxies via environment variables
- Changed handling of proxies so that they are not included in the URL but is now instead part of the request object. This allows for better handling of proxies and also for more freely use of the proxy filter as it doesn't affect the other filters anymore.
Bug Fixes
- Fixed problem with uploading directory listing using chunked encoding
- Fixed problem in the rule file parser. It didn't parse the last line of the config file
- Fixed autoconf to handle WAIS and updated theHTWAIS.cmodule
- Fixed race problem in PUT on alphas which caused the PUT operation to hang under certain circumstances
Release 4.1b1 May 20 1996
New Features
- Introduced GNU autoconf configure script for compiling on Unix platforms instead of the old BUILD script. This should make it a lot easier to compile on Unix as we get all the advantages of GNU autoconf.
- Introduction of theHTUserprofile Classwhich keeps track of a "user" known to the Library
- New access authentication interface allowing for dynamic registration of new access authentication mechanisms. It provides an easy API for hooking in new schemes.
- Improved handling of trace messages which allows for easy redirection of trace messages
- Support for registration of content coders/decoders and content transfer encoders/decoders. This is done the same way as for media types by registering a set of streams that can handle the various encodings.
- Support forchunked decoding
- Introduction of theHTHost Class which keeps track of information about remote hosts
- TheDNS Class has been simplified to handle DNS queries only. All additional information about the remote host is defined by the HThost Class.
- We have a newHTEvent module which allows for dynamic registration of an event manager. This will make it much easier to use external event managers together with libwww. If you wish to continue to use the event handlers from HTEvntLst, you must register them explicitly withHTEvent_register. This call is demonstrated inHTBrowse.
- TheHTStream module has been created containing a set of basiv streams such as an error stream etc.
- Introduction of theHTTransport Class. This allows for dynamic registration of transport protocols such as for example the W3Mux protocol, TCP access, local file access etc.
- All MIME parsing is now done with registered parsers. TheHTMIME module only unwraps the MIME header fields and calls the best parser. The header parsing origonally done in HTMIME can be found inHTInit.c and is registered withHTMIMEInit. This call is demonstrated inHTBrowse.
This upgrade release fixes some bugs and it adds functionality for postingdata from memory. This is the full list of changes:
- Optimized HTTP request header by taken away an "Accept:" line pr accepted content type and instead use the commna notation.
- IntroducedHTMemory as dynamic memory handler. This module is a part of theWWWUtils interface and it handles better management of dynamic memory. You can find a full description in theUser's Guide.
- We now have an updatedlist ofall public functions exported from the Library.
- We also present an updated list ofall public interfaces available in the Library. You can find it in theLibrary Internals.
- PUT and POST from memory is implemented. You can now post data from memory using the POSTWeb model as for posting remote data objects. The Interface is described inHTAccess module. There is a very small dummy test implemented in the Line Mode browser. You can activate it if you typeedit from the command line.
- The Mini server now runs (although crude) as a proxy. It is capable of serving data as a HTTP/HTTP proxy. It is based on the internal Library event loop and is therefore highly portable. It is not intended to be a full featured server but a test implementation which shows how to use the Library in server applications.
- Bug fixed that caused the following problem: If there hasn't been made a connection between the net->target and the request->output_stream then the latter is not freed if the request is interrupted.
- Thereferer URL header can now contain a unlimited length URL
- A resolver callback function has been introduced in theHTTee stream. This allows the caller to assign a callback function to resolve conflicts between the return codes of the two streams.
- The request object as been added as a calling parameter to theHTFWrite stream creation method. This allows errors from writing to a file to propagate back to the request object.
- The three streams
HTSaveLocally,HTSaveAndExecute andHTSaveAndCallBack have been optimized and they now all use theHTFWrite stream creation method - We have a new module calledHTTPGen. It generates general HTTP headers. These headers were a part of the MIME header generator, but by isolating them, we can use the MIME header as a generic MIME entity header generator.
- CreatedHTErrorStream which always returns
HT_ERROR. It replaces theHTBlackHole has been replace with HTErrorStream in many places in order to speed up performance - Made HTTP response stream (which parses the response line only) into a converter so that we can forward the output exactly as received from the remote HTTP server. This is important for proxy applications and other applications that want to see the output untouched.
- The HTChunk module has been made more solid and the amount of memory allocations has been limited.
- Memory cleanup fixed in content length counter stream and FTP module
- Introducing HT_CLOSED and HT_PAUSE for handling streams. This was required, especially after HTTP supports persistent connections where a document is not delimited by a closed connection.
Release 4.0C January 23 1996
- Automatic redirection and Access authentication has been take n out of the HTTP module. Instead the new mechanism with request callback functions are used so that the application can register handlers to handle these situations. The reason for this change is that not all applications are interested in having this functionality performed automatically.
- Authentication handler and redirection handler added to both the Line Mode Browser and the Command Line Tool
- Added three possible return codes on which a request callback function can be called:
- HT_PERM_REDIRECT for permanently moved objects
- HT_TEMP_REDIRECT for temporarily moved objects
- HT_NO_ACCESS for insufficient credentials
- PUT and POST do now work reliably in the Line Mode Browser and the Command Line Tool. Both can PUT or POST a documentfrom either a remote HTTP serveror the local file systemto a remote HTTP server.
- An important bug-fix in the internal event manager that prevented a socket to be registered for multiple events at the same time.
- Cleanup of the POSTWeb management in the file module and the HTTP module
- In addition to progress notification on READ we now support progress notification when sending a data object
- Spelling mistake fixed.preemtive is changed topreemptive
- The W3C Mini Robot has now the ability to stop at a certain depth while traversing the Web.
Release 4.0A December 11 1995
- Created the include HTTPUtil.html - a C file may follow
- Changed HTDoAccept so that it automatically inserts the new socket descriptor in the Net object.
- HTLoad_terminate moved from HTReqMan to HTHome. It is not automatically set up in HTLibInit anymore
- Made HTAnchor and HTLink opaque data objects
- changed HTLink_newResult to HTLink_result
- changed HTLink_newMethod to HTLink_method
- Changed HyperDoc to simply a void pointer. This makes it more generic and the application does not have to actually treat it as a document anyway
- Introduced the WWW_DEBUG internal format that can be used to redirect debug information, for example from a HTTP redirection message etc.
- Request object added to HText_new methods
- changed HTExtParse to HTXParse throughout - H&kon
- HTXParse now null-terminates buffer - H&kon
- return codes from HTTee changed - H&kon
- content-length initialized to -1 - H&kon
- Fixed bug for handling HEAD in HTTP and MIME streams
- Handles of persistent connection is now a semaphore and not a bool
- Changes the event loop so that a timeout handler can return HT_OK or HT_ERROR. If the code is not HT_OK then stop the event loop
- Changed request of header enumeration:
- General headers have the prefic HT_G_
- Request headers have the prefic HT_C_
- Server headers have the prefic HT_S_
- Entity headers have the prefic HT_E_
- Separated file suffix initialization into HTBInit
- Changed the names in HTChunk to be consistent with the Module_method scheme
- Introduced HTBInit.c for setup of file suffixes
Alpha Release 7, November 28 1995
Alpha Release 6, November 20 1995
Alpha Release 5, November 8 1995
The Library has now undergone a major restructuring in order to define theAPIs between the various parts and to make it more modular. The newarchitecture is described in theArchitecture document and includes anew Net manager that handles a request queue, a DNS manager that handlespersistent connections and a well defined Request manager where the HTRequestobject is an opaque object.
Core Modules
- Generalized theError Manager to work on lists instead of as directly on a request object. This makes it possible to use the error manager in all situations.
- ChangedHTAppName andHTAppVersion to parameters to HTLibInit() instead of as global parameters.
- Introduced a new main include file calledWWWApp.h which contains applications specific modules. None of these modules are actually required to compile and link the Library, but the application can use them if needed.
- None of the access modules (HTTP, FTP, NNTP, etc.) are set up by default anymore. This is now for the applications to do.
- ChangedTRACE toWWWTRACE as it interferes with macro on NT
- The balanced binary tree inHTBtree is not used anymore. The functionality is now provided by the new HTArray module that is a dynamic array of pointers. It is much like theHTChunk module but for pointers instead of dynamic strings. The advantage is that the fastqsort algorithm can be used on the array.
- Moved the two functions
HTWWWTLocal() andHTLocalToWWW() from theHTFile Module to theHTString module for converting between local file names and URLs - It is now possible to register a call back function together with a timeout that is used in the select call of the event loop. When the select() call times out, the call back function is called. The registration can either be so that the call backalways is called when that the select call times outor only when Library sockets are in use.
- We have a port to PowerMac and 68K!!! This has been provided by Steven T. Roussey <sroussey@eng.uci.edu> and Brad Barber <barber@well.com>
- We have changed HTThread to HTNet.c as thread was too confusing. This module has been cleaned up and rewritten so thatHTNet.c now contains the Net manager. The Net manager controls the net access so that we only keeps a specified amount of sockets open simultaneously (called a request queue). It also partly controls the management of persistent connections together with the DNS Manager.
- TheHTRequest Object is now known to theRequest Manager only. It is accessible through a lot of methods just like theAnchor object etc. TheHTAccess module is now a user interface to the Request Manager but it doesn't have to be used - you can use the Request Manager directly but often it is easier to go through the Access Module.
- The Protocol object has been turned into an object internal to theProtocol manager. This means that protocol information can be accessed via a set of methods provided by the manager.
- We have changed case sensitive search to insensitive search when finding an access methods (HTTP, FTP, telnet etc.) for a URL. This catches silly errors in URLs likeHTTP://www.foo.com
- The static protocol declarations have been replaced with a set of parameters to the creation method of a protocol object in the Protocol Manager which is more handy.
- We added HTProtocol_delete() as method in theProtocol manager. This means that it is now possible tounregister a protocol at runtime. If you are on a platform with dynamic linking (for example DLLs) then this can save a lot of space.
- Introduction of application call back function for memory cache. This is a part of separating theHText module and also to make the memory cache manager more flexible. An example implementation can be found in theGridText module in theLine Mode Browser.
- Full support for theHTLink object that binds together two anchors. This is a requirement for keeping track of thePost Web.
- URL fragment identifiers were case insensitive - they are now case sensitive
- Added
result field to the HTLink so that the result of a posting operation is stored in the link object. This means that the application can see which post operations succeeded and which didn't. This can for example be used in a GUI client to show the relations between the source and destination anchor as "dim" links. - Fixed bug in put mechanism that caused destinations to accumulate in the postweb. Now `old' destinations are still registered but not included in a new postweb - they can, however, be discarded all together, but often the information is nice to have. On a GUI client, it can be shown as 'dimmed' destinations.
- Removed remaining outputs directly to stdout usingfprintf(). Now all goes through HTAlert module. This was a problem in some of the protocol modules as well (especially in the Telnet module).
- The
CacheItems structure is removed from anchor object and replaced by(BOOL) CacheHit. IfCacheHit=YES then the format negotiation and suffix binding is not used inHTFile Module but the object is loaded directly (from the local file cache) using non-blocking I/O - Internal DNS/hostname cache optimized and made more flexible to supportpersistent connections for all protocols that support this, for example HTTP, FTP, and NNTP. The first version has support for HTTP only, but the other ones will follow shortly. and multiple connections to same address. You can now control the garbage collection of DNS entries based on time. The DNS object keeps also information about the remote server (class of request, for example HTTP or FTP and the type of server, for example HTTP/1.0, HTTP/0.0 etc.). This means that it is possible to adjust a request to a remote server once the type is known. For example, the Library now distinguishes between HTTP servers version 0.9, 1.0, and 1.1. New classes and versions can be registered at run time just like protocol modules.
- HTDoConnect rewritten as a state machine which makes it a lot easier to understand and change. It is furthermore and important part of the persistent connection management.
- Removed
HTMaxRedirect as a global variable. It is now private toRequest manager with two methods to access it - Support for context swapping and call back function in theHTRequest object. This allows the application to distinguish between multiple ongoing requests. See more information in theUser's Guide.
- Bug fix inHTTCP.c HTGetHostName thanks to "dave (d.) mielke" <davem@bnr.ca>
Protocol Modules
Stream Modules
- We now have aMIME multipart parser stream which supports nested MIME multipart messages. This stream sets up a new MIME parser stream each time it finds a new body. Preamble and epilog messages are ignored by default but can be redirected to the specialDebug Stream output of the Request object.
- We have added a content counter stream and a buffer stream inHTConLen module. This can be used to count the number of bytes in a data object either to be sent to a remote server or as a check of a received body. Together with the Content Length counter stream there is also a buffer stream that can buffer up to a certain amount of dat before it goes transparent.
- We have replaced the internal format identifier
www/mime with the MIME conformingmessage/rfc822 format. This may affect the setup of stream converters that used the old format. - We have also added a newHTMIMERq module which is responsible for creatin MIME metainformation when sending requests. This is used, for example, by theHTTP protocol module and theNNTP protocol module
- For the first time, it isnot required to define dummy definitions of the external declared function in theHText Interface. It is now only referenced from theHTML module and thePlain Text Presentation module. This means that applications that do not use the HTML/HText interface no more have the modules linked into the final object code.
- TheSGML module is no longer included anywhere anymore except where necessary. The structured stream definition can be found inHTStruct module
- Make registration of callback function for unknown MIME headers in theMIME parser. The application can now more easily experiment with new headers. The registration process is described in the sectionHow to get Started Writing an App
- Added support for png (lossless graphics format) (patch from unknown?) into theGuess stream
- Bug fixed inHTML parser It couldn't handle more than 20 nested HTML tags which can happen for example in auto-generated HTML documents.
- HTLoadError taken out completely. Replaced by theerror manager. It was for (stupid) historic reasons put into the HTML parser.
Application Modules
- HTInteractive made a private flag toHTAlert.c. It can now be reached via two methods in the module.
- All functions in theAlert Module now has a request object as part of the calling parameters. The reason is that then the implementation of this module can call a registered call back function (as described above) so that the user message can be put into the right context.
- Mem leak fixed inHTLog module and added result of request to the log file. The log module is no longer called in the Library at all so if you do not use then it is not included in the application.
- RewrittenHTHistory module to perform a better history mechanism - the old version did not work properly. Some of the new features are
- Support for multiple history lists. You can use the context information in the request object to find the right list at any given time.
- The list now supports bothback andforward for navigation. The list is no more "back trace with deletion".
SeeUser's Guide for more information
- IntroducedHTProgress() notifications for the following operations
- DNS lookup
- connect to remote host (either passive or active)
- read data from network
- write data to network
- request finished
- waiting for free socket
On each of these operations, the library callsHTProgress() with a code so that the application can define what to do with it.
Generic Utilities
- Introduced HTChunkData() and HTChunkSize() as methods in theHTChunk module. No more need to look into the HTChunk object itself.
- Changed HTStat to HT_STAT and HTLStat to HT_LSTAT as they are macros
- The
HTSimplify() function in theHTParse module now follows theRFC 1808 Specification - Fixed bug inHTCanon() that got confused about <http://teller.datawave.net:80/test/../imx/weelogo.gif> thanks to Henry Minsky
- HTCanon() made private toHTParse module as it is called from HTSimplify() only
- All replaced with(wb|ab) if known binary output. This was a problem on Windows 3.1 platform as it inserted extraCRLF line terminators.
- Created HTNumToStr() inHTString Module to convert a number to a string using prefixes. This can be used in the progress notification to writeRead 1.6K etc.
Library 3.1, November 14 1995
Official release
Library 3.1pre3 Release Notes, November 13
This is a last test of the 3.1 release. The official 3.1 release willfollow in a few days. The purpose of this third pre-release is simply toavoid any obvious problems while we still have time. Very little will changein the final release! The big difference is that Windows NT is fullysupported!
New Features and Interfaces
- Changed "rs6000" to "AIX" and "decstation" to "ultrix" in BUILD script. The previous names were not obvious
- Have createdHTProt module which handles protocol module registration. It used to be inHTAccess module, but this module is now uniquely for user requests
- Changed the names of the following functions in theHTProt module
HTRegisterProtocol -> HTProtocol_add HTProtocolDispose -> HTProtocol_deleteAll HTProtocolBlocking -> HTProtocol_isBlocking
- Canonicalization now understands host names terminated with a ":", for example "www.w3.org:" is converted into "www.w3.org"
- HTEvnttd.c is removed from the source tree; it's no longer needed. Likewise, HTEvent.c is no longer needed; it has been superseded by HTEvntrg.c and HTEvntrg.html.
- Added support for REENTRANT versions of
getlogin_r gethostbyname_r gethostbyaddr_r ctime_r localtime_r gmtime_r asctime_r ctermid_r rand_r readdir_r
except inHTFTP module as it will be changed later. Some of the function cause problems on Solaris...
Bug Fixes
- Fixed bug in HTBind_getSuffix that caused garbage file suffixes
- Fixed memory leak in HTAnchor if a child has more than one destination
Library 3.1 Prerelease 2, November 1 1995
The code word for the 3.1 release is support for remote collaborate workwhere people can use HTTP and the Web as a remote authoring environment. Thereason for the slight delay is that this release has a new "Post Web" modelfor implementing PUT and POST, the documentation has been reorganized andrewritten, and some other important features have been incorporated. The PostWeb model is described in the new documentation, see the reference below.
In addition to the new set of features and functionality this release alsois the first example of source code distributed under the W3C conditions.This means that the code is available to consortium members only within amonth from the release date.
A lot of the work put into this release has been to update the API of theLibrary. This is mainly described in the new "User Guide", so please do readthis and remember that comments are welcome!
New Features and Interfaces
- The Post Web model is supported by the following methods to handle the HTRequest object
- HTRequest_removeDestination()
- HTRequest_linkDestination()
- HTRequest_unlinkDestination()
- HTRequest_removePostWeb()
- HTRequest_killPostWeb()
- HTFile module is completely rewritten as a state machine much like theHTTP module. It is now possible to have non-blocking, interruptible I/O and to PUT and POTS from a local file as well as from a remote HTTP server.
- HTCopyAnchor is rewritten to use the PostWeb
- The thread model is extended to include a HTThread_kill() function so that threads are terminated immediately upon request
- HTProxy module is introduced. This module substitutes the environment variables for defining gateways and proxies. It can now be done dynamically at run time. For backwards compatibility HTProxy_getEnvVar() can be used to read the most used environment variables.
- Taken socket read/write functionality out of HTFormat and createdHTSocket module which handles all the basic network access
- SpawnedHTMethod module from HTAccess module
- Better handling of WAIS src files and use of gateway information
- Upgraded the WAIS to handle version 0.5 of the freeWAIS library.
- Better handling of media types from WAIS responses (guessing)
- All HTTP headers can now be transmitted and received and they can all be enabled/disabled using a bitmask.
- New functions to support accept encoding, language, and charset
- Guess stream now handles macbinhex format
- No more circular references in any of the Library include files
- Introduced REMOVE and RMDIR as macros instead of direct system calls
- Removed HTRequest_clear() - it's not safe to reuse a request object
- HTStrip() is now placed in the HTString module
- introducing the method used in the link object in the anchor
- HTTP modified to support PostWeb
Bug Fixes
- Cache is now avoided if in secure mode (no access to local file system)
- Bug fix to allow simultaneous read and write on the same socket
- Stream stack now dumps to local file if no conversion can be made
- Bug fix that caused core dumps for HTTP 0.9 servers
- Bug fixed in stream stack if system() call is not present. This release has a new model called "Post Web" for handling put and post from a source to a multiple number of destinations. Furthermore
Library 3.1 Prerelease 1, May 20 1995
A lot of the work put into this release has been to update the API of theLibrary. This is mainly described in the newUser Guide,so please do read this and remember that comments are welcome!
New Features and Interfaces
- Windows NT Support (and possibly Windows 3.1 with Win32S) thanks to Charlie Brooks, <cbrooks@osf.org>
- A lot easier handling of headers in the HTTP module including support for extra headers
- ImprovedHTTP/MIME parser which recognizes 99% of the HTTP headers The rest will be ready in the next release! This includes support for "charset" and "level" parameter
- Support for PUT and POST. This is not yet fully implemented but it is possible to experiment with it
- Big enhancement of the anchor module with support for all HTTP/1.0 headers, garbage collection etc.
- The Cache manager is made more object oriented with a broader set of methods. The garbage collector is not the best
- HTBind module created for better bindings to file system with new hash function for improved speed and more functionality than before
- Created HTDateTimeStr() and HTMessageID() inHTString
- Separated HTStructured into its own stream definition module (HTStruct.h)
- Introduced STREAM_TRACE and BIND_TRACE as new debug flag
- Original reason messages are now passed back as a parameter by the error handler when talking to a remote HTTP server
- Introduction of error_format in the request object. This can be used to get debug information out of the Library
- Better handling of media types in FTP and Gopher including recognition of UU encoded files
Bug Fixes
- Eventloop responds now faster on events as it more often does a select
- HTTP version strings are now string and not floats
- Many platform dependent macros introduced and a lot of cleanup
CERN terminatedits direct engagement in the World Wide Web with the release of Libraryversion 3.0. The code is now developed and maintained byW3C.
Library 3.0, Mar 21 1995
Many of the modifications and new features are mentioned under thepre-releases.
- Changed allfloat todouble in order get it consistent with the working floating type in C
- Fixed problems with memory in HTML.c
- Introduced definition of
errno constants for WIN32, as WinSock doesn't define them using BSD notation
Library 3.0 Prerelease 3, Mar 10 1995
New or Changed Features
- All library include files which contains public information for applications are now contained in the single include fileWWWLib.h which is the only one necessaryPLEASE DON'T USE ANYTHING ELSE!!!
- Changed TRACE messages so that the target is the macro TDEST and not stderr. This means that on platforms that don't support stderr, TRACE messages can be redirected to a local file.
- Due to the PC Port some modules (definition and declaration files) have changed names so that the max length is 8 characters:
- Move EnableFrom toHTAccess module. This variable determines whether the HTTP headerFrom: should be generated. The default value isoff
- Sockets are no longer assumed to be small, non-negative integers, but uses macros. This should ensure portability to Windows NT.
- Introduced socerrno and errno so that WinSock can use its own definition whereas `local' errno can still use the well-known version.
- Introduced
error_stream as field a HTRequest object. All information contained in HTTP responses which don't naturally contain a body entity, for example redirection codes (3xx) and client error codes (4xx) will be put down this stream so that it can be put into a debug window. - HTNewsHost is now a local variable in theHTNews module. Use HTGetNewsHost and HTSetNewsHost to set and get the current value. The news module will be rewritten in the near future as it has many problems.
- TheHTTP module understands all HTTP/1.0 return codes and is more solid
- Many portability problems has been solved and optimized. Most system dependent things are now put intotcp module
- Interface to CSO name server made nicer - generates correct HTML
Bug Fixes
- file:// no more tries ftp:// if host=localhost
- Improved proxy support and fixed bug when reloading a document from a proxy
- Bug fixed in HTGetHostName() which didn't include a dot <.>
- Bug fixed if UserID/passwd was not correct and don't want to retry
- HTErrorAdd and HTErrorSysAdd no always return HT_ERROR
- Fixed bug in HTGetDomainName when no domain name is present at all
- Add output_flush to request object
- Uses IOCTL as a macro now - not fcntl
- and a lot of other stuff...
Library 3.0 Prerelease 2, Dec 2 1994
- Introduced memory cleanups from Eric Sink into
HTLibTerminate() - Now the client can provocate a call to
HTEventRequestTerminate() even when the request never enters the eventloop. This is necesary so that the client can cancel busy icons, spinning globes etc. - Introduced
EVENT_TERM as return code for the HTEventHandler function HTEventHandler() now has a double pointer so that the request pointer can be modified from the client- Fixed bug in
HTSearch() andHTLoadRelative() where wrong return code was returned (BOOL instead of int) - Introduced BlockingIO field in the request object to override the the mode registered in the protocol object. This can be used as an easy way to make blocking I/O
Library 3.0 Prerelease 1, Nov 26 1994
New and Changed Features
- Introduced the function HTLibInit() and HTLibTerminate() which MUST be called when the application starts up and terminates.
- Introduced the modules HTThread and HTEvent. HTEvent is the client interface when using multithreaded functionality and HTThread is the internal socket management
- All __STDC__ defines now concentrated to HTUtils.html where it is called _STANDARD_CODE_ so that _cplusplus also handles this
- `new' and `template' not used a names anymore (confuses C++)
- Removed from field in HTRequest object. This is now handled by the functions HTGetMailAddres and HTSetMailAddress and the flag HTEnableFrom in the HTTP module.
- Changed HTSetMailAddress so that a call with parameter equals NULL or "" clears the contents of the mail-address.
- The number of parameters to Streamstack function is now compatible with the arguments to a stream converter, so that we don't loose any information while putting up the stream stack.
- HTOutputSource variable is removed. You should use WWW_SOURCE in the request object
- HTGuess stream is a a converter compatible stream so that it actually can be setup as a converter
- The stream methods `abort' and `_free' now returns int instead of void. On success from these methods `_free' returns 0 and `abort' return EOF
- Taken HTEscape and HTUnescape and put them into the HTEscape module. The functionality is the same but now they can be used in utility programs without linking in the whole Library
Bug Fixes
- Removed bug in WAIS module which caused a lot of core dumps
- Removed bug in format classification from URL suffix in HTGoper when the file was plaintext
- localhost is now recognized again after canonicalization in
HTLoadFile() - WAIS SEARCH now produces proper HTML
- Max number of lines in WAIS decreased to 200 as 250 (previous) dumps core
- Bug fixed in
HTGetHostName() if we must use the getdomainname() function. - Added some support for SCO
- Handling of gopher items of type ERROR (3) changed so no more core dumps in server
2.17 Release on November 25 1994
New and Changed Features
- The host-cache is now extended so that it triesall IP-addresses before it fails the request. It always starts with the fastest IP-address.Different penalty is added to the connect times dependent of the errno returned from
connect(). - In addition to HTSimplify which canonicalizes the URL path, a new function now canonicalizes the host-part of the URL. This means that URLs like
http://info/ = http://www.w3.org:80/ = http://INFO.CeRn.CH/ = http://www.w3.org. = http://www.w3.org/
now all are treated identical. This is useful for all the caches based on URLs such like the Server document cache and the hostname cache
- TRACE is now differentiated into a bit flag so that TRACE messages can be turned on and off for individual groups of messages. This was necessary as the amount of verbose output was growing too much
- Redirection understands now `URI:' and `Location:'. Implemented after discussion on www-talk
- Changed 404 Error Message to `Access Forbidden'. The URL is no more included in the message as it is sensitive information
- FTP client now sends full email address of the user as the password for anonymous access instead of USER@. This allows access to some servers which don't accept the old format
- The data connection in a FTP session is now based on the return value sent by the PASV return code rather than the URL. It is not always the case that the data connection is on the same host as the control connection
- UserID and Passwd in FTP URLs can now contain special characters, like '@' etc.
- The Gopher listings are now slightly lighter and don't contain the `name' and `files' any more
- Support of Gopher info items. They are treated as normal messages. The gopher code for this is `i'
- WAIS module now guesses the stream format when TEXT is returned from the WAIS library as it might be HTML.
- The Protocol modules: FTP, WAIS, and Gopher now produce proper HTML with etc. in the beginning
- Added a function that returns the domain name taken from the same location as HTGetHostName(). The functionality of obtaining current host names, mail addresses etc. have improved, see HTTCP.html for more
- Introduced the flag HTInteractive in HTAccess.html to tell whether functions in HTAlert can prompt the User from within the Library or not. Default is YES.
- The common BUILD for the Line Mode Browser, the CERN Server and the W3C Sample Code Library now accepts a command line option:
BUILD linemode | daemon | library
to build a specific component. The default action is to build all three parts. BUILD is now also provided in a Bourne Shell version
Bug Fixes
- Fixed memory leak in HTWAIS Doc retrieval. However, the functionality or performance has not changes
- If no host is found in the URL then no attempt is made to connect to host 0.0.0.0 that is localhost. Some hosts do have an alias for this address
- Fixed free memory read in redirections. Put redirection counter into request object. Now no more than (default) 10 redirections are allowed
- Fixed bug in FTP module to handle really slow hosts in the select call. The select timed out without the right action taken.
- FTP module chopped off the first line of a Windows NT ftp server as it doesn't send a traditional first UNIX line. Fixed! Well, itdid look like UNIX, but no more than that :-(
- Problem in HTTeXGen. Some markups was spread over a new line, and LaTeX doesn't like that.
- Remove the
ACCESS_AUTH define as it is never used anymore (no more compilation without access authentication) - Fixed bug in the ISO Latin 1 translation table in HTML.c. This was a problem for estonian documents or other with many special characters
- Fixed bug in HTSimplify not skipping host names. HTSimplify is made faster and is now only called once (both from the server and the client). Before it was called 2-3 times.
- Bug found in FTP URLs containing UserID and Passwd fixed
- Bug fixed in name generation in client cache
- Removed bug in FTP and IP-rotation on multi-homed hosts. When FTP server is in PASV mode it sends back a port number on a specific host. In this case we can't use IP-address rotation.
- Bug with FTP IP-address network order fixed for PASV mode
- Gopher errors (code 3) are now just put as a string as they are notreal error
- Bug fixed in HTWriter.c function
flush() where a partial success in NETWRITE would produce a wrong output (repeated buffer)
2.16 Prerelease 2, November 1994
WAIS Client
The WAIS client has been improved and some bugs have been fixed:
- Bug in the parser of the search result from the WAIS module fixed
- Maximum number of lines presented from a search made a configuration variable. Default value is 100 (was 40)
- Introduced WAIS's own error messages as they are returned from the WAIS library
- The presentation of WAIS on the screen made nicer (well - I think it is!)
HTTCP Module
- Bug in the host cache fixed
Access Authorisation
- Premature free of memory fixed
- Missing initialization fixed
2.16 Prerelease 1, April 1994
New Features and Changed Interfaces
HTTP Client
HTTP module contains the code for the HTTPclient. The module is now reorganized and made more modular.
- Automatic Redirection
- Now supported by the HTTP Module. The name of the new URL is parsed to the client via the error_stack as a ERR_INFO message, seeHTError module. The maximum number of redirections is set by the variable HTMaxRedirections.
- Referer Field in HTTP request
- Clients are provided the possibility of sending aReferer Field in aHTTP Request. This is done by filling out the HTRequest->parentAnchor field.
- From field in HTTP Request
- Clients can now send the full email address of the current user in theHTTP From field. The feature is turned off by default as it might get a bit tricky through a Proxy.
- 204 Response
- Support of return code `204 No Response'
FTP Client
HTFTP module contains the code for the FTPclient. The FTP client has changed a lot in this release. It is now acomplete state machine where the actual action executed is a function of thecurrent state.
Gopher Client
TheGopher has been revised andimproved error handling has been implemented.
- Information Messages
- Some Gopher servers send back information messages in a line containing "error.host". This information is treated like login information from FTP servers so that it is represented as a message before or after the actual listing.
- Iconized Listings
- Listings now contain icons in the same way as the other listings.
- CSO Name Server
- The CSO Name Server client outputs in HTML and not only <PRE> as before.
- Content Type Recognition
- The Gopher module uses it's own content-type recognition inherited from HTTP when handling gopher text and gopher binary files. This means, that e.g. PostScript files get handled correctly.
Local File Access
The new version of HTFile module is a lot smaller as all Directory listingstuff has moved to HTDirBrw module. New error handling has beenimplemented.
Passive and Active Connection Establishment
Calls to connect() and accept() now go through the functions HTDoConnect()and HTDoAccept() respectively.
Cache of Host Names and Addresses
HTInetParse() that is called from within HTDoConnect now has an internalcache of the names and (possible multiple) IP-addresses of visited hosts.This minimizes the access to the file /etc/hosts and the Domain Name Server,even though aliases are not recognized in the cache.
The default cache size is 500 entries and a host stays as long as aconnect() succeeds. That is, if connection is refused for some reason, thehost is taken out of the cache.
The time to make a connection to a multihomed host is measured every timeand a mean access time is calculated so that HTDoConnect always takes thefastest IP-address.
Improved Functionality of DNS requests
The Library now provides functionality for obtaining the full mail addressof the user, full domain name of the host and also the possibility forsetting both values. This means that the user can use his official emailaddress, e.g. in the HTTP request.
Long directory listings for HTTP, FTP and files on the local file systemsupported. For the moment only a part of the functionality, e.g, sorting,which columns to show etc. is exploited.
Icon Management
Icons in directory listings are bound to MIME content-types and encoding.They can be found in theHTIcons module.The default set of icons is set up using HTStdIconInit() and new icons can beadded dynamicly using HTAddIcon().
File Descriptions in Directory Listings
File descriptions are supported for long HTTP directory listings. Thedefault thing is to peek the title of the HTML files.
Error and Information Message Management
A new error handling module is introduced inHTError. It uses the error_stack entry in theHTRequest object. It handles nested errormessages so that we can give a reason for the error, e.g.
Error in ... This error occurred because ... This is caused by ... etc.
It also makes it possible for the Library to pass information back to theclient so that the the Library doesn't act like a `black hole'. An example isHTTP redirection with status code `Moved 301'. Now the new URL is parsed backto the client via the error_stack so that the client can update the referencewhen possible.
The function that generates and outputs the error messages to the user isput into HTErrorMsg Module so that it can be overwritten by a smart client orserver.
Guessing the Content Type of a Stream
The HTGuess module reads a part a stream and determines the content typewith the highest probability from a statistical analysis.
Minor Stuff
- tmpnam()
- Because of problems on NeXT platforms the tmpnam() function is now replaced by HTFWriter_filename() in HTFWriter.c. The function has two modes: Give back a hash name or the last part of the URL (which normally is more readable).
- HTMLPutImg()
- New function to make it easier to put out an HTML <IMG> tag.
- HTParseInet()
- Added one more parameter to tell whether it is a multihomed host or not. (This is used in the host cache).
- HTInetStatus()
- Should no more be used directly but is called from HTErrorAdd so that the message goes all the way back to the user
- HTError
- This typedef is now obsolete and will be removed in future releases
- HTLoad()
- Added new parameter to HTLoad: BOOL keep_error_stack. If YES then the error_stack is not cleared. This is used in redirection etc.
- HTLoadError()
- Because of the newHTError module, this function in HTML.c is not needed anymore.
Bug Fixes
This is a list of fixed bugs from earlier versions.
- Memory faults in HTSimplify() in HTParse.c has been fixed
- README files in directory listings now know how to handle '<', '>' and '&' correctly. Though the file still has to be Ascii.
- tmpnam is no more used in the Library because of problems on NeXT platform. Instead a new function called HTFWriter_filename() in HTFWriter.c is written.
- HTInputSocket_getCharacter now returns a int and not a char so that EOF is no longer a member of the char set.
- HTMLGen_start_element() is only allowed to put extra '\n' in <PRE> mode if it is between parameters in a tag
- Changed type of <IMG> into SGML_EMPTY so that it doesn't expect end tag <\IMG>
- Nested <PRE> is no more a problem in HTMLGen_start_element.
- Removed all #elif as not all compilers on HPUX likes it.
- Changed HTChunk such that chunk->data is '\0' terminated at any time. This actually makes HTChunkTerminate less needed but be aware that HTChunk->size changes.
- Removed non-portable d_namlen field in HTMulti.
- Moved definition of NO_GROUPS to tch.html
- Moved definition of HT_MAX_PATH to tch.html
- Proxy server now closes connection in HTTP.c. This was only problem in non-forking servers (VMS).
- Definition of HT_NO_DATA moved to HTUtils.html where the other return codes are placed.
- Functions fromHTAlert Module that prompt the user don't get confused aboutctrl-D anymore.
27 March 94 2.16beta VMS version
25 March 94 - 2.15
General Upgrade
International
Bug Fixes
- Bug fixed in HTFile.c prevented .multi multiformat links from working under Solaris, maybe other SYSV.
- Bug fix in client HTTP: "Accept" line params preceded by ";" now as per spec.
- Bug fixed in HTBTree.c that crashed for some large directories.
15 December 2.14vms
17 November 2.14
- Contains port to VMS.
- Bug fix in HTML generation -- line wrapping code produced garbage. Affected servers working as gateways and also editors writing back HTML.
- Buf fix: static string returned by crypt() was free() 'd.
4 Nov 93 Version 2.13
- Bug fix: FTP text transfer don't end when 8 bit characters used. Still end on character -1. Thanks to Bjoern Stabell (bjoerns@staff.cs.uit.no)
- A single function HTPromptUsernameAndPassword() so that GUIs can have a single authentication dialog box.
- Extensive filename suffix recognition defaults.
11 Oct 93 Version 2.12
- Authroization in. See Ari's documentation. Everything is back-compatible, but there are large extenions to the rule file syntax, plus new ACL and protection setup files. Authorization is done by password in the clear now, with hooks for public key later.
- Some other bug fixes. Not all the reported ones.
8 Sept 93 Version 2.11
- Binary transfer problems tackled in HTTP. Yukky problem of existing illegal 0.9 server producing binary which looks like text is unsolved. No problems with HTTP 1.0 transfer.
- Streams: end_document method removed. "Abort" method added as requested at W5 -- use this when a pipe (stream stack) is broken by an error prevents execution etc of partially written files for example.
- New stream HTNetToText for converting Net ASCII to local C representation.
- Bug fix: Directories represented with anchors all with empty string (as opposed to no) names: many NAME="" in anchors.
- Bug fix: application/octet-stream replaces application/binary as per MIME.
- CSO Nameserver code to HTGopher added as Mosaic originally from ???. (AS)
- Bug fix: HTTPD would return an old-style (non-MIME) response when sending back a file in unrecognised format, evn if client was using HTTP 1.0.
Version 2.10 Not released due to WWWWW
- Bug fix: crashed with error message when doing a Gopher search.
- WAIS type "HTML" recognised as HTML. Other types treated as application/binary.
30 November 1993, version 2.09a
- Bug fix: A space was not allowed befoe the tagcloser (>) of an end tag. Now it is. Also (untested), empty close tags should be allowed a la "<h1>heading</>". Not recommended, but in.
- Bug fix: HTML nesting stack overflow check.
- Bug fix: Compilation under IBM MVS didn't work.
23 November 1993, version 2.09
At last this stupid library is aware of content-transfer-encoding. Whendefining file suffixes you must define not only the content-type (egapplication/postscript) but also the encoding (eg binary, or 7bit). The firsteffect of this is to get the proper mode selected for FTP transfers. Thismeans you can do a
www -source ftp:/xx.yy.edu/pub/junk/foo.tar.Z > junk.tar.Z
and it will work as expected.
On the client side, you can define the presentation method for any givenMIME-style 'content type". This is done in the rule file too.
2.08
- You can define file suffix conventions in the server and/or client rule files. This allows you to set up a server which for example, trateas .ai files as application/postscript, etc, or specifies that .ME is generally text.
- You can define how a new content type will be rendered in the rule file of a client.
15 November 93, version 2.07
- If you telnet to the www client (-h option): 1. it is more secure: No local file access. 2. you can use /etc/www-remote.url file to specify the url of the home page for telnet users.
- Library uses fopen() rather than open(), allowing file access on non-unix machines.
7 November 93, 2.06
- Check against local hostname in file access is now string insensitive.
- HTML parser: entities were not expanded at outer level.
- HTTP client sends client name and version. Requires HTAppName
- FTP client fix: Continuation lines which do not have - in are now handled properly as per the spec.
May 1993 version 2.05a
- Bug fix in directory reading of local files -- it didn't work! The stopped the daemon working on directories.
- Bug fix in DIR handling for browers: tabs work again in directory listsings.
22 April 1993 version 2.04
- WAIS handling code in library, no need to go through a gateway of you compile with the right options abd link with freeWAIS. First version of this, no bells or whistles.
- wwwsys.h systems specifics for SCO picked up from mosaic but directory handling not fixed yet ...
20 April 1993 version 2.03c:
- Use of identifier "this" removed to prevent conflicts with C++
- _AIX cpp defined picked up for AIX.
- In networking code, no assumption that \n is 10 on even on ASCII machines (for Mac/MPW).
- Server bug fix after Sebastian.Wilhelmi@isst.fhg.de -- exited with bad status even if all OK.
19 April 1993 version 2.03b
- Distribution bug fix: s/Specific/All/ on line 2 of WWW/All/Makefile.product
- SGML bug fix: treatment of entities was on when would be off and vice-cversa.
- Sun binaries linked with -Bstatic to make them transportable
- Bug fix: Sometimes, client would ignore first part of returned file.
17 Mar 93 Version 2.02-beta
- Bug fix: Falls back to old HTTP with servers which don't like the new HTTP.
- BUILD file for easy installation of library, httpd and www
15 Mar 93 Version 2.0 alpha:
Incompatible library release has cleaned up interfaces. Developers readthe .h files! Version 2 libraries must be compiled with version 2 productsand vice-versa. Version 2 clients will access (most) version 1 servers OK,version 2 servers will respond correctly to (all) version 1 clients.
- Bug fix: Gopher connections wasted socket numbers and eventually used them all up. (Thanks Marc Andreessen)
- Rule file used by clients as well as servers.
- MIME parser takes content-type field from MIME messages and invokes appropriate registerd presentation method for each type.
- Local and remote multiformat files.
- ***HTSearch and HTLoadRelative parameters changed! HTMainAnchor and HTMainText globals are no longer used by the library.
- HTAccess package now registers known protocols in list.
- HT{G,S}etNewsHost available from HTNews module.
- SGML parser speeded up
- New software intrerface introduced: HTStructuredClass. This should make use of the library easier with clients, and allow more code in common between clients and servers.
- Hooks for handling new formats with other applications
- General hooks for status messages, user query, progress monitoring, etc. (HTAlert module)
6 January 1993, Version1.1a
- Can revisit telnet nodes.
- Tn3270 access type accepted.
- FTP password for anonymous is now WWWuser@ withouyt a hostname, for software on ftp.uu.net etc.
- Bug fix in HTML.c: Would crash when a list was the first visible element in a text object.
- Added <PRE> tag as innew HTML spec.
- Added numeric character reference handling for future use.
December 1992, Version 1.0c
- Fixed bug in FTP handling (FTP file retrieve put control connection in bad state)
- Fixed bug in Gopher handling on non-ASCII platforms. Also, bug fix in Gopher search of index whose name contained characters (like blanks) escapes with %.
- Fixed bug in NEWS handling, failed on non-ASCII platforms.
November 1992 Version1.0b
- Fix some bugs in Make system.
- Memory bug fixed: On failure to connect to HTTP server, it would free() an uninitialized pointer!
- Some trace messages were output to stdout instead of stderr
- Allow "ftp:" prefix on URL . Effect is currently equivalent to that of the "file:" prefix.
- Local file access not allowed in secure mode. (telnet access was never allowed in this mode). Secure mode is used for telnet server and mail robot.
November 1992 version 1.0
- Library libwww.a made independently of browsers to save time and space and to force good modularity
Jos� Kahan,
@(#) $Id: History.html,v 1.41 2002/06/07 12:42:34 kahan Exp $
[8]ページ先頭