NEWS 74 KB

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