1Sun Sep 12 19:21:30 2004  Joe Orton  <joe@manyfish.co.uk>
2
3	* ne_locks.c (ne_lock_refresh): Fix to pass correct userdata to
4	callbacks, and do call lk_cdata.
5
6Sun Sep 12 18:53:15 2004  Joe Orton  <joe@manyfish.co.uk>
7
8	* Makefile.in (libneon.a): Remove the archive first, avoiding
9	strange problems when build $(OBJECTS) change.
10
11Sun Sep 12 18:40:50 2004  Joe Orton  <joe@manyfish.co.uk>
12
13	* ne_utils.h: Add NE_FEATURE_SOCKS.
14
15	* ne_utils.c (ne_has_support): Add NE_FEATURE_SOCKS.
16	(version_string): Use NE_HAVE_SOCKS, add NE_HAVE_IDNA.
17
18	* ne_socket.c (ne_sock_init): Use NE_HAVE_SOCKS.
19
20Sun Sep 12 17:29:54 2004  Joe Orton  <joe@manyfish.co.uk>
21
22	* ne_utils.c (version_string): Declare as array rather than
23	pointer; include "IPv6" component as necessary
24
25Sun Sep 12 15:51:38 2004  Joe Orton  <joe@manyfish.co.uk>
26
27	* ne_socket.c (ne_iaddr_typeof): New function.
28
29Sun Sep 12 12:00:10 2004  Joe Orton  <joe@manyfish.co.uk>
30
31	* ne_defs.h (ne_attribute_malloc): New macro.
32
33	* ne_alloc.h: Use it to avoid warnings with older GCCs.
34
35Wed Aug 25 21:03:40 2004  Joe Orton  <joe@manyfish.co.uk>
36
37	* ne_string.h (split_string, split_string_c, pair_string,
38	split_string_free, pair_string_free): Remove obsolete interfaces.
39
40Wed Aug 25 21:01:03 2004  Joe Orton  <joe@manyfish.co.uk>
41
42	* ne_cookies.c, ne_cookies.h: Drop cookies support: used old spec
43	revision and wasn't very complete anyway.
44
45Wed Aug 25 20:40:26 2004  Joe Orton  <joe@manyfish.co.uk>
46
47	* ne_socket.c: Remove ne_read, ne_write macros and just use recv
48	and send; remove unused SOCK_ERR macro.
49
50Wed Aug 25 20:27:43 2004  Joe Orton  <joe@manyfish.co.uk>
51
52	* ne_xml.c (declare_nspaces): Drop rejection of names including a
53	colon to prevent breaking SVN deployments.
54
55Wed Aug 25 19:45:20 2004  Joe Orton  <joe@manyfish.co.uk>
56
57	* ne_socket.c (readable_raw): Use poll where available.
58	(ne_sock_connect): Fail if not using poll and fd returned by
59	socket() is greater than FD_SETSIZE.
60
61Wed Aug 25 18:40:28 2004  Joe Orton  <joe@manyfish.co.uk>
62
63	* ne_xml.h (ne_xml_parse): Clarify that a len=0 call is required
64	to signify end-of-document.
65
66Wed Aug 25 18:37:13 2004  Joe Orton  <joe@manyfish.co.uk>
67
68	* ne_request.c (resolve_first, resolve_next): New functions.
69	(lookup_host): Use them to allow user-forced addresses.
70
71	* ne_session.c (ne_set_addrlist): New function.
72
73	* ne_private.h (struct ne_session_s): Add addrlist, numaddrs,
74	curaddr fields.
75
76Wed Aug 25 18:25:31 2004  Joe Orton  <joe@manyfish.co.uk>
77
78	* ne_xml.c (struct ne_xml_parser_s): Add bom_pos field.
79	(ne_xml_parse): Skip over the UTF-8 Byte Order Mark since
80	the XML parsers do not support it yet.
81
82Wed Jul  7 16:07:44 2004  Joe Orton  <joe@manyfish.co.uk>
83
84	* ne_request.c (do_connect): Fix ne_conn_connected status call
85	(Shameek Basu).
86
87Mon Jul  5 18:40:35 2004  Joe Orton  <joe@manyfish.co.uk>
88
89	* ne_basic.c (ne_content_type_handler): Use us-ascii as default
90	charset for text/xml, as per RFC3280.
91
92Mon Jul  5 10:56:19 2004  Joe Orton  <joe@manyfish.co.uk>
93
94	* ne_compress.c (struct ne_decompress_s): Add acceptor field.
95	(gz_acceptor): New function.
96	(ne_decompress_reader): Fix to pass the user-supplied userdata
97	pointer to the user-supplied acceptor callback, via gz_acceptor.
98
99Mon Jul  5 10:52:40 2004  Joe Orton  <joe@manyfish.co.uk>
100
101	* ne_compress.c (do_inflate): Don't invoke the reader callback if
102	no bytes where produced by inflate().
103	(process_footer): Call the reader callback with size=0 to indicate
104	end-of-response for a good checksum match.
105
106Sat Jul  3 14:33:56 2004  Joe Orton  <joe@manyfish.co.uk>
107
108	* ne_auth.c (auth_challenge): Fix to set got_qop in challenge
109	correctly (Hideaki Takahashi).
110
111Mon May 17 15:03:54 2004  Joe Orton  <joe@manyfish.co.uk>
112
113	* ne_socket.h (ne_addr_resolve): Clarify that 'flags' must
114	be passed as zero for forwards-compat.
115
116Sun May  2 21:14:14 2004  Joe Orton  <joe@manyfish.co.uk>
117
118	Fix buffer overflow in RFC1036 date parser, CVE CAN-2004-0389.
119
120	* ne_dates.c (RFC1036_FORMAT): Specify maximum field with for day
121	name.
122	(ne_rfc1123_parse, ne_rfc1036_parse, ne_asctime_parse): Make
123	thread-safe; remove static buffers.
124
125Sun May  2 16:59:39 2004  Joe Orton  <joe@manyfish.co.uk>
126
127	* ne_dates.c [RFC1123_TEST] (main): Remove embedded test cases.
128
129Sun May  2 13:18:29 2004  Joe Orton  <joe@manyfish.co.uk>
130
131	* Makefile.in (LINK): Add -no-undefined.
132
133Fri Apr 16 22:53:59 2004  Joe Orton  <joe@manyfish.co.uk>
134
135	* ne_xml.c (declare_nspaces, expand_qname): Don't try to include
136	document context in error strings.
137
138Fri Apr 16 11:44:34 2004  Joe Orton  <joe@manyfish.co.uk>
139
140	* Makefile.in (LIBS): Include NEON_LTLIBS.
141
142Wed Apr 14 10:39:53 2004  Joe Orton  <joe@manyfish.co.uk>
143
144	Fix format string vulnerabilities, CVE CAN-2004-0179:
145
146	* ne_207.c (ne_simple_request): Avoid format string
147	vulnerabilities.
148
149	* ne_xml.c (ne_xml_set_error): Likewise.
150
151	* ne_props.c (propfind): Likewise.
152
153	* ne_locks.c (ne_lock, ne_lock_refresh): Likewise.
154
155Wed Apr 14 10:33:46 2004  Joe Orton  <joe@manyfish.co.uk>
156
157	* ne_auth.c (ah_post_send): Avoid false positives from gcc
158	-Wformat-security.
159
160Tue Apr 13 20:51:41 2004  Joe Orton  <joe@manyfish.co.uk>
161
162	* ne_auth.c: Conditionally include gssapi_generic.h.
163
164Thu Apr  8 13:40:03 2004  Joe Orton  <joe@manyfish.co.uk>
165
166	* ne_props.h: Don't use an anonymous enum for the proppatch
167	operation type, as some C++ compilers don't like it.
168
169Wed Apr  7 13:50:10 2004  Joe Orton  <joe@manyfish.co.uk>
170
171	* ne_request.c (add_fixed_headers): Don't both sending Keep-Alive
172	header if persistent connections are disabled.
173
174Wed Apr  7 13:47:46 2004  Joe Orton  <joe@manyfish.co.uk>
175
176	* ne_auth.c (auth_challenge): Allow Negotiate challenges from
177	a proxy.
178
179Wed Apr  7 13:36:55 2004  Joe Orton  <joe@manyfish.co.uk>
180
181	* ne_auth.c (clean_session): Remove redundant assignment of
182	GSS_C_NO_CONTEXT; gss_delete_sec_context already does this.
183
184Wed Apr  7 13:33:10 2004  Joe Orton  <joe@manyfish.co.uk>
185
186	* ne_auth.c (get_gss_name): Handle failure case internally.
187	(auth_register): Updated accordingly.
188
189Wed Apr  7 13:15:57 2004  Joe Orton  <joe@manyfish.co.uk>
190
191	* ne_request.c: Use strtoq to print off_t's where necessary.
192
193Wed Apr  7 11:14:24 2004  Joe Orton  <joe@manyfish.co.uk>
194
195	* ne_auth.c (get_gss_name): Take a hostname string.
196	(auth_register): Pass proxy or server hostname to get_gss_name as
197	appropriate.
198
199Wed Apr  7 11:09:50 2004  Joe Orton  <joe@manyfish.co.uk>
200
201	* ne_auth.c (continue_negotiate): If given no input token, and the
202	gssctx is not in the initial state, reset it.
203
204Mon Mar 29 17:06:49 2004  Joe Orton  <joe@manyfish.co.uk>
205
206	* ne_auth.c: Adjust to cope with GSSAPI continuation:
207	(struct auth_session_s): Store GSSAPI context, name and mechanism.
208	(get_gss_name): Take an ne_session.
209	(continue_negotiate): Renamed from gssapi_challenge; take input
210	token, handle GSS_S_CONTINUE_NEEDED return value.
211	(verify_digest_response): Renamed from verify_response.
212	(verify_negotiate_response): New function.
213	(auth_challenge): Cope with Negotiate responses which gratuitously
214	break the auth-param grammar.
215	(ah_post_send): Handle Negotiate responses.
216	(free_auth, clean_session): Free persisted GSSAPI objects.
217	(auth_register): Initialize GSSAPI objects.
218
219Sun Mar 28 03:03:17 2004  Joe Orton  <joe@manyfish.co.uk>
220
221	* ne_auth.c (get_gss_name): Don't leak token.value.
222
223Sun Mar 28 02:59:58 2004  Joe Orton  <joe@manyfish.co.uk>
224
225	* ne_auth.c (get_cnonce): Only use RAND_pseudo_bytes() if the PRNG
226	is seeded.
227
228Sun Mar 28 02:47:20 2004  Joe Orton  <joe@manyfish.co.uk>
229
230	* ne_auth.c (gssapi_challenge, get_gss_name): Simplify.
231
232Sun Mar 28 02:35:48 2004  Joe Orton  <joe@manyfish.co.uk>
233
234	* ne_auth.c (request_gssapi, get_gss_name, auth_challenge):
235	Implement the Negotiate protocol rather than the obsoleted
236	GSS-Negotiate.
237	(make_gss_error): New function.
238	(gssapi_challenge): Use it for better error handling (set session
239	error string); fix memory leaks.  Don't delegate credentials.
240
241Sat Mar 27 20:49:24 2004  Joe Orton  <joe@manyfish.co.uk>
242
243	* ne_auth.c (ah_post_send): Clear auth header collector buffers
244	after each request.
245
246Fri Mar 26 12:16:15 2004  Joe Orton  <joe@manyfish.co.uk>
247
248	* ne_socket.c (init_ssl): Just initialize the SSL library; delay
249	seeding PRNG until really necessary (performance fix).
250	(seed_ssl_prng): Split from init_ssl.
251	(ne_sock_connect_ssl): Call seed_ssl_prng().
252	(ne_sock_init): Adjust since init_ssl() can't fail.
253
254Fri Mar 26 12:01:38 2004  Joe Orton  <joe@manyfish.co.uk>
255
256	* ne_utils.c: Include zlib.h before ne_*.h to fix issues
257	on platforms where zconf.h does "#define const".
258
259Thu Mar 11 23:38:01 2004  Joe Orton  <joe@manyfish.co.uk>
260
261	* ne_openssl.c (provide_client_cert): Avoid malloc(0) when server
262	sends no CA names in CertificateRequest.
263	(ne_ssl_cert_write): Be paranoid and clear the OpenSSL error stack
264	on write failures.
265
266Sun Mar  7 11:17:04 2004  Joe Orton  <joe@manyfish.co.uk>
267
268	* Makefile.in (CFLAGS): Don't use NEON_CFLAGS.
269
270Mon Feb 23 23:03:08 2004  Joe Orton  <joe@manyfish.co.uk>
271
272	* ne_string.c (ne_vsnprintf, ne_snprintf): New functions.
273
274Sun Feb 22 23:34:47 2004  Joe Orton  <joe@manyfish.co.uk>
275
276	* ne_private.h (struct ne_session_s): Remove expect100_works field.
277
278	* ne_request.c (ne_set_request_expect100): New function.
279	(ne_begin_request): Remove req->use_expect100 manipulation.
280	(send_request): Handle enabling 100continue without a request
281	body.
282
283	* ne_session.c (ne_set_expect100): Removed function.
284
285Sun Feb 22 20:17:04 2004  Joe Orton  <joe@manyfish.co.uk>
286
287	* ne_socket.c (error_ossl): Check for ERR_reason_error_string
288	returning NULL.
289
290Sun Feb 22 17:54:43 2004  Joe Orton  <joe@manyfish.co.uk>
291
292	* ne_socket.c: Don't disable getaddrinfo support here.
293
294Sun Feb 22 17:40:07 2004  Joe Orton  <joe@manyfish.co.uk>
295
296	* ne_utils.h (min): Remove definition to...
297
298	* ne_uri.c (min): ...here.
299
300Sun Feb 22 17:31:35 2004  Joe Orton  <joe@manyfish.co.uk>
301
302	* ne_props.h: Give the 'type' enum a tag name.
303
304Sun Feb 22 17:27:28 2004  Joe Orton  <joe@manyfish.co.uk>
305
306	* ne_207.c (end_element): Strip whitespace from cdata.
307
308Sun Feb 22 16:27:58 2004  Joe Orton  <joe@manyfish.co.uk>
309
310	* ne_auth.c (struct auth_request): Make auth_hdr, auth_info_hdr
311	fields into ne_buffer *'s.
312	(ah_collect_header): New function.
313	(ah_create): Create ne_buffers for auth_{,info_}hdr; use
314	ah_collect_header rather than ne_duplicate_header to fix handling
315	of multiple auth challenge headers.
316	(ah_post_send): Adjust for char * -> ne_buffer *.
317	(tokenize): Recognize a challenge scheme which is terminated with
318	a comma (i.e. with no challange parameters).
319	(auth_challenge): Fix handling of unrecognized challenges.
320	(ah_destroy): Destroy ne_buffers.
321
322Sun Feb 22 15:04:46 2004  Joe Orton  <joe@manyfish.co.uk>
323
324	* ne_request.c (ne_set_request_body_provider64): New function.
325
326Sun Feb 15 13:37:03 2004  Joe Orton  <joe@manyfish.co.uk>
327
328	* ne_ssl.h: Define that ne_ssl_readable_dname returns UTF-8
329	encoded strings.
330
331	* ne_openssl.c (ne_ssl_readable_dname): Convert dname strings to
332	UTF-8, or use "???".
333
334Sat Feb 14 21:57:25 2004  Joe Orton  <joe@manyfish.co.uk>
335
336	* ne_xml.c (invalid_ncname_ch1): New macro.
337	(declare_nspaces): Use it, to reject some more invalid namespace
338	prefixes; also check for a colon anywhere in the NCName.
339	(expand_qname): Likewise for the element name.
340
341Mon Feb  9 21:38:03 2004  Joe Orton  <joe@manyfish.co.uk>
342
343	* ne_dates.c [WIN32] (GMTOFF): Use gmt_to_local_win32;
344	(gmt_to_local_win32): New function, from Jiang Lei.
345
346Mon Jan 26 14:38:05 2004  Joe Orton  <joe@manyfish.co.uk>
347
348	* ne_socket.c (ne_sock_connect_ssl): Check that OpenSSL version
349	matches between library at run-time and headers at compile-time.
350
351Sat Jan 24 17:49:27 2004  Joe Orton  <joe@manyfish.co.uk>
352
353	* ne_dates.c (HAVE_STRUCT_TM___TM_GMTOFF): Alternative GMTOFF()
354	macro.
355
356Sat Jan 24 16:49:30 2004  Joe Orton  <joe@manyfish.co.uk>
357
358	* ne_auth.c (basic_challenge): Cast first parameter to ne_base64
359	to unsigned char * to fix warnings with some compilers.
360
361Sat Jan  3 13:17:36 2004  Joe Orton  <joe@manyfish.co.uk>
362
363	* ne_request.h (ne_set_request_body_fd64): Define conditional on
364	NE_LFS.
365
366	* ne_request.c (ne_set_request_body_fd64): Likewise.
367
368Thu Jan  1 18:01:45 2004  Joe Orton  <joe@manyfish.co.uk>
369
370	* ne_request.c: Use NE_HAVE_LFS not _LARGEFILE64_SOURCE in
371	conditional support for off64_t.
372
373Thu Jan  1 17:38:55 2004  Joe Orton  <joe@manyfish.co.uk>
374
375	* ne_request.h [_LARGEFILE64_SOURCE] (ne_set_request_body_fd64):
376	New function.
377
378	* ne_request.c: Define ne_lseek, ne_off_t, ne_strtoff,
379	NE_OFFT_MAX, FMT_NE_OFF_T appropriately for _LARGEFILE64_SOURCE or
380	otherwise.
381	(struct ne_request_s): Use ne_off_t in place of off_t throughout.
382	(body_fd_send): Use ne_lseek; reset 'remain' after seeking.
383	(clength_hdr_handler): Use ne_off_t, ne_strtoff and NE_OFFT_MAX.
384	(set_body_length): Take an ne_off_t length parameter; use
385	FMT_NE_OFF_T to print it.
386	(ne_set_request_body_fd64): New function.
387
388	* ne_utils.h (NE_FEATURE_LFS): New feature.
389
390	* ne_utils.c (ne_has_support): Support NE_FEATURE_LFS.
391
392Mon Nov 24 20:13:14 2003  Joe Orton  <joe@manyfish.co.uk>
393
394	* ne_request.c (struct ne_response): Split handling for chunked vs
395	clength-delimited responses into a union.  Use off_t for storing
396	whole-length-of-response values.
397	(read_response_block, ne_read_response_block): Update accordingly.
398	(ne_begin_request): Remove unnecessary variable assignments.
399
400Sun Nov 23 16:03:22 2003  Joe Orton  <joe@manyfish.co.uk>
401
402	* ne_request.h (ne_set_request_body_fd): Take offset and length
403	arguments, return void.
404	(ne_set_request_body_provider): Take off_t length argument.
405
406	* ne_request.c (struct ne_request_s): Store current position
407	within buffer/file used as request body source.  Store request
408	body lengths using off_t type.
409	(body_string_send): Adjust for renamed fields.
410	(body_fd_send): Seek to requested offset; don't read past
411	requested body length.
412	(set_body_length): Renamed from set_body_size.
413
414	* ne_basic.c (ne_put): Determine file size here; adjust for new
415	ne_set_request_body_fd API.
416
417Sun Nov 23 15:05:12 2003  Joe Orton  <joe@manyfish.co.uk>
418
419	* ne_basic.c, ne_basic.h: Remove two-functions-in-one,
420	ne_put_if_unmodified.
421
422Fri Nov 14 14:05:32 2003  Joe Orton  <joe@manyfish.co.uk>
423
424	* ne_utils.c (ne_has_support): Add NE_FEATURE_IDNA.
425
426Fri Nov 14 13:11:49 2003  Joe Orton  <joe@manyfish.co.uk>
427
428	* ne_session.c (set_hostinfo): [NE_HAVE_LIBIDN]: Use string from
429	IDNA ToAscii operation on provided hostname if successful.
430
431Fri Nov 14 11:23:16 2003  Joe Orton  <joe@manyfish.co.uk>
432
433	All files: replace use of NEON_NODAV with NE_HAVE_DAV, NEON_SSL
434	with NE_HAVE_SSL, NEON_ZLIB with NE_HAVE_ZLIB.  Use NE_HAVE_DAV
435	not USE_DAV_LOCKS.
436
437	* ne_utils.c (ne_has_support): New feature detection interface,
438	replaces ne_supports_ssl.
439
440Thu Nov 13 20:38:28 2003  Joe Orton  <joe@manyfish.co.uk>
441
442	* ne_request.c (ne_begin_request): Presume a 205 response has no
443	message-body too; RFC2616 compliance fix.
444
445Thu Nov 13 20:31:07 2003  Joe Orton  <joe@manyfish.co.uk>
446
447	* ne_auth.c (ah_post_send): Treat a 401 response to a CONNECT
448	request as a valid proxy auth challenge, to work around buggy
449	proxies.
450
451Tue Nov 11 21:13:18 2003  Joe Orton  <joe@manyfish.co.uk>
452
453	Place library-internal symbols in the "ne__" namespace.
454
455	* ne_request.c (ne__pull_request_body): Renamed from
456	ne_pull_request_body; all callers updated.
457
458	* ne_session.c (ne__negotiate_ssl): Renamed from
459	ne_negotiate_ssl; all callers updated.
460
461Tue Nov 11 21:08:54 2003  Joe Orton  <joe@manyfish.co.uk>
462
463	* ne_alloc.h: Mark all allocation functions as having 'malloc'
464	attribute for GCC.
465
466Tue Nov 11 20:36:12 2003  Joe Orton  <joe@manyfish.co.uk>
467
468	* ne_xml.h (ne_xml_failure): Replaces ne_xml_valid,
469	inverted and more useful return value.
470
471	* ne_xml.c (struct ne_xml_parser_s): Replace 'valid' field with
472	'failure', with inverted logic.
473	(start_element, end_element, char_data): Check failure flag
474	appropriately.  Set failure flag to return value of callback.
475	Set failure flag to positive integer on a parse error.
476	(ne_xml_create): Don't initialize failure flag.
477	(ne_xml_parse): Check/set failure flag appropriately.
478	(sax_error): Only set an error string (and the error flag)
479	if failure is zero.
480
481	* ne_207.c (ne_simple_request): Adjust to use ne_xml_failure.
482
483	* ne_locks.c (ne_lock, ne_lock_refresh): Likewise.
484
485	* ne_props.c (propfind): Likewise.
486
487Wed Oct 22 22:19:19 2003  Joe Orton  <joe@manyfish.co.uk>
488
489	* ne_request.c (read_response_block): Treat an EOF without clean
490	SSL closure as a valid request body delimiter in any case.
491
492Wed Oct 22 21:44:48 2003  Joe Orton  <joe@manyfish.co.uk>
493
494	* ne_defs.h (ne_attribute): New macro.
495
496	* ne_request.h, ne_session.h, ne_utils.h: Use ne_attribute instead
497	of littering #ifdef __GNUC__ and __attribute__ everywhere.
498
499Tue Oct 21 20:03:47 2003  Joe Orton  <joe@manyfish.co.uk>
500
501	Fix various strict signedness bugs:
502
503	* ne_auth.c (auth_session): Make nonce_count argument unsigned.
504	(get_cnonce): Use unsigned data buffer.
505	(get_gss_name, gssapi_challenge): Use unsigned integers for status
506	variables.
507	(request_digest): Print nonce count as unsigned.
508	(verify_response): Make nonce_count unsigned.
509
510Tue Oct  7 20:52:06 2003  Joe Orton  <joe@manyfish.co.uk>
511
512	When using SSL via a proxy, don't leak server auth credentials to
513	the proxy, and vice versa.
514
515	* ne_auth.c (auth_session): Add context field.
516	(ah_create): Ignore challenges in a bad context.
517	(ah_pre_send, ah_destroy): Check that the request-private cookie
518	is not NULL.
519	(auth_register): Take an isproxy flag; set context field
520	appropriately in session structure.
521	(ne_set_server_auth, ne_set_proxy_auth): Adjust accordingly.
522
523Tue Oct  7 19:58:52 2003  Joe Orton  <joe@manyfish.co.uk>
524
525	* ne_openssl.c (ne_negotiate_ssl): If the returned cert chain was
526	NULL, try and create one from the peer certificate alone (fix for
527	use of SSLv2 connections).
528
529Mon Sep 29 21:57:40 2003  Joe Orton  <joe@manyfish.co.uk>
530
531	* ne_auth.c [WIN32]: Include windows.h to fix non-SSL build.
532
533Thu Sep 25 20:05:18 2003  Joe Orton  <joe@manyfish.co.uk>
534
535	* ne_xml.c (ne_xml_create): Specify an initial error string.
536
537Sun Sep 21 23:00:10 2003  Joe Orton  <joe@manyfish.co.uk>
538
539	* ne_cookies.c (set_cookie_hdl): Strip whitespace around cookie
540	name and value.
541
542Sun Sep 14 10:50:01 2003  Joe Orton  <joe@manyfish.co.uk>
543
544	* ne_socket.c (ne_addr_resolve): Use result of autoconf test for
545	working AI_ADDRCONFIG support.
546
547Sat Sep  6 12:05:00 2003  Joe Orton  <joe@manyfish.co.uk>
548
549	* ne_openssl.c (check_identity): Take an optional server address
550	argument; check identity against IPaddress extension too if given.
551	(check_certificate): Optionally pass server address to
552	check_identity.
553	(populate_cert): Adjust accordingly.
554
555Thu Sep  4 21:41:38 2003  Joe Orton  <joe@manyfish.co.uk>
556
557	* ne_socket.c (ne_sock_init): Succeed even if PRNG was not seeded.
558
559Thu Sep  4 21:33:34 2003  Joe Orton  <joe@manyfish.co.uk>
560
561	* ne_session.c (ne_set_useragent): Build and store the entire
562	User-Agent header field in sess->user_agent.
563
564	* ne_request.c (add_fixed_headers): Adjust accordingly; avoid
565	unnecessary calls to ne_buffer_*.
566
567Thu Sep  4 21:27:34 2003  Joe Orton  <joe@manyfish.co.uk>
568
569	* ne_socket.c: Include netinet/tcp.h.
570	(ne_sock_connect): Disable the Nagle algorithm; thanks to Jim
571	Whitehead and Teng Xu for the analysis.
572
573Thu Sep  4 11:24:04 2003  Joe Orton  <joe@manyfish.co.uk>
574
575	* ne_defs.h: Define ssize_t here for Win32.
576
577	* ne_socket.h: Don't define ssize_t here.
578
579Tue Sep  2 20:20:16 2003  Joe Orton  <joe@manyfish.co.uk>
580
581	* ne_auth.c (auth_challenge): Update to use ne_token not
582	split_string, patch by Tom Lee <i_am_gnomey@hotmail.com>.
583
584Wed Jul 30 21:54:38 2003  Joe Orton  <joe@manyfish.co.uk>
585
586	* ne_cookies.c (set_cookie_hdl): Fix NULL pointer dereference;
587	thanks to Markus Mueller <markus-m.mueller@ubs.com>.
588
589Fri Jul 25 11:05:52 2003  Joe Orton  <joe@manyfish.co.uk>
590
591	* ne_request.c (do_connect): On failure to connect, set error
592	string and call ne_sock_close directly rather than using
593	aborted(); fix leak of socket structure.
594
595Wed Jul 23 23:20:42 2003  Joe Orton  <joe@manyfish.co.uk>
596
597	Fix SEGV if inflateInit2 fails with Z_MEM_ERROR etc.
598
599	* ne_compress.c (set_zlib_error): New function.
600	(do_inflate, gz_reader): Use it.
601
602Wed Jul 23 22:50:50 2003  Joe Orton  <joe@manyfish.co.uk>
603
604	Add support for GSS-Negotiate; patch from Risko Gergely and Burjan
605	Gabor:
606
607	* ne_auth.c [HAVE_GSSAPI]: Include gssapi.h.
608	(auth_scheme): Add auth_scheme_gssapi.
609	(auth_session): Add gssapi_token.
610	(clean_session): Free gssapi_token.
611	(request_gssapi, get_gss_name, gssapi_challenge): New functions.
612	(tokenize): Handle challenge with single token.
613	(auth_challenge): Accept and process a GSS-Negotiate challenge.
614	(ah_pre_send): Send GSS-Negotiate handshake.
615
616Wed Jul 23 22:46:28 2003  Joe Orton  <joe@manyfish.co.uk>
617
618	* ne_207.c (ne_207_set_response_handlers,
619	ne_207_set_propstat_handlers): Fix to match declarations (thanks
620	to Diego T�rtara).
621
622Fri Jun 27 20:30:45 2003  Joe Orton  <joe@manyfish.co.uk>
623
624	* ne_openssl.c [OPENSSL_VERSION_NUMBER < 0x0090700fL]:
625	Fix build against OpenSSL < 0.9.7.
626
627Sun Jun 22 23:07:45 2003  Joe Orton  <joe@manyfish.co.uk>
628
629	* ne_session.c (ne_session_destroy): Replace unnecessary use of
630	NE_FREE with ne_free.
631	(set_hostinfo): Don't free hostport/hostinfo here.
632	(ne_session_proxy): Free existing proxy hostname here if
633	necessary.
634
635Sat Jun 21 12:58:25 2003  Joe Orton  <joe@manyfish.co.uk>
636
637	* ne_request.c (ne_begin_request): Set or clear is_http11 flag
638	for each request.
639
640Wed Jun 18 20:54:44 2003  Joe Orton  <joe@manyfish.co.uk>
641
642	* ne_socket.c: Add AI_ADDRCONFIG support;
643	[USE_CHECK_IPV6]: Define only if __linux__.
644	(init_ipv6) [USE_CHECK_IPV6]: New conditional.
645	(ne_addr_resolve) [USE_ADDRCONFIG]: Use AI_ADDRCONFIG.
646
647Wed Jun 18 20:03:13 2003  Joe Orton  <joe@manyfish.co.uk>
648
649	* ne_socket.c (ne_sock_create): New function (renamed from
650	create_sock).
651	(ne_sock_connect): Take an ne_socket *, return int.
652	(ne_sock_accept): Likewise.
653	(ne_sock_close): Only call ne_close if fd is non-negative.
654
655	* ne_request.c (aborted): Handle NE_SOCK_* errors specially.
656	(do_connect): Adapt for ne_sock_create/connect interface.  Set
657	sess->connected here on success.
658	(open_connection): Don't set sess->connected here.
659
660Sun Jun 15 12:14:22 2003  Joe Orton  <joe@manyfish.co.uk>
661
662	* ne_ssl.h (ne_ssl_cert_digest): Pass digest as a pointer rather
663	than an array.
664
665Sun Jun 15 11:00:09 2003  Joe Orton  <joe@manyfish.co.uk>
666
667	* ne_stubssl.c (ne_ssl_cert_cmp): Add stub.
668
669Wed May 28 21:37:27 2003  Joe Orton  <joe@manyfish.co.uk>
670
671	* ne_openssl.c (ne_ssl_context_create): Enable workarounds in
672	OpenSSL for better interop with buggy SSL servers.
673
674Fri May 23 23:13:30 2003  Joe Orton  <joe@manyfish.co.uk>
675
676	* ne_stubssl.c (ne_ssl_set_clicert): Add stub.
677
678Sat May 10 17:05:26 2003  Joe Orton  <joe@manyfish.co.uk>
679
680	* ne_xml.c: Rename struct ne_xml_handler to struct handler.
681
682Thu May  8 20:55:46 2003  Joe Orton  <joe@manyfish.co.uk>
683
684	* ne_openssl.c (ne_ssl_clicert_read): Pass "b" to fopen.
685
686Tue May  6 22:08:08 2003  Joe Orton  <joe@manyfish.co.uk>
687
688	* ne_openssl.c (check_certificate): Re-order verify failure
689	handling to allow caller to set a custom session error string.
690
691Tue May  6 20:21:27 2003  Joe Orton  <joe@manyfish.co.uk>
692
693	* ne_md5.c (md5_stream): Restore.
694
695Sat Apr 26 19:21:03 2003  Joe Orton  <joe@manyfish.co.uk>
696
697	* ne_request.c (te_hdr_handler): Treat presence of any T-E
698	response header as implying the response is chunked, regardless of
699	value.
700
701Sat Apr 26 18:11:24 2003  Joe Orton  <joe@manyfish.co.uk>
702
703	* ne_xml.c: Rename struct ne_xml_nspace to struct namespace.
704
705Wed Apr 23 22:19:29 2003  Joe Orton  <joe@manyfish.co.uk>
706
707	* ne_openssl.c (ne_ssl_cert_export): Don't bother checking for
708	i2d_X509() failure; no OpenSSL code ever checks, so everyone's
709	doomed if it really can fail.
710
711Wed Apr 23 22:01:23 2003  Joe Orton  <joe@manyfish.co.uk>
712
713	* ne_openssl.c (ne_ssl_cert_import, ne_ssl_cert_export,
714	ne_ssl_cert_write): Clear OpenSSL error stack on errors.
715
716Wed Apr 23 18:23:53 2003  Joe Orton  <joe@manyfish.co.uk>
717
718	* ne_stubssl.c (ne_ssl_cert_write, ne_ssl_cert_import,
719	ne_ssl_cert_export): Add stubs.
720
721Wed Apr 23 14:05:32 2003  Joe Orton  <joe@manyfish.co.uk>
722
723	* ne_openssl.c (ne_ssl_cert_write): New function.
724
725Tue Apr 22 23:21:22 2003  Joe Orton  <joe@manyfish.co.uk>
726
727	* ne_string.c (ne_unbase64): Optimise out some redundant branches.
728
729Tue Apr 22 20:24:44 2003  Joe Orton  <joe@manyfish.co.uk>
730
731	* ne_openssl.c (ne_ssl_cert_export, ne_ssl_cert_import,
732	ne_ssl_cert_cmp): New functions.
733
734Tue Apr 22 18:31:55 2003  Joe Orton  <joe@manyfish.co.uk>
735
736	* ne_string.c (ne_unbase64): New function.
737
738Tue Apr 22 15:53:41 2003  Joe Orton  <joe@manyfish.co.uk>
739
740	* ne_string.c (ne_base64): Fix encoding binary data; take unsigned
741	argument.
742
743Tue Apr 22 13:07:48 2003  Joe Orton  <joe@manyfish.co.uk>
744
745	* ne_stubssl.c (ne_ssl_cert_validity): Add stub.
746
747Tue Apr 22 09:22:26 2003  Joe Orton  <joe@manyfish.co.uk>
748
749	* ne_openssl.c (ne_ssl_cert_validity): New function.
750	(asn1time_to_string): Format into a fixed-size buffer.
751
752Tue Apr 22 08:38:30 2003  Joe Orton  <joe@manyfish.co.uk>
753
754	* ne_locks.c (ne_lock_discover, ne_lock): Don't leak the cdata
755	buffer.
756
757	* ne_props.c (ne_propfind_destroy): Don't leak the value buffer.
758
759Mon Apr 21 23:52:25 2003  Joe Orton  <joe@manyfish.co.uk>
760
761	* ne_xml.c (ne_xml_destroy): Free root element.
762
763Mon Apr 21 23:46:17 2003  Joe Orton  <joe@manyfish.co.uk>
764
765	* ne_openssl.c (dup_client_cert): Set decrypted state; dup the
766	friendly name.
767	(ne_ssl_clicert_free): Free friendly name.
768
769Mon Apr 21 19:44:55 2003  Joe Orton  <joe@manyfish.co.uk>
770
771	* ne_md5.h (ne_md5_buffer, ne_md5_stream): Remove unused
772	functions.
773
774Mon Apr 21 18:17:14 2003  Joe Orton  <joe@manyfish.co.uk>
775
776	* ne_locks.c, ne_207.c: s/NE_ELM_/ELM_/ since no element ids are
777	exported.
778
779Mon Apr 21 16:38:14 2003  Joe Orton  <joe@manyfish.co.uk>
780
781	Redesign the XML interface: have startelm callback map {nspace,
782	name} onto a state integer or decline.  Remove "valid"/"invalid";
783	don't abort the parse if no handler accepts an element.  Push
784	cdata accumulation down into the caller; drop collect mode,
785	stripws mode.
786
787	* ne_xml.h (ne_xml_elmid, struct ne_xml_elm): Removed.
788	(ne_xml_startelm_cb): Return a state/acceptance integer, take a
789	state integer, nspace, name and atts.
790	(ne_xml_endelm_cb, ne_xml_cdata_cb): Take a state integer.
791	(ne_xml_push_mixed_handler): Removed.
792	(ne_xml_push_handler): Removed element list argument.
793	(struct ne_xml_idmap, ne_xml_mapid): New interface.
794
795	* ne_xml.c (struct element): Replaces ne_xml_state.  Add name,
796	nspace, state fields.
797	(friendly_name, find_handler, parse_element,
798	ne_xml_push_mixed_handler, push_handler): Removed functions.
799	(declare_nspaces, expand_qname): Factored out from find_handler
800	and parse_element.
801	(start_element): Use expand_qname, declare_nspaces.  Find
802	appropriate handler here.  Guarantee not to pass a NULL atts array
803	to the start-element callback.  Drop collect mode.
804	(end_element): Drop collect mode
805	(ne_xml_push_handler): Fold push_handler back in.
806	(ne_xml_mapid): New function.
807
808	* ne_207.h (NE_ELM_*): Don't export element id.
809	(NE_207_STATE_PROP, NE_207_STATE_TOP): Export state integers.
810
811	* ne_207.c (struct ne_207_parser_s): Add cdata field.
812	(map207): Replace element list with idmap array.
813	(can_handle): New function, replacing check_context logic.
814	(start_element): Determine new state integer; only accept the
815	element in valid states.  Clear cdata.
816	(end_element): Use state rather than element id.  Do nothing for
817	end of 'response' element if element is incomplete.
818	(ne_207_create): Create cdata buffer.
819	(ne_207_destroy): Destroy cdata buffer.
820	(ne_207_ignore_unknown): Removed function.
821	(ne_simple_request): Don't call ne_207_ignore_unknown.
822
823	* ne_props.h (NE_PROPS_STATE_TOP): Define state.
824
825	* ne_props.c (struct ne_propfind_handler_s): Add value and depth
826	fields.
827	(ELM_flatprop): Define state.
828	(flat_elms): Removed array.
829	(chardata): Append to value field when in ELM_flatprop state.
830	(startelm): Decline everything other than elements within the
831	'prop' state.  Collect flatprop contents.
832	(endelm): Collect flatprop contents.
833
834	* ne_locks.c (struct discover_ctx, struct lock_ctx): Store cdata.
835	(element_map): Replace element list with idmap array.
836	(can_accept): Replaces check_context callback.
837	(ld_startelm, lk_cdata, ld_cdata): New functions.
838
839Mon Apr 14 00:04:20 2003  Joe Orton  <joe@manyfish.co.uk>
840
841	* ne_207.h (ne_207_start_response, ne_207_end_response,
842	ne_207_start_propstat, ne_207_end_propstat): Use ANSI-style
843	function pointers in typedefs.
844
845	* ne_207.c (struct ne_207_parser_s): Updated accordingly.
846
847Mon Apr 14 00:02:10 2003  Joe Orton  <joe@manyfish.co.uk>
848
849	* ne_request.c (read_response_block): Better error messages for
850	invalid chunks, don't use strncmp for a two-character comparison.
851
852Mon Apr  7 22:26:50 2003  Joe Orton  <joe@manyfish.co.uk>
853
854	* ne_stubssl.c (ne_ssl_cert_identity): New function.
855
856Mon Apr  7 22:16:16 2003  Joe Orton  <joe@manyfish.co.uk>
857
858	* ne_openssl.c (struct ne_ssl_certificate_s): Add identity field.
859	(check_identity): Add optional identity argument.
860	(populate_cert): Retrieve cert identity using check_identity.
861	(check_certificate): Pass extra NULL to check_identity.
862	(ne_ssl_cert_identity): New function.
863	(ne_ssl_cert_free): Free the identity field.
864
865Mon Apr  7 21:29:54 2003  Joe Orton  <joe@manyfish.co.uk>
866
867	* ne_openssl.c (check_identity): Take a string hostname rather
868	than a session object.
869	(check_certificate): Adjust accordingly.
870
871Sun Apr  6 21:26:05 2003  Joe Orton  <joe@manyfish.co.uk>
872
873	* ne_string.h (NE_HEX2ASC): Cast result to char to avoid warnings
874	with some compilers.
875
876Sun Apr  6 20:11:42 2003  Joe Orton  <joe@manyfish.co.uk>
877
878	* ne_openssl.c (ne_ssl_readable_dname): Include commonName or
879	emailAddress in returned string if either is the only attribute.
880
881Sun Mar 30 10:54:20 2003  Joe Orton  <joe@manyfish.co.uk>
882
883	Split decryption of client certs into two steps
884
885	* ne_openssl.c (ne_ssl_clicert_encrypted, ne_ssl_clicert_decrypt):
886	New functions.
887	(ne_ssl_client_cert_s): Add p12 and decrypted fields.
888	(find_friendly_name): New function.
889	(get_friendly_name): Removed function.
890	(ne_ssl_clicert_read): Drop password callback; on decrypt failure,
891	extract friendly name and set decrypted state of clicert.
892
893Sun Mar 30 10:54:01 2003  Joe Orton  <joe@manyfish.co.uk>
894
895	* ne_stubssl.c (ne_ssl_clicert_encrypted, ne_ssl_clicert_decrypt):
896	New stubs.
897	(ne_ssl_clicert_read): Adjusted for API change.
898
899Sat Mar 29 14:23:37 2003  Joe Orton  <joe@manyfish.co.uk>
900
901	* ne_openssl.c (ne_ssl_dname_cmp): New function.
902
903	* ne_stubssl.c (ne_ssl_dname_cmp): New function.
904
905Sat Mar 29 13:52:47 2003  Joe Orton  <joe@manyfish.co.uk>
906
907	* ne_openssl.c (struct ne_ssl_client_cert_s): Add 'friendly_name'
908	field.
909	(get_friendly_name, ne_ssl_clicert_name): New functions.
910	(ne_ssl_clicert_read): Store the cert's friendly name.
911
912	* ne_stubssl.c (ne_ssl_clicert_name): New function.
913
914Sat Mar 29 13:16:14 2003  Joe Orton  <joe@manyfish.co.uk>
915
916	* ne_openssl.c (ne_ssl_clicert_owner): New function.
917
918Fri Mar 28 22:12:57 2003  Joe Orton  <joe@manyfish.co.uk>
919
920	* ne_stubssl.c (ne_ssl_cert_digest): New function.
921
922	* ne_openssl.c (ne_ssl_cert_digest): New function.
923
924Wed Mar 26 20:41:57 2003  Joe Orton  <joe@manyfish.co.uk>
925
926	* ne_session.c (ne_ssl_trust_cert) [NEON_SSL]: Only build when SSL
927	support is present.
928
929Wed Mar 26 20:01:00 2003  Joe Orton  <joe@manyfish.co.uk>
930
931	Begin abstraction of SSL layer to better isolate
932	SSL-library-specific code, and to improve certificate handling
933	interface.
934
935	Drop support for PEM-encoded client certificates.
936
937	* ne_session.h (ne_ssl_trust_cert): Replaces ne_ssl_load_ca, in
938	conjunction with ne_ssl_load_cert.
939	(ne_ssl_trust_default_ca): Replaces ne_ssl_load_default_ca.
940	(ne_ssl_keypw_prompt): Removed function, no longer needed.
941	(ne_ssl_set_clicert): Replaces ne_ssl_load_pkcs12, in conjunction
942	with ne_ssl_clicert_read.
943	(ne_ssl_provide_clicert): Replaces ne_ssl_provide_ccert, callback
944	type changed.
945
946	* ne_openssl.c: New file; much code moved from ne_session.c.
947
948	* ne_privssl.h: New file, private interface between ne_socket.c
949	and ne_openssl.c.
950
951	* ne_ssl.h: New file.
952
953	* ne_private.h (struct ne_session_s): Store pointers to
954	ne_ssl_client_cert etc opaque objects, not OpenSSL structures.
955
956	* ne_session.c: Most of ne_ssl_* moved to ne_openssl.c.
957	(ne_session_create, ne_session_destroy): Use ne_ssl_cert_* etc to
958	manage cert objects.
959
960	* ne_socket.c (struct ne_socket_s): Replace SSL *, SSL_CTX *
961	pointers with an ne_ssl_socket * pointer.
962	(readable_ossl, error_ossl, read_ossl, write_ossl, ne_sock_close):
963	Compensate for above change.
964	(ne_sock_use_ssl): Removed function.
965	(ne_sock_switch_ssl): Pass in SSL * as void for time being.
966	(ne_sock_connect_ssl): Renamed and cleaned up version of
967	ne_sock_use_ssl_os.
968	(ne_sock_sslsock): New function.
969
970	* Makefile.in: Add deps for ne_openssl.c.
971
972Sun Mar 23 13:02:58 2003  Joe Orton  <joe@manyfish.co.uk>
973
974	* ne_session.c (ne_set_useragent): Use ne_malloc.
975
976Sat Mar 22 21:06:45 2003  Joe Orton  <joe@manyfish.co.uk>
977
978     * ne_socket.c (raw_connect): Fill in sin6_family or sin_family
979     since AIX 4.3 fails to do so.
980
981Wed Mar 19 20:44:11 2003  Joe Orton  <joe@manyfish.co.uk>
982
983	* ne_session.c [NEON_SSL] (free_client_cert): Build conditional on
984	NEON_SSL.
985
986Mon Mar 17 20:33:32 2003  Joe Orton  <joe@manyfish.co.uk>
987
988	* ne_socket.c: Include netdb.h conditional on HAVE_NETDB_H. (fix
989	build for older versions of CygWin).
990
991Sun Mar 16 23:30:20 2003  Joe Orton  <joe@manyfish.co.uk>
992
993	* ne_session.c (check_identity): Fix leak of subject alt. name
994	structures.
995
996Sun Mar 16 19:21:22 2003  Joe Orton  <joe@manyfish.co.uk>
997
998	* ne_session.c (free_client_cert): New function.
999	(ne_session_destroy, ne_ssl_load_pem, ne_ssl_load_pkcs12): Call
1000	it; prevent memory leak if ne_ssl_load_{pem,pkcs12} are called >1
1001	per session.
1002
1003Sun Mar 16 18:00:34 2003  Joe Orton  <joe@manyfish.co.uk>
1004
1005	* ne_session.c (provide_client_cert): Free peer certificate after
1006	use.
1007	(ne_session_destroy): Free client cert and key if present.
1008
1009Sun Mar 16 14:23:05 2003  Joe Orton  <joe@manyfish.co.uk>
1010
1011	* ne_xml.c [HAVE_EXPAT]: Include xmlparse.h for bundled expat
1012	build.
1013
1014	* ne_utils.c: Only include expat.h if HAVE_XMLPARSE_H is not
1015	defined.
1016
1017Wed Mar 12 15:04:13 2003  Joe Orton  <joe@manyfish.co.uk>
1018
1019	* ne_redirect.c (struct redirect): Add 'valid' field.
1020	(post_send): Set and clear 'valid' to keep track of whether stored
1021	URI is valid.
1022	(ne_redirect_location): Return NULL if stored URI is not valid.
1023
1024Wed Mar 12 14:52:49 2003  Joe Orton  <joe@manyfish.co.uk>
1025
1026	* ne_uri.c (ne_uri_free): Zero-initialize structure after
1027	free'ing.
1028
1029Tue Mar 11 22:01:11 2003  Joe Orton  <joe@manyfish.co.uk>
1030
1031	* ne_redirect.c (ne_redirect_location): Return NULL if no redirect
1032	session is registered, rather than SEGV; Ralf Mattes
1033	<rm@fabula.de>.
1034
1035Sun Mar  9 16:33:24 2003  Joe Orton  <joe@manyfish.co.uk>
1036
1037	Fix a memory leak if an XML parse error occurs during a PROPFIND
1038	response:
1039
1040	* ne_props.c (ne_propfind_current_private): Return NULL if no
1041	propset is being processed.
1042	(free_propset): Free propset href here.
1043	(end_response): Don't free propset href here.  Set current field
1044	of handler to NULL after free'ing propset.
1045	(ne_propfind_destroy): Free current propset if one was being
1046	processed.
1047
1048Sun Mar  9 11:53:58 2003  Joe Orton  <joe@manyfish.co.uk>
1049
1050	* ne_207.c (ne_207_destroy): Fix possible leak of reason_phrase
1051	string.
1052
1053Sun Mar  9 11:01:15 2003  Joe Orton  <joe@manyfish.co.uk>
1054
1055	* ne_utils.c (ne_parse_statusline): Use ne_strclean.
1056
1057	* ne_session.c (ne_get_error): Use ne_strclean.
1058
1059Sun Mar  9 10:53:52 2003  Joe Orton  <joe@manyfish.co.uk>
1060
1061	* ne_xml.c: Remove broken "UTF-8 decoding" support used for libxml
1062	1.x.
1063
1064Sun Mar  9 09:55:26 2003  Joe Orton  <joe@manyfish.co.uk>
1065
1066	* ne_xml.c: Drop support for expat < 1.95.0 and libxml 1.x.
1067
1068	* ne_utils.c (version_string): Include expat version string.
1069
1070Sun Mar  9 09:54:00 2003  Joe Orton  <joe@manyfish.co.uk>
1071
1072	* ne_socket.c: Don't declare h_errno on Win32 either.
1073
1074Sun Mar  9 08:49:40 2003  Joe Orton  <joe@manyfish.co.uk>
1075
1076	* ne_string.c (do_concat) [HAVE_STPCPY]: Use stpcpy rather than
1077	strlen/memcpy, when available.
1078
1079Mon Mar  3 22:17:04 2003  Joe Orton  <joe@manyfish.co.uk>
1080
1081	* ne_socket.c [!USE_GETADDRINFO && !HAVE_DECL_H_ERRNO): Declare
1082	h_errno (fix build on SCO OpenServer 5.0).
1083
1084Sat Mar  1 21:22:19 2003  Joe Orton  <joe@manyfish.co.uk>
1085
1086	* ne_redirect.c (free_redirect): Fix once-per-session memory leak.
1087
1088Sat Mar  1 20:23:47 2003  Joe Orton  <joe@manyfish.co.uk>
1089
1090	Add implemention of simple memory leak tracking, for testing
1091	purposes.
1092
1093	* ne_alloc.c [NEON_MEMLEAK] (tracking_malloc, ne_free_ml,
1094	ne_malloc_ml, ne_calloc_ml, ne_realloc_ml, ne_strdup_ml,
1095	ne_strndup_ml, ne_memleak_dump): New functions.
1096
1097	* memleak.h: New header.
1098
1099Sat Mar  1 13:44:26 2003  Joe Orton  <joe@manyfish.co.uk>
1100
1101	First step towards automated memory leak tests.
1102
1103	* ne_alloc.c (ne_free): New function.
1104
1105	* All files: replace use of free() with ne_free().
1106
1107Sat Mar  1 09:48:39 2003  Joe Orton  <joe@manyfish.co.uk>
1108
1109	* ne_uri.c (ne_path_unescape): Fix memory leak on invalid URI.
1110
1111Sat Mar  1 08:03:18 2003  Joe Orton  <joe@manyfish.co.uk>
1112
1113	* ne_string.c (ne_strclean): New function.
1114
1115Wed Feb 26 21:45:12 2003  Joe Orton  <joe@manyfish.co.uk>
1116
1117	* ne_request.c (ne_begin_request, proxy_tunnel, open_connection)
1118	[NEON_SSL] Don't build CONNECT tunnel support code if SSL is not
1119	supported.
1120
1121Wed Feb 26 21:44:18 2003  Joe Orton  <joe@manyfish.co.uk>
1122
1123	* ne_utils.c (ne_debug_init): Allow ne_debug_init(NULL, 0) to turn
1124	off debugging.  Fix to produce debug output if the any of the
1125	specified "channels" are active, not all.  (also fixing
1126	NE_DBG_FLUSH support).
1127
1128Tue Feb 25 23:12:31 2003  Joe Orton  <joe@manyfish.co.uk>
1129
1130	* ne_compress.c (process_footer): Mention number of extra bytes in
1131	error message for oversized footer.
1132
1133Sun Feb 23 21:19:20 2003  Joe Orton  <joe@manyfish.co.uk>
1134
1135	* ne_auth.c (verify_response): Fix to parse nonce count as hex
1136	string rather than decimal; fix verification of >9 responses.
1137
1138Thu Feb 13 20:35:45 2003  Joe Orton  <joe@manyfish.co.uk>
1139
1140	* ne_session.c (ne_set_useragent): Fix to append "neon/x.y.z" to
1141	application-supplied token rather prepend.
1142
1143Thu Feb 13 09:06:22 2003  Joe Orton  <joe@manyfish.co.uk>
1144
1145	* ne_request.c (open_connection): Fix for CONNECT tunnelling
1146	(regression since 0.23.x), thanks to Nathan Hand
1147	<Nathan.Hand@defence.gov.au>.
1148
1149Mon Feb  3 22:10:54 2003  Joe Orton  <joe@manyfish.co.uk>
1150
1151	Implement Daniel Stenberg's trick to avoid the slow AF_UNSPEC
1152	lookups on Linux:
1153
1154	* ne_socket.c (init_ipv6, ipv6_disabled): New function and global.
1155	(ne_sock_init): Call init_ipv6.
1156	(ne_addr_resolve) [USE_GETADDRINFO]: Pass AF_INET in hints if
1157	ipv6_disabled is set.
1158
1159Mon Feb  3 20:55:47 2003  Joe Orton  <joe@manyfish.co.uk>
1160
1161	* ne_socket.c [__hpux && USE_GETADDRINFO]: Undefine
1162	USE_GETADDRINFO to work around broken implementation in HP-UX
1163	11.11.
1164
1165Mon Jan 27 21:39:31 2003  Joe Orton  <joe@manyfish.co.uk>
1166
1167	* ne_socket.c (write_raw): Fix for handling EINTR during write(),
1168	from Sergey N Ushakov.
1169
1170Thu Jan 16 21:59:03 2003  Joe Orton  <joe@manyfish.co.uk>
1171
1172	Allow _init after _finish to succeed: Sergey N Ushakov.
1173	* ne_socket.c (init_result): New global variable.
1174	(ne_sock_init): Use init_result global rather than result.
1175	(ne_sock_finish): Clear init_result.
1176
1177Fri Dec 27 17:03:17 2002  Joe Orton  <joe@manyfish.co.uk>
1178
1179	* ne_request.c (build_request): Remove redundant call to
1180	ne_buffer_clear.
1181
1182Fri Dec 27 14:38:08 2002  Joe Orton  <joe@manyfish.co.uk>
1183
1184	* ne_request.c (ne_request_create): strdup the method string.
1185	(ne_request_destroy): free the method.
1186
1187Mon Dec 23 17:04:32 2002  Joe Orton  <joe@manyfish.co.uk>
1188
1189	* ne_socket.c (ne_write, ne_read, ne_close, ne_errno): Renamed
1190	macros from NEON_WRITE, NEON_READ, NEON_CLOSE, NEON_ERRNO.
1191	All callers changed.
1192
1193Mon Dec 23 16:58:43 2002  Joe Orton  <joe@manyfish.co.uk>
1194
1195	Add proper Win32 socket error handling, merged efforts of Johan
1196	Lindh and Sergey N Ushakov <ushakov@int.com.ru>:
1197
1198	* ne_socket.c (ne_errno, NE_ISINTR, NE_ISRESET, NE_ISCLOSED): New
1199	macros.
1200	[WIN32] (print_error): New function.
1201	(set_strerror) [WIN32]: Use print_error.
1202	(readable_raw, read_raw, write_raw): Use new error handling
1203	macros.
1204	(ne_addr_resolve) [WIN32]: Use WSAGetLastError() rather than
1205	h_errno.
1206	(ne_addr_error) [WIN32]: Use print_error.
1207
1208Tue Dec 10 21:41:26 2002  Joe Orton  <joe@manyfish.co.uk>
1209
1210	* ne_socket.c (ne_iaddr_print): Renamed from ne_addr_print for
1211	consistency with other ne_iaddr_ functions.
1212
1213Sun Dec  8 20:08:31 2002  Joe Orton  <joe@manyfish.co.uk>
1214
1215	* ne_auth.c (get_cnonce): Use GetCurrentThreadId() on Win32.
1216
1217Sun Nov 24 18:45:32 2002  Joe Orton  <joe@manyfish.co.uk>
1218
1219	* ne_auth.c: Remove qop_values and algorithm_names arrays.
1220	(request_digest): Inlined qop, algorithm name lookups accordingly.
1221
1222Sun Nov 24 16:45:39 2002  Joe Orton  <joe@manyfish.co.uk>
1223
1224	* ne_auth.h: Renamed ne_request_auth typedef to ne_auth_creds.
1225
1226	* ne_auth.c (auth_session): Renamed reqcreds, recreds_ud fields to
1227	creds, userdata.
1228	(auth_register, ne_set_proxy_auth, ne_set_server_auth): Update for
1229	ne_request_auth rename.
1230
1231Fri Nov 22 17:39:35 2002  Joe Orton  <joe@manyfish.co.uk>
1232
1233	* ne_auth.c (auth_challenge): Fix support for RFC2617-style digest
1234	auth; notice the qop= parameter in challenge.  Fix leak of parsed
1235	qop array.
1236
1237Fri Nov 22 17:08:01 2002  Joe Orton  <joe@manyfish.co.uk>
1238
1239	* ne_auth.c (get_cnonce): Rewrite to use either pseudo-random data
1240	from the SSL library (if available), or really-not-random data
1241	from gettimeofday/getpid otherwise.
1242
1243Sun Nov 17 22:13:49 2002  Joe Orton  <joe@manyfish.co.uk>
1244
1245	* ne_socket.c (ne_addr_print) [USE_GETADDRINFO]: Use the SACAST()
1246	macro.
1247
1248Sun Nov 17 19:29:23 2002  Joe Orton  <joe@manyfish.co.uk>
1249
1250	* ne_socket.c (ne_sock_connect): Make address argument const.
1251	(raw_connect): Make address argument const; adjust to use a copy
1252	of the sockaddr structure, which is correct anyway.
1253	(ne_addr_first, ne_addr_next): Make return pointer const.
1254
1255	* ne_private.h (struct host_info): Store current address as const.
1256
1257Sun Nov 17 19:03:01 2002  Joe Orton  <joe@manyfish.co.uk>
1258
1259	* ne_socket.c (ne_register_progress): Removed function.
1260
1261	* ne_socket.h (ne_block_reader, ne_progress,
1262	ne_register_progress): Removed.
1263
1264	* ne_request.c (do_connect): Don't call ne_register_progress.
1265
1266	* ne_request.h: Add ne_block_reader typedef.
1267
1268	* ne_session.h: Include sys/types.h; add ne_progress typedef.
1269
1270Sun Nov 17 18:59:29 2002  Joe Orton  <joe@manyfish.co.uk>
1271
1272	* ne_socket.c (ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_free):
1273	New functions.
1274
1275Mon Nov 11 19:51:24 2002  Joe Orton  <joe@manyfish.co.uk>
1276
1277	Allow discovery of document encoding.
1278
1279	* ne_xml.c [HAVE_EXPAT]: (struct ne_xml_parser_s): Add encoding
1280	field.  (decl_handler): New function.
1281	(ne_xml_doc_encoding): New function.
1282
1283Mon Nov 11 19:48:43 2002  Joe Orton  <joe@manyfish.co.uk>
1284
1285	* ne_xml.c (sax_handler): Use sax_error for fatal error callback.
1286
1287Fri Oct 11 23:50:01 2002  Joe Orton  <joe@manyfish.co.uk>
1288
1289	* ne_private.h (struct ne_session_s): Change 'connected' to be a
1290	simple boolean flag.
1291
1292	* ne_session.c (ne_close_connection): Treat 'connected' as a
1293	boolean.
1294
1295	* ne_request.c (open_connection): Greatly simplified.
1296
1297Fri Oct 11 00:46:52 2002  Joe Orton  <joe@manyfish.co.uk>
1298
1299	* ne_props.c (end_propstat): Fix NULL pointer dereference
1300	if no status object is given.
1301
1302Tue Oct  8 20:10:24 2002  Joe Orton  <joe@manyfish.co.uk>
1303
1304	* ne_xml.c (ne_xml_create) [!HAVE_EXPAT]: Set 'replaceEntities'
1305	flag in created parser so that entities are dereferenced in
1306	attribute values.
1307
1308Mon Oct  7 22:08:46 2002  Joe Orton  <joe@manyfish.co.uk>
1309
1310	* ne_socket.c (init_ssl): Attempt to seed PRNG using EGD socket at
1311	path EGD_PATH or a set of predetermined locations if EGD_PATH is
1312	not defined.  No longer try $EGDSOCKET or $HOME/.entropy.
1313
1314Mon Oct  7 21:32:33 2002  Joe Orton  <joe@manyfish.co.uk>
1315
1316	* ne_auth.c (register_hooks): Removed function.
1317	(auth_register): Fold in register_hooks.
1318
1319Tue Sep 24 21:24:44 2002  Joe Orton  <joe@manyfish.co.uk>
1320
1321	* ne_request.c (ne_request_create): Pass Request-URI to
1322	create_request hooks.
1323
1324Tue Sep 24 20:42:45 2002  Joe Orton  <joe@manyfish.co.uk>
1325
1326	* ne_socket.c [__hpux]: Define _XOPEN_SOURCE_EXTENDED to 1, to
1327	pick up h_errno definition on HP-UX 10.20.
1328
1329Wed Sep 18 21:46:28 2002  Joe Orton  <joe@manyfish.co.uk>
1330
1331	* ne_compress.c (struct ne_decompress_s): Add zstrinit field.
1332	(gz_reader): Set zstrinit after inflateInit2 succeeds.
1333	(ne_decompress_destroy): Only call inflateEnd if zstrinit is set.
1334
1335Wed Sep 18 19:56:00 2002  Joe Orton  <joe@manyfish.co.uk>
1336
1337	* ne_auth.c: Remove incomplete domain support.
1338
1339Tue Sep 17 21:05:11 2002  Joe Orton  <joe@manyfish.co.uk>
1340
1341	Fix rejection of server certificates which have commonName as the
1342	least specific attribute.
1343
1344	* ne_session.c (check_identity): Don't ignore commonName if it is
1345	the least specific attribute.
1346
1347Tue Sep 10 21:08:18 2002  Joe Orton  <joe@manyfish.co.uk>
1348
1349	* ne_request.c (lookup_host): Destroy cached address if resolve
1350	fails; fix segfault if a second request in the session is
1351	dispatched after the DNS lookup fails on the first.
1352
1353Mon Sep  9 22:26:03 2002  Joe Orton  <joe@manyfish.co.uk>
1354
1355	* ne_request.c (RETRY_RET): Treat SSL truncation as a legitimate
1356	persistent connection timeout.
1357
1358Fri Aug 30 21:58:45 2002  Joe Orton  <joe@manyfish.co.uk>
1359
1360	* ne_request.c (read_response_block): Clear can_persist flag if an
1361	EOF was read (fix for read-till-EOF response terminated by an
1362	unclean SSL shutdown).
1363
1364Mon Aug 26 18:05:00 2002  Joe Orton  <joe@manyfish.co.uk>
1365
1366	* ne_socket.c: Fix HAVE_LIMITS check (Blair Zajac).
1367
1368Sun Aug 25 23:29:06 2002  Joe Orton  <joe@manyfish.co.uk>
1369
1370	* ne_request.c (do_connect): Add debug message for connection
1371	attempt.
1372
1373Sun Aug 25 22:54:04 2002  Joe Orton  <joe@manyfish.co.uk>
1374
1375	* ne_socket.h (ne_addr_print): Make address argument const.
1376
1377Sun Aug 25 11:52:32 2002  Joe Orton  <joe@manyfish.co.uk>
1378
1379	* ne_socket.c (ne_addr_print): New function.
1380
1381Sun Aug 25 10:09:10 2002  Joe Orton  <joe@manyfish.co.uk>
1382
1383	Fix interop with Tomcat/3.2 SSL server, which performs an unclean
1384	shutdown on an HTTP/1.0 response without a C-L header.
1385
1386	* ne_request.c (read_response_block): Ignore SSL connection
1387	truncation for a read-till-EOF response, where no reseponse
1388	content has been read yet.
1389	(ne_read_response_block): Always increase 'total' counter.
1390
1391Sun Aug 25 08:47:41 2002  Joe Orton  <joe@manyfish.co.uk>
1392
1393	* ne_request.c (aborted): Handle code=0 case specifically, and
1394	NE_SOCK_* as default.
1395
1396Sun Aug 25 08:24:48 2002  Joe Orton  <joe@manyfish.co.uk>
1397
1398	* ne_socket.h: Add `NE_SOCK_TRUNC' return value.
1399
1400	* ne_socket.c (error_ossl): Return NE_SOCK_TRUNC when an EOF is
1401	received without a close_notify.
1402
1403Sat Aug 24 17:37:14 2002  Joe Orton  <joe@manyfish.co.uk>
1404
1405	* ne_socket.h (ne_inet_addr): New type.
1406	(ne_addr_first, ne_addr_next): New public interface.
1407	(ne_sock_connect): Change first parameter to ne_inet_addr.
1408
1409	* ne_socket.c: Predefine ne_inet_addr for ne_socket.h, replacing
1410	ne_raw_addr.
1411	(ne_addr_first, ne_addr_first): Renamed from addr_first,
1412	addr_next; return type now ne_inet_addr; made public.
1413	(ne_sock_connect): Fold in make_socket() macro; just connect to
1414	single IP address passed in.
1415
1416	* ne_private.h (struct host_info): Renamed 'addr' to 'address',
1417	dded 'current' field, removed 'resolved' field.
1418
1419	* ne_request.c (lookup_host): Adjust for addr->address rename.
1420	(ne_begin_request): Call lookup_host if 'address' is NULL in
1421	host_info structure, don't use 'resolved' flag.
1422	(do_connect): Replaces init_socket; factor more code out from
1423	open_connection.  Loop over available addresses until an
1424	ne_sock_connect call succeeds.
1425	(open_connection): Moved code into do_connect.
1426
1427	* ne_session.c (ne_session_destroy): Adjust for addr->address
1428	rename.
1429
1430Sat Aug 24 13:45:26 2002  Joe Orton  <joe@manyfish.co.uk>
1431
1432	* ne_string.c (count_concat, do_concat): Compact into while()
1433	loops.
1434
1435Sat Aug 24 13:36:04 2002  Joe Orton  <joe@manyfish.co.uk>
1436
1437	* ne_private.h (VERSION_PRE11): Removed macro.
1438	(struct ne_session_s): Add is_http11 field; removed version_major,
1439	version_minor fields.
1440
1441	* ne_request.c (add_fixed_headers): Use is_http11 flag rather than
1442	VERSION_PRE11 macro.
1443	(ne_begin_request): Set and use is_http11 flag.
1444
1445	* ne_session.c (ne_version_pre_http11): Use is_http11 flag.
1446	(ne_session_create): Don't set version_major, version_minor fields.
1447
1448Sat Aug 24 09:00:13 2002  Joe Orton  <joe@manyfish.co.uk>
1449
1450	* ne_request.c (struct ne_request_s): Removed abs_path field.
1451	(ne_set_request_uri): Removed function.
1452	(ne_request_create): Set req->uri to be the actual Request-URI.
1453	Don't use an absoluteURI in Request-URI if using SSL via a proxy
1454	tunnel, or if passed-in path does not begin with a '/'.
1455	(build_request): Use pre-determined Request-URI.
1456	(proxy_tunnel): Pass true Request-URI to ne_request_create.
1457	(ne_request_destroy): Don't free abs_path.
1458
1459Sat Aug 24 00:37:25 2002  Joe Orton  <joe@manyfish.co.uk>
1460
1461	* ne_request.c (aborted): Fix handling of _CLOSED and _TIMEOUT
1462	socket errors, and of non-socket errors.  Presume ne_sock_error
1463	cannot return NULL.
1464
1465Sat Aug 24 00:07:33 2002  Joe Orton  <joe@manyfish.co.uk>
1466
1467	* ne_cookies.c (set_cookie_hdl): Ensure that each cookie field is
1468	safe to free().
1469
1470Fri Aug 23 23:46:58 2002  Joe Orton  <joe@manyfish.co.uk>
1471
1472	* ne_request.c (aborted): Close the connection after setting the
1473	session error, otherwise the socket error is lost.
1474
1475Fri Aug 23 22:50:30 2002  Joe Orton  <joe@manyfish.co.uk>
1476
1477	* ne_socket.c (ne_sock_init): Set SIGPIPE disposition before SSL
1478	library initalization, so it happens even if SSL library
1479	initialization fails.
1480
1481Fri Aug 23 22:03:26 2002  Joe Orton  <joe@manyfish.co.uk>
1482
1483	* ne_socket.c [USE_GETADDRINFO] (make_socket): Pass SOCK_STREAM to
1484	socket() rather than ai_socktype: on RHL6.2, ai_socktype is
1485	returned as zero.
1486
1487Wed Aug 21 18:06:36 2002  Joe Orton  <joe@manyfish.co.uk>
1488
1489	* ne_socket.c: Reinstate stdlib.h include.
1490
1491	* ne_socket.h: Reinstate sys/socket.h include.
1492
1493Wed Aug 21 12:58:47 2002  Joe Orton  <joe@manyfish.co.uk>
1494
1495	* ne_socket.c (ne_addr_resolve): Accept IPv6 addresses enclosed in
1496	square brackets.
1497
1498Wed Aug 21 09:37:24 2002  Joe Orton  <joe@manyfish.co.uk>
1499
1500	* ne_uri.c (ne_uri_parse): Parse literal IPv6 address using the
1501	RFC2732 `[address]' syntax.
1502
1503Mon Aug 19 17:18:45 2002  Joe Orton  <joe@manyfish.co.uk>
1504
1505	* ne_socket.c (ne_addr_error): Override a horribly generic error
1506	message from gai_strerror().
1507
1508Mon Aug 19 16:24:37 2002  Joe Orton  <joe@manyfish.co.uk>
1509
1510	* ne_socket.h: Remove netinet/in.h etc includes.
1511	(ne_sock_addr): Add new opaque type.
1512	(ne_addr_resolve, ne_addr_result, ne_addr_error, ne_addr_destroy):
1513	New functions.
1514	(ne_sock_connect): Changes address argument to `ne_sock_addr *'.
1515	(ne_name_lookup): Removed function.
1516
1517	* ne_socket.c: Added netinet/in.h etc includes.
1518	(ne_sock_addr, ne_raw_addr): Define types.
1519	(make_socket): New macro.
1520	(ne_addr_resolve): Replace ne_name_lookup; store results (multiple
1521	addresses if returned) in returned ne_sock_addr object.  Use
1522	getaddrinfo() if available.
1523	(raw_connect, addr_first, addr_next, ne_addr_result,
1524	ne_addr_error, ne_addr_destroy): New functions.
1525	(ne_sock_connect): Re-implement to loop through available
1526	addresses until a connect() succeeds; use make_socket, raw_connect
1527	auxiliaries.
1528
1529	* ne_private.h (struct host_info): Store an ne_sock_addr pointer.
1530
1531	* ne_request.c (lookup_host): Use new ne_addr_* interface.
1532
1533	* ne_session.c (ne_session_destroy): Destroy address objects.
1534
1535Mon Aug 19 00:19:49 2002  Joe Orton  <joe@manyfish.co.uk>
1536
1537	* ne_socket.c: Move prng_seeded inside ifdef NEON_SSL region to
1538	prevent unused variable warning for non-SSL build.
1539
1540Sun Aug 18 23:21:21 2002  Joe Orton  <joe@manyfish.co.uk>
1541
1542	* ne_string.h (ne_strerror): Return buffer.
1543
1544Sun Aug 18 23:17:56 2002  Joe Orton  <joe@manyfish.co.uk>
1545
1546	* ne_socket.c (set_error): Use ne_strnzcpy.
1547
1548Sun Aug 18 23:14:07 2002  Joe Orton  <joe@manyfish.co.uk>
1549
1550	* ne_string.c (ne_strerror): Use ne_strnzcpy.
1551
1552Sun Aug 18 23:11:45 2002  Joe Orton  <joe@manyfish.co.uk>
1553
1554	* ne_string.h (ne_strnzcpy): New macro.
1555
1556Sun Aug 18 22:48:27 2002  Joe Orton  <joe@manyfish.co.uk>
1557
1558	* ne_socket.c (ne_sock_init): Check directly for SIGPIPE
1559	definition rather than HAVE_SIGPIPE.
1560
1561Sun Aug 18 13:49:49 2002  Joe Orton  <joe@manyfish.co.uk>
1562
1563	* ne_session.c (set_hostport): Use %u for printing unsigned int.
1564
1565Sun Aug 18 13:47:43 2002  Joe Orton  <joe@manyfish.co.uk>
1566
1567	* ne_utils.h (NE_DBG_SSL): New constant.
1568
1569	* ne_session.c [NEON_SSL] (everywhere): Use NE_DBG_SSL channel for
1570	debugging messages.
1571
1572Sun Aug 18 08:17:19 2002  Joe Orton  <joe@manyfish.co.uk>
1573
1574	* ne_session.c (match_hostname): Fix to use case-insensitive
1575	string comparison.
1576
1577Sun Aug 18 08:10:12 2002  Joe Orton  <joe@manyfish.co.uk>
1578
1579	* ne_session.c (check_identity): Check the commonName if no
1580	alt. names of DNS type were found.
1581
1582Sun Aug 18 07:39:35 2002  Joe Orton  <joe@manyfish.co.uk>
1583
1584	* ne_session.c (check_identity): Use the most specific commonName
1585	attribute found, not the first.  (for RFC2818 compliance)
1586
1587Sun Aug 18 01:54:53 2002  Joe Orton  <joe@manyfish.co.uk>
1588
1589	* ne_session.c (match_hostname): Invert return value.
1590	(check_identity): New function; split out commonName check from
1591	check_certificate, check subjectAltName extension instead if
1592	present.
1593	(check_certificate): Use check_identity.
1594
1595Sat Aug 17 19:59:21 2002  Joe Orton  <joe@manyfish.co.uk>
1596
1597	* ne_session.c (check_certificate): Extend debugging code to dump
1598	the whole certificate chain, but #if 0 it by default.
1599
1600Mon Aug 12 12:04:51 2002  Joe Orton  <joe@manyfish.co.uk>
1601
1602	* ne_request.c (aborted): Use NE_FMT_SSIZE_T to print ssize_t
1603	value.
1604
1605Mon Aug 12 11:08:35 2002  Joe Orton  <joe@manyfish.co.uk>
1606
1607	Support PRNG seeding via EGD to make SSL work on platforms which
1608	lack /dev/random:
1609
1610	* ne_socket.c (init_ssl): New function.
1611	(ne_sock_init): Call init_ssl, set prng_seeded global on success.
1612	(ne_sock_use_ssl_os): Fail early if prng_seeded is not set, and
1613	RAND_status returns false.
1614
1615Tue Aug  6 07:18:30 2002  Joe Orton  <joe@manyfish.co.uk>
1616
1617	* ne_socket.c (ne_sock_use_ssl_os): Remove goto-based error
1618	handling.  Don't call SSL_shutdown after SSL_connect fails.
1619
1620Mon Aug  5 23:18:55 2002  Joe Orton  <joe@manyfish.co.uk>
1621
1622	* ne_session.c (ne_ssl_keypw_prompt): Don't set SSL_CTX default
1623	password callbacks, since these are never invoked.  Implement
1624	once, stub for !NEON_SSL is no longer needed.
1625
1626Mon Aug  5 21:01:54 2002  Joe Orton  <joe@manyfish.co.uk>
1627
1628	* ne_session.c (ne_ssl_load_pem): Pass private key prompt callback
1629	to PEM_read_X509, PEM_read_PrivateKey (patch by Daniel Berlin).
1630	Also handle errors properly; call ERR_get_error() to pop the
1631	errors of the error stack.
1632
1633Mon Aug  5 20:15:10 2002  Joe Orton  <joe@manyfish.co.uk>
1634
1635	* ne_session.c (provide_client_cert): Increase reference count on
1636	key and certificate, to prevent them being free'd too early.
1637
1638Sun Aug  4 22:35:27 2002  Joe Orton  <joe@manyfish.co.uk>
1639
1640	Fix `retry_after_abort' test in request.c:
1641
1642	* ne_request.c (send_request): Don't use the 'persisted' flag
1643	until after a new connection has been opened, when it may have
1644	been reset.
1645
1646Sun Aug  4 17:26:37 2002  Joe Orton  <joe@manyfish.co.uk>
1647
1648	* ne_request.c (struct ne_request_s): Remove reqbuf field.
1649	(ne_request_create, ne_request_destroy): Don't (de)allocate reqbuf.
1650	(build_request): Allocate the returned buffer internally.
1651	(ne_begin_request): Destroy the buffer after use.
1652
1653Sun Aug  4 15:36:01 2002  Joe Orton  <joe@manyfish.co.uk>
1654
1655	* ne_session.c (ne_ssl_load_pem): Close file after use.
1656
1657Sun Aug  4 12:55:49 2002  Joe Orton  <joe@manyfish.co.uk>
1658
1659	Factor out EPIPE, ECONNRESET handling from write_raw:
1660
1661	* ne_socket.c (MAP_ERR): New macro.
1662	(write_raw, error_ossl): Use MAP_ERR.
1663
1664Sun Aug  4 12:25:34 2002  Joe Orton  <joe@manyfish.co.uk>
1665
1666	* ne_socket.c (ne_sock_switch_ssl): New function.
1667
1668Sun Aug  4 12:24:23 2002  Joe Orton  <joe@manyfish.co.uk>
1669
1670	* ne_socket.c (ne_sock_switch_ssl): New function, really just for
1671	test suite.
1672
1673Sat Aug  3 22:11:33 2002  Joe Orton  <joe@manyfish.co.uk>
1674
1675	* ne_auth.c (ne_forget_auth): Fix segfault if either server or
1676	proxy auth is not in use.
1677
1678Sat Aug  3 22:06:32 2002  Joe Orton  <joe@manyfish.co.uk>
1679
1680	* ne_redirect.c (create, post_send, ne_redirect_register,
1681	ne_redirect_location): Updated for new hook interface.
1682
1683Sat Aug  3 19:02:33 2002  Joe Orton  <joe@manyfish.co.uk>
1684
1685	Adjustment of hook interface and use: fixing a design flaw causing
1686	a segfault in the auth hooks when two requests are used
1687	concurrently for a single session during a CONNECT tunnel.
1688
1689	* ne_request.h, ne_session.h:
1690	(ne_get_request_private, ne_get_session_private): Replace
1691	ne_request_hook_private, ne_session_hook_private.
1692	(ne_set_session_private, ne_set_request_private): Replace
1693	ne_hook_session_accessor, ne_hook_request_accessor.
1694
1695	* ne_request.h (ne_create_request_fn, ne_pre_send_fn,
1696	ne_post_send_fn): Add ne_request pointer as first argument.
1697	(ne_hook_destroy_request): Take ne_destroy_req_fn function.
1698	(ne_hook_destroy_session): Take ne_destroy_sess_fn function.
1699
1700	* ne_request.c (struct ne_request_s): Renamed `accessor_hooks'
1701	field to `private'.
1702	(get_private): Renamed from call_access; don't invoke function.
1703	(ne_null_accessor): Removed function.
1704
1705	* ne_auth.c (struct auth_class): Store hook id.
1706	(auth_session): Remove auth_request pointer.
1707	(ah_create): Store auth_request pointer as request-private data.
1708	(ah_pre_send, ah_post_send, ah_destroy): Retrieve auth_request
1709	pointer from request-private data.
1710	(register_hooks, ne_forget_auth): Use
1711	ne_{get,set}_session_private.
1712
1713	* ne_locks.c (struct lh_req_cookie): New structure.
1714	(struct ne_lock_store_s): Remove submit_locks field.
1715	(lk_create, lk_pre_send, submit_lock, ne_lock_using_resource,
1716	ne_lock_using_parent, lk_destroy): Adjust to use lh_req_cookie
1717	pointer as request-private data.
1718
1719	* ne_cookies.c (create, pre_send): Adjust for hook prototype
1720	changes.
1721
1722Wed Jul 31 23:46:17 2002  Joe Orton  <joe@manyfish.co.uk>
1723
1724	* ne_socket.c [NEON_SSL]: Include limits.h for INT_MAX definition.
1725
1726Mon Jul 29 20:55:57 2002  Joe Orton  <joe@manyfish.co.uk>
1727
1728	* ne_auth.c (struct auth_class): New structure; abstracts out
1729	proxy/server generic auth handling more cleanly.
1730	(ah_server_class, ah_proxy_class): Declare variables.
1731	(auth_session): Reference an auth_class structure.
1732	(auth_register): Replaces auth_create.
1733	(ne_set_server_auth, ne_set_proxy_auth): Simplify, use
1734	auth_register.
1735	(everywhere): Reference req_hdr etc via ->spec-> reference.
1736
1737Sun Jul 28 12:29:23 2002  Joe Orton  <joe@manyfish.co.uk>
1738
1739	* ne_request.c (proxy_tunnel): Reset 'persisted' flag, so that a
1740	newly tunnelled connection is not treated as persistent.
1741
1742Sun Jul 28 12:26:49 2002  Joe Orton  <joe@manyfish.co.uk>
1743
1744	* ne_string.h (CONCAT2, CONCAT3, CONCAT4): Removed macros.
1745
1746Thu Jul 25 23:16:00 2002  Joe Orton  <joe@manyfish.co.uk>
1747
1748	* ne_request.c (send_request): Don't clear retry until a
1749	status-line has been read.
1750
1751Thu Jul 25 00:03:17 2002  Joe Orton  <joe@manyfish.co.uk>
1752
1753	* ne_auth.c (basic_challenge, request_basic): Use ne_concat not
1754	the CONCAT? macros.
1755
1756	* ne_basic.c (ne_mkcol): Use ne_concat not the CONCAT2 macro.
1757
1758Wed Jul 24 00:16:39 2002  Joe Orton  <joe@manyfish.co.uk>
1759
1760	* ne_string.c (count_concat, do_concat): Factored out from
1761	ne_buffer_concat.
1762	(ne_buffer_concat): Rewrite to use count_concat, do_concat.
1763	(ne_concat): New (resurrected) function.
1764
1765Thu Jul 18 21:52:12 2002  Joe Orton  <joe@manyfish.co.uk>
1766
1767	* ne_request.c (proxy_tunnel): Don't use server.hostport in
1768	Request-URI; always include `:port' even if default port is used;
1769	fix CONNECT through Inktomi Traffic-Server.
1770
1771Thu Jul 18 21:33:43 2002  Joe Orton  <joe@manyfish.co.uk>
1772
1773	* ne_request.c (aborted, ne_set_request_body_fd): Use ne_strerror.
1774
1775	* ne_session.c (ne_ssl_load_pem, ne_ssl_load_pkcs12): Use ne_strerror.
1776
1777	* ne_basic.c (get_to_fd): Use ne_strerror.
1778
1779Thu Jul 18 20:19:30 2002  Joe Orton  <joe@manyfish.co.uk>
1780
1781	* ne_string.c (ne_strerror): New function.
1782
1783	* ne_socket.c (set_strerror): Move portability logic to
1784	ne_strerror; just use that here.
1785
1786Thu Jul 18 20:00:46 2002  Joe Orton  <joe@manyfish.co.uk>
1787
1788	* ne_socket.c (read_raw, write_raw): Don't re-evaluate 'errno',
1789	per Ulrich Drepper's advice.
1790
1791Wed Jul 17 23:47:01 2002  Joe Orton  <joe@manyfish.co.uk>
1792
1793	* ne_socket.c (struct ne_socket_s): Store buffer for error string.
1794	(set_error, set_strerror): New macros.
1795	(everywhere): Use set_error, set_strerror or ne_snprintf to set
1796	the socket error string.
1797
1798Wed Jul 17 23:19:18 2002  Joe Orton  <joe@manyfish.co.uk>
1799
1800	* ne_utils.c (ne_version_match): Fix inverted minor version test.
1801
1802Sun Jul 14 20:13:59 2002  Joe Orton  <joe@manyfish.co.uk>
1803
1804	* ne_uri.h (ne_uri): Store port as unsigned.
1805
1806	* ne_uri.c (ne_uri_defaultport): Return unsigned int, and zero for
1807	undefined port.
1808
1809Sun Jul 14 20:07:35 2002  Joe Orton  <joe@manyfish.co.uk>
1810
1811	* ne_session.c (ne_session_proxy): Take port parameter as unsigned
1812	int, as per ne_session_create.
1813
1814Sun Jul 14 20:03:21 2002  Joe Orton  <joe@manyfish.co.uk>
1815
1816	* ne_request.c (strip_eol): Take ssize_t 'len' parameter.
1817	(read_message_header): Use ssize_t for 'n'.
1818
1819Sun Jul 14 12:45:40 2002  Joe Orton  <joe@manyfish.co.uk>
1820
1821	* ne_socket.c (ne_sock_use_ssl_os): Unconditionally enable
1822	SSL_MODE_AUTO_RETRY now OpenSSL 0.9.6 is required.
1823
1824Sun Jul 14 12:15:40 2002  Joe Orton  <joe@manyfish.co.uk>
1825
1826	* ne_xml.h (NE_XML_MEDIA_TYPE): New definition.
1827
1828	* ne_acl.c (ne_acl_set),
1829	* ne_props.c (ne_proppatch, propfind): Use NE_XML_MEDIA_TYPE,
1830	rather than hard-coding the incorrect "text/xml" media type.
1831
1832Sun Jul 14 10:53:33 2002  Joe Orton  <joe@manyfish.co.uk>
1833
1834	* ne_utils.c (ne_version_match): Replace ne_version_minimum.
1835
1836Sat Jul 13 11:40:37 2002  Joe Orton  <joe@manyfish.co.uk>
1837
1838	* ne_session.c (ne_negotiate_ssl): Include socket error string in
1839	session error if SSL negotiation fails.
1840
1841Sat Jul 13 11:27:50 2002  Joe Orton  <joe@manyfish.co.uk>
1842
1843	* ne_socket.c (error_ossl): New function.
1844	(ERROR_SSL_STRING): Removed macro.
1845	(CAST2INT): New macro; safety harness for OpenSSL compatibility.
1846	(read_ossl, write_ossl): Use error_ossl, CAST2INT.
1847	(ne_sock_use_ssl_os): Use error_ssl.
1848
1849Sat Jul 13 11:16:07 2002  Joe Orton  <joe@manyfish.co.uk>
1850
1851	* ne_socket.c: Define ECONNRESET as WSAECONNRESET on Win32.
1852
1853Sat Jul 13 10:10:03 2002  Joe Orton  <joe@manyfish.co.uk>
1854
1855	* ne_private.h (struct ne_session_s): Replace 'reqcount' with
1856	'persisted' flag.
1857
1858	* ne_request.c (ne_end_request): Set 'persisted' flag if
1859	connection is left open.
1860	(send_request): Adjust to allow retry if 'persisted' flag is set.
1861	(init_socket): Clear 'persisted' flag here...
1862	(open_connection): ... rather than here.
1863
1864Wed Jul 10 22:51:39 2002  Joe Orton  <joe@manyfish.co.uk>
1865
1866	* ne_request.c (RETRY_RET): Retry on an NE_SOCK_RESET too.
1867	(send_request): Fix to only retry if not on the first request on a
1868	connection (close_not_retried test).
1869
1870Sun Jul  7 20:49:09 2002  Joe Orton  <joe@manyfish.co.uk>
1871
1872	* ne_socket.h: Add NE_SOCK_RESET return value; improve comments.
1873
1874	* ne_socket.c (read_raw, write_raw): Return NE_SOCK_RESET if an
1875	ECONNRESET error is received when reading or writing.
1876
1877Sat Jul  6 13:30:15 2002  Joe Orton  <joe@manyfish.co.uk>
1878
1879	* ne_request.c (read_status_line, discard_headers): New functions,
1880	split out from send_request.
1881	(send_request_body): Move debugging here from send_request.
1882	(RETRY_RET): Renamed from CAN_RETRY.
1883	(send_request): Simplify: remove complex 100-continue graceful
1884	failure logic; use read_status_line, discard_headers, RETRY_RET.
1885	Fix to only send request body once (expect_100_once test case).
1886	Fix to not return NE_RETRY if reading status-line other than the
1887	first fails (fail_eof_continued test case).
1888
1889Fri Jul  5 21:47:49 2002  Joe Orton  <joe@manyfish.co.uk>
1890
1891	* ne_request.c (build_request): Fix from previous commit: clear
1892	the buffer before building the request.
1893
1894Fri Jul  5 21:00:20 2002  Joe Orton  <joe@manyfish.co.uk>
1895
1896	* ne_request.c (build_request): Fold Host header and Request-Line
1897	into single ne_buffer_concat call.  Don't set req->use_expect100
1898	here.  Fold an if/else into an ?:.  Optimise to use
1899	ne_buffer_append to add 100-continue, user-supplied headers, and
1900	trailing EOL, since they all have known lengths.
1901	(send_request): Take request data as argument.
1902	(ne_begin_request): Call build_request here; pass to send_request.
1903	Move Expect100 logic here.
1904
1905Fri Jul  5 17:12:56 2002  Joe Orton  <joe@manyfish.co.uk>
1906
1907	* ne_basic.c (ne_read_file): Removed function.
1908
1909Fri Jul  5 17:10:11 2002  Joe Orton  <joe@manyfish.co.uk>
1910
1911	* ne_compress.c (process_footer): Take unsigned char buffer.
1912	Store calculated CRC in a uLong.
1913	(do_inflate, gz_reader): Cast buffers to unsigned char for
1914	strict compatibility with zlib interface.
1915
1916Wed Jul  3 19:21:17 2002  Joe Orton  <joe@manyfish.co.uk>
1917
1918	* ne_request.c (struct ne_request_s): Use a fixed char array for
1919	respbuf field.
1920	(ne_request_create, ne_request_destroy): Don't allocate respbuf
1921	dynamically.
1922	(send_request): Move 'buffer' to appropriate scope.
1923	(ne_request_dispatch): Remove 'buffer'; read into respbuf.
1924
1925Tue Jul  2 08:35:05 2002  Joe Orton  <joe@manyfish.co.uk>
1926
1927	* ne_request.c (proxy_tunnel): Remove redundant sess->connected
1928	assignment.
1929
1930Sun Jun 30 21:04:50 2002  Joe Orton  <joe@manyfish.co.uk>
1931
1932	* ne_request.c (ne_begin_request): Only set host->resolved if
1933	lookup is successful.
1934
1935Sun Jun 30 18:25:51 2002  Joe Orton  <joe@manyfish.co.uk>
1936
1937	* ne_request.c (SOCK_ERR): New macro.
1938	(struct ne_request_s): Remove 'forced_close' field.
1939	(aborted): Renamed from set_sockerr; also closes connection and
1940	prints message in debug log.
1941	(send_request_body): Don't use set_sockerr or set forced_close.
1942	(read_response_block, read_message_header): Use SOCK_ERR; adjust
1943	to use aborted().
1944	(ne_read_response_block, read_response_headers): Don't set
1945	forced_close.
1946	(CAN_RETRY): New macro.
1947	(send_request): Adjust to use CAN_RETRY(); use aborted() to make
1948	sure connection is closed in error cases.
1949	(ne_begin_request): Don't close connection here in error cases;
1950	don't use forced_close.
1951	(open_connection): Adjust to use aborted() not set_sockerr().
1952
1953Sun Jun 30 17:26:41 2002  Joe Orton  <joe@manyfish.co.uk>
1954
1955	* ne_session.c (ne_close_connection): Clarify debug messages.
1956
1957Sun Jun 30 14:36:11 2002  Joe Orton  <joe@manyfish.co.uk>
1958
1959	* ne_request.c (read_response_block): Fail on chunk size lines
1960	which contain no valid chunk size digits.
1961
1962Sun Jun 30 12:35:35 2002  Joe Orton  <joe@manyfish.co.uk>
1963
1964	* ne_session.c (ne_negotiate_ssl): Use ne_get_session rather
1965	than req->session.
1966
1967	* ne_request.c (struct header_handler, struct body_reader,
1968	struct ne_request_s): Moved from ne_private.h.
1969
1970Sun Jun 30 12:13:58 2002  Joe Orton  <joe@manyfish.co.uk>
1971
1972	Cleanup of response handling:
1973
1974	* ne_private.h (struct ne_response): Replace 'is_chunked' field with
1975	'mode' enum.
1976
1977	* ne_request.c (te_hdr_handler): Set mode.
1978	(connection_hdr_handler): Reset can_persist for 'close'.
1979	(clength_hdr_handler): New function.
1980	(ne_request_create): Use clength_hdr_handler to parse Content-Length
1981	header.
1982	(read_response_block, ne_read_response_block): Adapt for 'mode' enum;
1983	simplify.
1984	(normalize_response_length): Removed function.
1985	(ne_begin_request): Fold in normalize_response_length logic.
1986	(ne_end_request): Simplify logic.
1987
1988Sun Jun 30 11:08:26 2002  Joe Orton  <joe@manyfish.co.uk>
1989
1990	* ne_session.c: Remove X509_NAME workaround in favour of a
1991	neon.mak change.
1992
1993Tue Jun 25 23:14:34 2002  Joe Orton  <joe@manyfish.co.uk>
1994
1995	* ne_session.c: Undefine X509_NAME if it is defined (by a Windows
1996	header).
1997
1998Tue Jun 25 22:51:15 2002  Joe Orton  <joe@manyfish.co.uk>
1999
2000	* ne_socket.c: Rename READ_BUFFER to RDBUFSIZ.
2001
2002Tue Jun 25 21:07:13 2002  Joe Orton  <joe@manyfish.co.uk>
2003
2004	* ne_private.h (struct host_info): Store port as unsigned int.
2005
2006	* ne_session.c (set_hostport, set_hostinfo, ne_session_create):
2007	Take port argument as unsigned int.
2008
2009	* ne_socket.c (ne_sock_connect): Take port argument as unsigned
2010	int.
2011
2012Tue Jun 25 20:59:14 2002  Joe Orton  <joe@manyfish.co.uk>
2013
2014	* ne_utils.h [__GNUCC__] (NE_DEBUG): Remove implementation using
2015	GNU C extensions.
2016
2017Sun Jun 23 22:47:52 2002  Joe Orton  <joe@manyfish.co.uk>
2018
2019	* ne_request.c (set_request_uri): Renamed from ne_set_request_uri;
2020	made static.
2021	(ne_request_create): Update accordingly.
2022
2023	* ne_private.h (ne_set_request_uri): Removed prototype.
2024
2025Sun Jun 23 15:40:57 2002  Joe Orton  <joe@manyfish.co.uk>
2026
2027	* ne_request.c (send_request, ne_request_destroy): Free
2028	reason_phrase now it is malloc-allocated.
2029
2030Sun Jun 23 14:59:04 2002  Joe Orton  <joe@manyfish.co.uk>
2031
2032	Simplify given loss of const qualifier on ne_status.reason_phrase:
2033
2034	* ne_props.c (struct propstat): Remove r_phrase field.
2035	(end_propstat, free_propset): Use status.reason_phrase not
2036	r_phrase field.
2037
2038Sun Jun 23 14:42:22 2002  Joe Orton  <joe@manyfish.co.uk>
2039
2040	* ne_207.h (ne_207_end_response, ne_207_end_propstat): Remove
2041	status_line parameter from callbacks.
2042
2043	* ne_207.c (struct ne_207_parser_s): Remove status_line field.
2044	(end_element): Don't store status_line.
2045	(handle_error): Drop status_line argument, recreate dummy status
2046	line from status object.
2047	(end_response, end_propstat): Drop status_line arguments.
2048
2049	* ne_props.c (end_propstat, end_response): Drop status_line
2050	arguments.
2051
2052Sun Jun 23 14:39:00 2002  Joe Orton  <joe@manyfish.co.uk>
2053
2054	* ne_utils.h (ne_status): Remove const qualifier from
2055	'reason_phrase' field.
2056
2057	* ne_utils.c (ne_parse_statusline): strdup the reason_phrase on
2058	successful return.
2059
2060Sun Jun 23 11:39:24 2002  Joe Orton  <joe@manyfish.co.uk>
2061
2062	* ne_compress.c (struct ne_decompress_s): Replace footer union
2063	with buffer.
2064	(BUF2UINT): New macro.
2065	(process_footer): Convert footer to integer in a portable manner,
2066	using BUF2UINT.
2067
2068Sun Jun 23 09:05:25 2002  Joe Orton  <joe@manyfish.co.uk>
2069
2070	* ne_compress.c (ne_decompress_s): Use unsigned int for 32-bit
2071	integers, not uLong (fix for 64-bit platforms).
2072
2073Wed Jun 19 18:46:40 2002  Joe Orton  <joe@manyfish.co.uk>
2074
2075	* ne_session.c (ne_session_destroy): Don't leak the proxy
2076	hostname.
2077
2078Sun Jun 16 14:09:31 2002  Joe Orton  <joe@manyfish.co.uk>
2079
2080	* ne_request.c (read_response_block): Use NE_FMT_SSIZE_T rather
2081	than %d, cast field precision argument to int.
2082	(ne_pull_request_body): Use ssize_t for store callback return
2083	value, use NE_FMT_SSIZE_T rather than %d, cast field precision
2084	argument to int.
2085
2086Sun Jun 16 12:15:19 2002  Joe Orton  <joe@manyfish.co.uk>
2087
2088	* ne_session.c (ne_negotiate_ssl): Don't leak peer certificate in
2089	error cases.  Fix spelling mistake in error message.
2090
2091Sun Jun 16 11:23:23 2002  Joe Orton  <joe@manyfish.co.uk>
2092
2093	* ne_request.c (open_connection): When SSL negotation fails after
2094	doing CONNECT request, use ne_close_connection so that
2095	sess->connection is reset to 0, and ne_sock_close isn't called
2096	twice for the socket.
2097
2098Wed Jun 12 23:22:20 2002  Joe Orton  <joe@manyfish.co.uk>
2099
2100	* ne_props.c (ne_proppatch): Add missing call to
2101	ne_lock_using_resource.
2102
2103Mon Jun 10 20:45:27 2002  Joe Orton  <joe@manyfish.co.uk>
2104
2105	* ne_auth.c (verify_response): Remove redundant prototype, fix
2106	sscanf format string to use signed integer.
2107
2108Mon Jun 10 20:13:57 2002  Joe Orton  <joe@manyfish.co.uk>
2109
2110	* ne_compress.c (do_inflate): Continue calling inflate() whilst
2111	unconsumed input remains: fix from Justin Erenkrantz
2112	<jerenkrantz@apache.org>.
2113
2114Mon Jun 10 19:53:59 2002  Joe Orton  <joe@manyfish.co.uk>
2115
2116	* ne_socket.c (ne_sock_readline): If a complete line is found in
2117	the buffer, avoid the memmove() and simply copy the line directly
2118	out of the buffer.
2119
2120Sun Jun  9 11:39:20 2002  Joe Orton  <joe@manyfish.co.uk>
2121
2122	* ne_redirect.c (post_send): Perform simple relative URI
2123	resolution.
2124
2125Tue Jun  4 16:51:54 2002  Joe Orton  <joe@manyfish.co.uk>
2126
2127	* ne_uri.c (ne_path_parent): Simplify.
2128
2129Mon Jun  3 17:50:27 2002  Joe Orton  <joe@manyfish.co.uk>
2130
2131	* ne_cookies.c (set_cookie_hdl): Avoid free'ing cookie name/value,
2132	thanks to Dan Mullen.
2133
2134Mon Jun  3 17:45:33 2002  Joe Orton  <joe@manyfish.co.uk>
2135
2136	* ne_string.c (ne_base64): Use size_t for outlen.
2137
2138Mon Jun  3 17:42:34 2002  Joe Orton  <joe@manyfish.co.uk>
2139
2140	* ne_utils.h, ne_socket.h [WIN32]: Move ssize_t definition to
2141	ne_socket.h.
2142
2143Mon Jun  3 17:27:21 2002  Joe Orton  <joe@manyfish.co.uk>
2144
2145	* ne_request.c (read_response_block): Use correct types for
2146	passing to/from ne_sock_*.
2147
2148Mon Jun  3 11:32:20 2002  Joe Orton  <joe@manyfish.co.uk>
2149
2150	* ne_compress.c (ne_decompress_destroy): Don't fail if response
2151	reader callback is never invoked.
2152
2153Sun Jun  2 12:51:35 2002  Joe Orton  <joe@manyfish.co.uk>
2154
2155	* ne_socket.c (read_ossl, read_raw): Call readable_{ossl,raw}
2156	function here.
2157	(ne_sock_read, ne_sock_peek, ne_sock_readline): Remove explicit
2158	calls to ops->readable before ops->read.
2159
2160Thu May 30 22:00:07 2002  Joe Orton  <joe@manyfish.co.uk>
2161
2162	* ne_socket.c (ne_sock_readline): Optimise to use socket read
2163	buffer directly, and use ->read (and ->readable) functions.
2164
2165Tue May 28 17:00:34 2002  Joe Orton  <joe@manyfish.co.uk>
2166
2167	* ne_session.c (ne_session_destroy): Don't free proxy.hostport,
2168	since it's no longer set.
2169
2170Sun May 26 19:11:46 2002  Joe Orton  <joe@manyfish.co.uk>
2171
2172	* ne_xml.c: #error if no expat header is configured; flatten
2173	nested #if's, include libxml/xmlversion.h if present.
2174
2175Sun May 26 19:09:04 2002  Joe Orton  <joe@manyfish.co.uk>
2176
2177	* ne_utils.c: Include libxml/xmlversion.h if present.
2178
2179Sun May 26 11:55:30 2002  Joe Orton  <joe@manyfish.co.uk>
2180
2181	* ne_session.c (set_hostport): Renamed from get_hostport: set
2182	host_info field directly; take defaultport argument.
2183	(set_hostinfo): Don't use get_hostport.
2184	(ne_session_create): Use set_hostinfo and set_hostport; pass
2185	in default port correctly for http:/https:.
2186
2187Thu May 23 19:44:44 2002  Joe Orton  <joe@manyfish.co.uk>
2188
2189	* ne_xml.c (resolve_nspace): Split out from parse_element.
2190	(ne_xml_get_attr): Take parser object, and optional
2191	namespace; resolve the namespace if necessary.
2192	(parse_element): Use resolve_nspace.
2193
2194	* ne_props.c (startelm): Use new ne_xml_get_attr interface.
2195
2196Wed May 22 22:29:05 2002  Joe Orton  <joe@manyfish.co.uk>
2197
2198	* ne_dates.c: Renamed HAVE_TM_GMTOFF to HAVE_STRUCT_TM_TM_GMTOFF
2199	from use of AC_CHECK_MEMBERS.
2200
2201Tue May 21 21:21:31 2002  Joe Orton  <joe@manyfish.co.uk>
2202
2203	* ne_redirect.c (ne_redirect_register): Drop confirm, notify,
2204	userdata arguments.
2205	(struct redirect): Drop most fields; add a uri structure.
2206	(auto_redirect): Removed function.
2207	(post_send): Remove functionality which retries a request with a
2208	different URI to automatically follow redirects.  Qualify the URI
2209	if non-absolute.
2210	(create): Remove now redundant code.
2211	(ne_redirect_location): Return an ne_uri object.
2212
2213Sun May 19 18:53:22 2002  Joe Orton  <joe@manyfish.co.uk>
2214
2215	* ne_session.c (ne_set_useragent): Use strcat/malloc/strcpy
2216	directly, rather than CONCAT2; allow compiler optimisations.
2217	(AGENT): Renamed from NEON_USERAGENT, append space.
2218
2219Sun May 19 17:31:43 2002  Joe Orton  <joe@manyfish.co.uk>
2220
2221	Move everything exported by ne_socket.h into ne_*/NE_* namespace;
2222	purge inappropriate and unused interfaces.  Renaming done by Olof
2223	Oberg.
2224
2225	* ne_socket.h:
2226
2227	(SOCK_FULL): Removed constant.
2228	(sock_call_progress, sock_transfer, sock_sendline,
2229	sock_send_string, sock_readfile_blocked): Removed functions.
2230
2231	(NE_SOCK_ERROR, NE_SOCK_TIMEOUT, NE_SOCK_CLOSED):
2232	Renamed constants.
2233
2234	(ne_progress, ne_block_reader): Renamed types.
2235
2236	(ne_register_progress, ne_sock_init, ne_sock_exit, ne_sock_read,
2237	ne_sock_peek, ne_sock_block, ne_sock_fullwrite, ne_sock_readline,
2238	ne_sock_connect, ne_sock_accept, ne_sock_fd, ne_sock_error,
2239	ne_sock_read_timeout, ne_name_lookup, ne_service_lookup,
2240	ne_sock_use_ssl, ne_sock_use_ssl_os): Renamed functions.
2241
2242	* ne_private.h, ne_request.c, ne_session.c: Update accordingly.
2243
2244	* ne_request.c (build_request): Return the ne_buffer pointer.
2245	(send_request): Remove redundant strlen(), use known buffer
2246	length.
2247
2248	* ne_request.h: Drop ne_block_reader definition.
2249
2250Sun May 19 13:32:12 2002  Joe Orton  <joe@manyfish.co.uk>
2251
2252	* ne_request.c (ne_get_session, ne_get_request): Take const
2253	request pointer.
2254
2255Sun May 19 13:21:17 2002  Joe Orton  <joe@manyfish.co.uk>
2256
2257	* ne_string.c (ne_buffer_ncreate): Renamed from
2258	ne_buffer_create_sized.
2259
2260	* ne_session.c (check_certificate, provide_client_cert): Update
2261	accordingly.
2262
2263	* ne_request.c (ne_request_create): Update accordingly.
2264
2265Sun May 19 13:12:14 2002  Joe Orton  <joe@manyfish.co.uk>
2266
2267	* ne_string.c (ne_token): Drop quotes parameter.
2268	(ne_qtoken): Split out from ne_token.
2269
2270	* ne_basic.c (dav_hdr_handler, ne_content_type_handler): Use
2271	ne_qtoken.
2272
2273	* ne_compress.c (find_token): Removed function.
2274	(gz_reader): Compare header value directly against "gzip",
2275	remove a stale comment.
2276
2277Sun May 19 09:45:28 2002  Joe Orton  <joe@manyfish.co.uk>
2278
2279	* ne_socket.h (sock_fullread): Return ssize_t; takes buflen as
2280	size_t.
2281	(sock_read, sock_peek): Fix prototypes to match actual definition.
2282
2283	* ne_socket.c (write_raw): Return ssize_t.
2284
2285Sat May 18 14:53:45 2002  Joe Orton  <joe@manyfish.co.uk>
2286
2287	* ne_string.h (ne_buffer): Remove separate struct ne_buffer_s
2288	definition.
2289
2290	* ne_string.c (ne_buffer_create_sized): Don't use struct
2291	ne_buffer_s.
2292
2293Sun May 12 11:33:02 2002  Joe Orton  <joe@manyfish.co.uk>
2294
2295	* ne_string.c (ne_base64): Moved from base64.c.
2296
2297	* base64.c, base64.h: Removed files.
2298
2299	* Makefile.in: Updated accordingly.
2300
2301	* ne_auth.c: Don't include base64.h.
2302
2303Sun May 12 11:26:05 2002  Joe Orton  <joe@manyfish.co.uk>
2304
2305	* ne_string.h (ne_utf8_decode, ne_utf8_encode): Removed functions.
2306
2307Sat May 11 15:42:24 2002  Joe Orton  <joe@manyfish.co.uk>
2308
2309	As part of patch from Olof Oberg <mill@pedgr571.sn.umu.se>:
2310
2311	* ne_request.h (ne_destroy_fn): Renamed from typo'ed
2312	ne_destory_fn.
2313
2314	* ne_request.c (ne_request_destroy, ne_hook_destroy_request,
2315	ne_hook_destroy_session): Update accordingly.
2316
2317	* ne_session.c (ne_session_destroy): Update accordingly.
2318
2319Thu May  9 21:44:15 2002  Joe Orton  <joe@manyfish.co.uk>
2320
2321	Major improvements to socket layer to incorporate socket read
2322	buffering and rewrite sock_readline, and add an abstraction layer
2323	to simplify SSL support.  Grunt work by Jeff Johnson
2324	<jbj@redhat.com>
2325
2326	* ne_socket.c (struct iofns): New type.
2327	(struct nsocket_s): Store 'ops' pointer to I/O functions in use
2328	for the socket.  Add buffer, bufpos, bufavail fields for read
2329	buffering.
2330	(sock_block, sock_read, sock_peek): Reimplement to add read
2331	buffer, simplify to use I/O functions abstraction.
2332	(readable_raw, read_raw, write_raw, readable_ossl, read_ossl,
2333	write_ossl): Factored out from sock_read/fullwrite, avoiding
2334	in-lined ifdefs.
2335	(sock_fullwrite): Just use ops->write.
2336	(sock_readline): Simplify greatly to exploit read-buffering, return
2337	ssize_t.
2338	(sock_fullread): Simplify, removing unnecessary local variables,
2339	return ssize_t.
2340	(create_sock, sock_enable_ssl_os): Set ops pointer.
2341
2342Wed May  8 11:54:48 2002  Joe Orton  <joe@manyfish.co.uk>
2343
2344	* ne_socket.c (sock_name_lookup): Avoid casts; use INADDR_NONE.
2345	[!INADDR_NONE]: Define to (unsigned long) -1.
2346
2347Wed May  1 22:19:18 2002  Joe Orton  <joe@manyfish.co.uk>
2348
2349	* ne_locks.h (ne_lock): Document that ->token and ->owner fields
2350	must be malloc-allocated if non-NULL.
2351
2352Wed May  1 22:15:41 2002  Joe Orton  <joe@manyfish.co.uk>
2353
2354	* ne_locks.c (get_ltoken_hdr): New function.
2355	(ne_lock): Correctly parse Coded-URL from Lock-Token response
2356	header.
2357
2358Wed May  1 22:03:08 2002  Joe Orton  <joe@manyfish.co.uk>
2359
2360	* ne_redirect.c (post_send): Adjust for ne_uri_parse handling of
2361	unspecified port.
2362
2363Wed May  1 22:00:50 2002  Joe Orton  <joe@manyfish.co.uk>
2364
2365	* ne_session.c (provide_client_cert): Fail if peer certificate not
2366	known when client cert requested.
2367
2368Wed May  1 21:58:35 2002  Joe Orton  <joe@manyfish.co.uk>
2369
2370	* ne_session.h (ne_ssl_provide_fn): Adjust callback typedef to
2371	return void.
2372
2373Wed May  1 21:52:40 2002  Joe Orton  <joe@manyfish.co.uk>
2374
2375	* ne_request.h: Remove NE_SERVERAUTH and NE_AUTHPROXY; fix
2376	NE_PROXYAUTH description.
2377
2378Wed May  1 21:32:54 2002  Joe Orton  <joe@manyfish.co.uk>
2379
2380	* ne_uri.c (ne_uri_parse): For consistency, port field is 0 if
2381	unspecified.
2382
2383Tue Apr 30 10:05:48 2002  Joe Orton  <joe@manyfish.co.uk>
2384
2385	* ne_string.c (shave_string): Removed function.
2386
2387Tue Apr 23 21:19:53 2002  Joe Orton  <joe@manyfish.co.uk>
2388
2389	* ne_props.c (start_propstat, startelm): Use ne_realloc not
2390	realloc (thanks to Jeff Johnson).
2391
2392Tue Apr 23 20:55:56 2002  Joe Orton  <joe@manyfish.co.uk>
2393
2394	* ne_xml.c: Include parser.h or libxml/parser.h, depending on
2395	which is found.
2396
2397Mon Apr 15 00:37:43 2002  Joe Orton  <joe@manyfish.co.uk>
2398
2399	* ne_request.c (build_request, send_request): Simplify logic.
2400
2401Sun Apr 14 16:59:50 2002  Joe Orton  <joe@manyfish.co.uk>
2402
2403	* ne_props.c: Remove unused accidental 'propstat' global.
2404	(struct propstat): Add r_phrase field.
2405	(end_propstat): Dup the reason_phrase string.
2406	(free_propset): Free the reason_phrase.  Avoid another possible
2407	free(NULL) call.
2408
2409Sun Apr 14 12:00:54 2002  Joe Orton  <joe@manyfish.co.uk>
2410
2411	* ne_basic.c (ne_content_type_handler): For text/* media types,
2412	use default charset of ISO-8859-1.
2413
2414Sat Apr 13 23:11:07 2002  Joe Orton  <joe@manyfish.co.uk>
2415
2416	* ne_utils.h: Include trio.h if NEON_TRIO is defined.
2417
2418Sun Apr  7 17:38:14 2002  Joe Orton  <joe@manyfish.co.uk>
2419
2420	* ne_request.c (read_response_headers): Don't zero-initialize hdr.
2421
2422Sun Apr  7 17:15:23 2002  Joe Orton  <joe@manyfish.co.uk>
2423
2424	* ne_request.c (read_response_headers): Ignore whitespace between
2425	header name and colon, simplify logic a little.
2426
2427Sun Apr  7 14:09:07 2002  Joe Orton  <joe@manyfish.co.uk>
2428
2429	* ne_session.c (ne_ssl_readable_dname): New function.
2430
2431Sun Apr  7 12:32:25 2002  Joe Orton  <joe@manyfish.co.uk>
2432
2433	* ne_string.c (ne_buffer_destroy): Remove redundant check for data
2434	pointer being NULL.
2435
2436Wed Apr  3 19:44:59 2002  Joe Orton  <joe@manyfish.co.uk>
2437
2438	Optimisation/simplification of header name hashing.
2439
2440	* ne_request.c (hash_and_lower): Renamed from hdr_hash; convert
2441	string to lower-case in-place too.
2442	(lower_string): Removed function.
2443	(ne_add_response_header_handler): Use hash_and_lower rather than
2444	lower_string.
2445	(HH_ITERATE): Change parameter name to 'ch'.
2446
2447Fri Mar 29 23:00:57 2002  Joe Orton  <joe@manyfish.co.uk>
2448
2449	* ne_uri.c (ne_uri_parse): Minor optimisation.
2450
2451Mon Mar 25 21:45:36 2002  Joe Orton  <joe@manyfish.co.uk>
2452
2453	Pass a lock context around during LOCK processing; search for the
2454	correct <activelock> element in the response body.
2455
2456	* ne_locks.c (ne_lock_create): Don't take a path argument.
2457	(ne_unlock): Constify lock parameter.
2458	(discover_results): Don't parse out href here...
2459	(ld_create): do it here instead; renamed from create_private.
2460	(lk_startelm): New function.
2461	(lk_endelm): Renamed from end_element_lock.
2462	(ne_lock): Require a Lock-Token response header; pass lock context
2463	to callbacks.  Copy lock back out.
2464
2465Mon Mar 25 21:35:42 2002  Joe Orton  <joe@manyfish.co.uk>
2466
2467	* ne_session.h (NE_SSL_FAILMASK): New constant.
2468	(NE_SSL_*): Shift right one bit.
2469
2470Mon Mar 25 21:21:18 2002  Joe Orton  <joe@manyfish.co.uk>
2471
2472	* ne_session.c (ne_close_connection): Return void.
2473
2474Mon Mar 25 20:09:33 2002  Joe Orton  <joe@manyfish.co.uk>
2475
2476	* ne_props.c (free_propset): Avoid free(NULL).
2477
2478Mon Mar 11 19:59:04 2002  Joe Orton  <joe@manyfish.co.uk>
2479
2480	* ne_locks.c (ne_lock_using_parent): Iterate over the lock list by
2481	hand: check for infinite depth locks with cover the parent too
2482	(fixing if_covered_child test).
2483
2484Mon Mar 11 19:25:44 2002  Joe Orton  <joe@manyfish.co.uk>
2485
2486	* ne_request.c (ne_request_dispatch): Move variable to scope in
2487	which is is used.
2488
2489Sun Mar 10 22:04:58 2002  Joe Orton  <joe@manyfish.co.uk>
2490
2491	* Makefile.in (NEON_BASEOBJS): Always build ne_compress.o.
2492
2493Sun Mar 10 22:01:54 2002  Joe Orton  <joe@manyfish.co.uk>
2494
2495	* ne_compress.c [!NEON_ZLIB] (ne_decompress_reader,
2496	ne_decompress_destroy): Add stubs.
2497
2498Sun Mar 10 21:42:11 2002  Joe Orton  <joe@manyfish.co.uk>
2499
2500	* ne_locks.c (struct discover_ctx): Store an ne_session pointer.
2501	(discover_results): If lock URI is not an absoluteURI, qualify it
2502	using the server host/port/scheme from the session.  Don't leak
2503	the lock object.
2504	(create_private): Simplify, use ne_lock_create.
2505
2506Thu Mar  7 20:08:07 2002  Joe Orton  <joe@manyfish.co.uk>
2507
2508	* ne_uri.c (ne_uri_defaultport): Fix default port number for https
2509	scheme.
2510
2511Wed Mar  6 21:22:23 2002  Joe Orton  <joe@manyfish.co.uk>
2512
2513	* ne_locks.c (lk_pre_send): Use an absoluteURI in the If: header.
2514
2515Wed Mar  6 21:15:00 2002  Joe Orton  <joe@manyfish.co.uk>
2516
2517	* ne_uri.c (ne_uri_unparse): New function.
2518
2519Tue Mar  5 22:57:00 2002  Joe Orton  <joe@manyfish.co.uk>
2520
2521	* ne_uri.c (ne_uri_cmp): Compare hostnames and schemes
2522	case-insensitively, and compare empty abspath and "/" as
2523	equivalent, as per RFC 2616.
2524
2525Tue Mar  5 20:53:54 2002  Joe Orton  <joe@manyfish.co.uk>
2526
2527	* ne_uri.c (ne_uri_defaultport): New function.
2528
2529Mon Mar  4 21:10:29 2002  Joe Orton  <joe@manyfish.co.uk>
2530
2531	* ne_uri.h (ne_uri): Renamed from struct uri.
2532
2533	* ne_uri.c (ne_path_parent): Renamed from uri_parent.
2534	(ne_path_has_trailing_slash): Renamed from uri_has_trailing_slash.
2535	(uri_abspath, uri_absolute): Removed.
2536	(ne_uri_parse): Renamed from uri_parse, don't take a 'defaults'
2537	parameter.
2538	(ne_uri_free): Renamed from uri_free.
2539	(ne_path_unescape): Renamed from uri_unescape.
2540	(ne_path_escape): Renamed from uri_abspath_escape.
2541	(ne_uri_cmp): Renamed from uri_cmp.
2542	(ne_path_compare): Renamed from uri_compare.
2543	(ne_path_childof): Renamed from uri_childof.
2544
2545	* ne_basic.c, ne_locks.c, ne_uri.c, ne_redirect.c, ne_session.c,
2546	ne_session.h: all callers changed.
2547
2548Mon Mar  4 01:03:23 2002  Joe Orton  <joe@manyfish.co.uk>
2549
2550	* ne_request.c (strip_eol): Fix potential segfault.
2551
2552Mon Mar  4 00:38:10 2002  Joe Orton  <joe@manyfish.co.uk>
2553
2554	* ne_locks.c (insert_lock): New function.
2555	(ne_lockstore_add, submit_lock): use insert_lock.
2556
2557Mon Mar  4 00:33:39 2002  Joe Orton  <joe@manyfish.co.uk>
2558
2559	* ne_locks.c (ne_lockstore_remove): Free list item.
2560
2561Mon Mar  4 00:31:08 2002  Joe Orton  <joe@manyfish.co.uk>
2562
2563	* ne_locks.c (free_list): Really destroy the lock.
2564	(ne_lock_free): Don't free the lock object itself.
2565
2566Mon Mar  4 00:17:18 2002  Joe Orton  <joe@manyfish.co.uk>
2567
2568	* ne_request.c (ne_request_destroy): Free accessor hook list.
2569
2570Sun Mar  3 20:35:09 2002  Joe Orton  <joe@manyfish.co.uk>
2571
2572	Changes to lock interface; replacing "lock session" with a lock
2573	store, which can be registered with an ne_session.  Lock objects
2574	now store URI as complete URI structure.
2575
2576	* ne_locks.h (struct ne_lock): Store URI as complete URI
2577	structure.  Remove next/prev fields.
2578	(ne_lock_store): New type.
2579
2580	* ne_locks.c (struct lock_list): New type.
2581	(struct ne_lock_store_s): Replaces ne_lock_session_s; store
2582	lock_list pointers for stored locks, cursor, and locks to
2583	submit.
2584	(ne_lock_create): New function.
2585	(lk_create): Renamed from create.
2586	(lk_pre_send): Renamed from pre_send; adjust for lock list
2587	type and to use URI path.
2588	(free_list): New function; split out from old 'destroy'.
2589	(lk_destroy): Renamed from destroy; use free_list.
2590	(ne_lockstore_create, ne_lockstore_destroy,
2591	ne_lockstore_first, ne_lockstore_next): New functions.
2592	(ne_lockstore_register): Most of old ne_lock_register.
2593	(submit_lock): Adjusted for lock_list type.
2594	(ne_lockstore_findbyuri): Renamed from ne_lock_find; use
2595	full URI structure.
2596	(ne_lock_using_resource, ne_lock_using_parent): Adjusted
2597	for lock_list/full URI changes.
2598	(ne_lock_iterate): Removed function.
2599	(ne_lockstore_add, ne_lockstore_remove): Renamed from
2600	ne_lock_add, ne_lock_copy; adjusted for lock_list/full URI.
2601	(ne_lock_copy): Adjusted for full URI.
2602	(ne_lock_create, ne_lock_destroy): New function.
2603	(ne_lock, ne_lock_refresh, ne_unlock): Adjusted for full URI.
2604
2605Sun Mar  3 15:23:40 2002  Joe Orton  <joe@manyfish.co.uk>
2606
2607	* ne_uri.c (uri_cmp): New function.
2608
2609Sun Mar  3 11:01:30 2002  Joe Orton  <joe@manyfish.co.uk>
2610
2611	* ne_session.c (ne_fill_server_uri): New function.
2612
2613Mon Feb 25 21:25:27 2002  Joe Orton  <joe@manyfish.co.uk>
2614
2615	* ne_utils.c (version_string): Add zlib version.
2616
2617Mon Feb 25 20:49:07 2002  Joe Orton  <joe@manyfish.co.uk>
2618
2619	* (everywhere): Replace use of snprintf, vsnprintf with
2620	ne_snprintf, ne_vsnprintf so that trio replacements are used when
2621	appropriate.
2622
2623	* ne_dates.h: Pick up ne_utils.h for ne_{v,}snprintf defines.
2624
2625Sun Feb 24 11:23:05 2002  Joe Orton  <joe@manyfish.co.uk>
2626
2627	* ne_utils.h: Define ne_snprintf, ne_vsnprintf for trio or
2628	non-trio builds.
2629
2630Sun Feb 24 11:20:42 2002  Joe Orton  <joe@manyfish.co.uk>
2631
2632	* Makefile.in (check-incl): Add target to check that each header
2633	file can be included standalone.
2634
2635Sun Feb 24 11:17:54 2002  Joe Orton  <joe@manyfish.co.uk>
2636
2637	* ne_xml.h: Add missing sys/types.h include.
2638
2639Sun Feb 24 11:12:22 2002  Joe Orton  <joe@manyfish.co.uk>
2640
2641	* ne_utils.h: Remove HTTP_QUOTES, HTTP_WHITESPACE globals.
2642
2643	* ne_cookies.c (set_cookie_hdl): Don't use HTTP_QUOTES,
2644	HTTP_WHITESPACE globals.
2645
2646Wed Feb 20 19:32:48 2002  Joe Orton  <joe@manyfish.co.uk>
2647
2648	* ne_request.c (set_sockerr, ne_set_request_body_fd,
2649	send_request): Use ne_set_error rather than accessing session
2650	error directly.
2651
2652Tue Feb 19 21:34:59 2002  Joe Orton  <joe@manyfish.co.uk>
2653
2654	* ne_utils.c (version_string) [NEON_SOCKS]: Mention SOCKSv5
2655	support.
2656
2657	* ne_socket.c (sock_init) [NEON_SOCKS]: Call SOCKSinit.
2658
2659Tue Feb 19 19:21:07 2002  Joe Orton  <joe@manyfish.co.uk>
2660
2661	* ne_request.c (open_connection): Remove notify_status call
2662	duplicated with ne_negotiate_ssl.
2663
2664Tue Feb 19 19:16:44 2002  Joe Orton  <joe@manyfish.co.uk>
2665
2666	* ne_socket.c (sock_get_version): Removed function.
2667
2668Tue Feb 19 19:12:52 2002  Joe Orton  <joe@manyfish.co.uk>
2669
2670	* ne_session.c (ne_ssl_provide_ccert): Moved outside ifdef
2671	NEON_SSL.
2672	[!NEON_SSL] (ne_ssl_load_pem, ne_ssl_load_pkcs12,
2673	ne_ssl_keypw_prompt): Added stubs.
2674
2675Sun Feb 17 21:15:34 2002  Joe Orton  <joe@manyfish.co.uk>
2676
2677	* ne_session.c (ne_session_create, ne_session_destroy): Only use
2678	the SSL context is SSL is being used for the session.
2679
2680Sun Feb 17 20:19:05 2002  Joe Orton  <joe@manyfish.co.uk>
2681
2682	Add back client certificate support, much improved.
2683
2684	* ne_private.h (struct ne_session_s): Add client cert/key fields,
2685	provider, privkey password callbacks.
2686
2687	* ne_socket.c (sock_init): Call PKCS12_PBE_add.
2688	(sock_enable_ssl_os): Add optional 'appdata' argument.
2689	(sock_enable_ssl): Adjust accordingly.
2690
2691	* ne_session.c (provide_client_cert, privkey_prompt,
2692	ne_ssl_keypw_prompt, ne_ssl_load_pkcs12, ne_ssl_load_pem,
2693	ne_ssl_provide_ccert): New functions.
2694	(ne_negotiate_ssl): Pass session as appdata to sock_enable_ssl_os.
2695
2696Sun Feb 17 12:32:34 2002  Joe Orton  <joe@manyfish.co.uk>
2697
2698	* ne_session.c (make_dname): New function.
2699	(check_certificate): Use make_dname.
2700
2701Sun Feb 17 11:29:10 2002  Joe Orton  <joe@manyfish.co.uk>
2702
2703	* ne_basic.c (struct get_context): Remove unused 'progress' field,
2704	add 'session' field.
2705	(get_to_fd, content_range_hdr_handler, clength_hdr_handler): Set
2706	session error directly.
2707	(clength_hdr_handler): Also fix check for expected range.
2708	(everywhere): Initialize session field, don't set session error;
2709	use NE_FMT_OFF_T to print off_t's rather than casting to long int.
2710
2711Sat Feb 16 23:24:10 2002  Joe Orton  <joe@manyfish.co.uk>
2712
2713	* ne_xml.h (NE_XML_STRIPWS): New element flag.
2714
2715	* ne_xml.c (start_element): Clear cdata buffer if not in mixed
2716	mode.  (char_data): Only strip leading whitespace if
2717	NE_XML_STRIPWS is set for the element.
2718
2719Sat Feb 16 14:52:59 2002  Joe Orton  <joe@manyfish.co.uk>
2720
2721	* ne_compress.c (enum state): New state NE_Z_AFTER_DATA.
2722	(struct ne_decompress_s): Add fields for storing and parsing
2723	stream footer; add checksum field for storing current crc.
2724	(process_footer): New function.
2725	(do_inflate): Compute checksum.  Switch to AFTER_DATA state and
2726	process footer after reading DEFLATE data.
2727	(gz_reader): Fail on trailing content.  Handle AFTER_DATA state.
2728	(ne_decompress_destroy): Return error if final state was not
2729	PASSTHROUGH, or FINISHED.
2730	(ne_decompress_reader): Initialize crc.
2731
2732Sat Feb 16 14:26:54 2002  Joe Orton  <joe@manyfish.co.uk>
2733
2734	* ne_compress.c (ne_decompress_destroy): Fix potential segfault
2735	with use-after-free.
2736
2737Thu Feb 14 16:50:40 2002  Joe Orton  <joe@manyfish.co.uk>
2738
2739	* ne_request.c (read_response_headers): Ignore header lines
2740	without a ':', rather than failing the request.
2741
2742Tue Feb 12 20:17:49 2002  Joe Orton  <joe@manyfish.co.uk>
2743
2744	* ne_request.c (read_response_block): Read chunk size as unsigned
2745	using strtoul; check that it fits within an unsigned int (and
2746	hence, probably a size_t).
2747
2748Tue Feb 12 20:15:13 2002  Joe Orton  <joe@manyfish.co.uk>
2749
2750	* ne_string.h (STRIP_EOL): Removed macro.
2751
2752Mon Feb 11 22:11:03 2002  Joe Orton  <joe@manyfish.co.uk>
2753
2754	* ne_session.c (match_hostname): Match fully-qualified hostnames
2755	against commonName with leading "*." wildcard.
2756
2757Mon Feb 11 20:47:28 2002  Joe Orton  <joe@manyfish.co.uk>
2758
2759	* ne_session.c (match_hostname): New function.
2760	(check_certificate): Use it.
2761
2762Sun Feb 10 00:50:49 2002  Joe Orton  <joe@manyfish.co.uk>
2763
2764	* ne_request.c (lookup_host): Set error string on lookup failure.
2765
2766Sun Feb 10 00:34:42 2002  Joe Orton  <joe@manyfish.co.uk>
2767
2768	* ne_request.c (strip_eol): New function; more efficient
2769	STRIP_EOL.
2770	(send_request): Use strip_eol.
2771	(read_message_header): Use strip_eol, simplify, remove redundant
2772	variables.
2773
2774Sat Feb  9 21:02:31 2002  Joe Orton  <joe@manyfish.co.uk>
2775
2776	* ne_session.c (ne_set_error): Drop STRIP_EOL call.
2777
2778Sat Feb  9 21:01:01 2002  Joe Orton  <joe@manyfish.co.uk>
2779
2780	* ne_session.c (ne_set_error): Take printf-style format string +
2781	varargs list.
2782
2783Sat Feb  9 16:15:09 2002  Joe Orton  <joe@manyfish.co.uk>
2784
2785	* ne_socket.h (SOCKET_READ_TIMEOUT): Moved to ne_socket.c.
2786
2787	* ne_socket.c (struct nsocket_s): Add rdtimeout field.
2788	(create_sock): Initialize rdtimeout to SOCKET_READ_TIMEOUT.
2789	(sock_read, sock_recv): Use ->rdtimeout field for read timeout.
2790	(sock_set_read_timeout): New function.
2791
2792	* ne_private.h (struct ne_session_s): Add rdtimeout field.
2793
2794	* ne_session.c (ne_set_read_timeout): New function.
2795
2796	* ne_request.c (init_socket): New function.
2797	(open_connection): Use init_socket.
2798
2799Sat Feb  9 15:11:59 2002  Joe Orton  <joe@manyfish.co.uk>
2800
2801	* ne_session.c (ne_session_destroy): Don't leak the server cert.
2802
2803Sat Feb  9 09:59:11 2002  Joe Orton  <joe@manyfish.co.uk>
2804
2805	* ne_session.c (check_certificate): Only call verification
2806	callback once per certificate; watch for the server cert
2807	changing and fail if it does.
2808
2809Wed Feb  6 20:28:27 2002  Joe Orton  <joe@manyfish.co.uk>
2810
2811	* ne_session.c (check_certificate): Only call verification
2812	callback if failures is non-zero.
2813	(ne_ssl_load_ca): Renamed from ne_ssl_add_ca.
2814	(ne_ssl_load_default_ca): New function.
2815
2816Wed Feb  6 20:21:29 2002  Joe Orton  <joe@manyfish.co.uk>
2817
2818	* ne_socket.c (sock_init): Cache and return result of
2819	initialization.
2820
2821Wed Feb  6 01:12:20 2002  Joe Orton  <joe@manyfish.co.uk>
2822
2823	* ne_session.c (check_certificate): Ignore cert validity errors
2824	from OpenSSL since these are duplicated.
2825
2826Wed Feb  6 01:08:57 2002  Joe Orton  <joe@manyfish.co.uk>
2827
2828	* ne_session.c (ne_negotiate_ssl): Fix for invalidating cached
2829	SSL_SESSION.
2830
2831Wed Feb  6 01:03:37 2002  Joe Orton  <joe@manyfish.co.uk>
2832
2833	* ne_session.c [!NEON_SSL] (STUB): New function.
2834	(ne_negotiate_ssl, ne_ssl_add_ca): Implement using STUB.
2835
2836Tue Feb  5 19:56:43 2002  Joe Orton  <joe@manyfish.co.uk>
2837
2838	* ne_session.h (ne_ssl_certificate): New type.
2839
2840	* ne_session.c (ne_session_create) [NEON_SSL]: Create the SSL_CTX
2841	structure.
2842	(ne_ssl_get_context): Return the SSL_CTX rather than setting it.
2843	(ne_session_destroy): Free the SSL_CTX.
2844
2845	(asn1time_to_string): Function moved in from sslcerts.c.
2846	(check_certificate): Use OpenSSL's internal validity result.
2847	Pass back an ne_ssl_certificate to the verification function;
2848	including validity dates.
2849	(ne_ssl_add_ca): New function, registers CA certs.
2850
2851Sat Feb  2 14:05:26 2002  Joe Orton  <joe@manyfish.co.uk>
2852
2853	* ne_socket.c (sock_enable_ssl_os): Take an optional SSL_SESSION
2854	argument.
2855
2856	* ne_private.h (struct ne_session_s): Add an SSL_SESSION field.
2857
2858	* ne_session.c (ne_negotiate_ssl): Pass stored SSL session to
2859	sock_enable_ssl_os, cache session after successful negotiation.
2860	(ne_session_destroy): Free cached session.
2861
2862Sat Feb  2 10:45:46 2002  Joe Orton  <joe@manyfish.co.uk>
2863
2864	* ne_socket.c, ne_utils.c: Globally replace ENABLE_SSL cpp symbol
2865	with NEON_SSL.
2866
2867Sat Feb  2 09:43:27 2002  Joe Orton  <joe@manyfish.co.uk>
2868
2869	* ne_session.c (check_certificate): Use 1K on-stack buffer.
2870
2871Sat Feb  2 08:27:08 2002  Joe Orton  <joe@manyfish.co.uk>
2872
2873	* ne_private.h (struct host_info): Add 'resolved' flag.
2874	(struct ne_session_s): Add scheme field, rename have_proxy to
2875	use_proxy, remove proxy_decider.
2876	(struct ne_request_s): Remove use_proxy field.
2877
2878	* ne_request.c (set_sockerr, ne_set_request_uri, build_request,
2879	open_connection): Use session->use_proxy field to determine
2880	whether proxy is used.
2881	(ne_request_create): Drop use of proxy_decider callback.
2882	(lookup_host): Moved here from ne_session.c.
2883	(ne_begin_request): Lookup server/proxy hostname if not already
2884	resolved.
2885
2886	* ne_session.c (ne_session_create): Moved within file; takes
2887	scheme, and server hostname, port as arguments.
2888	(ne_ssl_enable, ne_session_decide_proxy, ne_session_server):
2889	Removed functions.
2890	(ne_get_scheme): Simply return scheme field.
2891
2892Fri Feb  1 23:12:38 2002  Joe Orton  <joe@manyfish.co.uk>
2893
2894	* ne_request.c (add_fixed_headers): Remove last traces of TLS
2895	upgrade support.
2896
2897Thu Jan 31 20:50:12 2002  Joe Orton  <joe@manyfish.co.uk>
2898
2899	* ne_private.h (struct ne_session_s): Rename use_secure to
2900	use_ssl; removed nssl_context, added SSL_CTX, server cert, verify
2901	callback pointers.
2902
2903	* ne_request.c (send_request): Remove support for TLS upgrade.
2904	(open_connection): Use ne_negotiate_ssl; close socket properly if
2905	negotiation fails.
2906
2907	* ne_session.c (ne_session_destroy): Free SSL_CTX stored in
2908	session.
2909	(ne_ssl_set_context, ne_ssl_set_verify, verify_err, getx509field,
2910	check_context, ne_negotiate_ssl, ne_ssl_server_cert): New
2911	functions.
2912	(ne_set_secure_context, ne_set_request_secure_upgrade,
2913	ne_set_accept_secure_upgrade): Removed functions.
2914	(ne_ssl_enable): Renamed from ne_set_secure.
2915
2916	* ne_socket.c (struct nssl_context_s): Removed type.
2917	(sock_create_ssl_context, sock_destroy_ssl_context,
2918	sock_disable_*, key_prompt_cb, sock_set_key_prompt,
2919	sock_set_client_cert): Removed functions.
2920	(sock_enable_ssl_os): Renamed from sock_make_secure; take an
2921	SSL_CTX pointer, and optionally pass out the SSL structure.
2922	(sock_enable_ssl): New function.
2923
2924Wed Jan 30 19:47:42 2002  Joe Orton  <joe@manyfish.co.uk>
2925
2926	* ne_string.c (ne_buffer_concat, ne_buffer_zappend,
2927	ne_buffer_append, ne_buffer_grow): Don't return success value,
2928	presume universe ends at OOM.
2929
2930Sat Jan 26 10:57:42 2002  Joe Orton  <joe@manyfish.co.uk>
2931
2932	* ne_compress.c: Renamed enum state constants to have prefix
2933	NE_Z_, to avoid conflict with Windows headers (Branko �ibej).
2934
2935Mon Jan 14 20:26:31 2002  Joe Orton  <joe@manyfish.co.uk>
2936
2937	* ne_string.c (ne_concat): Removed function - it didn't work, and
2938	it wasn't used.
2939
2940Mon Jan 14 02:09:38 2002  Joe Orton  <joe@manyfish.co.uk>
2941
2942	* ne_basic.c (ne_content_type_handler): Parse charset parameter.
2943
2944Sun Jan 13 14:29:00 2002  Joe Orton  <joe@manyfish.co.uk>
2945
2946	* ne_basic.c (ne_content_type_handler): Remove trailing '/' from
2947	parsed type, fix search for parms separator (Greg Stein).
2948
2949Sun Jan 13 12:07:51 2002  Joe Orton  <joe@manyfish.co.uk>
2950
2951	* ne_207.c (ne_simple_request): Drop unused Content-Type handling.
2952
2953Thu Jan 10 00:39:17 2002  Joe Orton  <joe@manyfish.co.uk>
2954
2955	* ne_request.c (hdr_hash): Mark as inline.
2956
2957Tue Jan  8 22:03:42 2002  Joe Orton  <joe@manyfish.co.uk>
2958
2959	* ne_locks.c (add_timeout_header): New function.  (ne_lock,
2960	ne_lock_refresh): Send a Timeout header if lock->timeout is set.
2961
2962Mon Jan  7 21:48:38 2002  Joe Orton  <joe@manyfish.co.uk>
2963
2964	* ne_locks.c (parse_timeout): Fix parsing lock timeout (Arun
2965	Garg).
2966
2967Mon Dec 17 22:46:36 2001  Joe Orton  <joe@manyfish.co.uk>
2968
2969	* ne_private.h (struct ne_session_s): Make expect100_works a plain
2970	integer (rather than a bitfield).
2971
2972Sun Dec  9 14:04:27 2001  Joe Orton  <joe@manyfish.co.uk>
2973
2974	* ne_string.c (ne_buffer_grow, ne_buffer_create_sized): Don't
2975	zero-fill new memory.  (ne_buffer_concat): Zero terminate the
2976	string as _grow doesn't do it.
2977
2978Sun Dec  9 13:31:55 2001  Joe Orton  <joe@manyfish.co.uk>
2979
2980	* ne_string.c (ne_buffer_zappend): Minor optimisation; implement
2981	using ne_buffer_append.
2982
2983Sun Dec  9 13:18:35 2001  Joe Orton  <joe@manyfish.co.uk>
2984
2985	* ne_string.c (ne_buffer_concat): Optimise to use time O(n) [n ==
2986	total string length).
2987
2988Sun Dec  9 11:57:56 2001  Joe Orton  <joe@manyfish.co.uk>
2989
2990	* Makefile.in (NEON_DAVOBJS): Remove ne_acl.o.
2991
2992Sat Dec  8 01:11:30 2001  Joe Orton  <joe@manyfish.co.uk>
2993
2994	* ne_request.c (ne_pull_request_body): Use NE_FMT_SIZE_T in
2995	debugging message; cast size_t to int to avoid GCC warning for
2996	field size parameter.  (set_body_size): Use NE_FMT_SIZE_T.
2997
2998	* ne_xml.c (ne_xml_parse): Similarly.
2999
3000Mon Dec  3 19:56:07 2001  Joe Orton  <joe@manyfish.co.uk>
3001
3002	* ne_session.c (ne_session_destroy): Return void.
3003
3004Sat Dec  1 18:37:43 2001  Joe Orton  <joe@manyfish.co.uk>
3005
3006	* ne_auth.c (ah_create): Reset attempt counter
3007	here... (ah_post_send): ...rather than here.
3008
3009Tue Nov 27 21:26:01 2001  Joe Orton  <joe@manyfish.co.uk>
3010
3011	* ne_request.c (send_with_progress): Actually call the callback;
3012	fix for correct sock_fullwrite return codes.
3013
3014Tue Nov 27 20:20:40 2001  Joe Orton  <joe@manyfish.co.uk>
3015
3016	* ne_private.h (VERSION_PRE11): Define macro; as
3017	ne_version_pre_http11.
3018
3019	* ne_session.c (ne_version_pre_http11): Use VERSION_PRE11.
3020
3021	* ne_request.c (add_fixed_headers, build_request, ne_end_request):
3022	Use VERSION_PRE11.
3023
3024Sun Nov 18 19:32:56 2001  Joe Orton  <joe@manyfish.co.uk>
3025
3026	* ne_locks.c (discover_results): Check status is 2xx before
3027	invoking callback; pass NULL lock and non-NULL status pointer in
3028	failure cases.  (create_private): Initialize lock to some "value
3029	unspecified" defaults.
3030
3031Sun Nov 18 19:25:10 2001  Joe Orton  <joe@manyfish.co.uk>
3032
3033	* ne_auth.c (auth_session): Rename 'tries' field to 'attempt'.
3034	(get_credentials, ah_pre_send, ah_post_send): Increment attempt
3035	counter only when requesting credentials; reset it to zero when no
3036	auth failure is signaled.
3037
3038Sun Nov 18 15:49:00 2001  Joe Orton  <joe@manyfish.co.uk>
3039
3040	* ne_auth.h (ne_request_auth): Pass username and password as
3041	buffers of size NE_ABUFSIZ to callback.  Add 'attempt' argument.
3042
3043	* ne_auth.c (auth_session): Store username in buffer.
3044	(get_credentials, basic_challenge, digest_challenge): Updated for
3045	callback prototype changes.  (ah_post_send): Request credentials,
3046	and retry authentication until callback returns non-zero.
3047
3048Mon Nov 12 20:57:56 2001  Joe Orton  <joe@manyfish.co.uk>
3049
3050	* ne_basic.c (get_to_fd): Really cope with short writes (thanks to
3051	rado <dzusto@yahoo.com>).
3052
3053Sun Nov  4 15:09:03 2001  Joe Orton  <joe@manyfish.co.uk>
3054
3055	* ne_props.h: Define NE_ELM_PROPS_UNUSED for picking element ids
3056	for use with the propfind XML parser.
3057
3058Sat Nov  3 19:06:04 2001  Joe Orton  <joe@manyfish.co.uk>
3059
3060	* ne_props.c (NSPACE): New macro.  (set_body, pnamecmp, startelm,
3061	free_propset): Handle property having NULL nspace element in
3062	propfind code.
3063
3064Sun Oct 28 22:04:49 2001  Joe Orton  <joe@manyfish.co.uk>
3065
3066	* ne_xml.c (parse_element): Prevent false matches of found prefix
3067	"abcde" against stored prefix "abcdeFGH".  Compare
3068	case-sensitively.
3069
3070Fri Oct 26 20:28:03 2001  Joe Orton  <joe@manyfish.co.uk>
3071
3072	* ne_request.c (send_request): Fix case where persistent
3073	connection times out, and improve error handling.
3074
3075Thu Oct 25 20:42:24 2001  Joe Orton  <joe@manyfish.co.uk>
3076
3077	* ne_props.c (ne_proppatch): Really handle properties with a NULL
3078	namespace correctly; use the "D:" prefix for elements in the
3079	"DAV:" namespace; allow properties to have no namespace.
3080
3081Tue Oct 16 08:54:46 2001  Joe Orton  <joe@manyfish.co.uk>
3082
3083	* ne_xml.c (parse_element): Fail the parse if a namespace prefix
3084	definition is given with an empty value.
3085
3086Tue Oct 16 08:52:40 2001  Joe Orton  <joe@manyfish.co.uk>
3087
3088	* ne_props.h, ne_207.h: Move ne_propname definition into
3089	ne_props.h.
3090
3091Tue Oct 16 08:49:42 2001  Joe Orton  <joe@manyfish.co.uk>
3092
3093	* ne_props.c (ne_proppatch): Handle properties with a NULL nspace
3094	field correctly.
3095
3096Sun Oct  7 19:31:06 2001  Joe Orton  <joe@manyfish.co.uk>
3097
3098	* ne_acl.c (ne_acl_set) [USE_DAV_LOCKS]: Notify use of resource to
3099	locking code.
3100
3101Sun Oct  7 17:45:01 2001  Joe Orton  <joe@manyfish.co.uk>
3102
3103	* ne_acl.c, ne_acl.h: New files, contributed by Arun Garg
3104	<arung@pspl.co.in>.
3105
3106	* Makefile.in: Add ne_acl.* to build.
3107
3108Sun Oct  7 16:10:05 2001  Joe Orton  <joe@manyfish.co.uk>
3109
3110	* ne_private (struct ne_session_s): Add 'reqcount' field.
3111
3112	* ne_request.c (send_request): Refactor slightly; don't loop, but
3113	return NE_RETRY when appropriate.  Increment reqcount.
3114	(ne_begin_request): Loop if send_request returns NE_RETRY.
3115	(open_connection): Reset reqcount field.
3116
3117Tue Oct  2 21:11:39 2001  Joe Orton  <joe@manyfish.co.uk>
3118
3119	* ne_dates.c (GMTOFF): New macro.  (ne_iso8601_parse,
3120	ne_rfc1123_parse, ne_rfc1036_parse, ne_asctime_parse): Use new
3121	macro, fix up date handling on some platforms.
3122
3123Sat Sep 29 14:20:47 2001  Joe Orton  <joe@manyfish.co.uk>
3124
3125	* ne_compress.c (gz_reader): Fix tests 4 and 7: don't try to
3126	inflate after reading header if no bytes are left in the buffer.
3127
3128Sat Sep 29 14:04:11 2001  Joe Orton  <joe@manyfish.co.uk>
3129
3130	* ne_compress.c: Fix API; return an opaque object which must
3131	be destroyed later.
3132
3133	(ne_decompress_reader): Renamed from ne_gzip_response_body_reader.
3134	Doesn't need the session object passed in any more.
3135	(ne_decompress_destroy): Merge of co_destroy, co_post_end.
3136
3137Sat Sep 29 13:50:43 2001  Joe Orton  <joe@manyfish.co.uk>
3138
3139	* ne_request.c (ne_get_session): New function.
3140
3141Sat Sep 29 12:52:31 2001  Joe Orton  <joe@manyfish.co.uk>
3142
3143	* ne_compress.c (parse_header): Bail if flags are set to something
3144	unexpected.
3145
3146Sat Sep 29 11:15:30 2001  Joe Orton  <joe@manyfish.co.uk>
3147
3148	* ne_compress.c, ne_compress.h: New files.
3149
3150	* Makefile.in: Add deps for ne_compress.
3151
3152Thu Sep 27 09:05:24 2001  Joe Orton  <joe@manyfish.co.uk>
3153
3154	* ne_redirect.c: Adapted for new hooks interface.
3155
3156	* ne_cookies.c: Adapted for new hooks interface.
3157	(ne_cookie_register): New function.
3158
3159Thu Sep 27 09:01:03 2001  Joe Orton  <joe@manyfish.co.uk>
3160
3161	* ne_auth.c, ne_locks.c: Adapted for new hooks interface.  Store
3162	pointer to per-request object in the per-session object.
3163
3164Thu Sep 27 08:48:16 2001  Joe Orton  <joe@manyfish.co.uk>
3165
3166	Re-write hooks interface to register callbacks individually rather
3167	than as a block.  Inspired by the Apache 2.0/APR hooks interface.
3168
3169	* ne_private.h (struct hook): Store a callback, userdata, id.
3170	(struct hook_request): Removed.  (struct ne_session_s): Store
3171	hooks lists for create_req, pre_send, post_send, destroy_req,
3172	destroy_sess, accessor.  (struct ne_request_s): Store accessor
3173	hooks list.
3174
3175	* ne_request.c (ne_add_hooks): Removed.
3176	(ne_hook_create_request, ne_hook_pre_send, ne_hook_post_send,
3177	ne_hook_destroy_request, ne_hook_destroy_session,
3178	ne_hook_session_accessor, ne_hook_request_accessor,
3179	ne_null_accessor, call_access, add_hook): New functions.
3180	(ne_request_create, ne_request_destroy, build_request,
3181	ne_end_request): Adapt for new interface.
3182
3183	* ne_session.c (destroy_hooks): New function.
3184	(ne_session_destroy): Use it to destroy hooks lists appropriately.
3185
3186Tue Sep 25 07:46:32 2001  Joe Orton  <joe@manyfish.co.uk>
3187
3188	* ne_xml.c: Only decode UTF-8 for parsers other than libxml 1.x.
3189
3190Tue Sep 25 07:33:09 2001  Mo DeJong  <supermo@bayarea.net>
3191
3192	* src/ne_socket.c: Include <signal.h> instead of <sys/signal.h>.
3193	(sock_init): Only use signal() to ignore SIGPIPE if both
3194	HAVE_SIGNAL and HAVE_SIGPIPE are defined.
3195
3196Tue Sep 25 07:09:53 2001  Mo DeJong  <supermo@bayarea.net>
3197
3198	* ne_socket.c (sock_init): Declare local variables before invoking
3199	any instructions since that is not valid C code.
3200
3201Sun Sep 23 10:30:54 2001  Joe Orton  <joe@manyfish.co.uk>
3202
3203	* ne_auth.c (struct auth_challenge): Make members const.
3204	(clean_session): Free the realm string.  (basic_challenge,
3205	digest_challenge): strdup the realm string.  (request_digest):
3206	opaque is no longer stored quoted.  (tokenize): New function.
3207	(verify_response, auth_challenge): Rejig to use tokenize().
3208
3209Sat Sep 22 20:17:00 2001  Joe Orton  <joe@manyfish.co.uk>
3210
3211	* ne_string.c (ne_shave): Fix possible memory corruption when
3212	result should be the empty string.
3213
3214Thu Sep 20 21:27:57 2001  Joe Orton  <joe@manyfish.co.uk>
3215
3216	* ne_request.c (ne_pull_request_body): Add debugging dump of body
3217	blocks.
3218
3219Thu Sep 20 21:23:43 2001  Joe Orton  <joe@manyfish.co.uk>
3220
3221	* ne_private.h: Remove obsolete 'if_locks' member from struct
3222	ne_request_s.
3223
3224Tue Sep 18 23:35:30 2001  Joe Orton  <joe@manyfish.co.uk>
3225
3226	* ne_basic.c (ne_get_range): Handle write errors too.
3227
3228Tue Sep 18 22:14:49 2001  Joe Orton  <joe@manyfish.co.uk>
3229
3230	* ne_xml.h (ne_xml_validate_cb): Take userdata parameter.
3231
3232	* ne_xml.c (find_handler): Pass validate callback the handler's
3233	userdata.
3234
3235	* ne_207.c, ne_props.c, ne_locks.c: All users changed.
3236
3237Tue Sep 18 21:49:14 2001  Joe Orton  <joe@manyfish.co.uk>
3238
3239	* ne_locks.c (ne_lock_refresh): New function.
3240
3241Tue Sep 18 21:17:29 2001  Joe Orton  <joe@manyfish.co.uk>
3242
3243	* ne_basic.c (copy_or_move): Take a depth parameter, add depth
3244	header, for COPY requests.  (ne_copy): Take depth parameter, pass
3245	through.  (ne_move): Adjusted accordingly.
3246
3247Mon Sep 17 23:29:58 2001  Joe Orton  <joe@manyfish.co.uk>
3248
3249	* ne_utils.c (ne_debug_init): Set debug stream to be unbuffered if
3250	setvbuf() is available.
3251
3252Mon Aug 27 00:36:37 2001  Joe Orton  <joe@manyfish.co.uk>
3253
3254	* ne_207.c (start_element, end_element): Remember when context is
3255	valid for a <propstat>, and only invoke callback then.
3256
3257Sun Aug 26 22:30:39 2001  Joe Orton  <joe@manyfish.co.uk>
3258
3259	* ne_basic.c (ne_get_range): Better error handling.  Cope with
3260	Apache's 416 problem.
3261
3262Sun Aug 26 18:58:47 2001  Joe Orton  <joe@manyfish.co.uk>
3263
3264	* ne_auth.c: Store unquoted challenge parameters in session
3265	object, prevent having to unquote/free them >1 times.
3266
3267Sun Aug 26 18:57:51 2001  Joe Orton  <joe@manyfish.co.uk>
3268
3269	* ne_socket.c (sock_init): Do nothing on any calls after first.
3270
3271Sun Aug 26 12:45:04 2001  Joe Orton  <joe@manyfish.co.uk>
3272
3273	* ne_basic.c (server_hdr_handler): Remove function. (ne_options):
3274	Don't add server_hdr_handler.
3275
3276Tue Jul 17 11:25:06 2001  Joe Orton  <joe@manyfish.co.uk>
3277
3278	* ne_socket.c (sock_init): Set signal dispostion for SIGPIPE to
3279	ignore.
3280
3281Sat Jun 30 12:11:44 2001  Joe Orton  <joe@manyfish.co.uk>
3282
3283	* ne_utils.c (ne_supports_ssl): New function.
3284
3285Tue Jun 19 21:57:49 2001  Joe Orton  <joe@manyfish.co.uk>
3286
3287	* ne_dates.c (ne_iso8601_parse): Fix month off-by-one bug, use
3288	separate vars for offsets.  (ne_rfc1036_parse): Fix Y2K bug,
3289	parsing problem.
3290
3291Tue Jun 19 21:57:42 2001  Joe Orton  <joe@manyfish.co.uk>
3292
3293	* ne_dates.c (ne_iso8601_parse): New function.
3294
3295Sun Jun 10 15:39:40 2001  Joe Orton  <joe@manyfish.co.uk>
3296
3297	* ne_request.c (send_with_progress): New function.
3298	(send_request_body): Use send_with_progress to trigger progress
3299	callbacks if necessary.
3300
3301Sat Jun  9 15:42:33 2001  Joe Orton  <joe@manyfish.co.uk>
3302
3303	* ne_string.h: Bring back NE_ASC2HEX/HEX2ASC.
3304
3305	* ne_md5.c: Use them.
3306
3307Sat Jun  9 15:42:08 2001  Joe Orton  <joe@manyfish.co.uk>
3308
3309	* ne_xml.h: Include ne_defs.h.
3310
3311Fri Jun  8 23:02:49 2001  Joe Orton  <joe@manyfish.co.uk>
3312
3313	* ne_socket.h, ne_socket.c: Update for includes (Mo DeJong).
3314
3315Fri Jun  8 21:34:00 2001  Joe Orton  <joe@manyfish.co.uk>
3316
3317	* ne_basic.c (dav_hdr_handler): Use ne_token.
3318
3319Sat Jun  2 14:37:07 2001  Joe Orton  <joe@manyfish.co.uk>
3320
3321	* ne_private.h: Renamed from http_private.h.
3322
3323Sat Jun  2 14:35:23 2001  Joe Orton  <joe@manyfish.co.uk>
3324
3325	* ne_auth.c, ne_auth.h: Renamed from http_auth.c, ne_auth.h.
3326
3327Sat Jun  2 14:35:02 2001  Joe Orton  <joe@manyfish.co.uk>
3328
3329	* ne_cookies.c, ne_cookies.h: Renamed from http_cookies.c,
3330	http_cookies.h.
3331
3332Sat Jun  2 14:34:51 2001  Joe Orton  <joe@manyfish.co.uk>
3333
3334	* ne_dates.c, ne_dates.h: Renamed from dates.c, dates.h
3335
3336Sat Jun  2 14:22:49 2001  Joe Orton  <joe@manyfish.co.uk>
3337
3338	* ne_redirect.c, ne_redirect.h: Renamed from http_redirect.c,
3339	http_redirec.h. Big rename... s/http_/ne_g/
3340
3341Sat Jun  2 12:54:51 2001  Joe Orton  <joe@manyfish.co.uk>
3342
3343	* ne_md5.c (md5_process_block): Fix for word alignment issue on
3344	Sparc from Kai Sommerfeld.
3345
3346Wed May 30 23:15:31 2001  Joe Orton  <joe@manyfish.co.uk>
3347
3348	* ne_basic.c (ne_put, ne_get, ne_put_if_unmodified, ne_get_range,
3349	ne_post): Take an integer fd rather than FILE * stream.
3350	(get_to_fd): Write to fd rather than stream.
3351
3352Wed May 30 23:08:55 2001  Joe Orton  <joe@manyfish.co.uk>
3353
3354	* ne_i18n.h, ne_i18n.c: Renamed from neon_i18n.h, neon_i18n.c.
3355
3356	* *.c: All changed accordingly.
3357
3358Wed May 30 23:02:47 2001  Joe Orton  <joe@manyfish.co.uk>
3359
3360	* ne_defs.h: Renamed from neon_defs.h.
3361
3362	* *.h: All changed accordingly.
3363
3364Wed May 30 22:58:57 2001  Joe Orton  <joe@manyfish.co.uk>
3365
3366	* ne_md5.c, ne_md5.h: Renamed from md5.c, neon_md5.h
3367
3368Wed May 30 22:55:19 2001  Joe Orton  <joe@manyfish.co.uk>
3369
3370	* ne_utils.h: In-line ne_debug for GCC which can cope with varargs
3371	preprocessor macros.
3372
3373Wed May 30 00:43:05 2001  Joe Orton  <joe@manyfish.co.uk>
3374
3375	* http_auth.c (ah_use_body): Removed function.  (digest_body): New
3376	function.  (request_digest): Use ne_pull_request_body to find the
3377	MD5 digest of the request body, when necessary.
3378
3379Wed May 30 00:30:52 2001  Joe Orton  <joe@manyfish.co.uk>
3380
3381	* http_redirect.c: Store Request-URI, session pointer, and method
3382	string in redirect object.  Avoid looking inside
3383	ne_request/ne_session internals.
3384
3385Wed May 30 00:04:30 2001  Joe Orton  <joe@manyfish.co.uk>
3386
3387	* ne_request.c: Re-implement request body handling in terms of a
3388	callback which provides the request body blocks on demand.  Remove
3389	'use_body' hook, in favour of the hooks calling
3390	ne_pull_request_body when necessary.  (ne_pull_request_body,
3391	body_fd_send, body_string_send): New functions.
3392	(send_request_body): Re-implemented using ne_pull_request_body.
3393	(run_set_body_hooks): Removed function.  (ne_set_request_body_fd):
3394	Replacement for ne_set_request_body_stream, using a raw fd rather
3395	than a FILE *.
3396
3397Tue May 29 22:39:39 2001  Joe Orton  <joe@manyfish.co.uk>
3398
3399	* dav_basic.h, dav_basic.h: Removed.
3400
3401Tue May 29 22:38:54 2001  Joe Orton  <joe@manyfish.co.uk>
3402
3403	* ne_207.c (ne_simple_request, etc): Copied in from dav_basic.c.
3404
3405Tue May 29 22:12:23 2001  Joe Orton  <joe@manyfish.co.uk>
3406
3407	* ne_locks.c, ne_locks.h, ne_props.c, ne_props.h, ne_207.c,
3408	ne_207.h: Big rename. dav_* -> ne_*, and so on.
3409
3410Tue May 29 22:06:24 2001  Joe Orton  <joe@manyfish.co.uk>
3411
3412	* ne_basic.c (ne_add_depth_header): Moved from dav_basic.c.
3413
3414Tue May 29 21:55:30 2001  Joe Orton  <joe@manyfish.co.uk>
3415
3416	* ne_props.c, ne_props.h: Renamed from dav_props.c, dav_props.h.
3417
3418Tue May 29 21:43:15 2001  Joe Orton  <joe@manyfish.co.uk>
3419
3420	* ne_207.c, ne_207.h: Renamed from dav_207.c, dav_207.h.
3421
3422Tue May 29 21:22:25 2001  Joe Orton  <joe@manyfish.co.uk>
3423
3424	* ne_locks.c, ne_locks.h: Renamed from dav_locks.c, dav_locks.h.
3425
3426Tue May 29 21:21:44 2001  Joe Orton  <joe@manyfish.co.uk>
3427
3428	* ne_socket.c (sock_fullwrite): Cast return value of SSL_write to
3429	size_t to prevent comparison of signed with unsigned.
3430
3431Tue May 29 21:05:27 2001  Joe Orton  <joe@manyfish.co.uk>
3432
3433	* ne_basic.c [!NEON_NODAV]: Move ne_copy, ne_mkcol, ne_move,
3434	ne_delete in here.
3435
3436Tue May 29 20:12:50 2001  Joe Orton  <joe@manyfish.co.uk>
3437
3438	* ne_uri.c, ne_uri.h: Renamed from uri.c, uri.h.
3439
3440Tue May 29 19:17:09 2001  Joe Orton  <joe@manyfish.co.uk>
3441
3442	* ne_socket.c, ne_socket.h: Renamed from socket.c, nsocket.h.
3443
3444Tue May 29 18:58:51 2001  Joe Orton  <joe@manyfish.co.uk>
3445
3446	* ne_basic.c (ne_mkcol, ne_copy, ne_move, ne_delete): Renamed from
3447	dav_*.
3448
3449Tue May 29 17:58:09 2001  Joe Orton  <joe@manyfish.co.uk>
3450
3451	* ne_basic.c (copy_or_move, dav_copy, dav_move, dav_delete,
3452	dav_mkcol): Copied in from dav_basic.c.
3453
3454Tue May 29 17:55:33 2001  Joe Orton  <joe@manyfish.co.uk>
3455
3456	* ne_basic.c, ne_basic.h: Renamed from http_basic.c, http_basic.h.
3457
3458Tue May 29 17:47:50 2001  Joe Orton  <joe@manyfish.co.uk>
3459
3460	* http_auth.c (ah_create, ah_pre_send): Add the response body
3461	handler in pre_send, and only if qop=auth-int.
3462
3463Wed May 16 20:54:51 2001  Joe Orton  <joe@manyfish.co.uk>
3464
3465	* ne_request.c (ne_get_request_headers): Removed function.
3466
3467Sat May 12 18:48:46 2001  Joe Orton  <joe@manyfish.co.uk>
3468
3469	* ne_request.c (read_message_header, read_response_headers): Use a
3470	fixed-size char * buffer argument rather than an ne_buffer.
3471	Append directly to it when header-folding.
3472
3473Mon May  7 10:42:38 2001  Joe Orton  <joe@manyfish.co.uk>
3474
3475	* ne_string.c (ne_token): Use an optimized search (strchr) if
3476	quotes is NULL.
3477
3478Mon May  7 01:33:48 2001  Joe Orton  <joe@manyfish.co.uk>
3479
3480	* http_auth.c (basic_challenge, get_cnonce): Updated for ne_base64
3481	change.
3482
3483Mon May  7 01:32:22 2001  Joe Orton  <joe@manyfish.co.uk>
3484
3485	* base64.c (ne_base64): Take length parameter.  [BASE64_TEST]
3486	(main): Remove function, obsoleted by test code.
3487
3488Wed May  2 12:06:59 2001  Joe Orton  <joe@manyfish.co.uk>
3489
3490	* ne_string.c, ne_string.h (ne_token, ne_shave): New functions,
3491	destined to replace split_string, shave_string, etc.
3492
3493	* ne_string.c [SPLIT_STRING_TEST, PAIR_STRING_TEST] (main): Remove
3494	tests, functions are obsolete.
3495
3496Tue May  1 22:14:14 2001  Joe Orton  <joe@manyfish.co.uk>
3497
3498	* dates.c (ne_httpdate_parse): Moved from ne_utils.c.
3499
3500Tue May  1 21:55:45 2001  Joe Orton  <joe@manyfish.co.uk>
3501
3502	* ne_utils.c, ne_utils.h: Renamed from http_utils.c, http_utils.h.
3503	Big rename.  http_* -> ne_*. neon_* -> ne_*. DEBUG() ->
3504	NE_DEBUG().  DEBUG_* -> NE_DBG_*.
3505
3506Tue May  1 21:35:10 2001  Joe Orton  <joe@manyfish.co.uk>
3507
3508	* ne_request.c: Updated for ne_buffer changes.
3509
3510Tue May  1 21:28:58 2001  Joe Orton  <joe@manyfish.co.uk>
3511
3512	* ne_string.h (ne_buffer_size): Implement as macro.
3513
3514	* ne_string.c (ne_buffer_size): Remove function.
3515
3516Tue May  1 21:23:47 2001  Joe Orton  <joe@manyfish.co.uk>
3517
3518	* ne_string.c, ne_string.h: Make ne_buffer a transparent type, and
3519	no longer be an implicit pointer type.  (ne_buffer_*): All
3520	changed.  (ne_buffer_data, NE_BUFFER_CAST): Removed.
3521
3522Tue May  1 21:17:40 2001  Joe Orton  <joe@manyfish.co.uk>
3523
3524	* ne_string.c, ne_string.h: Renamed sbuffer -> ne_buffer.
3525	Implicit pointer removed ne_buffer type.
3526
3527Tue May  1 21:12:15 2001  Joe Orton  <joe@manyfish.co.uk>
3528
3529	* ne_string.c, ne_string.h: Renamed from string_utils.c,
3530	string_utils.h (CVS copy'n'delete).
3531
3532Tue May  1 20:49:46 2001  Joe Orton  <joe@manyfish.co.uk>
3533
3534	* md5.c (ASC2HEX, HEX2ASC): Moved here from string_utils.h.
3535
3536	* string_utils.h: As above.
3537
3538Tue May  1 20:47:20 2001  Joe Orton  <joe@manyfish.co.uk>
3539
3540	* http_request.c, http_request.h: Removed files.
3541
3542	* ne_request.c, ne_request.h: Copied from old http_request.[ch].
3543	Renamed http_* -> ne_*.
3544
3545Tue May  1 20:43:11 2001  Joe Orton  <joe@manyfish.co.uk>
3546
3547	* hip_xml.c renamed to ne_xml.c, hip_xml.h renamed to ne_xml.h:
3548	CVS repository copy'n'delete.
3549
3550Tue May  1 20:41:03 2001  Joe Orton  <joe@manyfish.co.uk>
3551
3552	* hip_xml.c, hip_xml.h: Big rename. hip_xml_* -> ne_xml_*.
3553
3554Tue May  1 20:37:13 2001  Joe Orton  <joe@manyfish.co.uk>
3555
3556	* http_basic.c, http_basic.h: Big rename. http_* -> ne_*.
3557
3558Tue May  1 19:59:01 2001  Joe Orton  <joe@manyfish.co.uk>
3559
3560	* ne_session.c: Renamed http_* to ne_*.
3561
3562Tue May  1 19:55:47 2001  Joe Orton  <joe@manyfish.co.uk>
3563
3564	* ne_alloc.h (NE_FREE): Renamed from HTTP_FREE() in http_utils.h
3565
3566Tue May  1 19:54:42 2001  Joe Orton  <joe@manyfish.co.uk>
3567
3568	* socket.c (sock_make_secure): Set SSL_MODE_AUTO_RETRY when
3569	available.
3570
3571Mon Apr 30 00:36:34 2001  Joe Orton  <joe@manyfish.co.uk>
3572
3573	* ne_session.[ch]: New files, split down from http_request.[ch].
3574
3575Sun Apr 29 15:02:23 2001  Joe Orton  <joe@manyfish.co.uk>
3576
3577	* uri.c [URITEST] (main): Remove, obsoleted by new test suite.
3578
3579Sun Apr 29 15:01:30 2001  Joe Orton  <joe@manyfish.co.uk>
3580
3581	* uri.c (uri_has_trailing_slash): Return false if uri is "".
3582
3583Sun Apr 29 13:53:41 2001  Joe Orton  <joe@manyfish.co.uk>
3584
3585	* dates.c (ne_asctime_parse, ne_rfc1123_date, ne_rfc1036_parse):
3586	Set tm_isdst to -1 in struct tm.
3587
3588Sun Apr 29 13:28:26 2001  Joe Orton  <joe@manyfish.co.uk>
3589
3590	* http_utils.c (http_parse_statusline): Skip leading whitespace.
3591	(Johan Lindh).  (http_parse_statusline): Ensure status-code is not
3592	more than three digits.
3593
3594Sun Apr 29 13:26:47 2001  Joe Orton  <joe@manyfish.co.uk>
3595
3596	* http_request.c (build_request): Don't add "Content-Length: 0"
3597	header if no body: Squid 2.3-STABLE1 doesn't like this.
3598
3599Sun Apr 29 13:25:16 2001  Joe Orton  <joe@manyfish.co.uk>
3600
3601	* http_auth.c (everywhere): Renamed md5_* -> ne_md5_*.
3602
3603Sun Apr 29 13:24:12 2001  Joe Orton  <joe@manyfish.co.uk>
3604
3605	* md5.c: Renamed md5_* -> ne_md5_*.  (ne_ascii_to_md5,
3606	ne_md5_to_ascii): Moved from string_utils.c.
3607
3608Thu Apr 26 22:39:05 2001  Joe Orton  <joe@manyfish.co.uk>
3609
3610	* uri.c (uri_parse): A zero-length URI is invalid.
3611
3612Wed Apr 25 23:11:51 2001  Joe Orton  <joe@manyfish.co.uk>
3613
3614	* dav_props.c (startelm): Check for xml:lang attribute and store
3615	as prop->lang.  (dav_propset_lang): New function.  (free_propset):
3616	Free lang.
3617
3618Wed Apr 25 23:08:52 2001  Joe Orton  <joe@manyfish.co.uk>
3619
3620	* hip_xml.c (hip_xml_get_attr): New function.
3621
3622Sun Apr 22 21:48:06 2001  Joe Orton  <joe@manyfish.co.uk>
3623
3624	* uri.c (uri_parse): Skip a userinfo@ segment if present (Johan
3625	Lindh <johan@link-Data.com>).
3626
3627Wed Apr 18 13:29:46 2001  Joe Orton  <joe@manyfish.co.uk>
3628
3629	* dav_locks.c (dav_lock_copy): Allow owner to be NULL.
3630
3631Tue Apr 17 22:57:50 2001  Joe Orton  <joe@manyfish.co.uk>
3632
3633	* ne_alloc.h, dav_locks.h: Add C++ inclusion safety.
3634
3635Tue Apr 17 22:56:50 2001  Joe Orton  <joe@manyfish.co.uk>
3636
3637	* uri.c (uri_parse): Correctly handle URIs with no scheme or
3638	hostport segments (i.e. just a path).
3639
3640Tue Apr 10 00:29:25 2001  Joe Orton  <joe@manyfish.co.uk>
3641
3642	* socket.c [HAVE_SOCKS_H]: Include socks.h for SOCKSv5 support.
3643
3644Wed Apr  4 21:41:47 2001  Joe Orton  <joe@manyfish.co.uk>
3645
3646	* http_utils.h [WIN32]: Define ssize_t (Kai).
3647
3648Tue Apr  3 21:03:28 2001  Joe Orton  <joe@manyfish.co.uk>
3649
3650	* dav_locks.c (dav_lock_discover): Cope with below API change.
3651
3652Tue Apr  3 20:43:50 2001  Joe Orton  <joe@manyfish.co.uk>
3653
3654	* dav_props.c (propfind): Register the flat element handler here,
3655	to pick up *any* properties and store them as 'flat' if they are
3656	not handled by a handler further down the stack.  (make_elms,
3657	free_elms, dav_propfind_set_flat, dav_propfind_set_complex):
3658	Removed functions.  (dav_propfind_named): Take the list of
3659	property names, and call set_body here.
3660	(dav_propfind_set_private): New function.
3661
3662Tue Apr  3 09:33:09 2001  Joe Orton  <joe@manyfish.co.uk>
3663
3664	* http_auth.h: Added C++ inclusion safety. (Kai Sommerfeld)
3665
3666Mon Apr  2 02:39:18 2001  Joe Orton  <joe@manyfish.co.uk>
3667
3668	* hip_xml.c (sax_error): Add parse error callback for libxml.
3669
3670Mon Apr  2 02:23:06 2001  Joe Orton  <joe@manyfish.co.uk>
3671
3672	* http_redirect.c (post_send): Clean up and fix logic.  Only check
3673	for confirmation for same-server redirects.
3674
3675Mon Apr  2 02:13:48 2001  Joe Orton  <joe@manyfish.co.uk>
3676
3677	* http_redirect.c (http_redirect_location): New function.
3678	(destroy): Removed function.  (create): Free location.
3679	(post_send): Only call notify callback for followed redirects.
3680
3681Mon Apr  2 01:55:27 2001  Joe Orton  <joe@manyfish.co.uk>
3682
3683	* http_request.c (http_set_request_uri): Allow using the '*' URI
3684	even when using a proxy server.
3685
3686Mon Apr  2 01:32:06 2001  Joe Orton  <joe@manyfish.co.uk>
3687
3688	* http_redirect.c (post_send): Give up on trying to follow a
3689	redirect to another server.  Return HTTP_REDIRECT on such a
3690	redirect.
3691
3692	* http_redirect.c (post_send): Fix leaks of URI object (Kai
3693	Sommerfeld).
3694
3695Mon Apr  2 01:08:33 2001  Joe Orton  <joe@manyfish.co.uk>
3696
3697	* http_request.c (read_response_headers): Don't read more than 100
3698	response headers.
3699
3700Mon Apr  2 00:54:43 2001  Joe Orton  <joe@manyfish.co.uk>
3701
3702	* http_request.c (http_request_dispatch): Remove mapping of auth
3703	status codes to return values, the hook does it now.
3704
3705Mon Apr  2 00:53:20 2001  Joe Orton  <joe@manyfish.co.uk>
3706
3707	* http_request.c (http_set_request_uri): New function, split out
3708	from http_request_create. (http_request_create): Use it.
3709
3710Mon Apr  2 00:51:23 2001  Joe Orton  <joe@manyfish.co.uk>
3711
3712	* http_auth.c (http_set_proxy_auth, http_set_server_auth): Add
3713	failure codes.  (ah_post_send): Return failure code if
3714	authentication fails.
3715
3716Mon Apr  2 00:19:17 2001  Joe Orton  <joe@manyfish.co.uk>
3717
3718	* http_utils.c: Pick up xmlversion.h from libxml2.
3719	(neon_version_string): Include libxml2 version string if defined.
3720
3721Sun Apr  1 21:40:00 2001  Joe Orton  <joe@manyfish.co.uk>
3722
3723	* http_basic.c (http_get_range): Fix total length
3724	calculation. (Johan Lindh <johan@linkdata.se>).
3725	(clength_hdr_handler): Use range->total.
3726
3727Sun Apr  1 21:26:09 2001  Joe Orton  <joe@manyfish.co.uk>
3728
3729	* hip_xml.c: Add expat2 support (Sam TH <sam@uchicago.edu>).
3730
3731Sun Apr  1 21:07:19 2001  Joe Orton  <joe@manyfish.co.uk>
3732
3733	* string_utils.h (CONCAT2, CONCAT3, CONCAT4): Use ne_malloc.
3734
3735Sun Apr  1 20:59:09 2001  Joe Orton  <joe@manyfish.co.uk>
3736
3737	* dav_props.c (propfind, dav_proppatch): As below.
3738
3739Sun Apr  1 20:32:29 2001  Joe Orton  <joe@manyfish.co.uk>
3740
3741	* http_basic.c (http_post): Changed as per
3742	http_set_request_body_buffer change.
3743
3744	* dav_locks.c (dav_lock): Likewise.
3745
3746Sun Apr  1 20:31:06 2001  Joe Orton  <joe@manyfish.co.uk>
3747
3748	* http_request.c (http_set_request_body_buffer): Pass in size
3749	parameter too.  (send_request_body): Use sized rather than
3750	NUL-terminated buffer.
3751
3752Sun Apr  1 20:12:51 2001  Joe Orton  <joe@manyfish.co.uk>
3753
3754	* http_private.h: Added 'body_callback' request body type, and
3755	body_cb, body_ud fields to http_req.
3756
3757	* http_request.c (http_set_request_body_provider): New function.
3758	(set_body_size): New function, factored out from old
3759	http_set_request_body_*.  (http_set_request_body_stream,
3760	http_set_request_body_buffer): Use it.
3761
3762Sun Apr  1 19:56:17 2001  Joe Orton  <joe@manyfish.co.uk>
3763
3764	* dav_props.c: Replaced 'uri' and 'depth' fields in propfind
3765	handler object with an 'http_req' pointer.  (dav_propfind_create):
3766	Create the request object here, and set the depth header.
3767	(propfind): Changed accordingly.  (dav_propfind_destroy): Destroy
3768	request object too.
3769
3770	* dav_props.c (dav_propfind_get_request): New function.
3771
3772Fri Mar 30 16:50:51 2001  Joe Orton  <joe@manyfish.co.uk>
3773
3774	* hip_xml.c (start_element): Quote attributes in collect (Kai
3775	Sommerfeld).
3776
3777Fri Mar 30 16:36:08 2001  Joe Orton  <joe@manyfish.co.uk>
3778
3779	* http_basic.c (http_put_if_unmodified): Changed as below.
3780
3781Thu Mar 22 14:05:52 2001  Joe Orton  <joe@manyfish.co.uk>
3782
3783	* http_utils.c (http_dateparse): Changed as below.
3784
3785	* http_auth.c (get_conce, basic_challenge): Likewise.
3786
3787Thu Mar 22 14:04:54 2001  Joe Orton  <joe@manyfish.co.uk>
3788
3789	* dates.c (ne_rfc1123_date, ne_rfc1123_date, ne_asctime_parse,
3790	ne_rfc1036_parse): Added ne_ prefix.
3791
3792Thu Mar 22 14:03:12 2001  Joe Orton  <joe@manyfish.co.uk>
3793
3794	* base64.c (ne_base64): Renamed from base64.
3795
3796Tue Mar 20 20:34:44 2001  Joe Orton  <joe@manyfish.co.uk>
3797
3798	* dav_props.c (make_elms): Don't request UTF-8 decoding of
3799	property values.
3800
3801Tue Mar 20 20:33:39 2001  Joe Orton  <joe@manyfish.co.uk>
3802
3803	* string_utils.c (ne_utf8_decode): New function.
3804
3805Mon Mar 19 22:08:45 2001  Joe Orton  <joe@manyfish.co.uk>
3806
3807	* http_basic.c (get_callback): Removed function.  (http_get,
3808	http_read_file, http_post): Use callbacks directly rather than
3809	indirectly through get_callback.
3810
3811Mon Mar 19 21:55:19 2001  Joe Orton  <joe@manyfish.co.uk>
3812
3813	* http_request.c (notify_status, http_set_status,
3814	http_set_progress): New functions: request status and progress
3815	callbacks.  (open_connection, lookup_host): Use notify_status to
3816	trigger status callbacks, and register socket progress callbacks.
3817
3818Mon Mar 19 21:53:07 2001  Joe Orton  <joe@manyfish.co.uk>
3819
3820	* socket.c (sock_register_notify): Removed function.
3821	(sock_connect_u): Renamed to sock_connect.
3822	(sock_register_progress): Per-socket progress callbacks rather
3823	than global ones.  (sock_call_progress): Take socket argument.
3824	(all callers changed).
3825
3826Mon Mar 19 21:52:50 2001  Joe Orton  <joe@manyfish.co.uk>
3827
3828	* socket.c (sock_get_version): New function.
3829
3830Mon Mar 19 13:59:21 2001  Joe Orton  <joe@manyfish.co.uk>
3831
3832	* dav_props.c (propfind): Destroy the handler.
3833
3834Mon Mar 19 13:36:55 2001  Joe Orton  <joe@manyfish.co.uk>
3835
3836	* dav_props.c (dav_propnames): New function.
3837
3838Wed Mar 14 22:42:12 2001  Joe Orton  <joe@manyfish.co.uk>
3839
3840	* http_request.h (http_begin_request, http_end_request,
3841	http_read_response_block): New functions.
3842	(http_request_dispatch): Reimplemented using new caller-pulls
3843	interface.
3844
3845Wed Mar 14 22:20:38 2001  Joe Orton  <joe@manyfish.co.uk>
3846
3847	* http_auth.c (ah_post_send): If authentication fails (i.e. bad
3848	credentials), clean the session details.
3849
3850Wed Mar 14 20:46:55 2001  Joe Orton  <joe@manyfish.co.uk>
3851
3852	* http_auth.c: Retry the request simply if it has not been tried
3853	before with authentication details, otherwise, fail on 40[17].
3854
3855Wed Mar 14 20:12:52 2001  Joe Orton  <joe@manyfish.co.uk>
3856
3857	* http_request.c (open_connection): Make sure to close the
3858	connection, and return HTTP_CONNECT if the SSL negotiation fails.
3859
3860Tue Mar  6 18:37:43 2001  Joe Orton  <joe@manyfish.co.uk>
3861
3862	* ne_alloc.c (ne_strndup): Allocate n+1 bytes not 'n' (Kai
3863	Sommerfeld).
3864
3865Mon Mar  5 01:05:31 2001  Joe Orton  <joe@manyfish.co.uk>
3866
3867	* http_request.c: Moved local sbuffer variables of
3868	http_request_dispatch into http_req members 'reqbuf' and
3869	'respbuf'.  (build_request): Return a const char * of the request.
3870	(send_request): Call build_request directly, use req->respbuf.
3871	(http_request_dispatch): Don't call build_request.  Removed 'goto'
3872	exception handling (hoorah).  (http_request_create,
3873	http_request_destroy): Create and destroy reqbuf and respbuf here.
3874
3875Mon Mar  5 00:43:40 2001  Joe Orton  <joe@manyfish.co.uk>
3876
3877	* http_request.c (http_set_request_body_stream): Set
3878	req->body_size and Content-Length header here: return success
3879	value.  (http_set_request_body_buffer): Likewise (but no return
3880	value).  (get_request_bodysize): Removed function.
3881	(build_request): Add Content-Length: 0 header if no request body.
3882
3883Mon Mar  5 00:27:24 2001  Joe Orton  <joe@manyfish.co.uk>
3884
3885	* http_auth.c (http_forget_auth): New function.
3886
3887Mon Mar  5 00:25:15 2001  Joe Orton  <joe@manyfish.co.uk>
3888
3889	* http_request.c (http_request_hook_private): Renamed from
3890	http_get_hook_private.  (http_session_hook_private): New function.
3891
3892	* dav_locks.c (dav_lock_using_resource, dav_lock_using_parent):
3893	Renamed simiarly.
3894
3895Sun Mar  4 23:12:12 2001  Joe Orton  <joe@manyfish.co.uk>
3896
3897	* http_auth.c: Moved per-request state into struct auth_request.
3898	(request_digest): Take struct auth_request argument.  (free_auth):
3899	New function.  (http_add_hooks): Pass free_auth as cleanup
3900	function for auth session.
3901
3902Sun Mar  4 23:08:46 2001  Joe Orton  <joe@manyfish.co.uk>
3903
3904	* http_redirect.c (auto_redirect): Auto-redirect OPTIONS requests.
3905	(free_redirect): New function.  (http_redirect_register): Pass
3906	cleanup function.
3907
3908Sun Mar  4 23:07:01 2001  Joe Orton  <joe@manyfish.co.uk>
3909
3910	* dav_locks.c (dav_lock_unregister): Removed function.
3911	(free_locks): New function.  (dav_lock_register): Pass free_locks
3912	as cleanup function for hooks.
3913
3914Sun Mar  4 22:54:57 2001  Joe Orton  <joe@manyfish.co.uk>
3915
3916	* http_request.h (http_add_hooks): Added fourth argument to
3917	register a cleanup function for the cookie.
3918
3919Sun Mar  4 19:53:03 2001  Joe Orton  <joe@manyfish.co.uk>
3920
3921	* http_auth.c (request_digest): Use an sbuffer to create the
3922	header value.
3923
3924Sun Mar  4 19:44:18 2001  Joe Orton  <joe@manyfish.co.uk>
3925
3926	* http_auth.c: Remove namespace protection for private
3927	functions. s/http_auth/auth/g.
3928
3929Sun Mar  4 19:39:13 2001  Joe Orton  <joe@manyfish.co.uk>
3930
3931	* http_auth.c (ah_pre_send): Increase attempt counter here, ...
3932	(ah_post_send): instead of here.
3933
3934Sun Mar  4 18:40:03 2001  Joe Orton  <joe@manyfish.co.uk>
3935
3936	* http_request.c (http_request_dispatch): Simplify post_send hook
3937	invocation: run them until one doesn't return HTTP_OK. Don't run
3938	pre_send hooks here.  Loop while a hook returns HTTP_RETRY.
3939	(build_request): Run pre_send hooks here.
3940
3941	* http_request.c (read_response_body): Call
3942	normalize_response_length here.
3943
3944Sun Mar  4 18:12:26 2001  Joe Orton  <joe@manyfish.co.uk>
3945
3946	Re-implemented HTTP authentication using generic hooks interface.
3947
3948	* http_auth.c: Added http_auth.h.  (http_auth_init,
3949	http_auth_set_creds_cb, http_auth_new_request,
3950	http_auth_request_header): Removed functions, merged into new
3951	hooks code.  (ah_create, ah_post_send, ah_pre_send, ah_use_body,
3952	ah_destroy): New functions.  (auth_body_reader,
3953	http_set_server_auth, http_set_proxy_auth): Moved over from
3954	http_request.c and redone for hooks interface.
3955
3956	* http_request.c (http_set_server_auth, http_set_proxy_auth,
3957	give_creds, auth_body_reader): Moved to http_auth.c.
3958	(http_accept_always): Renamed from always_accept_response and made
3959	public.  (http_request_create, build_request,
3960	http_request_dispatch): Removed authentication code.
3961
3962Tue Feb 27 19:49:42 2001  Joe Orton  <joe@manyfish.co.uk>
3963
3964	* dav_props.c (set_body): Remove UTF-8 encoding again.
3965
3966Mon Feb 26 22:38:41 2001  Joe Orton  <joe@manyfish.co.uk>
3967
3968	Patch from Kai Sommerfeld to remove URI escaping from inside neon.
3969
3970	* dav_207.c (end_element): Don't unescape href elements.
3971
3972	* http_request.c (http_request_create): Don't escape Request-URI.
3973
3974	* dav_basic.c (copy_or_move): Don't escape destination URI.
3975
3976Mon Feb 26 21:44:56 2001  Joe Orton  <joe@manyfish.co.uk>
3977
3978	* dav_props.c (set_body): UTF-8 encode the property name and
3979	value.  (make_elms): Request UTF-8 decoding of property values.
3980
3981Mon Feb 26 21:40:14 2001  Joe Orton  <joe@manyfish.co.uk>
3982
3983	* hip_xml.c: Do perform UTF-8 decoding when using libxml.
3984	(char_data): Fix UTF-8 decoding bug where the byte after a
3985	multi-byte encoded sequence would be skipped.
3986
3987Sun Feb 25 20:04:05 2001  Joe Orton  <joe@manyfish.co.uk>
3988
3989	* string_utils.c (ne_utf8_encode): New function.
3990
3991Sun Feb 25 19:52:01 2001  Joe Orton  <joe@manyfish.co.uk>
3992
3993	* ne_alloc.c (ne_realloc): New function.
3994
3995Sun Feb 25 17:00:32 2001  Joe Orton  <joe@manyfish.co.uk>
3996
3997	* Makefile.in (all): Rename NEON_IS_BUNDLED to NEON_BUILD_BUNDLED.
3998
3999Sun Feb 25 16:52:43 2001  Joe Orton  <joe@manyfish.co.uk>
4000
4001	* Makefile.in (all): Build according to NEON_IS_BUNDLED.
4002
4003Fri Feb 23 23:38:10 2001  Joe Orton  <joe@manyfish.co.uk>
4004
4005	* Makefile.in: Fix deps: neon_config.h has gone.
4006
4007Fri Feb 23 22:57:47 2001  Joe Orton  <joe@manyfish.co.uk>
4008
4009	* dav_props.c (dav_simple_propfind): Support a NULL 'props'
4010	argument to do an allprop request, as per the advertising
4011	literature.  Register a catch-all handler in this case.
4012
4013Fri Feb 23 22:16:42 2001  Joe Orton  <joe@manyfish.co.uk>
4014
4015	* http_request.c (http_session_destroy): Free up hooks list.
4016
4017Thu Feb 22 21:54:36 2001  Joe Orton  <joe@manyfish.co.uk>
4018
4019	* http_request.h (http_add_hooks): Make request_hooks 'const'.
4020
4021Thu Feb 15 08:36:56 2001  Joe Orton  <joe@manyfish.co.uk>
4022
4023	* http_request.c (read_response_body): Accept SOCK_CLOSED as
4024	end-of-response if we don't have a Content-Length (and not
4025	chunked). (Kai Sommerfeld).
4026
4027Thu Feb 15 08:36:23 2001  Joe Orton  <joe@manyfish.co.uk>
4028
4029	* http_request.c (add_fixed_headers): Don't add the Host header
4030	here.  (http_request_dispatch): Add it here instead.
4031
4032	* http_request.c (set_hostinfo): Dup the hostname.
4033	(http_session_destroy): Free the hostname.  (Kai Sommerfeld).
4034
4035Thu Feb 15 08:35:49 2001  Joe Orton  <joe@manyfish.co.uk>
4036
4037	* http_private.h: Make hostname in struct host_info char *. (Kai
4038	Sommerfeld).
4039
4040Thu Feb 15 08:08:50 2001  Joe Orton  <joe@manyfish.co.uk>
4041
4042	* http_redirect.h: Add C++ header-inclusion safety macros (Kai
4043	Sommerfeld <kai.sommerfeld@germany.sun.com>).
4044
4045Wed Feb 14 23:37:57 2001  Joe Orton  <joe@manyfish.co.uk>
4046
4047	* http_request.c (read_response_body): Use a size_t for readlen,
4048	as read_response_block requires.
4049
4050Wed Feb 14 23:25:44 2001  Joe Orton  <joe@manyfish.co.uk>
4051
4052	* http_auth.c (request_digest): Fix incorrect signed-ness of
4053	buffer.
4054
4055Wed Feb 14 23:22:13 2001  Joe Orton  <joe@manyfish.co.uk>
4056
4057	* uri.h, string_utils.h: Comment-out tokens after #endif.
4058
4059Sun Feb  4 14:36:11 2001  Joe Orton  <joe@manyfish.co.uk>
4060
4061	* http_redirect.c (post_send): Prototype change.
4062
4063Sun Feb  4 14:31:42 2001  Joe Orton  <joe@manyfish.co.uk>
4064
4065	* socket.c: Added key_prompt, key_userdata, key_file to
4066	nssl_context.  (sock_set_key_prompt, key_prompt_cb): New
4067	functions.  (sock_make_secure): Set ctx->key_file to private key
4068	filename.
4069
4070Sun Feb  4 13:31:44 2001  Joe Orton  <joe@manyfish.co.uk>
4071
4072	* http_request.h: Make http_status argument of post_send a const
4073	pointer.
4074
4075Sun Feb  4 10:38:12 2001  Joe Orton  <joe@manyfish.co.uk>
4076
4077	* http_request.c (set_sockerr): Only use the socket error if it is
4078	NULL, else print generic "something went wrong"-type error
4079	message.
4080
4081Sun Feb  4 10:29:37 2001  Joe Orton  <joe@manyfish.co.uk>
4082
4083	* socket.c (sock_set_client_cert): Call SSL_CTX_check_private_key
4084	to ensure that the cert and private key match.
4085
4086Sun Feb  4 10:28:02 2001  Joe Orton  <joe@manyfish.co.uk>
4087
4088	* socket.c (sock_make_secure): In error cases after SSL_connect
4089	succeeds, call SSL_shutdown and assign sock->ssl = NULL before
4090	returning.
4091
4092Sat Feb  3 18:33:56 2001  Joe Orton  <joe@manyfish.co.uk>
4093
4094	* socket.c (sock_close): Call SSL_shutdown before close()'ing the
4095	fd.
4096
4097Sat Feb  3 18:30:48 2001  Joe Orton  <joe@manyfish.co.uk>
4098
4099	* socket.c: Store an default SSL_CTX in nsocket, to be used when
4100	no nssl_context is supplied.  (create_socket): Create default
4101	SSL_CTX (sock_close): Free it here.  (sock_make_secure): Use it
4102	here.
4103
4104Sat Feb  3 15:52:15 2001  Joe Orton  <joe@manyfish.co.uk>
4105
4106	* socket.c (sock_set_client_cert): New function.
4107
4108Sat Feb  3 15:48:51 2001  Joe Orton  <joe@manyfish.co.uk>
4109
4110	* socket.c: Rejig of nssl_context handling.  An nssl_context is
4111	now really a wrapper for an SSL_CTX.  (sock_create_ssl_context):
4112	Create the SSL_CTX here.  (sock_disable_tlsv1, sock_disable_sslv2,
4113	sock_disable_sslv3): Set the SSL_CTX option directly.
4114	(sock_make_secure): Create an SSL_CTX if no nssl_context is
4115	supplied, otherwise use SSL_CTX from nssl_context.
4116
4117Sun Jan 28 13:52:03 2001  Joe Orton  <joe@manyfish.co.uk>
4118
4119	* http_utils.c (neon_version_minimum): New function.
4120
4121Sun Jan 28 10:37:28 2001  Joe Orton  <joe@manyfish.co.uk>
4122
4123	* neon_config.h.in: Removed file.
4124
4125	* http_request.c, http_utils.c: Don't include neon_config.h.
4126
4127Sat Jan 27 22:52:37 2001  Joe Orton  <joe@light.plus.com>
4128
4129	* socket.c: Use closesocket() as NEON_CLOSE (Markus Fleck
4130	<fleck@isoc.de>).
4131
4132Sat Jan 27 22:35:16 2001  Joe Orton  <joe@light.plus.com>
4133
4134	* hip_xml.c: Add 'char_data' as libxml cdataBlock handler.
4135
4136Tue Jan 23 23:17:00 2001  Joe Orton  <joe@light.plus.com>
4137
4138	* neon_config.h.in: Renamed from neon_config.h.  Define
4139	NEON_VERSION_MAJOR and NEON_VERSION_MINOR too: all picked up from
4140	the NEON_VERSIONS macro.
4141
4142Sun Jan 21 22:07:34 2001  Joe Orton  <joe@light.plus.com>
4143
4144	* string_utils.c (ne_concat): New function.
4145
4146Thu Jan 18 22:25:34 2001  Joe Orton  <joe@light.plus.com>
4147
4148	* ne_alloc.h: Added ne_oom_callback.
4149
4150	* ne_alloc.c: Added DO_MALLOC macro to do the malloc and oom
4151	callback test.  (ne_malloc): Use DO_MALLOC.  (ne_strdup,
4152	ne_calloc, ne_strndup): Reimplement using DO_MALLOC rather than
4153	calling ne_malloc().
4154
4155Tue Jan 16 20:16:35 2001  Joe Orton  <joe@light.plus.com>
4156
4157	* neon_config.h: Bumped version to 0.10.1.
4158
4159Tue Jan 16 20:14:40 2001  Joe Orton  <joe@light.plus.com>
4160
4161	* http_request.c (http_session_create): Default expect-100 support
4162	to OFF.
4163
4164Mon Jan 15 22:59:33 2001  Joe Orton  <joe@light.plus.com>
4165
4166	* neon_config.h: Bumped version to 0.10.0.
4167
4168Mon Jan 15 22:58:04 2001  Joe Orton  <joe@light.plus.com>
4169
4170	* dav_basic.c (dav_simple_request): Use dav_207_ignore_unknown.
4171
4172Sun Jan 14 22:52:31 2001  Joe Orton  <joe@light.plus.com>
4173
4174	* dav_props.c (propfind): Call dav_207_ignore_unknown.
4175
4176Sun Jan 14 22:49:06 2001  Joe Orton  <joe@light.plus.com>
4177
4178	* dav_207.c: Don't handle unknown elements in normal handler.
4179	(ignore_cc, dav_207_ignore_unknown): New functions, for ignoring
4180	any unknown elements in the parse.
4181
4182Sun Jan 14 21:53:00 2001  Joe Orton  <joe@light.plus.com>
4183
4184	* hip_xml.c: Renamed 'handlers' back to top_handlers.
4185	(push_handler): Now, p->root->handlers points to BASE of stack,
4186	p->top_handlers points to TOP of stack.  (hip_xml_destroy):
4187	Changed to start from new BASE of stack.
4188
4189Sun Jan 14 10:50:09 2001  Joe Orton  <joe@light.plus.com>
4190
4191	* http_request.c (http_session_server): Do perform the DNS lookup
4192	if we have a proxy_decider function, since that means we MIGHT
4193	need to know the IP address of the origin server.
4194	(http_request_create): Pass the real scheme back to the proxy
4195	decider callback.
4196
4197Wed Jan 10 22:43:16 2001  Joe Orton  <joe@light.plus.com>
4198
4199	* Makefile.in: Rename OBJ_EXT to NEON_OBJEXT.  Remove
4200	NEON_INTERFACE_VERSION, use NEON_LINK_FLAGS instead.
4201
4202Wed Jan 10 22:02:02 2001  Joe Orton  <joe@light.plus.com>
4203
4204	* dav_locks.c (create_private): New function.
4205	(dav_lock_discover): Switch to using new dav_propfind_set_complex
4206	API.
4207
4208Wed Jan 10 21:59:36 2001  Joe Orton  <joe@light.plus.com>
4209
4210	* dav_props.h (dav_propfind_set_complex): Switch the
4211	'sizeof_private' argument for a callback 'creator': the return
4212	value of this callback is used as the 'private' field for the
4213	current resource.
4214
4215Mon Jan  8 22:09:55 2001  Joe Orton  <joe@light.plus.com>
4216
4217	* dav_locks.h (dav_lock_result): Re-order arguments.  Make lock
4218	object const.
4219
4220	* dav_locks.c (dav_lock_copy): New function.  (discover_results):
4221	Set lock->uri given href for current results.  Free lock object
4222	after passing to results.
4223
4224Sun Jan  7 21:55:14 2001  Joe Orton  <joe@light.plus.com>
4225
4226	* dav_locks.c (dav_lock): Destroy XML parser after use.  Remove
4227	handling of Lock-Token header: it wasn't used and it leaked.
4228
4229Sun Jan  7 19:58:29 2001  Joe Orton  <joe@light.plus.com>
4230
4231	* dav_props.c (free_propset): Free the property values, and the
4232	result set URI too.
4233
4234Sun Jan  7 16:58:19 2001  Joe Orton  <joe@light.plus.com>
4235
4236	* http_request.c (read_response_block): Fix handling of
4237	SOCK_CLOSED from sock_read as end-of-connection.
4238
4239Sat Jan  6 15:02:57 2001  Joe Orton  <joe@light.plus.com>
4240
4241	* hip_xml.c (struct hip_xml_parser): Renamed 'top_handlers' to
4242	'handlers' in hip_xml_parser.  (push_handler): New function.
4243	(hip_xml_push_handler, hip_xml_push_mixed_handler): Use
4244	push_handler.
4245
4246	* hip_xml.c (find_handler): Begin the search for a new handler
4247	from the handler of the current (parent) element, and work up the
4248	stack.
4249
4250Sat Jan  6 11:15:17 2001  Joe Orton  <joe@light.plus.com>
4251
4252	* hip_xml.c (find_handler): Display error message for unknown XML
4253	element as 'elmname (in nspace)' rather than 'nspace:elmname'
4254	since the latter produces confusing errors like
4255	'DAV::displayname'.
4256
4257Wed Jan  3 21:34:44 2001  Joe Orton  <joe@light.plus.com>
4258
4259	* Makefile.in: Hard-code top_builddir as '..' (possibly wrong, but
4260	true for all neon apps so far).  Remove INCLUDES, now unused.  Add
4261	top_srcdir.
4262
4263Fri Dec 22 22:51:27 2000  Joe Orton  <joe@light.plus.com>
4264
4265	* dav_props.c: Added 'has_props' field to propfind_handler struct.
4266	(set_body): Only add leading 'prop' element if has_props is not
4267	set.  Set has_props.  Don't add trailing </prop> element here.
4268	(dav_propfind_named): ... add it here instead.
4269	(dav_propfind_set_complex, dav_propfind_set_flat): New set_body
4270	interface.
4271
4272Fri Dec 22 21:10:39 2000  Joe Orton  <joe@light.plus.com>
4273
4274	* socket.c (sock_transfer): Don't use NEON_READ here, this is
4275	for reading from a non-socket fd.
4276
4277Wed Dec 20 00:19:34 2000  Joe Orton  <joe@light.plus.com>
4278
4279	* neon_config.h: Bumped version to 0.9.1.
4280
4281Wed Dec 20 00:19:09 2000  Joe Orton  <joe@light.plus.com>
4282
4283	* dav_props.c (free_propset): Don't free the private structure,
4284	make this the caller's responsibility.
4285
4286Wed Dec 20 00:12:36 2000  Joe Orton  <joe@light.plus.com>
4287
4288	* dav_props.c (end_propstat): Rename propstat argument to
4289	'pstat_v' to kill warnings.
4290
4291Tue Dec 19 23:42:39 2000  Joe Orton  <joe@light.plus.com>
4292
4293	* dav_props.c (start_response): Zero-out the private structure on
4294	creation.
4295
4296Tue Dec 19 22:54:06 2000  Joe Orton  <joe@light.plus.com>
4297
4298	* http_request.c (read_response_block): Rename local variable
4299	'socket' to 'sock'.
4300
4301Tue Dec 19 22:52:56 2000  Joe Orton  <joe@light.plus.com>
4302
4303	* http_request.h: Rename argument from 'stat' in post_send
4304	definition.
4305
4306Tue Dec 19 22:52:32 2000  Joe Orton  <joe@light.plus.com>
4307
4308	* http_utils.h: Add 'const' to char * argument.
4309
4310Tue Dec 19 22:19:28 2000  Joe Orton  <joe@light.plus.com>
4311
4312	* neon_config.h: Bumped version to 0.9.0.
4313
4314Tue Dec 19 22:12:19 2000  Joe Orton  <joe@light.plus.com>
4315
4316	* Makefile.in: New file.
4317
4318Tue Dec 19 22:07:50 2000  Joe Orton  <joe@light.plus.com>
4319
4320	* Makefile.incl: Removed file.
4321
4322Tue Dec 19 22:06:06 2000  Joe Orton  <joe@light.plus.com>
4323
4324	* dav_locks.c (dav_lock_discover): New callback-based lock
4325	discovery interface.  Re-implemented using new propfind interface.
4326
4327Tue Dec 19 21:22:43 2000  Joe Orton  <joe@light.plus.com>
4328
4329	* dav_props.h: Replace old dav_propfind_* interface with better
4330	one.  (dav_simple_propfind): Renamed from dav_get_props.
4331	(dav_propfind_current_private, dav_propfind_set_complex,
4332	dav_propfind_set_flat): New functions.
4333	(dav_propfind_get_current_resource): Removed function.
4334	(dav_propfind_named, dav_propfind_allprop): Change second argument
4335	to be the results callback.
4336
4337	* dav_props.c: Replace implementatino of old interface with new
4338	one.  (dav_simple_propfind): Re-implemented on top of new
4339	all-singing all-dancing dav_propfind_* interface.
4340
4341Sun Dec 17 18:24:50 2000  Joe Orton  <joe@light.plus.com>
4342
4343	* dav_props.c: Add dav_get_props, and all its auxiliaries.
4344
4345Sun Dec 17 15:43:55 2000  Joe Orton  <joe@light.plus.com>
4346
4347	* dav_props.c (propfind): Destroy the request after calling
4348	http_get_status.
4349
4350Sun Dec 17 18:04:58 2000  Joe Orton  <joe@light.plus.com>
4351
4352	* hip_xml.c (find_handler): Allow using NULL as name and nspace in
4353	HIP_ELM_unknown elements.
4354
4355Sun Dec 17 18:03:03 2000  Joe Orton  <joe@light.plus.com>
4356
4357	* dav_207.c (check_context): Don't handle the unknown element when
4358	it is a child of the prop element, this prevents handling allprop
4359	responses.
4360
4361Thu Dec 14 21:48:06 2000  Joe Orton  <joe@light.plus.com>
4362
4363	* neon_config.h: Bumped version to 0.8.0.
4364
4365Thu Dec 14 21:43:31 2000  Joe Orton  <joe@light.plus.com>
4366
4367	* dav_basic.c, dav_locks.c, dav_props.c (everywhere): Changed to
4368	new response-status interface, and _class->klass change.
4369
4370Thu Dec 14 21:37:38 2000  Joe Orton  <joe@light.plus.com>
4371
4372	* http_request.c (http_get_status): Add new response-status
4373	interface.
4374
4375Thu Dec 14 21:30:25 2000  Joe Orton  <joe@light.plus.com>
4376
4377	* http_basic.c (everywhere): Use new status interface.
4378
4379Thu Dec 14 21:25:03 2000  Joe Orton  <joe@light.plus.com>
4380
4381	* http_private.h: Made http_status pointer in http_req a declared
4382	object.
4383
4384	* http_request.h: Removed passing status pointer to
4385	http_request_dispatch.
4386
4387	* http_request.c (everywhere): Removed passing extra http_status *
4388	to auxiliaries, use req->status instead.  Renamed '_class' to
4389	'klass' everywhere.
4390
4391Thu Dec 14 21:15:54 2000  Joe Orton  <joe@light.plus.com>
4392
4393	* http_utils.h: Renamed '_class' member of http_status to 'klass'.
4394	(http_parse_statusline): Change accordingly.
4395
4396Wed Dec 13 23:00:23 2000  Joe Orton  <joe@light.plus.com>
4397
4398	* socket.c: Changes for pre-BONE BeOS (David Reid
4399	<dreid@jetnet.co.uk>).
4400
4401Wed Dec 13 21:29:36 2000  Joe Orton  <joe@light.plus.com>
4402
4403	* uri.c (ESCAPE): Explicitly cast the character to const unsigned
4404	int.  (uri_abspath_escape): Make 'pnt' a normal const char *.
4405
4406Wed Dec 13 21:17:31 2000  Joe Orton  <joe@light.plus.com>
4407
4408	* http_request.c: Remove netinet/in.h include, add limits.h
4409	include. (Peter Boos) (read_response_block): Make readlen a size_t
4410	(David Reid).
4411
4412Wed Dec 13 21:08:08 2000  Joe Orton  <joe@light.plus.com>
4413
4414	* ne_alloc.h [WIN32]: Include stdlib.h. (Peter Boos)
4415
4416Wed Dec 13 20:54:27 2000  Joe Orton  <joe@light.plus.com>
4417
4418	Patches from Peter Boos and David Reid for Win32 and
4419	BeOS changes respectively:
4420
4421	* socket.c: Add NEON_READ, NEON_WRITE, NEON_CLOSE macros to use
4422	send/recv/closesocket for BeOS, send/recv/close for Win32,
4423	write/read/close otherwise.  Include WinSock2.h in Windows.  Add
4424	arpa/inet.h check. (sock_read, sock_write): Use the NEON_ macros.
4425	(sock_connect, sock_close): Use NEON_CLOSE. (sock_init): Winsock
4426	initialization.  (sock_exit) Winsock cleanup.  (sock_fullwrite):
4427	Use size_t rather than ssize_t for 'sent'.  (sock_connect,
4428	sock_connect_u): Make 'port' parameter an unsigned short int.
4429
4430Wed Dec 13 20:42:18 2000  Joe Orton  <joe@light.plus.com>
4431
4432	* http_basic.c (clength_hdr_handler): Use an off_t for len, to
4433	avoid comparison with size_t.
4434
4435Wed Dec 13 20:38:59 2000  Joe Orton  <joe@light.plus.com>
4436
4437	* hip_xml.c (char_data): Use an 'int' for wslen, avoid comparison
4438	between size_t (which is signed) and int (which [is|might be?]
4439	unsigned).
4440
4441Wed Dec 13 20:29:12 2000  Joe Orton  <joe@light.plus.com>
4442
4443	* nsocket.h [WIN32]: Use Windows headers rather than Unixy ones.
4444	(sock_exit): New function.
4445
4446Wed Dec 13 20:21:22 2000  Joe Orton  <joe@light.plus.com>
4447
4448	* string_utils.c, string_utils.h, uri.h: Includes change (Peter
4449	Boos).
4450
4451Wed Dec 13 20:20:09 2000  Joe Orton  <joe@light.plus.com>
4452
4453	* http_auth.c (http_auth_response_body): Don't make
4454	inline. Includes change.  (both by Peter Boos).
4455
4456Wed Dec 13 20:18:38 2000  Joe Orton  <joe@light.plus.com>
4457
4458	* uri.c (uri_unescape): Cast strtol return to (char). Includes
4459	change as below (both by Peter Boos).
4460
4461Wed Dec 13 20:07:38 2000  Joe Orton  <joe@light.plus.com>
4462
4463	* base64.c, dates.c, dates.h, dav_207.c, dav_207.h, dav_basic.h,
4464	dav_locks.h, hip_xml.h, http_auth.h, http_basic.h, http_cookies.c,
4465	http_redirect.c, http_redirect.h, http_request.h, http_utils.c,
4466	md5.c, ne_alloc.c: Use #include "..." rather than #include <...>
4467	for neon headers. (Peter Boos <PediB@colorfullife.com>).
4468
4469Thu Dec  7 21:45:02 2000  Joe Orton  <joe@light.plus.com>
4470
4471	* socket.c (sock_read): Return zero immediately if a zero count
4472	parameter is passed, following SUSv2 semantics.
4473
4474Thu Dec  7 21:41:36 2000  Joe Orton  <joe@light.plus.com>
4475
4476	* nsocket.h (sock_readfile_blocked): Define an interface, allow
4477	taking -1 as the length parameter.  Only return SOCK_CLOSED if
4478	length == -1 is NOT passed.
4479
4480Sun Nov 26 09:46:53 2000  Joe Orton  <joe@light.plus.com>
4481
4482	* nsocket.h: Fix use of 'socket' in function prototypes.
4483
4484Sun Nov 19 00:29:48 2000  Joe Orton  <joe@light.plus.com>
4485
4486	* nsocket.h: Increase read timeout to 120 seconds.
4487
4488Sun Nov  5 14:42:46 2000  Joe Orton  <joe@light.plus.com>
4489
4490	* dav_locks.c: Fix element id's (fixes segfault when using locks).
4491
4492Thu Oct 26 22:28:17 2000  Joe Orton  <joe@light.plus.com>
4493
4494	* socket.c (sock_peek): Return SOCK_CLOSED if recv() returns zero.
4495
4496Thu Oct 26 22:24:14 2000  Joe Orton  <joe@light.plus.com>
4497
4498	* socket.c (sock_block): Return "got data" if SSL_pending
4499	indicates data pending.  Otherwise select on socket as normal.
4500
4501Thu Oct 26 22:15:14 2000  Joe Orton  <joe@light.plus.com>
4502
4503	* socket.c (sock_readline, sock_peek): Check whether SSL
4504	connection has been closed if SSL_peek returns 0 (thanks to Jeff
4505	Costlow <j.costlow@f5.com>).
4506
4507Thu Oct 14 19:57:31 2000  Joe Orton  <joe@light.plus.com>
4508
4509	* Makefile.incl: Fix spurius backslash at line 69 (thanks to
4510	Dirk Bergstrom <dirk@juniper.net>).
4511
4512Sat Oct 14 19:51:44 2000  Joe Orton  <joe@light.plus.com>
4513
4514	* dav_basic.c (copy_or_move): Use http_get_scheme rather than
4515	hard-coding "http".
4516
45172000-10-02  Joe Orton  <joe@light.plus.com>
4518
4519	* http_request.c (http_get_scheme): New function.
4520
4521Tue Oct 10 19:56:42 2000  Joe Orton  <joe@light.plus.com>
4522
4523	* neon_config.h: Bumped version to 0.7.5.
4524
4525Sat Oct  7 19:26:58 2000  Joe Orton  <joe@light.plus.com>
4526
4527	* neon_config.h: Bumped version to 0.7.4.
4528
4529Sat Oct  7 19:19:37 2000  Joe Orton  <joe@light.plus.com>
4530
4531	* http_auth.c (request_digest): Quote algorithm and qop parameters
4532	in digest header.
4533
4534Sat Oct  7 19:15:29 2000  Joe Orton  <joe@light.plus.com>
4535
4536	* socket.c (sock_connect_u): Don't leak the fd if connect fails
4537	(David Sloat).
4538
4539Sat Sep 16 16:49:57 2000  Joe Orton  <joe@light.plus.com>
4540
4541	* hip_xml.h: Add 'HIP_ELM_UNUSED', defining lowest element ID
4542	which should be used.
4543
4544	* hip_xml.c, hip_xml.h (hip_xml_push_handler,
4545	hip_xml_push_mixed_handler): Renamed from hip_xml_add_handler /
4546	hip_xml_add_mixed_handler to reflect stack-like usage of handlers.
4547	'handlers' field of hip_xml_parser renamed to top_handler for same
4548	reason (globally search'n'replaced).
4549
4550	* hip_xml.h: Documentation update.
4551
4552Thu Sep 14 22:37:33 2000  Joe Orton  <joe@light.plus.com>
4553
4554	* http_auth.c (request_digest): Quote qop= value, fixes
4555	IIS5 interop.
4556
4557Thu Sep 14 00:40:04 2000  Joe Orton  <joe@light.plus.com>
4558
4559	* socket.c (sock_connect_u): If connect() fails, close the socket
4560	before returning: thanks to David Sloat <d.sloat@f5.com>.
4561
4562Tue Sep 12 20:08:40 2000  Joe Orton  <joe@light.plus.com>
4563
4564	* http_request.c (read_response_headers): Remove redundant
4565	tolower().
4566
4567Tue Sep 12 00:41:39 2000  Joe Orton  <joe@light.plus.com>
4568
4569	* neon_config.h: Bumped version to 0.7.3.
4570
4571Mon Sep 11 15:31:13 2000  Joe Orton  <joe@light.plus.com>
4572
4573	* http_request.c, http_auth.c: Include snprintf.h if
4574	HAVE_SNPRINTF_H is defined.
4575
4576Fri Sep  8 10:46:53 2000  Joe Orton  <joe@orton.demon.co.uk>
4577
4578	* neon_config.h: Bumped version to 0.7.2.
4579
4580Fri Sep  8 10:44:42 2000  Joe Orton  <joe@orton.demon.co.uk>
4581
4582	* socket.c (sock_block): Return immediately if this is an SSL
4583	socket.
4584
4585Thu Sep  7 00:31:12 2000  Joe Orton  <joe@orton.demon.co.uk>
4586
4587	* hip_xml.h: Correct order of hip_xml_validate_cb arguments in
4588	prototype (thanks to Greg Stein).
4589
4590Thu Sep  7 00:27:29 2000  Joe Orton  <joe@orton.demon.co.uk>
4591
4592	* dav_props.c (propfind): Don't destroy the handler after use.
4593	(dav_propfind_destroy): New function.
4594
4595Thu Sep  7 00:08:45 2000  Joe Orton  <joe@orton.demon.co.uk>
4596
4597	* Makefile.incl: Added targets for ne_alloc.o, string_utils.o,
4598	uri.o, base64.o.
4599
4600Tue Aug 15 21:53:53 2000  Joe Orton  <joe@orton.demon.co.uk>
4601
4602	* neon_config.h: Bumped version to 0.7.1.
4603
4604Tue Aug 15 21:16:34 2000  Joe Orton  <joe@orton.demon.co.uk>
4605
4606	* http_request.c (http_request_create): Only add authentication
4607	response body callbacks if a supply-credentials callback has been
4608	set for the session.  (http_request_dispatch): Similarly for
4609	response header callbacks.
4610
4611Mon Aug 14 09:28:38 2000  Joe Orton  <joe@orton.demon.co.uk>
4612
4613	* neon_config.h: Bumped version to 0.7.0.
4614
4615Mon Aug 14 09:23:54 2000  Joe Orton  <joe@orton.demon.co.uk>
4616
4617	* string_utils.h (SBUFFER_CAST): New macro.
4618
4619Mon Aug 14 09:13:05 2000  Joe Orton  <joe@orton.demon.co.uk>
4620
4621	* http_private.h: Use a hash table for storing response header
4622	handlers.  Added response header 'catchers', which are passed ALL
4623	response headers.
4624
4625	* http_request.c (http_add_response_header_handler): Place the
4626	handler in the correct hash bucket. (hdr_hash): New function.
4627	(http_add_response_header_catcher): New function.
4628	(http_request_destroy): Destroy the header catchers, and iterate
4629	over the hash table to destroy the handlers.
4630	(read_response_headers): Optimisation: hash and search for ':' in
4631	a single loop.  Remove another local variable.  Iterate through
4632	catchers too.
4633
4634Sun Aug 13 15:57:35 2000  Joe Orton  <joe@orton.demon.co.uk>
4635
4636	* neon_config.h: Bumped version to 0.6.1.
4637
4638Sun Aug 13 15:50:42 2000  Joe Orton  <joe@orton.demon.co.uk>
4639
4640	* http_request.c (send_request): Only go through the loop at most
4641	twice.
4642
4643Sun Aug 13 15:49:52 2000  Joe Orton  <joe@orton.demon.co.uk>
4644
4645	* http_redirect.c (destroy): Don't free the redirect structure.
4646
4647Sat Aug 12 17:10:32 2000  Joe Orton  <joe@orton.demon.co.uk>
4648
4649	* neon_config.h: Bumped version to 0.6.0.
4650
4651Sat Aug 12 16:48:47 2000  Joe Orton  <joe@orton.demon.co.uk>
4652
4653	* http_request.c (http_session_decide_proxy): New function.
4654	(http_request_create): Call proxy "decider callback" to determine
4655	whether to use the proxy server for a given request or not.
4656
4657Sat Aug 12 16:39:10 2000  Joe Orton  <joe@orton.demon.co.uk>
4658
4659	* Makefile.incl: Updated for http_private.h and
4660	http_redirect.[ch].
4661
4662Sat Aug 12 16:36:49 2000  Joe Orton  <joe@orton.demon.co.uk>
4663
4664	* http_request.c: Removed data structure definitions.
4665
4666	* http_private.h: New file, contains data structure definitions.
4667	Interface NOT exported.
4668
4669Sat Aug 12 16:31:32 2000  Joe Orton  <joe@orton.demon.co.uk>
4670
4671	* http_redirect.c (destroy): No return value.
4672
4673Sat Aug 12 16:04:02 2000  Joe Orton  <joe@orton.demon.co.uk>
4674
4675	* http_redirect.[ch]: First cut at HTTP redirect handling.
4676
4677Sat Aug 12 11:05:13 2000  Joe Orton  <joe@orton.demon.co.uk>
4678
4679	* neon_config.h: Bumped version to 0.5.1.
4680
4681Sat Aug 12 02:04:15 2000  Joe Orton  <joe@orton.demon.co.uk>
4682
4683	* dav_locks.c (dav_lock_using_resource, dav_lock_using_parent):
4684	Prevent segfault if locking is not in use.
4685
4686Fri Aug 11 17:19:06 2000  Joe Orton  <joe@orton.demon.co.uk>
4687
4688	* neon_config.h: Bumped version to 0.5.0.
4689
4690Fri Aug 11 16:31:23 2000  Joe Orton  <joe@orton.demon.co.uk>
4691
4692	* http_request.c (read_message_header): Take a buffer for storing
4693	continuation lines. (read_response_headers): No need to strip EOL
4694	since read_message_header does this already.  Use one less
4695	variable.
4696
4697Fri Aug  4 22:12:04 2000  Joe Orton  <joe@orton.demon.co.uk>
4698
4699	* http_request.c (send_request): Don't retry sending the request
4700	more than once.
4701
4702Wed Aug  2 11:08:31 2000  Joe Orton  <joe@orton.demon.co.uk>
4703
4704	* ne_alloc.[ch]: Renamed from xalloc.[ch].
4705
4706Wed Aug  2 02:15:32 2000  Joe Orton  <joe@orton.demon.co.uk>
4707
4708	* socket.c (sock_transfer): Return SOCK_CLOSED, or set sock->error
4709	appropriately on read failure.
4710
4711Tue Aug  1 13:04:27 2000  Joe Orton  <joe@orton.demon.co.uk>
4712
4713	* socket.c, nsocket.h (sock_progress, sock_call_progress,
4714	sock_transfer, sock_readfile_blocked): Use 'off_t' not 'size_t' as
4715	file size type.
4716
4717Fri Jul 28 13:32:37 2000  Joe Orton  <joe@orton.demon.co.uk>
4718
4719	* neon_config.h: Bumped version to 0.4.2.
4720
4721Fri Jul 28 13:31:38 2000  Joe Orton  <joe@orton.demon.co.uk>
4722
4723	* http_request.c (send_request): Fix sending request body after
4724	getting 100-continue response.
4725
4726Fri Jul 28 11:26:47 2000  Joe Orton  <joe@orton.demon.co.uk>
4727
4728	* neon_config.h: Bumped version to 0.4.1.
4729
4730Fri Jul 28 10:32:34 2000  Joe Orton  <joe@orton.demon.co.uk>
4731
4732	* neon_config.h: Bumped version to 0.4.0.
4733
4734Fri Jul 28 10:28:21 2000  Joe Orton  <joe@orton.demon.co.uk>
4735
4736	* http_basic.[ch] (http_post): New function, from Sander Alberink
4737	<sander.alberink@cmg.nl>.
4738
4739Thu Jul 27 18:55:49 2000  Joe Orton  <joe@orton.demon.co.uk>
4740
4741	* http_utils.c (neon_debug): No conditional compilation for
4742	function body: compile it all regardless of whether debugging is
4743	enabled or not, to allow applications to be debugged regardless of
4744	whether debugging is compiled into the library or not.
4745
4746Thu Jul 27 16:59:26 2000  Joe Orton  <joe@orton.demon.co.uk>
4747
4748	* http_basic.c (clength_hdr_handler): Cast off_t to long int for
4749	printing.
4750
4751Tue Jul 25 18:14:15 2000  Joe Orton  <joe@orton.demon.co.uk>
4752
4753	* http_request.c (read_message_header): Iterate over header
4754	handler list before placing zero-terminator at ':': if a handler
4755	has a NULL name field, pass it the entire header value.
4756
4757Tue Jul 25 18:00:49 2000  Joe Orton  <joe@orton.demon.co.uk>
4758
4759	* http_request.c (http_get_request_headers): New function.
4760
4761Mon Jul 24 16:55:29 2000  Joe Orton  <joe@orton.demon.co.uk>
4762
4763	* neon_config.h: Bumped version to 0.3.9.
4764
4765Mon Jul 24 16:54:33 2000  Joe Orton  <joe@orton.demon.co.uk>
4766
4767	* http_basic.h: Use 'off_t' in http_content_range.
4768
4769	* http_basic.c (http_get_range): Cast range values to (long int)
4770	to prevent compiler warnings.
4771
4772Thu Jul 20 20:03:30 2000  Joe Orton  <joe@orton.demon.co.uk>
4773
4774	* http_request.[ch], socket.c, http_basic.c: Include nsocket.h not
4775	socket.h.
4776
4777Thu Jul 20 20:02:20 2000  Joe Orton  <joe@orton.demon.co.uk>
4778
4779	* http_utils.c (version_string): Indicate which XML parser is
4780	supported.
4781
4782Thu Jul 20 20:01:12 2000  Joe Orton  <joe@orton.demon.co.uk>
4783
4784	* nsocket.h: Renamed from socket.h.
4785
4786Thu Jul 20 15:02:35 2000  Joe Orton  <joe@orton.demon.co.uk>
4787
4788	* http_utils.c, socket.c, http_request.c: SSL_ENABLE renamaed to
4789	ENABLE_SSL.
4790
4791Thu Jul 20 12:20:13 2000  Joe Orton  <joe@orton.demon.co.uk>
4792
4793	* md5.c, http_auth.h: Include neon_md5.h.
4794
4795Thu Jul 20 12:19:23 2000  Joe Orton  <joe@orton.demon.co.uk>
4796
4797	* neon_md5.h: Renamed from md5.h.
4798
4799Wed Jul 19 22:33:46 2000  Joe Orton  <joe@orton.demon.co.uk>
4800
4801	* dav_basic.c (dav_simple_request): Don't leak ctype.value.
4802
4803Wed Jul 19 22:32:03 2000  Joe Orton  <joe@orton.demon.co.uk>
4804
4805	* dav_207.c (check_context): Accept unknown elements.
4806
4807Wed Jul 19 22:31:10 2000  Joe Orton  <joe@orton.demon.co.uk>
4808
4809	* dav_locks.c (dav_lock_iterate): Allow passing func as NULL.
4810
4811Wed Jul 19 22:26:13 2000  Joe Orton  <joe@orton.demon.co.uk>
4812
4813	* socket.h (SOCKET_READ_TIMEOUT): Increase to 60.
4814
4815Wed Jul 19 22:25:51 2000  Joe Orton  <joe@orton.demon.co.uk>
4816
4817	* dav_locks.h: Include http_request.h.
4818
4819Mon Jul 17 11:41:16 2000  Joe Orton  <joe@orton.demon.co.uk>
4820
4821	* dates.c (asctime_parse, rfc1036_parse): Actually pass the string
4822	to sscanf (thanks to lclint).  (rfc1123_date): Check for gmtime()
4823	returning NULL.
4824
4825Mon Jul 17 09:16:43 2000  Joe Orton  <joe@orton.demon.co.uk>
4826
4827	* neon_config.h: Bumped version to 0.3.1.
4828
4829Mon Jul 17 09:07:58 2000  Joe Orton  <joe@orton.demon.co.uk>
4830
4831	* dav_locks.c: Include limits.h: thanks to Paul D'Anna.
4832
4833Sun Jul 16 18:47:15 2000  Joe Orton  <joe@orton.demon.co.uk>
4834
4835	* neon_config.h: Bumped version to 0.3.0.
4836
4837Sun Jul 16 16:44:25 2000  Joe Orton  <joe@orton.demon.co.uk>
4838
4839	* neon_i18n.c (neon_i18n_init) [ENABLE_NLS && NEON_IS_LIBRARY]:
4840	New compilation conditions.
4841
4842Sun Jul 16 16:41:12 2000  Joe Orton  <joe@orton.demon.co.uk>
4843
4844	* neon_i18n.c: New file.
4845
4846Sun Jul 16 16:15:02 2000  Joe Orton  <joe@orton.demon.co.uk>
4847
4848	* string_utils.c (sbuffer_*): Change to assert postcondition
4849	(buf->used == strlen(buf->data) + 1).  (sbuffer_append): Fix
4850	brokenness.
4851
4852Sun Jul 16 16:11:05 2000  Joe Orton  <joe@orton.demon.co.uk>
4853
4854	* socket.c (sock_transfer): Increase sum length written correctly.
4855
4856Sun Jul 16 16:10:23 2000  Joe Orton  <joe@orton.demon.co.uk>
4857
4858	* http_request.c (http_get_hook_private): New function.
4859
4860Sun Jul 16 16:07:11 2000  Joe Orton  <joe@orton.demon.co.uk>
4861
4862	* hip_xml.c (find_handler): Call validate_cb for any handler which
4863	recognizes the element.  Allow return codes
4864	HIP_XML_{VALID,INVALID,DECLINE} from validate_cb.  If DECLINE is
4865	returned, continue searching handlers until one returns
4866	(IN)VALID.  (start_element): Don't call validate_cb.
4867
4868	* hip_xml.c (start_element, end_element): In collect mode, don't
4869	print namespace prefix if present.
4870
4871Sun Jul 16 15:30:19 2000  Joe Orton  <joe@orton.demon.co.uk>
4872
4873	* dav_locks.[ch]: New file, code mainly taken from cadaver and
4874	adapted for neon HTTP request/response handling.
4875
4876Sun Jul 16 15:28:25 2000  Joe Orton  <joe@orton.demon.co.uk>
4877
4878	* dav_basic.c (copy_or_move, dav_move, dav_copy): Pass overwrite
4879	as parameter.
4880
4881Sun Jul 16 15:26:24 2000  Joe Orton  <joe@orton.demon.co.uk>
4882
4883	* uri.c (uri_compare): Fixed to only return equal if *shorter*
4884	string has no trailing slash.
4885
4886Sat Jul 15 20:14:07 2000  Joe Orton  <joe@orton.demon.co.uk>
4887
4888	* dav_207.c (dav_207_get_current_response,
4889	dav_207_get_current_propstat): New functions.
4890
4891	* dav_props.c (dav_propfind_get_current_resource): Implement using
4892	dav_207_get_current_response.
4893
4894Sat Jul 15 17:36:37 2000  Joe Orton  <joe@orton.demon.co.uk>
4895
4896	* xalloc.c (xcalloc): New function.
4897
4898Sat Jul 15 14:11:14 2000  Joe Orton  <joe@orton.demon.co.uk>
4899
4900	* http_utils.[ch] and elsewhere: Replace 'class' field of
4901	http_status with '_class' to be C++-safe. (patch from Tom
4902	Bednarz).
4903
4904Thu Jul  6 18:48:52 2000  Joe Orton  <joe@orton.demon.co.uk>
4905
4906	* dav_basic.c (copy_or_move): Escape the destination URI.
4907
4908Thu Jul  6 18:45:51 2000  Joe Orton  <joe@orton.demon.co.uk>
4909
4910	* dav_props.c (end_response): Added description parameter.
4911
4912Thu Jul  6 18:43:14 2000  Joe Orton  <joe@orton.demon.co.uk>
4913
4914	* dav_207.[ch] (end_element): Fix handling of responsedescription.
4915	Add "description" parameter to dav_207_end_response callback, and
4916	pass the contents of responsedescription.
4917
4918	* dav_basic.c (handle_error, end_response, end_propstat): Pass
4919	description and add to error string when present.
4920
4921Tue Jul  4 11:43:03 2000  Joe Orton  <joe@orton.demon.co.uk>
4922
4923	* dav_basic.c, dav_props.c, http_basic.c: Use
4924	http_{add,print}_request_header rather than
4925	http_get_request_header.
4926
4927Tue Jul  4 11:41:00 2000  Joe Orton  <joe@orton.demon.co.uk>
4928
4929	* http_request.[ch] (http_add_request_header,
4930	http_print_request_header): New functions.
4931	(http_get_request_header): Removed function.
4932
4933Mon Jul  3 21:50:40 2000  Joe Orton  <joe@orton.demon.co.uk>
4934
4935	* http_request.c: Add basic support for TLS upgrade (RFC2817).
4936	(http_set_request_secure_upgrade, http_set_accept_secure_upgrade):
4937	New functions.  (send_request): If upgrade is requested, and a 101
4938	response is received, negotiate the TLS connection.
4939	(add_fixed_headers): Add Upgrade header if necessary.
4940
4941Mon Jul  3 21:46:00 2000  Joe Orton  <joe@orton.demon.co.uk>
4942
4943	* http_request.c (send_request): Don't go into an infinite loop.
4944	(read_message_header): Simplyify checking for end-of-line.
4945
4946Tue Jun 13 00:29:42 2000  Joe Orton  <joe@orton.demon.co.uk>
4947
4948	* http_request.c (http_session_proxy, http_session_server): Allow
4949	calling >1 time per session, to switch servers.  (send_request):
4950	Only retry sending request once.
4951
4952Mon Jun 12 21:50:41 2000  Joe Orton  <joe@orton.demon.co.uk>
4953
4954	* http_request.c (http_add_hooks): New function.
4955
4956Mon Jun 12 21:37:24 2000  Joe Orton  <joe@orton.demon.co.uk>
4957
4958	* http_cookies.[ch]: Added basic cookies support.
4959
4960Mon Jun 12 21:33:33 2000  Joe Orton  <joe@orton.demon.co.uk>
4961
4962	* socket.c (sock_create_ssl_context, sock_destroy_ssl_context,
4963	sock_disable_tlsv1, sock_disable_sslv2, sock_disable_sslv3,
4964	sock_make_secure): Added nssl_context handling.
4965
4966Mon Jun 12 21:29:52 2000  Joe Orton  <joe@orton.demon.co.uk>
4967
4968	* http_request.c (http_request_dispatch, http_request_create,
4969	http_request_destroy, http_set_request_body_buffer,
4970	http_set_request_body_stream): Added hook support.
4971
4972Mon Jun 12 21:04:00 2000  Joe Orton  <joe@orton.demon.co.uk>
4973
4974	* http_request.c (http_set_secure): Store an nssl_context.
4975	(open_connection): Give the nssl_context.
4976
4977Sun Jun 11 16:37:52 2000  Joe Orton  <joe@orton.demon.co.uk>
4978
4979	* sslcerts.c: Import of SSL support from mutt, relicensed under
4980	the LGPL for use in neon by the author, Tommi Komulainen
4981	<Tommi.Komulainen@iki.fi>.
4982
4983Sun Jun 11 11:30:16 2000  Joe Orton  <joe@orton.demon.co.uk>
4984
4985	* http_request.c (set_sockerr): Updated to use sock_get_error.
4986
4987Sun Jun 11 11:29:29 2000  Joe Orton  <joe@orton.demon.co.uk>
4988
4989	* uri.c (uri_parse): Allow scheme to be omitted.
4990
4991Fri Jun  9 20:39:24 2000  Joe Orton  <joe@orton.demon.co.uk>
4992
4993	* socket.c (sock_get_error): New function.  (sock_*): Set
4994	sock->error and SOCK_ERROR on error.
4995
4996Mon May 29 16:32:46 2000  Joe Orton  <joe@orton.demon.co.uk>
4997
4998	* uri.c (uri_abspath_escape): Allocate the exact amount of memory
4999	needed.
5000
5001Mon May 29 15:53:33 2000  Joe Orton  <joe@orton.demon.co.uk>
5002
5003	* dav_basic.c (dav_simple_request): Correct invalid XML logic.
5004
5005Mon May 29 15:52:08 2000  Joe Orton  <joe@orton.demon.co.uk>
5006
5007	* socket.c (create_sock, sock_accept, sock_get_fd): New
5008	functions.  (sock_connect_u): Use create_sock.
5009
5010Sun May 28 21:00:37 2000  Joe Orton  <joe@orton.demon.co.uk>
5011
5012	* http_utils.c (neon_version_string): New function.
5013
5014Sun May 28 19:36:45 2000  Joe Orton  <joe@orton.demon.co.uk>
5015
5016	* socket.c (sock_connect_u): Zero out allocated nsocket object.
5017
5018Thu May 25 01:27:04 2000  Joe Orton  <joe@orton.demon.co.uk>
5019
5020	* *.h: Include other neon headers with <braces>.
5021
5022Thu May 25 01:02:12 2000  Joe Orton  <joe@orton.demon.co.uk>
5023
5024	* dav_props.c: Include stdlib.h for 'free'.
5025
5026Wed May 24 20:15:08 2000  Joe Orton  <joe@orton.demon.co.uk>
5027
5028	* http_request.c (read_message_header): Return HTTP_RETRY if more
5029	headers to read, HTTP_OK on end-of-headers.
5030	(read_response_headers): Changed accordingly.
5031
5032Wed May 24 19:56:29 2000  Joe Orton  <joe@orton.demon.co.uk>
5033
5034	* http_request.c (send_request_body): Return a SOCK_* code.
5035	(send_request): Re-send request if socket has been closed (due to
5036	persistent connection timeout).
5037
5038Wed May 24 19:00:01 2000  Joe Orton  <joe@orton.demon.co.uk>
5039
5040	* hip_xml.c (find_element): Fix unknown element handling.
5041
5042Tue May 23 19:12:26 2000  Joe Orton  <joe@orton.demon.co.uk>
5043
5044	* dav_props.c (propfind): Destroy the request body sbuffer after
5045	use.
5046
5047Tue May 23 15:43:42 2000  Joe Orton  <joe@orton.demon.co.uk>
5048
5049	* socket.c (sock_make_secure) [SSL_ENABLE]: Conditionally compile
5050	SSL code. [!SSL_ENABLE]: Return failure.  (sock_close)
5051	[SSL_ENABLE]: Conditionally compile SSL code.
5052
5053Tue May 23 15:37:53 2000  Joe Orton  <joe@orton.demon.co.uk>
5054
5055	* http_request.c (http_session_create): Renamed from
5056	http_session_init.  (http_session_destroy): Renamed frmo
5057	http_session_finish.
5058
5059Sun May 21 23:50:58 2000  Joe Orton  <joe@orton.demon.co.uk>
5060
5061	* http_request.c (lookup_host): Use sock_name_lookup.
5062
5063Sun May 21 23:40:39 2000  Joe Orton  <joe@orton.demon.co.uk>
5064
5065	* http_request.c (http_request_create): Allow passing NULL uri
5066	(internal use only).  (http_set_secure): New function.
5067	(read_response_block, read_message_headers): Redone for new socket
5068	API.  (build_request): Moved http_auth_new_request calls here
5069	(from http_request_dispatch).  (send_request): Always call
5070	open_connection before sending the request.
5071	(read_message_header, read_response_headers): Looser check for
5072	empty line.  (normalize_response_length): Set response body length
5073	to zero on 2xx class response whilst in CONNECT, if no other
5074	response body length is given.  (http_request_dispatch): Don't
5075	close the connection on a HTTP/1.0 2xx class response after a
5076	CONNECT request.  (proxy_tunnel): New function.
5077	(open_connection): Use an SSL connection where appropriate.  Use
5078	proxy_tunnel for tunnelling through a proxy.
5079
5080Sun May 21 01:35:40 2000  Joe Orton  <joe@orton.demon.co.uk>
5081
5082	* src/socket.c: Added 'nsocket' ADT for handling sockets.
5083	(sock_*): All changed to take 'nsocket *' argument rather than
5084	integer file descriptor.  Added 'sock_secure_details' to
5085	sock_status enum.  (sock_make_secure, sock_init): New function.
5086	(sock_peek): Renamed from sock_recv.  (send_file_*, recv_file_*):
5087	Removed functions.  (sock_name_lookup): Renamed from host_lookup.
5088	(sock_service_lookup): Renamed from get_tcp_port.  (sock_block,
5089	sock_read, sock_fullwrite, sock_peek, sock_readline): Added SSL
5090	support.  (sock_transfer): Use sock_fullwrite and sock_read.
5091
5092Sun May 21 01:25:03 2000  Joe Orton  <joe@orton.demon.co.uk>
5093
5094	* http_request.c (http_request_destroy): Free header handlers and
5095	body readers.
5096
5097Sun May 21 01:24:30 2000  Joe Orton  <joe@orton.demon.co.uk>
5098
5099	* dav_props.h: Removed obsolte got_property callback type.
5100
5101Sun May 21 01:23:59 2000  Joe Orton  <joe@orton.demon.co.uk>
5102
5103	* dav_props.c (propfind): Free handler object after use.
5104
5105Sun May 21 01:23:12 2000  Joe Orton  <joe@orton.demon.co.uk>
5106
5107	* dav_207.c (dav_207_destroy): Don't try to free the 'response'
5108	field.
5109
5110Sat May 20 21:45:32 2000  Joe Orton  <joe@orton.demon.co.uk>
5111
5112	* http_request.c: Changed 'te' enum of struct http_response to
5113	'is_chunked' boolean.
5114
5115Sun May 14 01:00:42 2000  Joe Orton  <joe@orton.demon.co.uk>
5116
5117	* dav_props.c (propfind): Return error on parse error.
5118
5119Sun May 14 00:40:50 2000  Joe Orton  <joe@orton.demon.co.uk>
5120
5121	* neon_config.h (NEON_VERSION): Bumped to 0.2.0.
5122
5123Sat May 13 23:31:28 2000  Joe Orton  <joe@orton.demon.co.uk>
5124
5125	* neon_defs.h (BEGIN_NEON_DECLS, END_NEON_DECLS): Added C++ safety
5126	macros.
5127
5128	* *.h: Surround with C++ safety macros.
5129
5130Sat May 13 22:36:06 2000  Joe Orton  <joe@orton.demon.co.uk>
5131
5132	* hip_xml.c (hip_xml_destroy): Free handlers.
5133
5134Sat May 13 21:12:14 2000  Joe Orton  <joe@orton.demon.co.uk>
5135
5136	* hip_xml.c (hip_xml_valid): Reversed return value.
5137
5138Sat May 13 21:11:17 2000  Joe Orton  <joe@orton.demon.co.uk>
5139
5140	* http_utils.c: Renamed http_debug_mask to neon_debug_mask,
5141	similarly neon_debug_stream.  (neon_debug_init): Renamed from
5142	http_debug_init.
5143
5144Sat May 13 19:24:40 2000  Joe Orton  <joe@orton.demon.co.uk>
5145
5146	* http_utils.c: Initialize http_debug_mask to zero.
5147	(http_debug_init): New function.
5148
5149	* http_utils.h: Fixed #ifdef DEBUGGING. Only define relevant
5150	DEBUG_* constants.
5151
5152Sat May 13 19:23:34 2000  Joe Orton  <joe@orton.demon.co.uk>
5153
5154	* neon_config.h: New file.
5155
5156	* http_request.c: Include neon_config.h for NEON_VERSION.
5157
5158Sat May 13 18:28:05 2000  Joe Orton  <joe@orton.demon.co.uk>
5159
5160	* dav_props.c (dav_propfind_create): Create a hip_xml_parser, a
5161	207 parser, register start+end response handlers with 207 layer.
5162	(propfind): Fix allprop (Michael Sobolev).
5163
5164	* dav_basic.c (dav_simple_request): Create and destroy
5165	hip_xml_parser and 207 parser appropriately.
5166
5167Sat May 13 18:24:49 2000  Joe Orton  <joe@orton.demon.co.uk>
5168
5169	* dav_207.c: Now takes an externally-declared hip_xml parser
5170	pointer. (dav_207_create, dav_207_destroy): New functions.
5171	(dav_207_init, dav_207_init_with_handler, dav_207_parse,
5172	dav_207_error, dav_207_finish): Removed functions.
5173
5174Sat May 13 17:32:45 2000  Joe Orton  <joe@orton.demon.co.uk>
5175
5176	* hip_xml.[ch]: Rewritten to use opaque hip_xml_parser pointer.
5177	struct hip_xml_handler and struct hip_xml_state removed from
5178	external interface. struct hip_xml_elm * passed to startelm_cb and
5179	endelm_cb. (hip_xml_add_handler, hip_xml_valid, hip_xml_create,
5180	hip_xml_destroy, hip_xml_set_error, hip_xml_get_error): New
5181	functions.  (hip_xml_init, hip_xml_destroy): Removed functions.
5182
5183Sat May 13 13:43:56 2000  Joe Orton  <joe@orton.demon.co.uk>
5184
5185	* neon.h: Removed.
5186
5187Sat May 13 13:42:20 2000  Joe Orton  <joe@orton.demon.co.uk>
5188
5189	* string_utils.h: Don't include config.h. (CONCAT*): Don't use
5190	xmalloc, use malloc and abort manually.
5191
5192Sat May 13 13:32:46 2000  Joe Orton  <joe@orton.demon.co.uk>
5193
5194	* http_utils.h, dates.h, http_basic.h: Don't include config.h
5195
5196Sat May 13 13:31:37 2000  Joe Orton  <joe@orton.demon.co.uk>
5197
5198	* hip_xml.[ch], dav_207.c: Use HIP_ERR_SIZE for size of parser
5199	error string.
5200
5201Sat May 13 13:30:40 2000  Joe Orton  <joe@orton.demon.co.uk>
5202
5203	* Makefile.incl: Use obj_ext for object file extension.
5204
5205Thu May 11 18:21:53 2000  Joe Orton  <joe@orton.demon.co.uk>
5206
5207	* neon.h: Bumped version to 0.1.1.
5208
5209Thu May 11 18:16:08 2000  Joe Orton  <joe@orton.demon.co.uk>
5210
5211	* http_basic.c (get_to_fd): Fix short writes.
5212
5213Wed May 10 19:22:01 2000  Joe Orton  <joe@orton.demon.co.uk>
5214
5215	* neon.h: Bumped version to 0.1.0.
5216
5217Wed May 10 17:46:48 2000  Joe Orton  <joe@orton.demon.co.uk>
5218
5219	* uri.c (uri_parse, uri_free): New functions.
5220
5221Wed May 10 17:43:37 2000  Joe Orton  <joe@orton.demon.co.uk>
5222
5223	* http_basic.c (get_to_fd, http_get): Set error appropriately if
5224	fwrite() fails.
5225
5226Wed May 10 14:25:38 2000  Joe Orton  <joe@orton.demon.co.uk>
5227
5228	* http_utils.c (http_debug): New function.
5229
5230Wed May 10 14:25:08 2000  Joe Orton  <joe@orton.demon.co.uk>
5231
5232	* http_basic.c (get_callback): Call sock_call_progress.
5233
5234Wed May 10 14:24:20 2000  Joe Orton  <joe@orton.demon.co.uk>
5235
5236	* socket.c (sock_call_progress): New function.  (many places): Use
5237	it.
5238
5239Wed May 10 14:22:48 2000  Joe Orton  <joe@orton.demon.co.uk>
5240
5241	* uri.c (uri_has_trailing_slash): Moved from being inline.
5242
5243Tue May  9 23:34:25 2000  Joe Orton  <joe@orton.demon.co.uk>
5244
5245	* dav_props.c: Use handler as userdata for 207 callbacks, unified
5246	handler and context structures.  (start_prop, end_prop,
5247	start_propelm, end_propelm): Removed functions.
5248	(dav_propfind_get_current_resource): New function.
5249
5250Tue May  9 23:29:44 2000  Joe Orton  <joe@orton.demon.co.uk>
5251
5252	* xalloc.[ch]: New files.
5253
5254Tue May  9 23:05:47 2000  Joe Orton  <joe@orton.demon.co.uk>
5255
5256	* dav_207.[ch]: Removed property and property element callbacks.
5257
5258Tue May  9 23:01:00 2000  Joe Orton  <joe@orton.demon.co.uk>
5259
5260	* dav_207.c: Use separate name/namespace for element names.
5261	(dav_207_init_with_handler): New function.  (end_element):
5262	Unescape URI in href element.
5263
5264Tue May  9 19:54:07 2000  Joe Orton  <joe@orton.demon.co.uk>
5265
5266	* dav_props.c (dav_propfind_allprop, dav_propfind_named, propfind,
5267	start_response, end_response, start_prop, end_prop, start_propelm,
5268	end_propelm): New functions; PROPFIND support.
5269
5270Tue May  9 19:45:17 2000  Joe Orton  <joe@orton.demon.co.uk>
5271
5272	* http_request.c (build_request): Renamed from make_request.
5273
5274Tue May  9 19:36:01 2000  Joe Orton  <joe@orton.demon.co.uk>
5275
5276	* socket.[ch]: Added sock_block_reader.
5277
5278Tue May  9 15:52:56 2000  Joe Orton  <joe@orton.demon.co.uk>
5279
5280	* uri.c (uri_childof): Return false when parent is the same length
5281	as child.
5282
5283Sun May  7 15:07:49 2000  Joe Orton  <joe@orton.demon.co.uk>
5284
5285	* dav_207.c: Separated element namespace/names.
5286
5287Tue May  2 16:40:59 2000  Joe Orton  <joe@orton.demon.co.uk>
5288
5289	* hip_xml.[ch]: Added HIP_XML_UTF8DECODE flag.
5290
5291Tue May  2 16:16:57 2000  Joe Orton  <joe@orton.demon.co.uk>
5292
5293	* hip_xml.[ch]: Separate element name and namespace.
5294
5295Mon May  1 00:21:24 2000  Joe Orton  <joe@orton.demon.co.uk>
5296
5297	* dav_207.c (dav_accept_207): Moved function from dav_basic.c.
5298
5299	* dav_basic.c (dav_accept_207, dav_parse_xml_block): Removed
5300	functions.
5301
5302Sun Apr 30 22:47:47 2000  Joe Orton  <joe@orton.demon.co.uk>
5303
5304	* dav_props.[ch]: Renamed dav_proppatch_item to
5305	dav_proppatch_operation.
5306
5307Sun Apr 30 22:45:04 2000  Joe Orton  <joe@orton.demon.co.uk>
5308
5309	* hip_xml.c (start_element): Clearer error message.
5310
5311Sun Apr 30 19:12:07 2000  Joe Orton  <joe@orton.demon.co.uk>
5312
5313	* http_basic.c (http_content_type_handler, dav_hdr_handler): New
5314	functions.  (http_options): Handle DAV header.
5315
5316Sun Apr 30 18:08:53 2000  Joe Orton  <joe@orton.demon.co.uk>
5317
5318	* dav_props.c (dav_proppatch): New function.
5319
5320Sun Apr 30 18:05:55 2000  Joe Orton  <joe@orton.demon.co.uk>
5321
5322	* dav_basic.c (handle_error): New function.  (end_response,
5323	end_propstat): Use it.  (dav_simple_request): Don't return the 207
5324	error string if we get all 2xx class status elements.
5325
5326Sun Apr 30 16:56:41 2000  Joe Orton  <joe@orton.demon.co.uk>
5327
5328	* dav_basic.c (dav_add_depth_header): New function.
5329
5330Sun Apr 30 14:49:06 2000  Joe Orton  <joe@orton.demon.co.uk>
5331
5332	* dav_207.c (start_element): Unknown element is only a property if
5333	the parent is DAV:propstat.
5334
5335Sun Apr 30 14:43:28 2000  Joe Orton  <joe@orton.demon.co.uk>
5336
5337	* dav_basic.c (end_response, end_propstat): Only write error line
5338	if we have status information and the status is not a 424.
5339
5340Sun Apr 30 14:28:23 2000  Joe Orton  <joe@orton.demon.co.uk>
5341
5342	* dav_basic.h: Added DAV_DEPTH_*.
5343
5344Sun Apr 30 12:47:50 2000  Joe Orton  <joe@orton.demon.co.uk>
5345
5346	* dav_207.c (check_context): Allow (and ignore) unknown elements
5347	anywhere other than as the root.
5348
5349Sun Apr 30 12:35:39 2000  Joe Orton  <joe@orton.demon.co.uk>
5350
5351	* string_utils.h (ASC2HEX, HEX2ASC): New macros.
5352
5353Sun Apr 30 12:34:37 2000  Joe Orton  <joe@orton.demon.co.uk>
5354
5355	* http_auth.c [STANDALONE]: Removed. (everywhere): Switch to using
5356	md5_to_ascii rather than md5_hexify.
5357
5358Sun Apr 30 12:32:35 2000  Joe Orton  <joe@orton.demon.co.uk>
5359
5360	* http_request.c (read_response_block): Fixed to return errors
5361	properly and block length to parameter.  (read_response_body):
5362	Changed accordingly.
5363
5364Sun Apr 30 12:29:45 2000  Joe Orton  <joe@orton.demon.co.uk>
5365
5366	* hip_xml.c (friendly_name): New function, was PRETTY_NAME macro.
5367	(start_element, end_element): Fix COLLECT handling.
5368	(hip_xml_parse): Only write parse error if the document has not
5369	already been marked invalid.
5370
5371Sun Apr 30 12:28:36 2000  Joe Orton  <joe@orton.demon.co.uk>
5372
5373	* dav_basic.c (dav_simple_request): Rewritten for new 207
5374	interface.  (start_response, end_response, end_propstat): New
5375	functions.
5376
5377Sun Apr 30 12:27:52 2000  Joe Orton  <joe@orton.demon.co.uk>
5378
5379	* dav_207.c (dav_207_error): Return the parser error.
5380
5381Sat Apr 29 14:46:48 2000  Joe Orton  <joe@orton.demon.co.uk>
5382
5383	* socket.c (sock_register_progress, sock_register_notify): New
5384	functions.  (everywhere): Use progress + notify callbacks rather
5385	than fe_*.
5386
5387Sat Apr 29 14:15:23 2000  Joe Orton  <joe@orton.demon.co.uk>
5388
5389	* string_utils.c (md5_to_ascii, ascii_to_md5): New functions.
5390
5391Sat Apr 29 13:55:39 2000  Joe Orton  <joe@orton.demon.co.uk>
5392
5393	* hip_xml.c (hip_xml_init): abort() on out-of-memory.
5394
5395Sat Apr 29 12:56:11 2000  Joe Orton  <joe@orton.demon.co.uk>
5396
5397	* neon_i18n.h: New file.
5398
5399Sat Apr 29 12:55:24 2000  Joe Orton  <joe@orton.demon.co.uk>
5400
5401	* dav_207.[ch]: Re-implemented with sensible interface.
5402
5403Fri Apr 28 14:56:01 2000  Joe Orton  <joe@orton.demon.co.uk>
5404
5405	* http_auth.c (http_auth_request_header): Renamed from
5406	http_auth_request.
5407
5408	* http_request.c (make_request): As above.
5409
5410Thu Apr 13 11:52:14 2000  Joe Orton  <joe@orton.demon.co.uk>
5411
5412	* http_basic.c (http_put): Switched URI and stream arguments.
5413
5414Thu Apr 13 09:51:21 2000  Joe Orton  <joe@orton.demon.co.uk>
5415
5416	* http_request.c: Added user_agent field to session structure.
5417	(http_set_useragent): New function.  (add_fixed_headers): Only set
5418	user-agent if sess->user_agent is set.
5419
5420Thu Apr 13 09:49:32 2000  Joe Orton  <joe@orton.demon.co.uk>
5421
5422	* http_request.c (lookup_host): New function, split from
5423	set_hostinfo.  (set_hostinfo): Doesn't perform DNS lookup.
5424	(http_session_server): Don't do a DNS lookup if we have a proxy.
5425
5426Wed Apr 12 22:32:21 2000  Joe Orton  <joe@orton.demon.co.uk>
5427
5428	* http_request.c (http_request_dispatch, http_request_create):
5429	Store auth header values in local variables rather than request
5430	structure.  (http_request_create): Don't leak everything on error.
5431	Handle http_auth_challenge return value.
5432
5433Wed Apr 12 22:30:06 2000  Joe Orton  <joe@orton.demon.co.uk>
5434
5435	* http_basic.c (http_options): Pass server capabilites object,
5436	parse Server header to detect Apache/1.3.6 and before, indicating
5437	broken 100-continue support.  (server_hdr_handler): New function.
5438
5439Mon Apr 10 17:42:07 2000  Joe Orton  <joe@orton.demon.co.uk>
5440
5441	* socket.c: Use 'int' for return values.
5442
5443Mon Apr 10 17:41:40 2000  Joe Orton  <joe@orton.demon.co.uk>
5444
5445	* http_auth.c (is_in_domain): Dummy implementation.
5446
5447Mon Apr 10 17:40:21 2000  Joe Orton  <joe@orton.demon.co.uk>
5448
5449	* http_request.c: Handle read() returning 0 when it shouldn't.
5450	i18n'ized error messages.
5451
5452Mon Apr 10 14:45:09 2000  Joe Orton  <joe@orton.demon.co.uk>
5453
5454	* dates.[ch], md5.[ch], base64.[ch]: Imported date handling
5455	utilities, MD5 checksum functions, and text->base64 converter.
5456
5457Mon Apr 10 14:44:08 2000  Joe Orton  <joe@orton.demon.co.uk>
5458
5459	* Makefile.incl: Dependancies updated for socket.[ch].
5460
5461Mon Apr 10 14:43:36 2000  Joe Orton  <joe@orton.demon.co.uk>
5462
5463	* dav_207.c: Replaced malloc() calls with xmalloc() calls.
5464
5465Mon Apr 10 14:42:35 2000  Joe Orton  <joe@orton.demon.co.uk>
5466
5467	* http_auth.c, uri.c, string_utils.h: Replaced malloc() calls with
5468	xmalloc() calls.
5469
5470Mon Apr 10 14:41:40 2000  Joe Orton  <joe@orton.demon.co.uk>
5471
5472	* socket.[ch]: Imported socket handling utilities.
5473
5474Mon Apr 10 14:36:03 2000  Joe Orton  <joe@orton.demon.co.uk>
5475
5476	* string_utils.h (CONCAT*): Use xmalloc.
5477
5478Mon Apr 10 13:52:17 2000  Joe Orton  <joe@orton.demon.co.uk>
5479
5480	* http_request.c (set_sockerr): Added handling for socket errors.
5481
5482Sat Apr  8 13:49:07 2000  Joe Orton  <joe@orton.demon.co.uk>
5483
5484	* string_utils.[ch]: Imported string utilites.
5485
5486Sat Apr  8 00:26:06 2000  Joe Orton  <joe@orton.demon.co.uk>
5487
5488	* http_request.c (http_set_persist, http_set_expect100): New
5489	functions.
5490
5491Sat Apr  8 00:25:37 2000  Joe Orton  <joe@orton.demon.co.uk>
5492
5493	* http_basic.c (http_options): New function.
5494
5495Fri Apr  7 13:01:35 2000  Joe Orton  <joe@orton.demon.co.uk>
5496
5497	* neon.h: New file.
5498
5499Fri Apr  7 12:59:40 2000  Joe Orton  <joe@orton.demon.co.uk>
5500
5501	* http_request.c (normalize_response_length, read_response_body):
5502	New functions.  (http_add_response_body_reader): Take a callback
5503	to determine whether the body reader wants to read the response
5504	body.
5505
5506Fri Apr  7 11:46:41 2000  Joe Orton  <joe@orton.demon.co.uk>
5507
5508	* http_request.c (http_set_server_auth, http_set_proxy_auth): New
5509	functions.  (give_creds): Use supplied callbacks for
5510	authentication.  (get_request_bodysize): Send Content-Length: 0 if
5511	no entity-body is being sent with a request.  (te_hdr_handler,
5512	connection_hdr_handler): New functions.  (make_request): Don't use
5513	Expect: 100-continue if server is not HTTP/1.1 compliant.
5514	(read_message_header): Only read until HTTP_MAXIMUM_HEADER_LENGTH
5515	bytes of header have been read.  (read_response_headers): No
5516	hard-coded header handling.  (http_request_create): Set
5517	req->method_is_head here.
5518
5519Thu Apr  6 14:39:28 2000  Joe Orton  <joe@orton.demon.co.uk>
5520
5521	* hip_xml.c [HIP_XML_DECODE_UTF8] (decode_utf8_double): New
5522	function.  (char_data) [HIP_XML_DECODE_UTF8]: Decode UTF-8.
5523
5524Tue Mar 28 13:54:51 2000  Joe Orton  <joe@orton.demon.co.uk>
5525
5526	* Makefile.incl: Imported makefile fragment.
5527
5528Tue Mar 28 13:54:09 2000  Joe Orton  <joe@orton.demon.co.uk>
5529
5530	* http_request.[ch] (http_get_error): New function.
5531
5532Thu Mar 23 18:48:42 2000  Joe Orton  <joe@orton.demon.co.uk>
5533
5534	* hip_xml.[ch]: Imported generic XML parsing layer.
5535
5536	* dav_207.[ch]: Imported generic WebDAV 207 response handling.
5537
5538	* dav_basic.[ch]: Imported/implemented DAV response handling and
5539	basic Class 1 namespace methods.
5540
5541Thu Mar 23 18:46:14 2000  Joe Orton  <joe@orton.demon.co.uk>
5542
5543	* http_request.c (add_hooks, run_hooks, http_add_destroy_hook):
5544	Adding hooks support.  (add_fixed_headers): Send TE token in
5545	Connection header. Only send Keep-Alive header & token to pre-1.1
5546	origin servers (i.e., not proxies).
5547
5548Thu Mar 23 12:49:01 2000  Joe Orton  <joe@orton.demon.co.uk>
5549
5550	* http_auth.[ch], uri.[ch]: Imported HTTP authentication and URI
5551	handling modules.
5552
5553Thu Mar 23 12:47:05 2000  Joe Orton  <joe@orton.demon.co.uk>
5554
5555	* http_utils.c: Imported HTTP utility functions.
5556
5557Thu Mar 23 12:44:38 2000  Joe Orton  <joe@orton.demon.co.uk>
5558
5559	* http_request.[ch]: Implemented modular HTTP request handling.
5560
5561	* http_basic.[ch]: Implemented basic HTTP methods GET, PUT, and
5562	PUT with If-Unmodified.
5563
5564