Version 1.0.2-1.3.6 (released 19-Oct-2000) * ./configure and build updates: - allow building from outside the source directory (Fred Sanchez) - proactively detect broken APXS installations (idea from PHP) * updated INSTALL doc to document broken APXS installs and with more information about the Last-Modified header problem * minor changes to dav_dyn to make it easier for third parties to add backend modules * the DAV directive now takes a provider name (e.g. DAV svn). DAV On enables the default provider. * DAV Off is no longer allowed *under* a DAV On directive -- once a parent location/dir defines a DAV provider, then that provider handles everything under it. [ this is a possible backwards-compat issue for httpd.conf ] * add some slack time for expiring locks: we report an expriation of N seconds, but the timeout doesn't occur until N + 120 seconds. this helps out Office which sends its Refresh too close to the expiration time, and can then miss due to latency * fix handling of the If-Unmodified-Since header by updating the request_rec's mtime field. (Joe Orton) * partial fix for filesystems that can have file sizes more than 4G. small files are reported properly; large files could still be reported incorrectly. (Annette DeSchon) * maintain the executable property across COPY and MOVE (Joe Orton) * update opaquelock functionality and Expat parsing for proper operation in EBCDIC environments (Jean-Frederic Clere) * fix leak of subrequests in property handling (Joe Orton) * put real status text into our Multistatus responses * fix for operation in an IPv6-enabled Apache (Rolf Haberrecker) * if a lock fails due to authentication problems, return a 403 (Forbidden) rather than 401 (Unauthorized). this fixes an HTTP conformance issue where we returned 401 but no WWW-Authenticate response header. (Joe Orton) * return 413 (Request Entity Too Large) when the XML request body exceeds the limit, rather than 400 (Bad Request). (Joe Orton) * fix byterange handling for custom repositories (Joe Orton) * fix lock inheritance on the destination of a COPY/MOVE (Joe Orton) Version 1.0.1-1.3.6 (released 28-Jun-2000) * fix binary file corruption on Win32 (from Barry Pederson) * small tweak in dav_fs_repos.c to aid AIX compilation (via xlc) Version 1.0.0-1.3.6 (released 13-Jun-2000) * new directives: - DAVDepthInfinity (from Joe Orton) to control whether PROPFIND with a Depth: infinity is allowed. - LimitXMLRequestBody to control the size of XML request bodies (for PROPFIND, PROPPATCH, LOCK) * implement Content-Range support for the GET and PUT methods * locks record the authenticated principal (from Keith Wannamaker) * fix errors in dav_dyn which prevented proper operation when mod_dav is statically linked. * fix another tweaky error related to startup initialization which ended up causing MOVE/COPY to non-DAV directories to act funny * filenames are now case-preserved on a PUT (from Keith Wannamaker) * fix bug with timing-out indirect locks * Win32 no longer defines the "executable" property * fix up error handling in MOVE/COPY/DELETE * fixes for "insufficient storage" errors (from Joe Orton) * fix UNLOCK for locknull resources * disable writing to DAV:getcontenttype and DAV:getcontentlanguage (to be fixed in a future version) * update prop handling to deal with multiple liveprop providers * delay creation of the propdb until a dead prop is truly stored. this prevents the creation of a propdb when the client is merely setting the "executable" flag. * fix crasher when validating the root of a DAV tree (from Joe) * properly deal with HEAD requests when we have a custom repository * internal cleanups: lint, error propagation, depend on dav_error logging rather than direct logging Version 0.9.17-1.3.6 (released 21-Apr-2000) * fix the search for Expat in the Debian builds * ton of internal work to truly support liveprop providers - more (dynamic) module support - revised liveprop provider API - dav_props has cleaner logic for live vs dead props, and core vs provider-specified props - hook contexts and xml_elems now have an ns_map for liveprop use (xml_elem lost 'annotation' and gained a couple others, too) - mod_dav records a list of liveprop providers, rather than one - liveprop providers participate in PROPPATCH via patch_* hooks - DAV: header now returns URIs for sets of live properties (dav_fs_repos returns ) * add the ("http://apache.org/dav/props/", "executable") property to control the execute permission flag on the files in the repository * flesh out some of the module support, primarily for liveprop provider support * dav_insert_ns() is broken out from dav_xmlparse.c for reuse * lock providers: dav_get_lock_database() is now dav_get_lockdb_path() * URIs for a dav_resource are now directly accessible; the get_uri hook function is toast * use the correct URI in error responses * repository API: getetag was moved here from the liveprop API; added the dav_stream concept and associated APIs; removed the old APIs dealing with FILE*; added set_headers function * adding some missing lockdb closes in some error cases * better error responses by setting "verbose-error-to" * locknull resources no longer define many live properties * POST no longer validates against the parent resource * added the repository hooks pointer into dav_resource. use this value to ensure that a MOVE/COPY operates within the same repository. * COPY of Depth:0 now works correctly (slight repository API change) * fix PROPFIND on the DAV:lockdiscovery property when no locks exist * better error reporting in If: header processing * fix If: header processing to look for submitted locktokens anywhere in the header, not just on matching state_lists * normalize the URIs used in If: header processing. mod_dav is no longer sensitive to the presence/absence of trailing slashes * more regression tests in util/regress Version 0.9.16-1.3.6 (released 07-Mar-2000) * updated INSTALL document with sections on handling problems * some work on the internal APIs to help out people building custom modules/providers * fixed problem with a PUT into a LOCKed collection * better error responses for edge cases on a PUT (Joe Orton) * fixed encoding of all values in responses (both XML and URL encoding as appropriate) * add DAVParam directive for future use by custom modules/providers * unused/undeveloped DASL query grammar stuff removed Version 0.9.15-1.3.6 (released 11-Feb-2000) * look for Expat in the right locations on a Debian system * fix trailing-slash handling problems with the Request-URI and If: headers' tagged-list * improve handling of non-existent resources * some basic versioning support from John Vasta * property values are properly XML-quoted * DAV:owner (in a lock) now works properly * make some standard properties read-only * fixed a hang in the Win32 version due to double-opens of the lock database (from Keith Wannamaker) * fixed a case where the lock database wasn't closed (Joe Orton) * add interoperability code for Netscape's Roaming Profiles (untested; based on example patch from Niels Baggesen) * fixed bug: DELETE requires locktoken for the parent resource * update copyright lines to 2000. update snail mail address. Version 0.9.14-1.3.6 (released 17-Dec-1999) * make the configure process a bit more robust for --with-apache * major fixes to locking behavior: - locknull resources behave better - refreshing works better - PUT, MKCOL, MOVE, COPY inherit locks appropriately - some fixes to UNLOCK behavior - lots of work on the validation: the If: header is now processed properly, and LOCK will look for conflicting locks - tagged URIs in an If: header now match properly * more changes to locking provider API * bug #37: locknull files were accidentally labelled as collections * PROPPATCH now has full rollback behavior in case of an error * PROPPATCH/remove no longer errors if a property is not present * DAVMinTimeout is now allowed at the top level, per the documentation * some fixes to the .dsp file: link against Apache's Expat, use MT DLLs * add new utility for managing locks (from client side): lock.py Version 0.9.13-1.3.6 (released 19-Nov-1999) * revise internal error handling: cleaner, simpler, more info, etc. For more detail, review the CVS logs for "dav_error" changes. * using the above changes, put more info into the error log and in some cases, return more info in the HTTP response. * alter internal provider hooks for: locks, repository, db. * internal conversion to new dav_lock data structure (not yet complete) * fixed some problems with inheriting locks upon a PUT or MKCOL * repository can signal that it can handle a GET request (John Vasta) * fix a crasher in saving locks with no owner * internal move/copy code cleaned up (John Vasta) * fix DAV:getcontenttype (it always returned the content type for the Request-URI rather than the "current" resource) * fix entity-tag code: DAV:getetag now returns quoted entity tags (per the RFC, an entity-tag is a quoted-string) * fix checks for If: header processing. in some cases, locked resources were allowed to be changed; in others, changes were erroneously prevented. * the lock owner is now saved, but problems still exist with its handling of XML namespaces and stuff. * in some cases, a lockdiscovery provided an absoluteURI; it is now a relativeURI (like the other cases where we return URIs) * fixed Infinite timeouts on locks (John Vasta) * some changes to the lockview utility Version 0.9.12-1.3.6 (released 15-Oct-1999) * Win32 make changes (Keith Wannamaker) * lock fixes (Keith Wannamaker) * tweaks to play nice with C++ * remove "getprop" from the vsn hooks (John Vasta) * fix HEAD requests for repositories (John Vasta) * fix problem when a lock provider is not present (John Vasta) * fix CC value in Makefile.in (Fran Taylor) Version 0.9.11-1.3.6 (released 12-Sep-1999) * fix LIBS problem in libdav.module.in * wrap mod_dav.h with extern "C" * fix bug: r->path_info can sometimes be NULL * fix problem with GET being too aggressive (mod_dav should be more care in deciding to handle these) * implement DAV:getcontenttype and DAV:getcontentlanguage. these are also r/w propertie. Currently, they are not returned as headers during a GET. * revise liveprop handling * revise lockdb structure into public/private portion * perform std If-* checks during If: and lock validation (Joe Orton) * limit scope of the DAV directives (Keith Wannamaker) Version 0.9.10-1.3.6 (released 04-Sep-1999) * Added internal APIs for replaceable subsystems. (John Vasta) * Added DAVMinTimeout directive (Keith Wannamaker) * ./configure improvements and fixes * change building of files in APXS case -- compile "outside" of the Apache build system and only use APXS to link. This eliminates the sdbm_combined.[ch] thing * fix building of libdav.so when inside the Apache tree (add the dav_shared_stub.c thing) * fix problem in remove_locknull_member() to prevent spamming the log with errors about not being able to locate the .locknull file. * use lstat() within the directory walking code * various locking code fixes (Keith, John, Greg) * removed the experimental PHP integration. This will be done using the subsystem hook approach instead. * improve some errors responses. * fix the Lock-Token header to meet RFC 2518 conformance (Keith/John). * Visual Studio files upgraded to VC6 (Keith Wannamaker) Version 0.9.9-1.3.6 (released 15-Aug-1999) * Class 2 DAV functionality (locking) (Keith Wannamaker) * switch to the autoconf utilities for configuration (Rasmus Lerdorf, Greg) * bump propdb version to 4: old prop databases could have invalid property values in them (the "no namespace" bug noted below) * add util/fixvers tool to force an update of propdbs to V4 * initial rollback support for PROPPATCH * fix the PROPPATCH responses when an error occurs * fix an IE5 problem where the Destination: header has an unqualified hostname (Keith Wannamaker) * fix an XML parsing bug: xmlns="" did not reset the default namespace to be "no namespace" * fix AIX build (via autoconf magic) (Rasmus Lerdorf) * add MS-Author-Via header to OPTIONS response * refine the OPTIONS response (Keith Wannamaker, Greg) * use Apache 1.3.8's copy of expat * fix sdbm_combined generation (Peter Windle) * fix PUT handling when an error occurs (Keith Wannamaker) * initial sketch of dynamic extension support * add support for directly opening *DBM files (rather than requiring them to be in the state directory) (Keith Wannamaker) * DAV:getetag property support (Keith Wannamaker) * If: header processing (Keith Wannamaker) * enable Win32 support (Keith Wannamaker, John Vasta) Version 0.9.8-1.3.6 (released 06-Apr-1999) * bump propdb version to 3: old propdb databases could have invalid property values in them. * fix bad bug in property value namespace handling. The child elements of a value were not being remapped from the input namespace indices to the propdb indices. * some refinements in the MOVE/COPY validation code * XML processing fixes: - attributes do not use the default namespace. if they do not have a prefix, then they have "no namespace" - never generate "our" XML using the default namespace. the default namespace must be reserved for elements that reside in the "no namespace" space (it is illegal to use a prefix to refer to the "no namespace" concept) Net result: we use xmlns:D="DAV:" now - revise code to NOT place an empty URI int the namespace table to mean "no namespace". instead, it must be handled with a special constant. we already had this: DAV_NS_XML was renamed to DAV_NS_NONE. it means "do not prepend a namespace prefix" - some simplifications of the parsing code (dav_find_prefix and the stuff related to DAV_NS_NONE) - looks like properties named xml...:name would have been generated improperly in a PROPFIND result (a prefix would have been added). now fixed. * misc comment fixes/updates * fix processing of r->allowed (from Ken Coar) * conform to Apache-standard formatting * check for leading "xml" in NS prefixes is now case-insignificant Version 0.9.7-1.3.4 (released 23-Feb-1999) * MOVE/COPY Destination now defaults the port number * MOVE/COPY will now authorize the Destination * improve error handling for dav_delete_propset and dav_copymove_propset: return dav_response structures rather than directly logging an error. similarly, change the return value for dav_copymove_file. added save_errno to dav_response for support. * fix cross-device MOVEs * added some initial work for the SEARCH method from Matthew Parry: some new configuration directives plus empty method handler. * small fix for HP/UX -- it does not have run-time aggregate struct initialization. * shift most STATE directory/file handling under the propdb hooks; add general state file handling function: dav_copymove_state() * add storage of xml:lang values (and other xml:lang handling) * update propdb internal version to V2: language values added * add SDBM to the distribution. updated Makefile.tmpl and Makefile.apxs files. * encapsulate propdb access under a hook (vtable) design * move GDBM usage into dav_dbm.c covered by the hooks * add SDBM usage into dav_dbm.c * removed unnecessary RULE_HIDE from libdav.module Version 0.9.6-1.3.4 (released 31-Jan-1999) * switch to new Apache-style license (see LICENSE.html) * remove 1.3.3 compatibility; in other words, require 1.3.4 * small tweaks to insert a couple newlines into XML response text * fix small bug where we erroneously trapped POST requests * minor nits in the header comments * update copyrights to include 1999 Version 0.9.5-1.3.3 (released 13-Dec-1998) * more tweaks to the INSTALL file * update Makefile.apxs for more flexibility * change mod_dav.[ch] to allow mod_dav to work with Apache 1.3.4-dev * update dav_props for versioning * initial pass (not yet enabled) at storing xml:lang with properties * refine dav_open_propdb(), dav_propdb_error() error handling * ignore namespace prefixes beginning with "xml" (reserved for XML). These are stored in the propdb unchanged (e.g. they are passed thru) * internal propdb refinements w.r.t unknown keys in the db (future-proof) * move XML utilities from dav_xmlparse.c to dav_util.c. add new dav_empty_elem() function. * fix small bug in XML to text translation w.r.t size computation of attributes. * add xml:lang processing (but not storage yet) * default namespaces are properly handled now -- it no longer assumes that an empty prefix at the top-level means DAV: * "no namespace" is understood and handled properly. the default namespace now implies "no namespace" rather than DAV: Version 0.9.4-1.3.3 (released 07-Dec-1998) * fixed slash handling in COPY, MOVE, and MKCOL * internal work on namespace handling (preparations to be able to handle xml:lang and other "xml" prefixes) * internal work to add hooks for external processing (from Stig Bakken) * updates to INSTALL Version 0.9.3-1.3.3 (released 02-Dec-1998) * setting or deleting a property now returns more complex errors, but there is still some "flowing" that must happen. * looking up a URI for a COPY/MOVE returns more complex errors: - 502 (Bad Gateway) is now returned when appropriate * fixed a bunch of error responses to compensate for Apache 1.3.3's new error response mechanism (it is harder for us to simply override). There is now a dav_error_response() function to return an error message similar to Apache's, but with our own custom response body. * The following response status codes now have a proper body: - 201 (Created) - 403 (Forbidden) - 409 (Conflict) - 412 (Precondition Failed) * cleaned up some actual error message text. * fixed some return values from the handler (we needed to return DONE more often). * added additional COPY/MOVE check for the case where the Destination contains the Source (only had the reverse check in before). * fixed stupid bug in Overwrite: header handling * fixed some response handling of DAV: properties (sometimes the "good" values would not be returned) * removed the silly newline in the response Version 0.9.2-1.3.3 (released 16-Nov-1998) * fixed URI handling for directories; a double slash would occur when the Request-URI as terminated in a slash (which is the "proper" format for a collection/directory request anyhow!). * fixed the broken PROPFIND response where: a property was not found, and the propdb was not present or the property's namespace was not present within the propdb. * add character set encoding info to responses * add Makefile.apxs to distribution * fixed crasher with DAV:resourcetype request Version 0.9.1-1.3.3 (released 06-Nov-1998) * fixed: return live props even when no dead props exist * fixed: GET processing within DAV trees (don't handle GETs at all) * add INSTALL, mod_dav.module, and expanded README (Rasmus Lerdorf) * register the module/version with Apache (Rasmus Lerdorf) * update to Apache 1.3.3 Version 0.9.0-1.3.2 (released 05-Nov-1998) * Initial release