1Changes in release 0.29.6:
2* Don't abort SSL handshake with GnuTLS if a client cert is requested
3  but none is configured/available (thanks to Patrick Ohly)
4* Fix GnuTLS build with Nettle (Arfrever Frehtes Taifersar Arahesis)
5* Win32: Fix handling of SSPI challenges (Ivan Zhakov)
6* Fix the method string passed to create_request hooks to have the same
7  lifetime as the request object (Patrick Ohly)
8* Docs updates.
9
10Changes in release 0.29.5:
11* Fix GnuTLS handshakes failures with 'TLS warning alert' (Bryan Cain)
12* Further fix for SSPI support on Win32 (Danil Shopyrin)
13
14Changes in release 0.29.4:
15* Fix SNI support (Tobias Gruetzmacher)
16* Fix possible Solaris linker errors if building static library
17* Win32: Fix Kerberos authentication support with SSPI (Danil Shopyrin)
18* Fix error handling when pulling a request body from an file
19  (thanks to Lou Montulli)
20* Fix ne_request_dispatch() return value for SOCKS proxy failure cases
21* Tighten SSL cert ID checks to deny a wildcard match against an IP address
22
23Changes in release 0.29.3:
24* Change ne_sock_close() to no longer wait for SSL closure alert:
25 - fixes possible hang with IIS servers when closing SSL connection
26 - this reverts the behaviour with OpenSSL to match 0.28.x, and
27   changes the behaviour with GnuTLS to match that with OpenSSL
28* Fix memory leak with GnuTLS
29* API clarification in ne_sock_close():
30 - SSL closure handling now documented
31 - return value semantics fixed to describe the implementation
32
33Changes in release 0.29.2:
34* Fix spurious 'certificate verify failed' errors with OpenSSL (Tom C)
35* Fix unnecessary re-authentication with SSPI (Danil Shopyrin)
36
37Changes in release 0.29.1:
38* Fixes for (Unix) NTLM implementation:
39 - fix handling of session timeout (Kai Sommerfeld)
40 - fix possible crash (basic@mozdev.org)
41* Build fixes for Win32:
42  - fix use of socklen_t with recent SDKs (Stefan Kung)
43  - fix USE_GETADDRINFO on Win2K (Kai Sommerfeld)
44* Fix build with versions of GnuTLS older than 2.8.0.
45
46Changes in release 0.29.0:
47* Interface changes:
48 - none, API and ABI backwards-compatible with 0.28.x and 0.27.x
49* New interfaces and features:
50 - added NTLM auth support for Unix builds (Kai Sommerfeld, Daniel Stenberg)
51 - ne_auth.h: added NE_AUTH_GSSAPI and NE_AUTH_NTLM auth protocol codes
52 - added ne_acl3744.h, updated WebDAV ACL support (Henrik Holst)
53 - added built-in SOCKS v4/v4a/v5 support: ne_socket.h:ne_sock_proxy(),       
54   and ne_session.h:ne_session_socks_proxy()
55 - added support for system-default proxies: ne_session_system_proxy(),
56   implemented using libproxy where available
57 - ne_session.h: added NE_SESSFLAG_EXPECT100 session flag, SSL verification
58   failure bits extended by NE_SSL_BADCHAIN and NE_SSL_REVOKED, better 
59   handling of failures within the cert chain (thanks to Ludwig Nussel)
60 - ne_utils.h: added feature code NE_FEATURE_SYSPROXY
61 - ne_socket.h: ne_sock_writev() (Julien Reichel), ne_sock_set_error(),
62   ne_iaddr_raw(), ne_iaddr_parse()
63 - ne_string.h: ne_buffer_qappend(), ne_strnqdup()
64* Deprecated interfaces:
65 - ne_acl.h is obsoleted by ne_acl3744.h (but is still present)
66 - obsolete feature "NE_FEATURE_SOCKS" now never marked present
67* Other changes:
68 - fix handling of "stale" flag in RFC2069-style Digest auth challenge
69 - ne_free() implemented as a function on Win32 (thanks to Helge Hess)
70 - symbol versioning used for new symbols, where supported
71 - ensure SSL connections are closed cleanly with OpenSSL
72 - fix build with OpenSSL 1.0 beta
73 - updated Polish (pl) translation (Arfrever Frehtes Taifersar Arahesis)
74
75Changes in release 0.28.6:
76* SECURITY (CVE-2009-2473): Fix "billion laughs" attack against expat;
77  could allow a Denial of Service attack by a malicious server.
78* SECURITY (CVE-2009-2474): Fix handling of an embedded NUL byte in
79  a certificate subject name with OpenSSL; could allow an undetected
80  MITM attack against an SSL server if a trusted CA issues such a cert.
81
82Changes in release 0.28.5:
83* Enable support for X.509v1 CA certificates in GnuTLS.
84* Fix handling of EINTR in connect() calls.
85* Fix use of builds with SOCK_CLOEXEC support on older Linux kernels.
86
87Changes in release 0.28.4:
88* Fix ne_forget_auth (Kai Sommerfeld)
89* GnuTLS support fixes:
90 - fix handling of PKCS#12 client certs with multiple certs or keys
91 - fix crash with OpenPGP certificate
92 - use pkg-config data in configure, in preference to libgnutls-config
93* Add PKCS#11 support for OpenSSL builds (where pakchois is available)
94* Fix small memory leak in PKCS#11 code.
95* Fix build on Haiku (scott mc)
96
97Changes in release 0.28.3:
98* SECURITY (CVE-2008-3746): Fix potential NULL pointer dereference in
99  Digest domain parameter support; could allow a DoS by a malicious server
100* Fix parsing of *-Authenticate response header with LWS after quoted value
101* Fix ne_set_progress(, NULL, ) to match pre-0.27 behaviour (and not crash)
102* Fix to disable Nagle on Win32 with newer toolchain (thanks to Stefan K�ng)
103* Fix build on Netware (Guenter Knauf)
104* Document existing ne_uri_parse() API postcondition and ne_uri_resolve()
105  pre/postconditions regarding the ->path field in ne_uri structures 
106* Mark ne_{,buffer_}concat with sentinel attribute for GCC >= 4.
107* Distinguish the error message for an SSL handshake which fails after a 
108 client cert was requested.
109* Compile with PIC flags by default even for static library builds
110
111Changes in release 0.28.2:
112* Support "Proxy-Connection: Keep-Alive" for compatibility with HTTP/1.0
113 proxies which require persistent connections for NTLM authentication
114* Fix an fd leak in ne_ssl_{,cli}cert_read (GnuTLS only)
115* Enable fast initialization in GnuTLS.
116
117Changes in release 0.28.1:
118* Fix Win32 build
119* Fix build on SCO OpenServer 5.0.x (thanks to Nico Kadel-Garcia)
120* Fix handling of Digest domain parameter values without a trailing slash
121* Fix build against apr-util's bundled libexpat.la in Subversion
122* Add --without-pakchois to configure (Arfrever Frehtes Taifersar Arahesis)
123* zh message catalog renamed to zh_CN, translation updated (Dongsheng Song)
124
125Changes in release 0.28.0:
126* Interface changes:
127 - none, API and ABI backwards-compatible with 0.27.x
128* New interfaces:
129 - ne_pkcs11.h: added basic PKCS#11 support (requires GnuTLS and pakchois)
130 - ne_auth.h: added NE_AUTH_ALL and NE_AUTH_DEFAULT constants
131 - ne_socket.h: added ne_sock_peer(), ne_sock_prebind(), ne_sock_cipher()
132 - ne_session.h: NE_SESSFLAG_TLSSNI flag added; TLS SNI support is enabled
133   by default, where supported; ne_set_localaddr() added
134 - ne_request.h: added close_conn hooks (Robert J. van der Boon)
135 - ne_basic.h: added ne_options2()
136* Other changes:
137 - add Polish (pl) translation (Arfrever Frehtes Taifersar Arahesis)
138 - add support for the 'domain' parameter in Digest authentication
139 - fix fd leak in ne_sock_connect() error path (Andrew Teirney)
140 - the FD_CLOEXEC flag is set on socket fds
141 - fix timezone handling in ne_dates for more platforms (Alessandro Vesely)
142 - fix ne_simple_propfind() to print XML namespaces in flat property values
143 - fix ne_get_range() for unspecified end-range case (Henrik Holst)
144 - fix ne_strclean() to be locale-independent and avoid possible Win32 crash
145 - fix ne_get_error() to not "clean" localized error strings
146 - fix ne_ssl_clicert_read() to fail for client certs missing cert or key
147 - Win32: fix build with VS 2008 (Stefan Kueng)
148 - Win32: fix neon.mak to not double-quote $(MAKE) (Henrik Holst)
149 - improve strength of Digest cnonces in GnuTLS builds
150
151Changes in release 0.27.2:
152* Fix crash in GSSAPI Negotiate response header verification (regression
153  since 0.26.x)
154
155Changes in release 0.27.1:
156* Fix regression in response progress counter for notifier/progress callbacks
157* Fix interface description for ne_set_notifier() callback; sr.total
158  is set to -1 not 0 for an indeterminate response length
159
160Changes in release 0.27.0:
161* New interfaces:
162 - ne_session.h: ne_fill_proxy_uri() retrieves configured proxy,
163   ne_hook_post_headers() adds a hook after response headers are read,
164   ne_set_connect_timeout() sets session connection timeout,
165   NE_SESSFLAG_RFC4918, NE_SESSFLAG_CONNAUTH flags added
166 - ne_socket.h: ne_sock_connect_timeout() sets connection timeout,
167   ne_iaddr_reverse() performs reverse DNS lookup
168 - ne_string.h: ne_buffer_snprintf() prints to a buffer object
169 - ne_xml.h: ne_xml_resolve_nspace() resolves namespace prefixes
170* Interface changes:
171 - ne_set_notifier() replaces ne_set_status(); finer-grained and type-safe
172   connection status information now provided; obsoletes ne_set_progress()
173 - ne_xml_dispatch_request() now only invokes the XML parser for 
174   response entities with an XML content-type, following RFC 3023 rules
175 - ne_acl_set() now takes a "const" entries array
176 - LFS compatibility functions *64 removed: all functions taking an
177   off_t now take an ne_off_t which is off64_t for LFS builds
178* GnuTLS support now mostly feature-complete with OpenSSL support:
179 - greatly improved SSL distinguished name handling with GnuTLS >= 1.7.8
180* Other changes:
181 - descriptive error messages for authentication failures
182 - SSPI support uses canonical DNS server name (Yves Martin)
183 - fixes for handling of "stale" parameter in Digest authentication
184 - added support for URIs in SSL server certificate subjectAltName field
185 - fix compiler warnings with expat 2.x
186 - fix handling of "Transfer-Encoding: identity" responses from privoxy
187
188Changes in release 0.26.4:
189* Fix Negotiate Authentication-Info response header verification with GSSAPI
190* Fix multiple handlers with ne_add_{server,proxy}_auth (Werner Baumann)
191* Fix SSPI build with some versions of MinGW (Gisle Vanem)
192* Fix for SSPI segfault in response header verification (Mike DiCuccio)
193* Fix error strings for CONNECT SSL proxy tunnel request failure
194* Fix install-nls for VPATH builds (Hans Meine)
195* Fix use of unencrypted client certs with GnuTLS
196* Fix ne_lock* If: header insertion to use CRLF-terminated headers
197* Fix test suite failures on QNX by working around send() length limit
198* Fix handling of POSIX strerror_r failure case in ne_strerror
199* Fix alignment issues in test suite MD5 code
200
201Changes in release 0.26.3:
202* Fix buffer under-read in URI parser (Laszlo Boszormenyi, CVE-2007-0157)
203* Fix regression in handling of "attempt" argument passed to auth callbacks;
204  ensure the value only increments for each invocation of the callback
205* Fix handling of "nextnonce" parameter in Digest authentication
206
207Changes in release 0.26.2:
208* Fix error reported for LOCK responses lacking a Lock-Token header.
209* Use Libs.private in neon.pc for newer versions of pkg-config.
210* Build fix for platforms without libintl.h.
211* Build fixes for MinGW. (Matthias Miller)
212* Build fix for h_errno detection on HP-UX 10. (Albert Chin)
213* Win32: enable debugging; build fixes with some SDKs. (Kiyo Kelvin Lee)
214
215Changes in release 0.26.1:
216* Build fixes for Win32 (D.J. Heap) and OS X.
217* Add Simplified Chinese translation (Dongsheng Song).
218
219Changes in release 0.26.0:
220* Added internationalization support:
221 - ne_i18n.h exposes ne_i18n_init(), a process-global initializer
222   which may be required for some applications
223 - (partial) message catalogs for cs, de, fr, ja, nn, ru and tr
224 - NE_FEATURE_I18N feature code added to indicate support
225* Added support for GnuTLS (thanks to Aleix Conchillo Flaque):
226 - pass --with-ssl=gnutls to configure; GnuTLS >= 1.0.22 required
227 - use --with-ca-bundle to specify a default SSL CA root bundle
228 - some remaining issues with PKCS#12 certs in current GnuTLS releases,
229   distinguished name handling is sub-standard relative to OpenSSL
230* Changes and additions to URI support:
231 - ne_uri structure: add query, fragment fields; authinfo renamed
232   to userinfo
233 - ne_uri_parse() now takes a URI-reference as input rather than 
234   the previous pseudo-URI syntax; the query and fragment components
235   are now parsed out.  Many malformed URIs are now rejected
236 - ne_uri_unparse() changed to respect the new fields
237 - ne_uri_resolve(): new function; resolves relative URI references
238 - ne_uri_copy(): new function, copies a URI structure
239* Changed results callbacks for ne_lock_discover, PROPFIND interfaces:
240 - take URI as parsed ne_uri * structure rather than char *
241* Added functions which give control over authentication protocol use:
242 - ne_add_server_auth(), ne_add_proxy_auth()
243* Added ne_unhook_* functions to remove hooks
244* Added ne_set_session_flags()/ne_get_session_flags() functions:
245 - flags to disable persistent connection support, enable "ICY"
246   protocol support, and to disable SSLv2 protocol support.
247 - replaces ne_set_persist()
248* Added ne_set_request_flags()/ne_get_request_flags() functions:
249 - flags to enable 100-continue support, mark requests as non-idempotent
250 - replaces ne_set_request_expect100()
251* Change ne_md5.h interface to make struct ne_md5_ctx opaque:
252 - added ne_md5_create_ctx(), ne_md5_destroy_ctx(), ne_md5_reset_ctx(),
253   ne_md5_finish_ascii(); removed ne_md5_init_ctx()
254 - fix alignment issues which could cause crashes in Digest code
255* Fixed ne_get_range(), added ne_get_range64() (thanks to Lennart Poettering)
256* Removed NE_FREE() macro from ne_alloc.h
257* Added ne_strcasecmp(), ne_strncasecmp(), ne_tolower() functions
258  to ne_string.h - locale-independent string comparison
259* Changed ne_sock_init()/ne_sock_exit() such that ne_sock_exit() 
260  only has effect once called an equal number of times to _init().
261* Added "--enable-threadsafe-ssl=posix" configure flag, to enable
262  thread-safe SSL support using POSIX threads in OpenSSL/GnuTLS
263 - NE_FEATURE_TS_SSL feature code added to indicate support
264* The manual is now licensed under the GPL rather than the GFDL
265
266Changes in release 0.25.5:
267* ne_ssl_clicert_decrypt(): catch and fail to load a client cert
268  with mismatched key/cert pair.
269* Fix build issue on AIX 5.1.
270* Fix warnings if built against OpenSSL >= 0.9.8.
271* Win32: fix issues in SSPI implementation (Stefan K�ng).
272
273Changes in release 0.25.4:
274* GSSAPI fixes for non-MIT implementations (Mikhail Teterin).
275* Fix ne_print_request_header() et al to use 8K buffer size on all
276 platforms (fixes issue with long Destination: URLs on Win32).
277* Win32 build fix for !USE_GETADDRINFO configuration.
278* Documentation updates.
279
280Changes in release 0.25.3:
281* ne_lock() and ne_unlock(): fix cases where NE_ERROR would be returned 
282  instead of e.g. NE_AUTH on auth failure.
283* Prevent use of poll() on Darwin.
284* Fix gethostbyname-based resolver on LP64 platforms (Matthew Sanderson).
285
286Changes in release 0.25.2:
287* Really fix the Win32 build.
288
289Changes in release 0.25.1:
290* ne_get_content_type(): fix cases where the charset field was not set
291  to NULL after successful return (Johannes Schneider)
292* Compressed response handling fixes:
293 - fix double invocation of reader callback with len=0
294 - fix cases where the reader callback return value was ignored
295* Cache the new SSL session if the old one was expired (Robert Eiglmaier)
296* Win32: fix build issues.
297
298Changes in release 0.25.0:
299* New interfaces:
300 - ne_get_response_header() replaces ne_add_response_header_handler
301 - ne_read_response_to_fd() and ne_discard_response() for use with
302   ne_begin_request/ne_end_request style response handling
303 - ne_xmlreq.h: ne_xml_parse_response() and ne_xml_dispatch_request()
304 - ne_has_support() for feature detection, replaces ne_support_ssl()
305 - ne_set_addrlist() can be used to bypass normal DNS hostname resolver
306 - ne_buffer_czappend(), convenience wrapper for ne_buffer_append.
307 - ne_iaddr_typeof() returns type of a socket object
308 - ne_get_content_type() replaces ne_content_type_handler()
309 - ne_set_request_expect100() replaces ne_set_expect100()
310* New interfaces on LFS systems for large file support:
311 - ne_set_request_body_fd64() call for using an fd opened using O_LARGEFILE
312 - ne_set_request_body_provider64(), takes an off64_t length argument
313* Interface changes:
314 - ne_set_request_body_fd takes offset and length arguments and returns void
315 - ne_set_request_body_provider takes length as off_t rather than size_t;
316   provider callbacks now MUST set session error string if returning an error
317 - response body reader callback returns an integer and can abort the response
318 - ne_decompress_destroy() returns void; errors are caught earlier
319 - ne_xml_failed() replaces ne_xml_valid(), with different return value logic
320 - ne_xml_parse() can return an error; ne_xml_parse_v() aborts the response if 
321   the parse either fails or is aborted by a handler returning NE_XML_ABORT
322 - ne_path_escape() now escapes all but unreserved characters
323 - ne_ssl_clicert_name() and ne_ssl_cert_identity() clarified to return UTF-8
324 - ne_ssl_clicert_name() clicert object argument is now const
325 - ne_uri_parse()/ne_uri_free() memory handling clarified
326 - removed the buffer length requirement for ne_read_response_block()
327* Bug fixes:
328 - properly handle multiple Authentication challenges per request
329 - fixes and improvements to the Negotiate auth implementation
330 - handle proxies which send a 401 auth challenge to a CONNECT request
331 - XML: handle the UTF-8 BOM even if the underlying parser does not
332 - Win32: Fix timezone handling (Jiang Lei)
333 - ne_lock_refresh() works and will update timeout of passed-in lock
334 - persistent connection timeout handling fixes for CygWin et al
335 - impose hard limit of 1024 props per resource in ne_props.h response parsing
336* New platform-specific features:
337 - Win32: Negotiate/NTLM support using SSPI (Vladimir Berezniker)
338 - Win32: Add IPv6 support using ENABLE_IPV6 neon.mak flag (Kai Sommerfeld)
339* Removed features:
340 - the cookies interface has been removed
341 - removed functions: ne_service_lookup(), ne_put_if_unmodified()
342 - "qop=auth-int" support removed from Digest auth implementation
343* Default XML parser search changed to check for expat before libxml2.
344
345Changes in release 0.24.7:
346* Compression interface fixes:
347 - fix issues handling content decoding and request retries from
348 authentication challenges (Justin Erenkrantz)
349 - fix places where reader callback would receive spurious size=0 calls
350 - fix to pass user-supplied userdata to user-supplied acceptance callback
351* Fix for RFC2617-style digest authentication (Hideaki Takahashi).
352* Fix to pick up gethostbyname() on QNX 6.2.
353
354Changes in release 0.24.6:
355* SECURITY (CVE CAN-2004-0398): Fix sscanf overflow in ne_rfc1036_parse,
356 thanks to Stefan Esser.
357* Link libneon against libexpat during Subversion build using bundled neon.
358* Win32 build script update (Jon Foster).
359
360Changes in release 0.24.5:
361* SECURITY (CVE CAN-2004-0179): Fix format string vulnerabilities in
362 XML/207 response handling, reported by greuff@void.at.
363* Performance fix: avoid seeding the SSL PRNG if not creating an SSL socket.
364* ne_ssl_readable_dname() is now defined to return UTF-8 strings.
365* Fix case where gssapi/gssapi_generic.h was included but not present.
366* Fix ne_utils.c build on platforms where zlib does "#define const".
367* Fix use of ne_proppatch_operation with some C++ compilers.
368* Update libtool for fix to --enable-shared on Darwin.
369* BeOS: check for gethostbyname in -lbind (David Reid).
370
371Changes in release 0.24.4:
372* Ignore unclean SSL closure when response body is delimited by EOF
373 ("Could not read response body: Secure connection truncated" errors
374 with some buggy SSL servers).
375* Fix test/ssl.c syntax errors with C89 compilers (Radu Greab).
376
377Changes in release 0.24.3:
378* Respect configure's --datadir argument (Max Bowsher).
379* Fix build on Windows when OpenSSL is not used.
380* Fix use of SSLv2 (spurious "Server did not present certificate" error).
381* When using SSL via a proxy, prevent leaking server auth credentials
382 to the proxy, or proxy auth credentials to the server.
383
384Changes in release 0.24.2:
385* Fix name resolver with some old versions of glibc.
386* Fix problems with configure's "time_t format string" detection.
387* Fix problems when a broken Kerberos installation is found.
388* When verifying SSL certificates, check iPaddress names in the
389 subjectAltName extension.
390
391Changes in release 0.24.1:
392* Add support for "GSS-Negotiate" Kerberos authentication scheme (from
393 Risko Gergely and Burjan Gabor).
394* Disable Nagle to improve performance of small requests (thanks to
395 Jim Whitehead and Teng Xu).
396* Fix compatibility with OpenSSL 0.9.6 (broken in 0.24.0).
397* Fix prototype mismatch in ne_207.c.
398* Define ssize_t from ne_request.h for Win32.
399* Prevent segfault on zlib initialization failures.
400* ne_sock_init does not fail if PRNG could not be seeded.
401* Fix segfault in cookies code (Markus Mueller).
402* Documentation updates.
403
404Changes in release 0.24.0:
405* Major changes to XML interface:
406 - have the start-element callback either accept, decline, abort, 
407 or return a state integer.
408 - remove 'struct ne_xml_elm'; callbacks are passed {nspace, name}
409 strings along with a state integer.
410 - dropped "collect", "strip-leading-whitespace" modes
411 - push responsibility for accumulating cdata onto caller; drop 'cdata'
412 argument from end-element callback.
413 - don't abort if no handler accepts a particular element, just ignore
414 that branch of the tree.
415 - dropped support for libxml 1.x and expat < 1.95.0.
416 - guarantee that start_element callback is not passed attrs=NULL
417 - add ne_xml_doc_encoding() to retrieve encoding of parsed XML document.
418* Major changes to SSL interface:
419 - rewrite of interfaces for handling server and client certificates;
420 ne_ssl.h: many new functions available.
421 - only PKCS#12-encoded client certs are supported.
422 - changes to most names of SSL-related functions operating on an
423 ne_session, e.g. ne_ssl_load_cert->ne_ssl_trust_cert.
424 - client cert provider callback is passed the set of acceptable CA
425 names sent by the server
426 - the entire chain of certs presented by server is now accessible
427* Remove unused ne_register_progress() from socket layer.
428* Changes to resolver interface: ne_addr_first and _next return const;
429 ne_addr_print renamed to ne_iaddr_print; ne_iaddr_make and ne_iaddr_free
430 have been added.
431* ne_request_create() now duplicates the method string passed in.
432* ne_redirect_location() will now return NULL in some cases.
433* Split socket creation to ne_sock_create() from ne_sock_connect:
434 - should report connect() error messages properly on Win32.
435* Fix several memory leaks in error handling paths.
436* Add a pkg-config file, neon.pc.in.
437
438Changes in release 0.23.9:
439* Fix inability to connect on AIX 4.3.
440* neon-config exports includes needed for OpenSSL given by pkg-config.
441* ne_redirect_location will return NULL if redirect hooks have not
442 been registered for the session (Ralf Mattes <rm@fabula.de>).
443
444Changes in release 0.23.8:
445* SECURITY: Prevent control characters from being included in the
446 reason_phrase field filled in by ne_parse_statusline(), and in
447 the session error string.
448* Disable getaddrinfo() support on HP-UX; fix resolver for HP-UX 11.11.
449* Fix digest auth response verification for >9 responses in session
450 (bug manifests as "Server was not authenticated correctly" error).
451* On Linux, skip slow lookup for IPv6 addresses when IPv6 support is
452 not loaded in kernel (thanks to Daniel Stenberg for this technique).
453* Update to autoconf 2.57 and libtool 1.4.3.
454
455Changes in release 0.23.7:
456* Fix for handling EINTR during write() call (Sergey N Ushakov).
457* When available, use pkg-config to determine compiler flags needed to 
458 use OpenSSL headers and libraries.
459
460Changes in release 0.23.6:
461* Fixes for error handling in socket layer on Win32 from Johan Lindh
462 and Sergey N Ushakov <ushakov@int.com.ru>:
463 - meaningful error messages rather than "No error"
464 - handle persistent connection timeouts properly
465* Fix to use RFC2617-style digest auth when possible (had reverted to 
466 only using RFC2068-style in 0.16.1).
467* Fix NULL pointer dereference on certain ill-formed PROPFIND responses.
468* Allow ne_sock_init to re-initialize after ne_sock_finish has been called
469 (Sergey N Ushakov).
470
471Changes in release 0.23.5:
472* Fix rejection of SSL server certificates which had commonName as
473 the least specific attribute in the subject name.
474* Fix to dereference entities (e.g. "&amp;") in attribute values with libxml.
475* Fix ne_socket.c build on HP-UX 10.20 (thanks to Branko �ibej)
476* Remove misguided insistence on "secure" versions of zlib/OpenSSL;
477 no checks for zlib version are now performed, only OpenSSL 0.9.6 is
478 required.  --with-force-ssl, --with-force-zlib option removed.
479* Add --with-egd[=PATH] option, conditionally enable EGD support; either 
480 using EGD socket at PATH, or fall back on system defaults.  $EGDSOCKET 
481 and $HOME/.entropy are no longer used.
482* Add support for `--la-file' argument to neon-config, which prints the
483 full path of the installed libneon.la file.
484
485Changes in release 0.23.4:
486* Ignore an unclean SSL shutdown on persistent connection timeout
487 (fixing spurious "Secure connection truncated" errors).
488* Fix a segfault on second and subsequent requests using a given
489 session, when the first fails with NE_LOOKUP.
490* Fix configure for gcc installations which produce warnings by default
491 (such as gcc on hppa2.0n-hp-hpux11.00 using native as)
492
493Changes in release 0.23.3:
494* Further build fixes for Win32 (Blair Zajac).
495* Another fix for use of SSL against Tomcat 3.2.
496
497Changes in release 0.23.2:
498* Build fix for Win32 (Blair Zajac).
499
500Changes in release 0.23.1:
501* Identify as correct version, not 0.22.
502
503Changes in release 0.23.0:
504* Improved address resolver (ne_addr_*) replacing ne_name_lookup():
505 - use getaddrinfo() if found; include support for IPv6 (based on work
506 by Noriaki Takamiya <takamiya@po.ntts.co.jp>)
507* For a hostname with multiple addresses, each address is tried in turn
508 until a connection is made.
509* Support for seeding OpenSSL's PRNG via $EGDSOCKET or $HOME/.entropy,
510 to enable SSL on platforms which lack a /dev/random device.
511* RFC2818 compliance for certificate identity checks in SSL:
512 - use `dNSname' values in subjectAltName extension if present
513 - hostname comparison fixed to not be case-sensitive
514* Fix interop with buggy SSL implementation in Tomcat 3.2.
515* Added NE_DBG_SSL debug channel.
516* ne_strerror changed to return the passed-in buffer.
517* Added ne_strnzcpy macro to ne_string.h.
518* Win32 build fixes, improvements, and documentation updates, from 
519 Blair Zajac <blair@orcaware.com>.
520* Fix ne_sock_init so SIGPIPE signals are ignored even if SSL library
521 initialization fails (e.g. platforms without /dev/random).
522* Added reference documentation:
523 - ne_sock_init, ne_addr_*.
524
525Changes in release 0.22.0:
526* Remove the const qualifier from the reason_phrase field in ne_status.
527 - ne_parse_statusline() now strdup's the reason_phrase
528* Remove the status_line argument from ne_207_end_propstat and _end_response
529* Change ne_session_create, ne_session_proxy, ne_sock_connect, and the 
530 'port' field of the ne_uri structure to use an unsigned int for port numbers
531* ne_uri_defaultport returns unsigned and '0' on an unknown port (not -1).
532* Changes to hooks interface:
533 - pass an ne_request pointer to per-request hooks
534 - replace "accessor" hooks with ne_{get,set}_{request,session}_private
535* Authentication changes:
536 - the hooks changes fix a segfault if auth is enabled for an SSL session
537 through a proxy server
538 - fix ne_forget_auth segfault if either proxy or server auth are not used
539* Improvements to persistent connection retry logic and error handling 
540 in request code; fixing some cases where some errors where incorrectly
541 treated as a persistent connection timeout
542 - a TCP RST at the appropriate time is now treated as a persistent 
543 connection timeout.
544 - handle persistent connection timeouts on SSL connections
545* Changes to SSL support:
546 - improved error handling
547 - OpenSSL 0.9.6f or later is required for security fixes and functional
548 correctness; 0.9.6 or later required for functional correctness
549 - use --with-force-ssl to override OpenSSL version check
550 - fix for proxy CONNECT tunnelling with some proxies (e.g. Traffic-Server)
551 - fix potential segfault if client cert. provider callback is used
552 - fix to use supplied password callback for PEM-encoded client certificates
553 (Daniel Berlin <dberlin@dberlin.org>)
554* strerror_r is used if available for thread-safe error handling.
555* Remove ne_read_file().
556* ne_version_match replaces ne_version_minimum (semantics changed slightly).
557* XML request bodies use a content-type of "application/xml" now; 
558 applications can use NE_XML_MEDIA_TYPE from ne_xml.h
559* Fix decompress code on big-endian or 64-bit platforms.
560* Fix to build on Darwin 6 (aka Mac OS X 10.2) (Wilfredo S�nchez,
561 <wsanchez@mit.edu>)
562* Win32 changes:
563 - remove conflict between OpenSSL's X509_NAME and recent versions of
564 the Platform SDK (Branko �ibej)
565 - fix inverted debug/non-debug build logic (Branko �ibej)
566 - add NODAV and OPENSSL_STATIC flags to neon.mak (Gerald Richter)
567
568Changes in release 0.21.3:
569* Fix segfault if using proxy server with SSL session and server
570 certificate verification fails.
571* Fix leak of proxy hostname once per session (if a proxy is used).
572* Add --with-libs configure argument; e.g. --with-libs=/usr/local picks
573 up any support libraries in /usr/local/{lib,include}
574
575Changes in release 0.21.2:
576* Fix 'make install' for VPATH builds.
577* Use $(mandir) for installing man pages (Rodney Dawes).
578* Follow some simple (yet illegal) relativeURI redirects.
579* Always build ne_compress.obj in Win32 build (Branko �ibej).
580* Fix decompression logic bug (Justin Erenkrantz <jerenkrantz@apache.org>)
581 (could give a decompress failure for particular responses)
582* Fix ne_proppatch() to submit lock tokens for available locks.
583* More optimisation of ne_sock_readline.
584
585Changes in release 0.21.1:
586* Don't include default SSL port in Host request header, which can
587 help interoperability with misbehaving servers (thanks to Rodney Dawes
588 <dobey@ximian.com>).
589* Don't give a "truncated response" error from ne_decompress_destroy if
590 the acceptance function returns non-zero.
591* Fix for Win32 build (Sander Striker <striker@apache.org>).
592* Fix for cookie name/value being free()d (thanks to Dan Mullen).
593* Optimisation of ne_sock_readline.
594
595Changes in release 0.21.0:
596* Socket layer implements read buffering; efficiency and performance 
597 improvement. Based on work by Jeff Johnson <jbj@redhat.com>
598* Cleanup of socket interface:
599 - renamed everything, s/sock_/ne_sock_/, s/SOCK_/NE_SOCK_/
600 - removed unused and inappropriate interfaces.
601 - renaming done by Olof Oberg <mill@pedgr571.sn.umu.se>
602 - see src/ChangeLog for the gory details.
603* Fix typoed 'ne_destroy_fn' typedef (Olof Oberg).
604* Support OpenSSL/ENGINE branch.
605* Bogus ne_utf8_encode/decode functions removed.
606* ne_base64() moved to ne_string.[ch].
607* ne_token drops 'quotes' parameter; ne_qtoken added.
608* ne_buffer_create_sized renamed to ne_buffer_ncreate.
609* ne_xml_get_attr takes extra arguments and can resolve namespaces.
610* ne_accept_response function type takes const ne_status pointer.
611* Drop support for automatically following redirects:
612 - ne_redirect_register just takes a session pointer
613 - ne_redirect_location returns an ne_uri pointer
614* configure changes: --with-ssl and --with-socks no longer take a directory
615 argument.  To use SOCKS or SSL libraries/headers in non-system locations, 
616 use ./configure CPPFLAGS=-I/... LDFLAGS=-L/... 
617* Reference documentation included for most of ne_alloc.h and ne_string.h,
618 and parts of ne_session.h and ne_request.h.
619 - see installed man pages, HTML documentation.
620
621Changes in release 0.20.0:
622* Major changes to DAV lock handling interface (ne_locks.h):
623 - struct ne_lock uses a full URI structure to identify locked resource
624 - ne_lock() requires that owner/token fields are malloc-allocated (or NULL)
625 on entry
626 - introduce a "lock store" type, ne_lock_store, to replace the lock session;
627 accessor functions all renamed to ne_lockstore_*.
628 - ne_lock_iterate replaced with a first/next "cursor"-style interface
629 - If: headers use an absoluteURI (RFC2518 compliance fix).
630 - fix for handling shared locks on DAV servers which return many active locks
631 in the LOCK response (thanks to Keith Wannamaker)
632* Moved URI/path manipulation functions under ne_* namespace (ne_uri.h):
633 - path handling functions renamed to ne_path_*
634 - URI structure handling to ne_uri_*; struct uri becomes ne_uri.
635 - ne_uri_parse doesn't take a 'defaults' parameter any more
636 - if URI port is unspecified, ne_uri_parse sets port to 0 not -1.
637 - added ne_uri_unparse and ne_uri_defaultport functions.
638* New 'ne_fill_server_uri' function to initialize a URI structure with
639 the server details for a given session (useful with locks interface).
640* ne_decompress_{reader,destroy} are defined as passthrough-functions
641 if zlib support is not enabled.
642* API change: ne_ssl_provide_fn returns void not int.
643* Added NE_SSL_FAILMASK for verify failure sanity check.
644* Removed return codes NE_SERVERAUTH and and NE_AUTHPROXY; correct
645 documentation, NE_PROXYAUTH is given for proxy auth failure.
646* Require zlib >= 1.1.4 to avoid possible vulnerability in earlier versions.
647 See http://www.gzip.org/zlib/advisory-2002-03-11.txt for more details.
648 (version check can be skipped by passing --with-force-zlib to configure)
649* New 'ne_ssl_readable_dname' function to create a human-readable string
650 from an X509 distinguished name.
651* Fix support for newer versions of libxml2 (thanks to Jon Trowbridge 
652 <trow@gnu.org>).
653* Fix corruption of reason_phrase in status object returned by
654 ne_propset_status.
655* More lenient handling of whitespace in response headers.
656* ne_content_type_handler will give a charset of "ISO-8859-1" if no charset
657 parameter is specified for a text/* media type (as per RFC2616).
658* Miscellaneous cleanups and fixes (Jeff Johnson <jbj@redhat.com>).
659
660Changes in release 0.19.4:
661* Support bundled build of expat 1.95.x (Branko �ibej).
662
663Changes in release 0.19.3:
664* For platforms lacking snprintf or vsnprintf in libc, require trio.
665* Add NE_FMT_OFF_T to fix Win32 build (Dan Berlin, Branko �ibej).
666* Fix SSL support in Win32 build (Branko �ibej).
667
668Changes in release 0.19.2:
669* Fix non-SSL build broken in 0.19.1.
670* Working SOCKSv5 support (thanks to Torsten Kalix <torsten.kalix@bredex.de>)
671
672Changes in release 0.19.1:
673* Add missing stubs for ne_ssl_* functions for non-SSL build.
674* Fix some error messages in new SSL code.
675
676Changes in release 0.19.0:
677* Major API change: ne_session_create now takes (scheme, hostname, port) 
678 arguments: a session is clarified to be "a group of requests to a
679 certain server".
680 - removal of ne_session_server, ne_set_secure, and ne_set_proxy_decider
681 - ne_session_proxy returns void.
682 - DNS lookups are delayed until request dispatch time.
683* Significant improvements to TLS/SSL support:
684 - SSL is enabled if scheme passed to ne_session_create is "https"
685 - new interfaces to load CA certs and to load SSL library's bundled CA certs
686 - add server cert verification callback.  An SSL connection to a server
687 with an unknown CA will now fail unless a verification callback is used.
688 - enable SSL session caching (performance improvement)
689 - support for wildcard server certs where commonName is "*.example.com".
690 - thanks to Tommi Komulainen for the contribution of code from mutt's
691 IMAP/SSL implementation under the LGPL, from which bits of this were derived.
692* Improved SSL client certificate support:
693 - far simpler interface, all done at ne_session.h level.
694 - supports PKCS#12 and PEM-encoded certificates.
695 - optional callback for only providing client when demanded by server.
696* Support for TLS upgrade is removed, since it isn't useful.
697* If NEON_SSL is defined, API extensions are available to:
698 - allow access to the SSL_CTX * to adjust session SSL options
699 - retrieve the server certificate (X509 *)
700* Decompress fixes:
701 - fix potential segfault in ne_decompress_destroy
702 - check the CRC of the deflated output (and fail if it doesn't match)
703 - fail appropriately on truncated responses, and trailing bytes in response. 
704* Added ne_set_read_timeout to use configurable timeout on socket reads.
705* Malformed response headers will be ignored rather than failing the request.
706* ne_set_error takes printf-style vararg.
707* Fixes for ne_get_range and improve error handling. 
708* Functions which append to an ne_buffer do not return a success value,
709 but they do use ne_realloc/ne_malloc under the hood now, so an OOM callback
710 will be used (with the usual caveats).
711* XML interface does not strip leading whitespace from cdata by default,
712 the NE_XML_STRIPWS flag is available to restore this feature if required.
713* Upgraded to libtool 1.4.2:
714 - should fix --enable-shared on Mac OS X 10.1
715* Test suite now contains over one hundred tests.
716
717Changes in release 0.18.5:
718* Removed old neon.dsp, neon.dsw.
719* Update Win32 build to add OpenSSL and zlib support (Branko �ibej).
720* Fix ne_compress.c to compile on Win32 (Branko �ibej).
721
722Changes in release 0.18.4:
723* Fixes for Content-Type parsing using ne_content_type_handler (Greg Stein)
724 - also now parses the charset parameter from header value.
725* Removed ne_concat() function, which didn't work and wasn't used.
726
727Changes in release 0.18.3:
728* Fix parsing lock timeout from server (Arun Garg).
729* Send Timeout headers in LOCK and refresh LOCK requests (Arun Garg).
730* Updated neon.mak and config.hw.in for Win32 build (patch from
731 Branko �ibej <brane@xbc.nu>).
732* Define XML_BYTE_ORDER for bundled expat build in support macro
733 NEON_XML_PARSER().
734
735Changes in release 0.18.2:
736* Fix --with-neon=PATH in support macros.
737* Support DESTDIR in Makefile install targets (patch by
738 Pawel Golaszewski <blues@blysk.ds.pg.gda.pl>).
739* Portability fixes:
740 - fix configure check for time_t on some platforms (e.g Solaris 2.6).
741 - remove expect100_works bitfield in ne_session structure (thanks to 
742 Yan Periard <yperiard@ems.net>).
743
744Changes in release 0.18.1:
745* Minor fix for authentication: "attempt" counter was not reset correctly
746 after authentication failed, so subsequent requests would not authenticate
747 correctly either.
748* API change: ne_session_destroy returns void (there was no error case).
749* Portability fixes (non-GCC compilers, 64-bit platforms, UnixWare 7)
750* Optimisations in string manipulation routines.
751* config.hw is included in the release tarball again.
752* Improvements in the autoconf support macros:
753 - check for neon-config in PATH if --with-neon is not given
754 - stop if --with-neon is used, and the check for external neon fails
755 - added NEON_WITHOUT_ACL to prevent build of ne_acl.o
756
757Changes in release 0.18.0:
758* API change: authentication callback is passed fixed-size username/password
759 buffers, and an 'attempt' counter.  Authentication is retried *forever*
760 until either it succeeds, or the callback returns non-zero.
761* API clarifications:
762 - ne_propname may have a NULL nspace field, indicating the property has no 
763 namespace.  This holds for properties returned by the propfind interfaces.
764 - added NE_ELM_PROPS_UNUSED as the lowest element number which should
765 be used with handlers added to the XML parser returned by 
766 ne_propfind_get_parser.
767* Fixes and cleanups of lock discovery interface.
768* Fix for short write handling in ne_get() (thanks to rado <dzusto@yahoo.com>).
769* Fix for XML namespace prefix handling where a prefix could be mapped to an 
770 incorrect URI (e.g. in PROPFINDs against mod_dav with >10 namespaces used)
771* Add '--support <feature>' option to neon-config; the script exits with
772 success if given feature is supported. Known features are ssl, dav, zlib.
773* Support for SSL, DAV, zlib is exported by neon.m4 as shell variable 
774 NEON_SUPPORTS_{SSL,DAV,ZLIB}={yes,no} for bundled and external builds.
775* `neon-config --cflags` won't include -I/usr/include for SSL build.
776* Fix to call progress callbacks while sending request bodies again.
777* Test changes:
778 - portability fixes, auth interface and progress tests.
779
780Changes in release 0.17.2:
781* Accept Status-Lines with no reason phrase (Jeremy Elson).
782* Fix handling of persistent connection timeout, and better error
783 handling if sending a request fails.
784* Fix crashes in locking code.
785* Return parse error on XML namespace prefix declaration with
786 an empty value. Thanks to Julian Reschke.
787* Allow passing property names with NULL namespace to ne_proppatch.
788* Fix for cross-compilation (Mo DeJong).
789* Moved ne_propname definition from ne_207.h to ne_props.h.
790* Test changes:
791 - updated for Status-Line parsing changes (Jeremy Elson)
792 - better persistent connection tests
793 - fixed for --disable-webdav build
794
795Changes in release 0.17.1:
796* Add support for ACL method (Arun Garg <arung@pspl.co.in>),
797 see ne_acl.h.
798* Fixes and clean up of libraries exported via `neon-config --libs'
799* Fix timezone handling when parsing dates (on some platforms).
800* Upgrade to autoconf 2.52 and libtool 1.4 (thanks to Mo DeJong).
801* Cleanup/simplification of request dispatching:
802 - better handling of error cases, including fix for a possible
803 infinite loop when the server closes the connection prematurely.
804* Add '--without-zlib' configure option.
805* Test changes:
806 - prettify output; imitate Perl test suite output.
807 - add tests for interim 1xx responses, persistent connections, more
808 unbounded operations.
809
810Changes in release 0.17.0:
811* Add support for decoding gzip Content-Encoding: see ne_compress.h.
812 - built if zlib is found; `neon-config --cflags' will define NEON_ZLIB if so.
813* Rewrite hooks interface to register individual callbacks.
814 - inspired by the Apache 2.0/APR hooks interface
815* Register cookies hooks using ne_cookie_register().
816* Clean up configure scripts to enable use of autoconf 2.5x (Mo DeJong).
817* Use new endianess configure macro to allow cross-compiling (Mo DeJong).
818* Fix invalid C code in sock_init() in Win32 build (Mo DeJong).
819* Fix use of signal() on Win32 (Mo DeJong).
820* Workaround libxml 1.x string handling not being UTF-8.	
821* Test changes:
822 - add tests for decompression interface.
823
824Changes in release 0.16.1:
825* Also handle write errors in ne_get_range.
826* Dump request body blocks in debugging mode.
827* Fix ne_shave() causing memory corruption when the result should 
828  have been the empty string.
829* Refactor auth header parsing code; more efficient now. 
830 - fixes digest auth RFC2617-style broken in 0.16.0
831
832Changes in release 0.16.0:
833* API change: ne_copy takes a depth parameter (thanks to Arun Garg, Medha Atre)
834* API change: validate callback to ne_xml also takes a userdata arg.
835* Added 'ne_lock_refresh' for performing lock refresh (Arun Garg).
836* Add SSL support to Win32 build (Peter Boos <PediB@colorfullife.com>)
837  (see INSTALL.win32 for details).  Compile with USE_DAV_LOCKS also.
838* Remove Server header parser for 100-continue support in ne_options.
839  (and remove broken_expect100 from ne_server_capabilities).
840* Set SIGPIPE disposition to "ignored" in sock_init().
841* On platforms with setvbuf(), turn off buffering for the debug log 
842  stream.
843* Ignore repeated calls to sock_init().
844* Fixes to error handling in ne_get_range.
845* Minor improvements to memory handling in auth code.
846* Fix for start_propstat callback being called with NULL response
847  argument when given invalid XML, causing a segfault in propfind code.
848* Test changes:
849 - add regression test for the propfind segfault.
850 - handle segfaults better (reap the child, flush the debug log).
851
852Changes in release 0.15.3:
853* Fix --with-expat=DIR build.
854
855Changes in release 0.15.2:
856* Fix Win32 for XML parser changes (Gerald Richter).
857* Substitute versions into config.hw at distribution time.
858* Add date parser for ISO8601-formatted dates as defined by RFC2518, e.g. 
859  the creationdate property (Taisuke Yamada <tai@iij.ad.jp>).
860* Fix Y2K bug in RFC1036 date parsing algorithm.
861* Test changes:
862 - add tests for date parsing functions.
863
864Changes in release 0.15.1:
865* Win32 update from Gerald Richter <richter@ecos.de>
866 - new files neon.mak, INSTALL.win32
867* Fix for ne_socket.h includes (Mo DeJong).
868* More improvements for XML parser selection logic:
869 - if parser is required, be sure to fail configure if none is found.
870 - added --with-included-expat for bundled expat logic.
871* Rename --enable-debugging to --enable-debug (Mo DeJong).
872 - added NEON_DEBUG macro to exported autoconf macros.
873* Call progress callbacks for request bodies.
874* Test changes:
875 - check that reading response headers is a bounded operation.
876 - use a pipe between child and parent to avoid race condition and 
877 tedious sleep().
878
879Changes in release 0.15.0:
880* Major API renaming to use ne_/NE_ namespace:
881 - http_ to ne_, HTTP_ to NE_, dav_ to ne_, DAV_ to NE_, neon_ to ne_
882 - hip_xml_ to ne_xml_, HIP_ELM_ to NE_ELM_, HIP_XML_ -> NE_XML_
883 - sbuffer_ to ne_buffer_
884 - DEBUG() to NE_DEBUG(), DEBUG_ to NE_DBG_
885* Type renames:
886 - http_req to ne_request
887 - sbuffer to 'ne_buffer *'
888* Note, 'ne_buffer' is not an implicit pointer type, you must 
889  specify the '*' now, e.g. 'ne_buffer *buf = ne_buffer_create();'.
890* ne_buffer is no longer opaque.
891 - ne_buffer_data() removed: use buf->data instead.
892 - ne_buffer_size() is a macro.
893* Header renames and additions:
894 - http_request.h -> ne_request.h
895 - Session code split into ne_session.h
896 - hip_xml.h -> ne_xml.h, nsocket.h -> ne_socket.h, http_utils.h -> ne_utils.h
897 - neon_md5.h -> ne_md5.h, dav_207.h -> ne_207.h
898 - http_basic.h and dav_basic.h merged into ne_basic.h
899* New functions:
900 - ne_token and ne_shave, to obsolete split_string, shave_string.
901* Removed: ne_get_request_headers().
902* autoconf changes:
903 - disable building shared neon library by default.
904 - option --enable-libxml is replaced by --with-libxml1 and
905 --with-libxml2 to force use of a particular parser.
906* Fix auth code to only take MD5 digests of response body blocks when
907  necessary (thanks to Kai Sommerfeld).
908* Fix alignment bug in MD5 code which could cause SIGBUS on Sparc 
909  architectures (Kai Sommerfeld).
910* Rewrite of request body handling:
911 - ne_set_request_body_fd replaces _stream, using an int fd rather than
912 a FILE *.
913 - added ne_set_request_body_provider to give a callback which is called
914 to provide request body blocks.
915 - removal of 'use_body' hook in favour of 'ne_pull_request_body' function
916 to allow hooks to manually read the request body.
917 - ne_{put,get,post,put_if_unmodified} all take an integer fd rather than a
918 FILE * stream.
919* Test changes:
920 - added framework for testing "over the wire" (fork a server process)
921 - added tests for response message length handling, chunked responses, 
922 header folding, sending request bodies.
923 - start at listing RFC2616 requirements and whether they are met
924 or not in test/STATUS.
925 - test for MD5 alignment bug on Sparc (thanks to Kai Sommerfeld).
926
927Changes in release 0.14.0:
928* Add C++ inclusion safety to http_auth.h (Kai Sommerfeld).
929* Define ssize_t on Win32. (Kai Sommerfeld).
930* Add C++ inclusion safety to dav_locks.h and ne_alloc.h (thanks to
931  Gregor Bornemann <Gregor.Bornemann@germany.sun.com>).
932* Significant API change to properties code, to allow use of allprop
933  and complex properties:
934 - dav_propfind_set_complex and _set_flat are removed.
935 - add parameter to dav_propfind_named to take the list of property names 
936   to be fetched.
937 - new function dav_propfind_set_private to set private callback.
938 - all properties not handled by caller are stored as flat properties.
939* Untested: add basic SOCKSv5 support: configure --with-socks.
940 - please report success/failure to neon@webdav.org
941* Win32/MSVC build files from Magnus Sirwi� <sirwio@hotmail.com>.
942* Fix for expat detection from Shane Mayer <shanemayer42@yahoo.com>.
943* Namespace-protect md5 code and more.
944 - md5_* -> ne_md5_*
945 - ascii_to_md5 -> ne_ascii_to_md5 (and moved to neon_md5.h)
946* Parse authinfo segment in URIs (Johan Lindh <johan@link-Data.com>).
947 - added 'authinfo' field to struct uri.
948* New API: hip_xml_get_attr to retrieve attributes.
949* Store language for properties, access with dav_propset_lang.
950 - only if property is defined on the property element itself.
951* Started a simple test suite (test/*).
952 - includes some simple HTTP server tests.
953* Remove "Content-Length: 0" header for request with no body, fixing
954  interop with Squid 2.3-STABLE1 (thanks to Kai Sommerfeld).
955* http_parse_statusline skips leading whitespace. (Johan Lindh). 
956* Partial fix for timezone/date parsing problems.
957
958Changes in release 0.13.0:
959* Fix ne_strndup allocating one byte less than it should (Kai Sommerfeld)
960 - if you use uri_parse, this bug may have caused subtle memory corruption 
961   in your application. 
962* Revert API changes in 0.12: property values are not UTF-8 encoded/decoded
963  internally.  (thanks to Greg Stein)
964* Add another optional argument to NEON_BUNDLED macros, actions to
965  be run if bundled build is *not* selected.
966* API change: added argument to http_add_hooks to register cleanup function
967  for the cookie.
968* Removed dav_lock_unregister in favour of automatic cleanup when session
969  is destroyed.
970* Fixed leaks in redirect code (Kai Sommerfeld).
971* Fixed crashes in hip_xml_destroy (Kai Sommerfeld).
972* Redirects to a different hostname/port/scheme are never followed: the request
973  will fail with HTTP_REDIRECT instead.  Redirect notification callback is 
974  only called for *followed* redirects.
975  New API: http_redirect_location() for retrieving location of last redirect.
976* Authentication is now implemented as a hook, independently of http_request.c:
977 - API change: removed 'hostname' argument from auth callbacks.
978 - API change: you must now include http_auth.h from your application.
979 - Also fixes case of using server and proxy authentication simultaneously
980* Added 'http_forget_auth' to clear authentication session.
981* New API: http_session_hook_private for retrieving private per-session cookie 
982  for hooks.
983* API change: http_set_request_body_stream has a return error value.
984* API change: http_set_request_body_buffer now takes the buffer length too.
985* New API: caller-pulls interface for reading response body: 
986  http_begin_request, http_end_request, http_read_response_block. 
987  An alternative to using the (much simpler) http_request_dispatch.
988* Make --disable-webdav build work.
989* New API: dav_propnames for retrieving property names.
990* New API: dav_propfind_get_request to access request object of handler.
991* API change: progress and connection status callbacks implemented at
992  http_request.h level. Socket-level status callbacks removed, progress
993  callbacks made per-socket.
994* Supports new expat (Sam TH <sam@uchicago.edu>)
995* Supports libxml2 (in preference to libxml1).
996* API change: added namespace protection to base64 and dates functions:
997  all have ne_ prefix now.
998* Fixed ranged GETs where a specific range is requested (Johan Lindh 
999  <johan@linkdata.se>).
1000* Limit number of response header fields to 100.
1001* Allow requests for the '*' URI even if a proxy server is in use.
1002* libxml: Get useful error messages for parse errors.
1003
1004Changes in release 0.12.0:
1005* Portability fixes to http_request.c and http_auth.c.
1006 - fixes digest auth on big-endian architectures.
1007* Fix warnings from stray tokens after #endif's in uri.h and string_utils.h.
1008* Add C++ inclusion safety to http_redirect.h (Kai Sommerfeld 
1009  <kai.sommerfeld@germany.sun.com>).
1010* Make redirects to a different host work (Kai Sommerfeld).
1011* Fix reading response bodies when non-chunked and no Content-Length
1012  (Kai Sommerfeld).
1013* API change: 'http_add_hooks takes a 'const' request object.
1014* Fixed memory leaks in session hooks (thanks to Kai Sommerfeld).
1015* Fix passing NULL props argument to dav_simple_propfind, to support
1016  allprop requests.
1017**** MAJOR INTERFACE CHANGE ****
1018 - URIs passed to http_request_create() are NOT escaped by neon. You 
1019   MUST do this yourself to remain HTTP compliant, using e.g. 
1020   uri_abspath_escape. (Kai Sommerfeld)
1021* Added --disable-webdav flag to configure, to disable DAV support in
1022  the library.  This allows building neon without an XML parser. 
1023* Corresponding NEON_WITHOUT_WEBDAV macro for use in bundled builds.
1024* Fix Makefile dependancies.
1025* A bundled neon directory builds or doesn't build automatically
1026  (i.e. you recurse into it unconditionally).
1027* API clarification:
1028 - dav_propset_status may return NULL if the server does not return
1029   a response for the given property (issue is open for debate).
1030* API change up for debate:
1031 - Property values to dav_proppatch are UTF-8 encoded internally.
1032 - Property values in dav_propfind_* are UTF-8 decoded internally.
1033* API additions: ne_realloc, ne_utf8_encode.
1034
1035Changes in release 0.11.0:
1036* Added SSL client certificate support with 'sock_set_client_cert'.
1037 - Supports certs in PEM-encoded files.
1038 - Specify a callback for prompting the user for the password with 
1039     sock_set_key_prompt.
1040* Added 'ne_oom_callback', to register a callback which is used if
1041  malloc() returns NULL.  (Mike Rosellini <m@icopyright.com>)
1042* Register appropriate callback with libxml to handle <![CDATA blocks
1043  as normal character data (fixes PROPFINDs against sharemation.com).
1044* Added 'NEON_REQUIRE' macro to declare that you require a neon library
1045  of a given minimum version, e.g.  NEON_REQUIRE(0,10) means "I need 
1046  neon 0.11 or later".  The _BUNDLED macros will fall back on the bundled
1047  copy if an external library is found which is not of a new enough version.
1048* Added neon_version_minimum() function call for run-time version detection.
1049* neon_config.h has been removed.
1050* Use closesocket() to close sockets on Win32 (Markus Fleck <fleck@isoc.de>).
1051
1052Changes in release 0.10.1:
1053* Default expect-100 to OFF.
1054
1055Changes in release 0.10.0:
1056* hip_xml API changes:
1057 - The search for a handler for a new child element begins at the
1058   handler of the parent element, and carries on up the stack.
1059   (previously, it always started from the base of the stack)
1060 - Documentation written: doc/parsing-xml.txt
1061* Remove memory leaks and tidy debugging output in new properties code.
1062* API changes to DAV locking interface: 
1063 - New function: dav_lock_copy to copy a lock object.
1064 - Re-ordered arguments to callback of dav_lock_discover, and made the
1065   lock object passed back const.
1066 - Fix leaks and crashes due to vague interface definitions.
1067* API change to dav_propfind_set_complex: use a callback to return the
1068  'private' structure.
1069* NEON_NORMAL_BUILD and NEON_LIBTOOL_BUILD macros defined for setting
1070  up neon's Makefile in a bundled build: see macros/neon.m4.
1071* NEON_VPATH_BUNDLED macro added which takes separate srcdir and
1072  builddir arguments for supporting VPATH builds (thanks to Peter Moulder 
1073  <pjm@bofh.asn.au>).
1074* Added optional final argument to NEON_(VPATH_)BUNDLED, which gives
1075  a set of actions to be run if the bundled build is chosen.
1076* NEON_SSL checks for OpenSSL in /usr too.
1077* API change: when using http_session_decide_proxy, it MUST be called
1078  before using http_session_server to prevent the DNS lookup on the origin
1079  server being optimised out.  The real scheme in use is passed to the 
1080  callback now.
1081* New function, dav_207_ignore_unknown, to ignore any unknown XML fragments
1082  in the 207 response.  Used by properties layer.
1083
1084Changes in release 0.9.2:
1085* Fix using both dav_propfind_set_complex and dav_propfind_set_flat with the
1086  same propfind_handler.
1087
1088Changes in release 0.9.1:
1089* dav_propfind interface
1090 - Guarantee that the 'private' structure will be initialized to zero on
1091   creation.
1092 - Make it the *callers* responsibility to free() the private structure.
1093* Fix a few arguments/variables which mirrored globally declared symbols.
1094
1095Changes in release 0.9.0:
1096* Removed old dav_propfind_* interface, replaced with a better, more
1097  powerful, and easier to use interface:
1098 - 'dav_simple_propfind' interface for just fetching "flat" (byte-string)
1099   properties.
1100 - 'dav_propfind_*' interface for fetching flat and/or "complex" (structured
1101   XML) properties.
1102 - Lets you retrieve the 'status' information, to see what happened if
1103   fetching the property failed (e.g 404 Not Found).
1104* Fixes to doc/using-neon.txt (thanks to Greg Stein).
1105* Allow building when srcdir != builddir (Mo DeJong <mdejong@cygnus.com>)
1106
1107Changes in release 0.8.1:
1108* Fix segfault in PROPFIND code.
1109
1110Changes in release 0.8.0:
1111* Fix for using COPY/MOVE over SSL (thanks to David Sloat).
1112* Fix for using a proxy server and SSL.
1113* Added 'http_get_scheme' API call.
1114* Added 'http_redirect.h' to list of installed headers (thanks to everyone ;).
1115* Changes for building on Windows (Peter Boos <PediB@colorfullife.com>)
1116* Fixes for building on BeOS (Sam TH <sam@uchicago.edu> and David Reid
1117  <dreid@jetnet.co.uk>).
1118* Add buffering to socket code for pre-BONE BeOS systems (David Reid).
1119* Interface changes for hip_xml:
1120 - Renamed hip_xml_add_(mixed_)handler to hip_xml_push_(mixed_)handler
1121 - Documentation updates.
1122 - Added HIP_ELM_UNUSED for lowest element id which should be used.
1123*** MAJOR INTERFACE CHANGE ***
1124 - Removed 'http_status *' pointer from http_request_dispatch.
1125 - Added http_get_status(req) to retrieve the response-status information
1126   instead. You don't have to declare an http_status object yourself now.
1127* Similarly, added DAV_ELM_207_UNUSED for lowest element id which should
1128  be used by users of dav_207_* code (incl. use of dav_propfind_*
1129  code).
1130* New NEON_* autoconf macro interface:
1131 - Use NEON_BUNDLED if sources are bundled, otherwise NEON_LIBRARY.
1132 - The NEON_XML_PARSER macro is NOT called automatically.  You must
1133   call this yourself if using NEON_BUNDLED; see doc/using-neon.txt
1134   for details.
1135* Fix use of 'socket' in nsocket.h function prototypes (Greg Stein).
1136* Remove extra backslash at line 69 of src/Makefile.incl (Dirk Bergstrom).
1137* Examples directory is now a separate package.
1138
1139Changes in release 0.7.7:
1140* Another fix for linking against a libtool-built expat (Greg Stein).
1141
1142Changes in release 0.7.6:
1143* Better check for closed SSL connection after doing SSL_peek. (thanks
1144  to Jeff Costlow <j.costlow@f5.com>).
1145* Attempt at correct sock_block() implementation for SSL.
1146* sock_peek() will return SOCK_CLOSED correctly.
1147
1148Changes in release 0.7.5:
1149* Fixed workaround for linking against a libtool-built expat (Greg Stein).
1150
1151Changes in release 0.7.4:
1152* Fix for fd leak on connect failure (David Sloat <d.sloat@f5.com>).
1153* Fix for Digest auth against IIS5 (David Sloat).
1154* Workaround for linking against a libtool-built libexpat.la (Greg Stein).
1155
1156Changes in release 0.7.3:
1157* Check for -lsocket and -linet in configure.
1158* Workaround for SSL problems.
1159
1160Changes in release 0.7.2:
1161* Define SHELL in Makefile (thanks to Eric Mumpower <nocturne@arepa.com>).
1162* Added 'all' target to Makefile (Greg Stein <gstein@lyra.org>)
1163* Added '--with-expat' argument to configure (Greg Stein)
1164* Added 'dav_propfind_destroy' function.
1165
1166Changes in release 0.7.1:
1167* Don't register response body/header authentication callbacks if no 
1168  credentials-supplying callback has been registered (speed optimisation).
1169
1170Changes in release 0.7.0:
1171* Deprecated use of 'NULL' to http_add_response_header_handler.
1172  New interface, http_add_response_header_catcher, to register
1173  a callback which is passed ALL response headers regardless of name.
1174* Speed optimisation (~10%?): storing response-header handlers in a
1175  hash table for faster look.
1176* New SBUFFER_CAST() macro for getting to the 'char *' of an sbuffer
1177  as fast as possible.
1178
1179Changes in release 0.6.1:
1180* Fix for retrying request if connection is closed by server.
1181* Make redirect hook work for >1 request per session.
1182
1183Changes in release 0.6.0:
1184* New interface to allow following HTTP redirects (301/302 responses).
1185  A callback must be given to get user confirmation if the request method
1186  is not GET, HEAD, or PROPFIND.
1187* New interface to determine whether the proxy server should be used
1188  for a given request: http_session_decide_proxy.
1189* Fix nget build again. Support automatic redirects in 'nget'.
1190* Add --with-extra-includes and --with-extra-libs configure parameters
1191  to point configure at 
1192
1193Changes in release 0.5.1:
1194* Prevent segfault if USE_DAV_LOCKS is defined, and a locking session
1195  is not registered (thanks to David Sloat).
1196
1197Changes in release 0.5.0:
1198* Rename xmalloc, xstrdup etc to ne_malloc, ne_strdup etc.
1199* Some speed optimisation in response-header reading.
1200* Use 'off_t' rather than 'size_t' in sock_progress callback,
1201  sock_readfile_blocked, and sock_transfer.
1202
1203Changes in release 0.4.2:
1204* Fix for sending request bodies after getting 100-continue response.
1205
1206Changes in release 0.4.1:
1207* Fix nget build.
1208
1209Changes in release 0.4.0:
1210* Install library headers into .../include/neon not .../include/libneon
1211* Install all necessary library headers.
1212* Compile support for WebDAV locking throughout the library
1213* Rename md5.h to neon_md5.h (avoids conflict with md5.h in OpenSSL)
1214* Rename socket.h to nsocket.h (avoids possible conflict with C library)
1215* Update licensing notice on macros/neon*.m4: note that these files are
1216  NOT under the LGPL, and can be used in other packages regardless of
1217  the license the package uses.
1218* Update NEON_LIBRARY m4 function to allow optional specification of
1219  names of bundled neon/expat source directories.
1220* Increase socket read timeout to 60 seconds.
1221* Added an POST method: from Sander Alberink <sander.alberink@cmg.nl>.
1222* Added 'http_get_request_headers' to return the sbuffer containing
1223  all request headers.
1224* Allow passing NULL as name to http_add_response_header_handler: 
1225  the handler callback is passed the entire header string, of ALL 
1226  response headers.
1227
1228Changes in release 0.3.1:
1229* Compile fix for dav_locks.c (thanks to Paul D'Anna)
1230
1231Changes in release 0.3.0:
1232* Rewrite of socket handling layer. All sock_* functions changed.
1233* Added basic SSL support: --with-ssl (requires OpenSSL).
1234  NOTE: Certificates are NOT presented for verification.
1235* 'nget' accepts URL's using the 'https' scheme.
1236* New example program, 'nserver', to display the Server: string, 
1237  e.g. 'nserver https://www.eu.c2.net/'
1238* Fixed request re-send when persistent connection times out.
1239* "Hooks" support: allow external hooks into the HTTP request/
1240  response dispatch loop.
1241* New printf-style interface for adding request headers.
1242* Make symbols used in header files C++-safe (Tom Bednarz).
1243* WebDAV locking support: lock discovery, LOCK (exclusive/shared)
1244  UNLOCK. "If:" headers are sent as appropriate. Simple interface
1245  for implementors of new methods to indicate which locks are 
1246  required for the method.
1247* Primitive HTTP cookies support.
1248* Primitive hack at a GNOME-based GUI example program "nbrowse".
1249  Enable build with --enable-gnome-examples. It crashes, and
1250  not much else. Requires GNOME and POSIX threads. Example usage:
1251       'nbrowse dav.ics.uci.edu /msdav/'
1252  Many thanks to Lee Mallabone for Gtk help, and showing how to
1253  use Gtk and threads. 
1254
1255Changes in release 0.2.0:
1256* Use libtool: new configure options to select whether to build
1257  shared and/or static libraries. Should build shared libraries
1258  portably now.  
1259* Complete rewrite of the hip_xml interface to use opaque pointers.
1260  New functions: hip_xml_create, hip_xml_destroy: create parser.
1261  hip_xml_{set,get}_error: Access to error string.
1262  hip_xml_add_handler: Register callbacks for a set of elements.
1263  hip_xml_valid: Returns whether the parse was valid or not.
1264  Removed functions: hip_xml_init, hip_xml_finish.
1265* Removed functions made reduntant by above changes in dav_207.
1266* Don't include config.h in header files
1267* Fix PROPFIND allprop request body (Michael Sobolev)
1268* Added C++ safety macros around header files.
1269* Added neon-config script for getting correct CFLAGS and LIBS
1270  values for using libneon in applications.
1271
1272Changes in release 0.1.1:
1273* Fix for short writes in GET
1274
1275Changes in release 0.1.0:
1276* Initial release.
1277