Update to 0.24.7.

CVS patchset: 7522
CVS date: 2004/10/29 13:34:35
This commit is contained in:
jbj 2004-10-29 13:34:35 +00:00
parent 0189ffbf59
commit e603ae4198
253 changed files with 30388 additions and 7678 deletions

View File

@ -3,7 +3,20 @@ config.h
configure
config.status
config.log
conftest.c
Makefile
aclocal.m4
nget
config.cache
*.cache
libtool
neon-config
reconf*
confdefs.h
ltmain.sh
ltconfig
config.sub
config.guess
*.out
*.log
.version
config.hw
neon.pc

View File

@ -1,9 +1,18 @@
#!/bin/sh
major=`echo $1 | sed "s/\..*//g"`
minor=`echo $1 | sed "s/^[0-9]*\.\(.*\)\.[0-9]*$/\1/g"`
rel=`echo $1 | sed "s/^.*\./\1/g"`
set -ex
major=`echo $1 | awk -F. '{print $1;}'`
minor=`echo $1 | awk -F. '{print $2;}'`
rel=`echo $1 | awk -F. '{print $3;}'`
version=$1
# check that release version matches build version!
grep ^NEON_VERSION_MAJOR=$major\$ macros/neon.m4 || exit 1
grep ^NEON_VERSION_MINOR=$minor\$ macros/neon.m4 || exit 1
grep ^NEON_VERSION_RELEASE=$rel\$ macros/neon.m4 || exit 1
grep '^NEON_VERSION_TAG=$' macros/neon.m4 || exit 1
for f in config.hw; do
in=$f.in
out=$f
@ -12,3 +21,15 @@ sed -e "s/@VERSION@/$version/g" \
-e "s/@MINOR@/$minor/g" \
-e "s/@RELEASE@/$release/g" < $in > $out
done
echo $1 > .version
# for the documentation:
date +"%e %B %Y" | tr -d '\n' > doc/date.xml
echo -n $1 > doc/version.xml
# Try to create a valid Makefile
tmp=`mktemp /tmp/neon-XXXXXX`
sed -e "s/@SET_MAKE@//g" -e "s|@SHELL@|/bin/sh|g" < Makefile.in > $tmp
make -f $tmp docs
rm -f $tmp

View File

@ -1 +1 @@
0.23.7
0.24.7

View File

@ -1,7 +1,28 @@
Known problems/bugs in neon -*- text -*-
--------------------------- Id: BUGS,v 1.2 2000/07/27 20:59:19 joe Exp
Known problems/bugs in neon -*- text -*-
---------------------------
1. Each new SSL request is opening a new connection to the server.
VERY slow.
* 2818 requires that a on rejection of the SSL server cert, a "bad certificate"
message should be sent - this is not being done currently (and can probably
only be done with OpenSSL by actually doing cert verification in the verify
callback)
* ne_lock_discover does not handle multiple (shared) locks on
a single resource.
* SSL session caching issues; only cache for clean shutdowns, and
only cache on shutdown, since the SSL_SESSION may change during
an ne_session.
* what is passed as 'path' to req create hook: auth needs Request-URI;
how does that interact with proxies? also they will be passed NULL
for a CONNECT request, or "*" possibly as well.
* expect100 support is broken.
* It would be nice to fail with a friendly error message if a client
cert is requested by the srever but one is not provided. Currently,
returning -1 from the provide_client_cert function would allow that
(as it forces the SSL handshake to fail), but that would prevent
opportunistic use of client certificates, of the "SSLVerifyClient
optional" variety.

View File

@ -1,3 +1,672 @@
Mon May 17 21:25:44 2004 Joe Orton <joe@manyfish.co.uk>
* neon.mak: Fix handling of paths with spaces, and simplify (Jon
Foster <jon@jon-foster.co.uk>).
Thu May 13 11:42:07 2004 Joe Orton <joe@manyfish.co.uk>
* configure.in: Don't rely on echo -n in ne_version.
Fri Mar 26 12:07:04 2004 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (distclean): Clean more.
Sat Oct 25 10:37:59 2003 Joe Orton <joe@manyfish.co.uk>
* configure.in: Use AC_LIBTOOL_TAGS if available.
Mon Sep 22 20:56:21 2003 Joe Orton <joe@manyfish.co.uk>
* Makefile.in: Respect @datadir@ from configure (Max Bowsher).
Sun Sep 14 11:13:36 2003 Joe Orton <joe@manyfish.co.uk>
* configure.in: Run NEON_TEST before LIBNEON_SOURCE_CHECKS, to
help prevent time_t format string detection failing due to changed
CFLAGS.
Fri Jun 20 17:51:05 2003 Joe Orton <joe@manyfish.co.uk>
* configure.in, neon-config.in: Don't pass user-supplied CPPFLAGS
through to neon-config, it is no longer necessary.
Sun Apr 6 19:51:31 2003 Joe Orton <joe@manyfish.co.uk>
* doc/manual.xml: Include clicert reference docs.
* doc/ref/clicert.xml: New file.
Sun Apr 6 19:24:47 2003 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (XMLTO): New variable.
(docs-man, docs-pdf, docs-ps, docs-html): Use $(XMLTO) variable.
Wed Mar 26 20:09:12 2003 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (DIST_HEADERS): Add ne_tls.h
* neon.mak: Build ne_openssl.obj for SSL build, ne_stubssl.obj for
non-SSL build.
Sun Mar 9 10:38:36 2003 Joe Orton <joe@manyfish.co.uk>
* configure.in: Set ALLOW_INSTALL=yes early to allow later
overrides.
* Makefile.in (install-yes): Remove dependence on subdirs.
(install-lib): Depend on subdirs; don't install neon.pc.
(install-config): Install neon.pc here.
Sat Mar 1 21:50:17 2003 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (cover): New target.
Sat Mar 1 20:39:32 2003 Joe Orton <joe@manyfish.co.uk>
* configure.in: Add --enable-memleak argument; if enabled, have
config.h include memleak.h, add top_srcdir/src to include path,
and substitute ALLOW_INSTALL as 'memleak'. Otherwise, substitute
ALLOW_INSTALL as 'yes'.
* Makefile.in (install): Use install-@ALLOW_INSTALL@.
(install-yes): Renamed from install.
(install-memleak): Prevent installation with non-standard ABI.
Fri Dec 27 15:15:54 2002 Joe Orton <joe@manyfish.co.uk>
* neon.pc.in: New file.
* configure.in: Generate neon.pc.
* Makefile.in (install-lib): Install neon.pc
Tue Nov 19 11:24:40 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Use NEON_TEST before NEON_XML_PARSER to prevent
problems if NEON_XML_PARSER adds anything to CPPFLAGS which breaks
gcc -Werror (e.g. -I/usr/local/include).
Sat Sep 21 12:29:56 2002 Joe Orton <joe@manyfish.co.uk>
* neon-config.in: Add support for `--la-file' argument, to print
location of libtool .la file.
Sat Sep 14 12:46:21 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Add AC_COPYRIGHT, use AC_MSG_NOTICE for
post-configure message, update for modern use of AC_CONFIG_FILES
and AC_OUTPUT.
Thu Aug 29 23:49:40 2002 Joe Orton <joe@manyfish.co.uk>
Further Win32 updates from Blair Zajac:
* config.hw.in: Define HAVE_ERRNO_H; fix non-SSL build.
* neon.mak: Fix to build DAV sources if EXPAT_FLAGS is set but not
EXPAT_SRC.
Sun Aug 25 23:37:59 2002 Joe Orton <joe@manyfish.co.uk>
Win32 updates from Blair Zajac <blair@orcaware.com>:
* neon.mak: Fix expansion of $(LIB32_OBJS) variable that was
causing nmake failures. Allow non-DAV build if EXPAT_SRC is not
specified.
* config.hw.in: Remove hard-coded defines.
* INSTALL.win32: Overhaul.
Sat Aug 10 10:42:09 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Substitue OPENSSL into Makefiles as an absolute
path.
Fri Aug 9 20:45:01 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Update to use modern three-argument AC_INIT and
AC_CONFIG_SRCDIR. Pick up version string from .version; thanks to
Greg Stein for they `esyscmd' trick. Move NEON_WITH_LIBS earlier.
Use AC_HELP_STRING for --disable-webdav.
Fri Aug 9 20:41:24 2002 Joe Orton <joe@manyfish.co.uk>
* config.hw.in, neon.mak, INSTALL.win32: Win32 build update from
Gerald Richter: add optional NEON_NODAV and OPENSSL_STATIC flags,
update locations of includes and libraries.
Sun Jun 30 11:08:56 2002 Joe Orton <joe@manyfish.co.uk>
* neon.mak: Enable WIN32_LEAN_AND_MEAN etc, to prevent X509_NAME
definition conflicting with OpenSSL headers in recent versions of
Platform SDK (Branko Èibej).
Thu Jun 13 20:35:43 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Call NEON_WITH_LIBS for --with-libs option.
Tue Jun 4 13:27:48 2002 Joe Orton <joe@manyfish.co.uk>
* neon.mak: Always build ne_compress.obj; patch from Branko Èibej.
Tue Jun 4 09:38:24 2002 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (man1dir, man3dir): Use $(mandir). (Rodney Dawes)
Mon Jun 3 20:47:14 2002 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (install-html, install-man): Fix for VPATH builds.
Sat May 25 15:01:18 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Only enable SSL tests if an `openssl' binary is
found in $PATH.
Thu May 23 20:31:01 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Require a release version of autoconf.
Sat May 18 14:43:15 2002 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (docs-man): Use customisation layer.
Sat Apr 13 22:34:00 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in, neon-config.in: Pass LDFLAGS and CPPFLAGS setting
given to configure through to neon-config --libs/--cflags output.
Mon Feb 25 20:53:28 2002 Joe Orton <joe@manyfish.co.uk>
* neon.mak (OPENSSL_FLAGS): Define NEON_SSL not ENABLE_SSL
(Branko).
Mon Feb 25 20:46:04 2002 Joe Orton <joe@manyfish.co.uk>
* config.hw.in: Add NE_FMT_OFF_T (Dan Berlin, Branko Èibej).
Sun Feb 10 20:35:55 2002 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (docs-html): Use XSL customisation layer for the
HTML output.
Wed Feb 6 00:42:32 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Require autoconf 2.52d for AC_C_BIGENDIAN which
supports cross-compiling.
Sat Jan 26 11:19:39 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Define TESTS and HELPERS appropriately for whether
DAV, SSL, zlib are supported.
Sat Jan 26 11:03:38 2002 Joe Orton <joe@manyfish.co.uk>
* neon.mak: Add OpenSSL, zlib support (Branko Èibej).
Sat Jan 26 00:15:29 2002 Joe Orton <joe@manyfish.co.uk>
* neon.dsp, neon.dsw: Removed per advice from Branko.
Thu Jan 24 21:02:02 2002 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (check): Run check target in test subdir.
(subdirs): Remove redundant subshell.
(distclean): Clean harder.
Thu Jan 24 20:46:28 2002 Joe Orton <joe@manyfish.co.uk>
* neon.mak: Remove sslcerts.c from build.
Sun Jan 20 12:51:27 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Create test/common for vpath build.
Tue Jan 8 21:35:12 2002 Joe Orton <joe@manyfish.co.uk>
* neon.mak: Rewritten by Branko Èibej <brane@xbc.nu>.
* config.hw.in: Update from Branko Èibej.
Thu Jan 3 08:48:00 2002 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (neon-config): Add target.
Thu Jan 3 08:47:06 2002 Joe Orton <joe@manyfish.co.uk>
* neon-config.in (libs): Don't print -L/usr/lib or -L/lib.
Thu Jan 3 08:43:08 2002 Joe Orton <joe@manyfish.co.uk>
* configure.in: Make neon-config executable in the build tree.
Mon Dec 17 22:54:00 2001 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (install-lib, install-headers, install-config):
Support DESTDIR; patch from Pawel Golaszewski <ues@ds.pg.gda.pl>.
Sat Oct 27 12:23:57 2001 Joe Orton <joe@manyfish.co.uk>
* neon-config.in: Add "--support FEATURE" option; the script exits
with success if given FEATURE is supported.
Sat Oct 6 13:11:57 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Require autoconf 2.50. Use AC_HELP_STRING.
Sun Sep 30 23:44:56 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in, neon-config.in: Clean up handling of cflags/libs
exporting.
Sat Sep 29 12:45:25 2001 Joe Orton <joe@manyfish.co.uk>
* Makefile.in: Add Makefile re-generation target, have clean
recurse into test too, have check depend on subdirs, distribute
ne_compress.h.
Tue Sep 25 07:34:32 2001 Mo DeJong <supermo@bayarea.net>
* configure.in: Move check for signal.h into
LIBNEON_SOURCE_CHECKS.
Mon Sep 24 20:28:26 2001 Joe Orton <joe@manyfish.co.uk>
* autogen.sh: Bomb out on errors (set -e).
Mon Sep 24 20:20:08 2001 Joe Orton <joe@manyfish.co.uk>
* autogen.sh: Clean up, use libtoolize.
* ltmain.sh: Removed from CVS.
Mon Sep 24 20:17:18 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Use three-argument AC_DEFINE for _GNU_SOURCE (Mo
DeJong).
Tue Sep 11 23:20:23 2001 Joe Orton <joe@manyfish.co.uk>
* config.hw.in: Define USE_DAV_LOCKS.
Mon Aug 13 21:07:28 2001 Joe Orton <joe@manyfish.co.uk>
* neon.mak: Add support for SSL (Peter Boos).
Sat Jun 30 12:22:17 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Add NEONLIBS to LIBS, so that the depedencies are
added to the link line. This means they are picked up as
references in the .so, and also listed in the libtool .la file.
Tue Jun 12 13:02:58 2001 Joe Orton <joe@manyfish.co.uk>
* config.hw.in: Renamed from config.hw, and have version
substituted in when tarball is rolled. Adjust for XML parser
changes. (Gerald Richter)
Sun Jun 10 16:41:46 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Check for pipe() for tests, use NEON_DEBUG.
Fri Jun 8 22:57:24 2001 Joe Orton <joe@manyfish.co.uk>
* config.hw: Fixes from Gerald Richter <richter@ecos.de>.
* neon.mak, INSTALL.win32: New files from Gerald Richter.
Thu May 31 00:00:32 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Disable shared library build by default. Use
NE_DEBUGGING rather than DEBUGGING. Check for 'usleep' for tests.
Sun Apr 29 16:41:17 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Produce test/Makefile.
Wed Mar 14 22:51:28 2001 Joe Orton <joe@manyfish.co.uk>
* Makefile.in (DIST_HEADERS): Add http_auth.h
Wed Mar 14 22:45:51 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Build bundled directory regardless of
--disable-webdav.
Sun Feb 25 17:00:40 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Rename NEON_IS_BUNDLED to NEON_BUILD_BUNDLED.
Sun Feb 25 16:53:28 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Set NEON_IS_BUNDLED to "yes".
Sat Feb 24 00:09:57 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Add --disable-webdav flag to disable WebDAV
support. Set NEON_NEED_XML_PARSER=yes if DAV is not disabled.
Sun Jan 28 23:10:39 2001 Joe Orton <joe@manyfish.co.uk>
* Makefile.in: Remove neon_config.h from DIST_HEADERS.
Sun Jan 28 10:41:40 2001 Joe Orton <joe@manyfish.co.uk>
* configure.in: Don't produce neon_config.h.
Tue Jan 23 23:16:25 2001 Joe Orton <joe@light.plus.com>
* configure.in: Moved version defns into NEON_VERSIONS macros.
Produce src/neon_config.h.
Tue Jan 16 20:16:47 2001 Joe Orton <joe@light.plus.com>
* configure.in: Bumped version to 0.10.1.
Mon Jan 15 22:59:47 2001 Joe Orton <joe@light.plus.com>
* configure.in: Bumped version to 0.10.0.
Sun Jan 14 23:55:47 2001 Joe Orton <joe@light.plus.com>
* Makefile.in (distclean): Don't remove neon_config.h. (install):
Depend on subdirs.
Wed Jan 10 22:46:53 2001 Joe Orton <joe@light.plus.com>
* configure.in: Use NEON_LINK_FLAGS to pass through -version-info
and interface version flags. Add -I${top_builddir} to CFLAGS.
Remove NEONOBJS declaration, let NEON_LIBTOOL_BUILD do it.
Wed Dec 20 00:11:56 2000 Joe Orton <joe@light.plus.com>
* configure.in: Bumped version to 0.9.1, interface version to
9:1:0.
Tue Dec 19 22:15:45 2000 Joe Orton <joe@light.plus.com>
* Makefile.in: Build using recursive make into src directory. Add
VPATH support. (Mo DeJong <mdejong@cygnus.com>)
Tue Dec 19 22:13:40 2000 Joe Orton <joe@light.plus.com>
* configure.in: Build using new src/Makefile.in.
Sun Dec 17 19:53:36 2000 Joe Orton <joe@light.plus.com>
* config.sub, config.guess, ltconfig, ltmain.sh: Update to libtool
1.3.5 versions.
Sun Dec 17 18:43:00 2000 Joe Orton <joe@light.plus.com>
* Makefile.in: Remove all traces of example programs. Fix
uritest.
Thu Dec 14 21:47:48 2000 Joe Orton <joe@light.plus.com>
* configure.in: Bumped version to 0.8.0, interface version to
8:0:0.
Thu Dec 14 20:57:49 2000 Joe Orton <joe@light.plus.com>
* configure.in: Removed configuration of examples.
Wed Dec 13 20:14:53 2000 Joe Orton <joe@light.plus.com>
* config.hw: Added for Windows.
Sun Nov 26 09:52:29 2000 Joe Orton <joe@light.plus.com>
* example/: Removed directory (now in separate neon-examples
package).
Tue Sep 12 10:33:50 2000 Joe Orton <joe@light.plus.com>
* Makefile.in: Remove sitecopy bits which somehow got left in
there.
Tue Sep 12 00:41:49 2000 Joe Orton <joe@light.plus.com>
* configure.in: Bumped version to 0.7.3, interface version to
7:1:1.
Tue Sep 12 00:39:49 2000 Joe Orton <joe@light.plus.com>
* Makefile.in (distclean): New target.
Thu Sep 7 00:14:15 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped version to 0.7.2, interface version to
7:0:1.
Thu Sep 7 00:10:54 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in: Added 'all' target (patch by Greg Stein
<gstein@lyra.org>).
Sun Sep 3 10:32:09 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in (SHELL): Added definition. Changed xalloc.h to
ne_alloc.h in DIST_HEADERS. Thanks to Eric Mumpower
<nocturne@arepa.com>.
Tue Aug 15 21:53:37 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped version to 0.7.1, interface version to
6:1:1.
Mon Aug 14 09:28:47 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped version to 0.7.0, interface version to
6:0:0.
Sun Aug 13 15:59:58 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped version to 0.6.1, interface version to
5:1:1.
Sat Aug 12 17:10:09 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped version to 0.6.0, interface version to
5:0:1.
Sat Aug 12 17:08:54 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Add --with-extra-includes and --with-extra-libs
configure parameters
Sat Aug 12 17:07:22 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c (redirect_notify): New function. (main): Support
automatic redirects.
Sat Aug 12 16:53:50 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in: Build http_redirect.lo.
Sat Aug 12 14:43:28 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c (pretty_progress_bar): Use 'off_t' not size_t
arguments.
Sat Aug 12 02:11:05 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped interface version to 4:1:0, version to
0.5.1.
Fri Aug 11 17:18:19 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped interface version to 4:0:0, version to
0.5.0.
Fri Jul 28 13:35:06 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped interface version to 3:2:1, version to
0.4.2.
Fri Jul 28 11:26:18 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped interface version to 3:1:1, version to
0.4.1.
Fri Jul 28 11:25:05 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c: Include nsocket.h not socket.h.
Fri Jul 28 10:31:50 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped interface version to 3:0:1. Bumped version
to 0.4.0.
Thu Jul 27 22:01:11 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in: Install nsocket.h not socket.h.
Thu Jul 27 21:59:45 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Tell neon-config that header files are in
$(includedir)/neon. Use NEON_WARNINGS macro for compiler
warnings.
Thu Jul 20 19:20:23 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in: Install headers into $(includedir)/neon rather
libneon. Add dav_locks.h, xalloc.h, neon_md5.h, neon_i18n.h to
list of headers installed.
Mon Jul 17 09:11:46 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped version to 0.3.1, interface version to
2:0:1.
Sun Jul 16 18:47:47 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped version to 0.3.0.
Sun Jul 16 17:17:51 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in (nbrowse, nserver, debug-nserver, debug-nbrowse):
Added targets.
Sun Jul 16 17:15:08 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c (main): Updated for new SSL interface.
Sun Jul 16 16:51:16 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Added --enable-gnome-examples switch.
Sun Jun 18 12:56:00 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nserver.c: New file.
Sun Jun 18 12:54:43 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nbrowse.glade: Added Glade project file.
Sun Jun 18 12:51:56 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nbrowse/main.c, example/nbrowse/interface.c,
example/nbrowse/callbacks.c, example/nbrowse/support.c: Added
files from Glade.
Thu May 25 01:04:11 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Bumped NEON_INTERFACE_VERSION to 1:0:0. With
--enable-warnings, only include -Wstrict-prototypes if we're not
building with SSL support.
Thu May 25 01:01:01 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in: Pass --quiet to libtool to make it a bit less
chatty. (again, debug-nget): New target.
Tue May 23 17:14:43 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c (main): Use http_session_create/destroy. Quit if
http_set_secure fails.
Tue May 23 15:35:16 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c (parse_args, conn_notify): New functions.
(main): Call neon_debug_init, call sock_init. Register
conn_notify. If scheme is "https", use a secure connection.
Tue May 23 14:14:05 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c (parse_args): New function. (main):
Sun May 21 23:54:48 2000 Joe Orton <joe@orton.demon.co.uk>
* neon-config.in: Use @NEON_LIBDIR@ not -L@libdir@ in --libs
output.
Sun May 21 23:53:41 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Call NEON_SSL macro, add LDFLAGS to NEON_LIBDIR to
pick up OpenSSL library location.
Sat May 20 21:47:54 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c: Include neon_config.h for NEON_VERSION
declaration.
Sat May 20 21:47:29 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Added --enable-warnings parameter.
Sat May 20 21:46:54 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in (libneon.la): Fixed passing interface version.
Sun May 14 00:40:38 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in (NEON_VERSION): Bumped to 0.2.0.
Sun May 14 00:28:33 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in (install-config): New goal.
Sun May 14 00:26:00 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Added --enable-debugging argument. Added
NEON_LIBDIR, NEON_INCLUDEDIR, NEON_LIBS, NEON_CFLAGS for
neon-config. Produce neon-config from neon-config.in.
* neon-config.in: New file, modified from libxml.
Sat May 13 23:16:46 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Builed static and shared libraries by default.
Sat May 13 16:32:15 2000 Joe Orton <joe@orton.demon.co.uk>
* config.sub, config.guess, ltmain.sh, ltconfig: Updated from
libtool-1.3.4.
Sat May 13 13:45:56 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c: Don't include neon.h.
Sat May 13 13:44:22 2000 Joe Orton <joe@orton.demon.co.uk>
* Makefile.in: Use libtool. (install-examples): New goal.
* configure.in: Define NEON_VERSION.
Thu May 11 14:14:00 2000 Joe Orton <joe@orton.demon.co.uk>
* example/nget.c (main): Set user-agent.
Thu May 11 14:10:24 2000 Joe Orton <joe@orton.demon.co.uk>
* ltconfig, ltmain.sh, config.sub, config.guess: Added libtool
support files.
* configure.in: Call AC_PROG_LIBTOOL and AC_DISABLE_STATIC.
* .cvsignore: Added libtool.
Wed May 10 19:17:24 2000 Joe Orton <joe@orton.demon.co.uk>
* configure.in: Print configuration message, check for ranlib.

View File

@ -1,80 +1,158 @@
# Copyright (C) 2001-2004 Joe Orton <joe@manyfish.co.uk>
# Copyright (C) 1994, 1995-8, 1999, 2000 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
CFLAGS = -Ilib -I. -Isrc @CFLAGS@ @DEFS@
LDFLAGS = -L. @LDFLAGS@
LIBS = @LIBS@
CC = @CC@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL = @INSTALL@
AR = ar
RANLIB = @RANLIB@
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# libtool bits mostly stolen from libxml and libtool/demo
SHELL = @SHELL@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
man1dir = @mandir@/man1
# Hmmmmm... the i18n stuff seems to want this:
datadir = $(prefix)/@DATADIRNAME@
# Previously I had:
# datadir = @datadir@/sitecopy
docdir = $(prefix)/doc/sitecopy
sc_datadir = $(datadir)/sitecopy
mandir = @mandir@
man1dir = $(mandir)/man1
man3dir = $(mandir)/man3
datadir = @datadir@
docdir = $(datadir)/doc/neon-@NEON_VERSION@
includedir = @includedir@
neonincludes = $(includedir)/libneon
neonincludes = $(includedir)/neon
pkgconfigdir = $(libdir)/pkgconfig
top_srcdir = @top_srcdir@
# Where does top_builddir come from?
top_builddir = @top_srcdir@
top_builddir = .
srcdir = @srcdir@
# intl stuff
localedir = $(datadir)/locale
gnulocaledir = $(prefix)/share/locale
gettextsrcdir = $(prefix)/share/gettext
aliaspath = $(localedir):.
VPATH = @srcdir@
@SET_MAKE@
OBJECTS = src/http_request.o src/http_basic.o src/dav_basic.o src/dav_207.o \
src/string_utils.o src/dates.o src/xalloc.o src/hip_xml.o \
src/base64.o src/md5.o src/http_utils.o src/uri.o src/socket.o \
src/http_auth.o
LDFLAGS = -L. @LDFLAGS@
LIBS = @LIBS@
CC = @CC@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL = @INSTALL@
transform = @program_transform_name@
DIST_HEADERS = http_request.h http_utils.h uri.h socket.h http_basic.h \
dav_basic.h dav_207.h dav_props.h hip_xml.h dates.h string_utils.h
LIBTOOL = @LIBTOOL@
libneon.a: $(OBJECTS)
$(AR) cru $@ $(OBJECTS)
$(RANLIB) $@
XMLTO = xmlto
shared: libneon.so
# The headers to distribute - making up the public interface of neon
DIST_HEADERS = ne_request.h ne_session.h ne_utils.h ne_uri.h ne_socket.h \
ne_basic.h ne_207.h ne_props.h ne_xml.h ne_dates.h ne_string.h \
ne_cookies.h ne_defs.h ne_locks.h ne_alloc.h ne_md5.h ne_i18n.h \
ne_redirect.h ne_auth.h ne_compress.h ne_acl.h ne_ssl.h
libneon.so: $(OBJECTS)
gcc -shared -o $@ $(OBJECTS)
all: subdirs
examples: nget
check: subdirs
cd test && $(MAKE) check
nget: libneon.a example/nget.o lib/basename.o
$(CC) $(LDFLAGS) -o $@ example/nget.o lib/basename.o -lneon
# Useful for doing coverage analysis; use e.g.:
# make TESTS=string-tests MODULE=ne_string cover
cover: subdirs
rm -f src/$(MODULE).da
cd test && $(MAKE) check
cd src; gcov -cb $(MODULE)
install: install-static install-headers
subdirs:
cd src && $(MAKE)
@echo
@echo " Compilation complete. Run '$(MAKE) install' (as root?) to install neon."
@echo
install-static: libneon.a
$(INSTALL) -d $(libdir)
cp libneon.a $(libdir)/libneon.a
# Uses Tim Waugh's excellent "xmlto" utility, see
# http://cyberelk.net/tim/xmlto/. (The docs target is executed at release
# time before generating a .tar.gz)
docs: docs-man docs-html
install-shared: libneon.so
$(INSTALL) -d $(libdir)
cp libneon.so $(libdir)/libneon.so
docs-man:
rm -rf doc/man; mkdir doc/man
$(XMLTO) -o `pwd`/doc/man man doc/manual.xml
install-headers:
$(INSTALL) -d $(neonincludes)
@for h in $(DIST_HEADERS); do \
echo Installing $$h into $(neonincludes); \
$(INSTALL_DATA) src/$$h $(neonincludes)/$$h; \
docs-pdf:
$(XMLTO) -o `pwd`/doc pdf doc/manual.xml
docs-ps:
$(XMLTO) -o `pwd`/doc ps doc/manual.xml
docs-html:
test -d doc/html && rm -rf doc/html || true
mkdir doc/html
$(XMLTO) -o `pwd`/doc/html -x doc/html.xsl html doc/manual.xml
# Validate the manual source
docs-valid:
xmllint --noout --valid doc/manual.xml
clean:
cd src && $(MAKE) clean
cd test && $(MAKE) clean
distclean: clean
rm -rf Makefile config.h config.status libtool config.log config.cache neon-config autom4te.cache neon.pc test/Makefile test/common/Makefile src/Makefile
again: clean
Makefile: Makefile.in
@./config.status Makefile
neon-config: neon-config.in
@./config.status neon-config
install-docs: install-man install-html
install-html:
$(INSTALL) -d $(DESTDIR)$(docdir)/html
for d in $(srcdir)/doc/html/*.html; do \
$(INSTALL_DATA) $$d $(DESTDIR)$(docdir)/html; \
done
neon_dir = src
config_h = config.h
install-man:
$(INSTALL) -d $(DESTDIR)$(man3dir)
$(INSTALL) -d $(DESTDIR)$(man1dir)
for m in $(srcdir)/doc/man/*.3; do \
$(INSTALL_DATA) $$m $(DESTDIR)$(man3dir); done
for m in $(srcdir)/doc/man/*.1; do \
$(INSTALL_DATA) $$m $(DESTDIR)$(man1dir); done
include src/Makefile.incl
install: install-@ALLOW_INSTALL@
install-memleak:
@echo "ERROR: The neon internal memory leak checking code is for testing"
@echo "ERROR: purposes only; this copy of neon must not be installed."
@false
install-yes: install-lib install-headers install-config install-docs
# libtool does all the necessary magic here
install-lib: subdirs
$(INSTALL) -d $(DESTDIR)$(libdir)
$(LIBTOOL) --mode=install $(INSTALL) src/libneon.la \
$(DESTDIR)$(libdir)/libneon.la
install-headers:
$(INSTALL) -d $(DESTDIR)$(neonincludes)
@for h in $(DIST_HEADERS); do \
echo Installing $$h into $(DESTDIR)$(neonincludes); \
$(INSTALL_DATA) $(srcdir)/src/$$h $(DESTDIR)$(neonincludes)/$$h \
|| exit 1; \
done
install-config: neon-config neon.pc
$(INSTALL) -d $(DESTDIR)$(bindir)
@echo Installing neon-config into $(DESTDIR)$(bindir)
@$(INSTALL_SCRIPT) neon-config \
$(DESTDIR)$(bindir)/`echo neon-config|sed '$(transform)'`
$(INSTALL) -d $(DESTDIR)$(pkgconfigdir)
$(INSTALL_DATA) neon.pc $(DESTDIR)$(pkgconfigdir)/neon.pc

934
neon/NEWS
View File

@ -1,2 +1,932 @@
Changes in release 0.1.0
- Initial release.
Changes in release 0.24.7:
* Compression interface fixes:
- fix issues handling content decoding and request retries from
authentication challenges (Justin Erenkrantz)
- fix places where reader callback would receive spurious size=0 calls
- fix to pass user-supplied userdata to user-supplied acceptance callback
* Fix for RFC2617-style digest authentication (Hideaki Takahashi).
* Fix to pick up gethostbyname() on QNX 6.2.
Changes in release 0.24.6:
* SECURITY (CVE CAN-2004-0398): Fix sscanf overflow in ne_rfc1036_parse,
thanks to Stefan Esser.
* Link libneon against libexpat during Subversion build using bundled neon.
* Win32 build script update (Jon Foster).
Changes in release 0.24.5:
* SECURITY (CVE CAN-2004-0179): Fix format string vulnerabilities in
XML/207 response handling, reported by greuff@void.at.
* Performance fix: avoid seeding the SSL PRNG if not creating an SSL socket.
* ne_ssl_readable_dname() is now defined to return UTF-8 strings.
* Fix case where gssapi/gssapi_generic.h was included but not present.
* Fix ne_utils.c build on platforms where zlib does "#define const".
* Fix use of ne_proppatch_operation with some C++ compilers.
* Update libtool for fix to --enable-shared on Darwin.
* BeOS: check for gethostbyname in -lbind (David Reid).
Changes in release 0.24.4:
* Ignore unclean SSL closure when response body is delimited by EOF
("Could not read response body: Secure connection truncated" errors
with some buggy SSL servers).
* Fix test/ssl.c syntax errors with C89 compilers (Radu Greab).
Changes in release 0.24.3:
* Respect configure's --datadir argument (Max Bowsher).
* Fix build on Windows when OpenSSL is not used.
* Fix use of SSLv2 (spurious "Server did not present certificate" error).
* When using SSL via a proxy, prevent leaking server auth credentials
to the proxy, or proxy auth credentials to the server.
Changes in release 0.24.2:
* Fix name resolver with some old versions of glibc.
* Fix problems with configure's "time_t format string" detection.
* Fix problems when a broken Kerberos installation is found.
* When verifying SSL certificates, check iPaddress names in the
subjectAltName extension.
Changes in release 0.24.1:
* Add support for "GSS-Negotiate" Kerberos authentication scheme (from
Risko Gergely and Burjan Gabor).
* Disable Nagle to improve performance of small requests (thanks to
Jim Whitehead and Teng Xu).
* Fix compatibility with OpenSSL 0.9.6 (broken in 0.24.0).
* Fix prototype mismatch in ne_207.c.
* Define ssize_t from ne_request.h for Win32.
* Prevent segfault on zlib initialization failures.
* ne_sock_init does not fail if PRNG could not be seeded.
* Fix segfault in cookies code (Markus Mueller).
* Documentation updates.
Changes in release 0.24.0:
* Major changes to XML interface:
- have the start-element callback either accept, decline, abort,
or return a state integer.
- remove 'struct ne_xml_elm'; callbacks are passed {nspace, name}
strings along with a state integer.
- dropped "collect", "strip-leading-whitespace" modes
- push responsibility for accumulating cdata onto caller; drop 'cdata'
argument from end-element callback.
- don't abort if no handler accepts a particular element, just ignore
that branch of the tree.
- dropped support for libxml 1.x and expat < 1.95.0.
- guarantee that start_element callback is not passed attrs=NULL
- add ne_xml_doc_encoding() to retrieve encoding of parsed XML document.
* Major changes to SSL interface:
- rewrite of interfaces for handling server and client certificates;
ne_ssl.h: many new functions available.
- only PKCS#12-encoded client certs are supported.
- changes to most names of SSL-related functions operating on an
ne_session, e.g. ne_ssl_load_cert->ne_ssl_trust_cert.
- client cert provider callback is passed the set of acceptable CA
names sent by the server
- the entire chain of certs presented by server is now accessible
* Remove unused ne_register_progress() from socket layer.
* Changes to resolver interface: ne_addr_first and _next return const;
ne_addr_print renamed to ne_iaddr_print; ne_iaddr_make and ne_iaddr_free
have been added.
* ne_request_create() now duplicates the method string passed in.
* ne_redirect_location() will now return NULL in some cases.
* Split socket creation to ne_sock_create() from ne_sock_connect:
- should report connect() error messages properly on Win32.
* Fix several memory leaks in error handling paths.
* Add a pkg-config file, neon.pc.in.
Changes in release 0.23.9:
* Fix inability to connect on AIX 4.3.
* neon-config exports includes needed for OpenSSL given by pkg-config.
* ne_redirect_location will return NULL if redirect hooks have not
been registered for the session (Ralf Mattes <rm@fabula.de>).
Changes in release 0.23.8:
* SECURITY: Prevent control characters from being included in the
reason_phrase field filled in by ne_parse_statusline(), and in
the session error string.
* Disable getaddrinfo() support on HP-UX; fix resolver for HP-UX 11.11.
* Fix digest auth response verification for >9 responses in session
(bug manifests as "Server was not authenticated correctly" error).
* On Linux, skip slow lookup for IPv6 addresses when IPv6 support is
not loaded in kernel (thanks to Daniel Stenberg for this technique).
* Update to autoconf 2.57 and libtool 1.4.3.
Changes in release 0.23.7:
* Fix for handling EINTR during write() call (Sergey N Ushakov).
* When available, use pkg-config to determine compiler flags needed to
use OpenSSL headers and libraries.
Changes in release 0.23.6:
* Fixes for error handling in socket layer on Win32 from Johan Lindh
and Sergey N Ushakov <ushakov@int.com.ru>:
- meaningful error messages rather than "No error"
- handle persistent connection timeouts properly
* Fix to use RFC2617-style digest auth when possible (had reverted to
only using RFC2068-style in 0.16.1).
* Fix NULL pointer dereference on certain ill-formed PROPFIND responses.
* Allow ne_sock_init to re-initialize after ne_sock_finish has been called
(Sergey N Ushakov).
Changes in release 0.23.5:
* Fix rejection of SSL server certificates which had commonName as
the least specific attribute in the subject name.
* Fix to dereference entities (e.g. "&amp;") in attribute values with libxml.
* Fix ne_socket.c build on HP-UX 10.20 (thanks to Branko Èibej)
* Remove misguided insistence on "secure" versions of zlib/OpenSSL;
no checks for zlib version are now performed, only OpenSSL 0.9.6 is
required. --with-force-ssl, --with-force-zlib option removed.
* Add --with-egd[=PATH] option, conditionally enable EGD support; either
using EGD socket at PATH, or fall back on system defaults. $EGDSOCKET
and $HOME/.entropy are no longer used.
* Add support for `--la-file' argument to neon-config, which prints the
full path of the installed libneon.la file.
Changes in release 0.23.4:
* Ignore an unclean SSL shutdown on persistent connection timeout
(fixing spurious "Secure connection truncated" errors).
* Fix a segfault on second and subsequent requests using a given
session, when the first fails with NE_LOOKUP.
* Fix configure for gcc installations which produce warnings by default
(such as gcc on hppa2.0n-hp-hpux11.00 using native as)
Changes in release 0.23.3:
* Further build fixes for Win32 (Blair Zajac).
* Another fix for use of SSL against Tomcat 3.2.
Changes in release 0.23.2:
* Build fix for Win32 (Blair Zajac).
Changes in release 0.23.1:
* Identify as correct version, not 0.22.
Changes in release 0.23.0:
* Improved address resolver (ne_addr_*) replacing ne_name_lookup():
- use getaddrinfo() if found; include support for IPv6 (based on work
by Noriaki Takamiya <takamiya@po.ntts.co.jp>)
* For a hostname with multiple addresses, each address is tried in turn
until a connection is made.
* Support for seeding OpenSSL's PRNG via $EGDSOCKET or $HOME/.entropy,
to enable SSL on platforms which lack a /dev/random device.
* RFC2818 compliance for certificate identity checks in SSL:
- use `dNSname' values in subjectAltName extension if present
- hostname comparison fixed to not be case-sensitive
* Fix interop with buggy SSL implementation in Tomcat 3.2.
* Added NE_DBG_SSL debug channel.
* ne_strerror changed to return the passed-in buffer.
* Added ne_strnzcpy macro to ne_string.h.
* Win32 build fixes, improvements, and documentation updates, from
Blair Zajac <blair@orcaware.com>.
* Fix ne_sock_init so SIGPIPE signals are ignored even if SSL library
initialization fails (e.g. platforms without /dev/random).
* Added reference documentation:
- ne_sock_init, ne_addr_*.
Changes in release 0.22.0:
* Remove the const qualifier from the reason_phrase field in ne_status.
- ne_parse_statusline() now strdup's the reason_phrase
* Remove the status_line argument from ne_207_end_propstat and _end_response
* Change ne_session_create, ne_session_proxy, ne_sock_connect, and the
'port' field of the ne_uri structure to use an unsigned int for port numbers
* ne_uri_defaultport returns unsigned and '0' on an unknown port (not -1).
* Changes to hooks interface:
- pass an ne_request pointer to per-request hooks
- replace "accessor" hooks with ne_{get,set}_{request,session}_private
* Authentication changes:
- the hooks changes fix a segfault if auth is enabled for an SSL session
through a proxy server
- fix ne_forget_auth segfault if either proxy or server auth are not used
* Improvements to persistent connection retry logic and error handling
in request code; fixing some cases where some errors where incorrectly
treated as a persistent connection timeout
- a TCP RST at the appropriate time is now treated as a persistent
connection timeout.
- handle persistent connection timeouts on SSL connections
* Changes to SSL support:
- improved error handling
- OpenSSL 0.9.6f or later is required for security fixes and functional
correctness; 0.9.6 or later required for functional correctness
- use --with-force-ssl to override OpenSSL version check
- fix for proxy CONNECT tunnelling with some proxies (e.g. Traffic-Server)
- fix potential segfault if client cert. provider callback is used
- fix to use supplied password callback for PEM-encoded client certificates
(Daniel Berlin <dberlin@dberlin.org>)
* strerror_r is used if available for thread-safe error handling.
* Remove ne_read_file().
* ne_version_match replaces ne_version_minimum (semantics changed slightly).
* XML request bodies use a content-type of "application/xml" now;
applications can use NE_XML_MEDIA_TYPE from ne_xml.h
* Fix decompress code on big-endian or 64-bit platforms.
* Fix to build on Darwin 6 (aka Mac OS X 10.2) (Wilfredo Sánchez,
<wsanchez@mit.edu>)
* Win32 changes:
- remove conflict between OpenSSL's X509_NAME and recent versions of
the Platform SDK (Branko Èibej)
- fix inverted debug/non-debug build logic (Branko Èibej)
- add NODAV and OPENSSL_STATIC flags to neon.mak (Gerald Richter)
Changes in release 0.21.3:
* Fix segfault if using proxy server with SSL session and server
certificate verification fails.
* Fix leak of proxy hostname once per session (if a proxy is used).
* Add --with-libs configure argument; e.g. --with-libs=/usr/local picks
up any support libraries in /usr/local/{lib,include}
Changes in release 0.21.2:
* Fix 'make install' for VPATH builds.
* Use $(mandir) for installing man pages (Rodney Dawes).
* Follow some simple (yet illegal) relativeURI redirects.
* Always build ne_compress.obj in Win32 build (Branko Èibej).
* Fix decompression logic bug (Justin Erenkrantz <jerenkrantz@apache.org>)
(could give a decompress failure for particular responses)
* Fix ne_proppatch() to submit lock tokens for available locks.
* More optimisation of ne_sock_readline.
Changes in release 0.21.1:
* Don't include default SSL port in Host request header, which can
help interoperability with misbehaving servers (thanks to Rodney Dawes
<dobey@ximian.com>).
* Don't give a "truncated response" error from ne_decompress_destroy if
the acceptance function returns non-zero.
* Fix for Win32 build (Sander Striker <striker@apache.org>).
* Fix for cookie name/value being free()d (thanks to Dan Mullen).
* Optimisation of ne_sock_readline.
Changes in release 0.21.0:
* Socket layer implements read buffering; efficiency and performance
improvement. Based on work by Jeff Johnson <jbj@redhat.com>
* Cleanup of socket interface:
- renamed everything, s/sock_/ne_sock_/, s/SOCK_/NE_SOCK_/
- removed unused and inappropriate interfaces.
- renaming done by Olof Oberg <mill@pedgr571.sn.umu.se>
- see src/ChangeLog for the gory details.
* Fix typoed 'ne_destroy_fn' typedef (Olof Oberg).
* Support OpenSSL/ENGINE branch.
* Bogus ne_utf8_encode/decode functions removed.
* ne_base64() moved to ne_string.[ch].
* ne_token drops 'quotes' parameter; ne_qtoken added.
* ne_buffer_create_sized renamed to ne_buffer_ncreate.
* ne_xml_get_attr takes extra arguments and can resolve namespaces.
* ne_accept_response function type takes const ne_status pointer.
* Drop support for automatically following redirects:
- ne_redirect_register just takes a session pointer
- ne_redirect_location returns an ne_uri pointer
* configure changes: --with-ssl and --with-socks no longer take a directory
argument. To use SOCKS or SSL libraries/headers in non-system locations,
use ./configure CPPFLAGS=-I/... LDFLAGS=-L/...
* Reference documentation included for most of ne_alloc.h and ne_string.h,
and parts of ne_session.h and ne_request.h.
- see installed man pages, HTML documentation.
Changes in release 0.20.0:
* Major changes to DAV lock handling interface (ne_locks.h):
- struct ne_lock uses a full URI structure to identify locked resource
- ne_lock() requires that owner/token fields are malloc-allocated (or NULL)
on entry
- introduce a "lock store" type, ne_lock_store, to replace the lock session;
accessor functions all renamed to ne_lockstore_*.
- ne_lock_iterate replaced with a first/next "cursor"-style interface
- If: headers use an absoluteURI (RFC2518 compliance fix).
- fix for handling shared locks on DAV servers which return many active locks
in the LOCK response (thanks to Keith Wannamaker)
* Moved URI/path manipulation functions under ne_* namespace (ne_uri.h):
- path handling functions renamed to ne_path_*
- URI structure handling to ne_uri_*; struct uri becomes ne_uri.
- ne_uri_parse doesn't take a 'defaults' parameter any more
- if URI port is unspecified, ne_uri_parse sets port to 0 not -1.
- added ne_uri_unparse and ne_uri_defaultport functions.
* New 'ne_fill_server_uri' function to initialize a URI structure with
the server details for a given session (useful with locks interface).
* ne_decompress_{reader,destroy} are defined as passthrough-functions
if zlib support is not enabled.
* API change: ne_ssl_provide_fn returns void not int.
* Added NE_SSL_FAILMASK for verify failure sanity check.
* Removed return codes NE_SERVERAUTH and and NE_AUTHPROXY; correct
documentation, NE_PROXYAUTH is given for proxy auth failure.
* Require zlib >= 1.1.4 to avoid possible vulnerability in earlier versions.
See http://www.gzip.org/zlib/advisory-2002-03-11.txt for more details.
(version check can be skipped by passing --with-force-zlib to configure)
* New 'ne_ssl_readable_dname' function to create a human-readable string
from an X509 distinguished name.
* Fix support for newer versions of libxml2 (thanks to Jon Trowbridge
<trow@gnu.org>).
* Fix corruption of reason_phrase in status object returned by
ne_propset_status.
* More lenient handling of whitespace in response headers.
* ne_content_type_handler will give a charset of "ISO-8859-1" if no charset
parameter is specified for a text/* media type (as per RFC2616).
* Miscellaneous cleanups and fixes (Jeff Johnson <jbj@redhat.com>).
Changes in release 0.19.4:
* Support bundled build of expat 1.95.x (Branko Èibej).
Changes in release 0.19.3:
* For platforms lacking snprintf or vsnprintf in libc, require trio.
* Add NE_FMT_OFF_T to fix Win32 build (Dan Berlin, Branko Èibej).
* Fix SSL support in Win32 build (Branko Èibej).
Changes in release 0.19.2:
* Fix non-SSL build broken in 0.19.1.
* Working SOCKSv5 support (thanks to Torsten Kalix <torsten.kalix@bredex.de>)
Changes in release 0.19.1:
* Add missing stubs for ne_ssl_* functions for non-SSL build.
* Fix some error messages in new SSL code.
Changes in release 0.19.0:
* Major API change: ne_session_create now takes (scheme, hostname, port)
arguments: a session is clarified to be "a group of requests to a
certain server".
- removal of ne_session_server, ne_set_secure, and ne_set_proxy_decider
- ne_session_proxy returns void.
- DNS lookups are delayed until request dispatch time.
* Significant improvements to TLS/SSL support:
- SSL is enabled if scheme passed to ne_session_create is "https"
- new interfaces to load CA certs and to load SSL library's bundled CA certs
- add server cert verification callback. An SSL connection to a server
with an unknown CA will now fail unless a verification callback is used.
- enable SSL session caching (performance improvement)
- support for wildcard server certs where commonName is "*.example.com".
- thanks to Tommi Komulainen for the contribution of code from mutt's
IMAP/SSL implementation under the LGPL, from which bits of this were derived.
* Improved SSL client certificate support:
- far simpler interface, all done at ne_session.h level.
- supports PKCS#12 and PEM-encoded certificates.
- optional callback for only providing client when demanded by server.
* Support for TLS upgrade is removed, since it isn't useful.
* If NEON_SSL is defined, API extensions are available to:
- allow access to the SSL_CTX * to adjust session SSL options
- retrieve the server certificate (X509 *)
* Decompress fixes:
- fix potential segfault in ne_decompress_destroy
- check the CRC of the deflated output (and fail if it doesn't match)
- fail appropriately on truncated responses, and trailing bytes in response.
* Added ne_set_read_timeout to use configurable timeout on socket reads.
* Malformed response headers will be ignored rather than failing the request.
* ne_set_error takes printf-style vararg.
* Fixes for ne_get_range and improve error handling.
* Functions which append to an ne_buffer do not return a success value,
but they do use ne_realloc/ne_malloc under the hood now, so an OOM callback
will be used (with the usual caveats).
* XML interface does not strip leading whitespace from cdata by default,
the NE_XML_STRIPWS flag is available to restore this feature if required.
* Upgraded to libtool 1.4.2:
- should fix --enable-shared on Mac OS X 10.1
* Test suite now contains over one hundred tests.
Changes in release 0.18.5:
* Removed old neon.dsp, neon.dsw.
* Update Win32 build to add OpenSSL and zlib support (Branko Èibej).
* Fix ne_compress.c to compile on Win32 (Branko Èibej).
Changes in release 0.18.4:
* Fixes for Content-Type parsing using ne_content_type_handler (Greg Stein)
- also now parses the charset parameter from header value.
* Removed ne_concat() function, which didn't work and wasn't used.
Changes in release 0.18.3:
* Fix parsing lock timeout from server (Arun Garg).
* Send Timeout headers in LOCK and refresh LOCK requests (Arun Garg).
* Updated neon.mak and config.hw.in for Win32 build (patch from
Branko Èibej <brane@xbc.nu>).
* Define XML_BYTE_ORDER for bundled expat build in support macro
NEON_XML_PARSER().
Changes in release 0.18.2:
* Fix --with-neon=PATH in support macros.
* Support DESTDIR in Makefile install targets (patch by
Pawel Golaszewski <blues@blysk.ds.pg.gda.pl>).
* Portability fixes:
- fix configure check for time_t on some platforms (e.g Solaris 2.6).
- remove expect100_works bitfield in ne_session structure (thanks to
Yan Periard <yperiard@ems.net>).
Changes in release 0.18.1:
* Minor fix for authentication: "attempt" counter was not reset correctly
after authentication failed, so subsequent requests would not authenticate
correctly either.
* API change: ne_session_destroy returns void (there was no error case).
* Portability fixes (non-GCC compilers, 64-bit platforms, UnixWare 7)
* Optimisations in string manipulation routines.
* config.hw is included in the release tarball again.
* Improvements in the autoconf support macros:
- check for neon-config in PATH if --with-neon is not given
- stop if --with-neon is used, and the check for external neon fails
- added NEON_WITHOUT_ACL to prevent build of ne_acl.o
Changes in release 0.18.0:
* API change: authentication callback is passed fixed-size username/password
buffers, and an 'attempt' counter. Authentication is retried *forever*
until either it succeeds, or the callback returns non-zero.
* API clarifications:
- ne_propname may have a NULL nspace field, indicating the property has no
namespace. This holds for properties returned by the propfind interfaces.
- added NE_ELM_PROPS_UNUSED as the lowest element number which should
be used with handlers added to the XML parser returned by
ne_propfind_get_parser.
* Fixes and cleanups of lock discovery interface.
* Fix for short write handling in ne_get() (thanks to rado <dzusto@yahoo.com>).
* Fix for XML namespace prefix handling where a prefix could be mapped to an
incorrect URI (e.g. in PROPFINDs against mod_dav with >10 namespaces used)
* Add '--support <feature>' option to neon-config; the script exits with
success if given feature is supported. Known features are ssl, dav, zlib.
* Support for SSL, DAV, zlib is exported by neon.m4 as shell variable
NEON_SUPPORTS_{SSL,DAV,ZLIB}={yes,no} for bundled and external builds.
* `neon-config --cflags` won't include -I/usr/include for SSL build.
* Fix to call progress callbacks while sending request bodies again.
* Test changes:
- portability fixes, auth interface and progress tests.
Changes in release 0.17.2:
* Accept Status-Lines with no reason phrase (Jeremy Elson).
* Fix handling of persistent connection timeout, and better error
handling if sending a request fails.
* Fix crashes in locking code.
* Return parse error on XML namespace prefix declaration with
an empty value. Thanks to Julian Reschke.
* Allow passing property names with NULL namespace to ne_proppatch.
* Fix for cross-compilation (Mo DeJong).
* Moved ne_propname definition from ne_207.h to ne_props.h.
* Test changes:
- updated for Status-Line parsing changes (Jeremy Elson)
- better persistent connection tests
- fixed for --disable-webdav build
Changes in release 0.17.1:
* Add support for ACL method (Arun Garg <arung@pspl.co.in>),
see ne_acl.h.
* Fixes and clean up of libraries exported via `neon-config --libs'
* Fix timezone handling when parsing dates (on some platforms).
* Upgrade to autoconf 2.52 and libtool 1.4 (thanks to Mo DeJong).
* Cleanup/simplification of request dispatching:
- better handling of error cases, including fix for a possible
infinite loop when the server closes the connection prematurely.
* Add '--without-zlib' configure option.
* Test changes:
- prettify output; imitate Perl test suite output.
- add tests for interim 1xx responses, persistent connections, more
unbounded operations.
Changes in release 0.17.0:
* Add support for decoding gzip Content-Encoding: see ne_compress.h.
- built if zlib is found; `neon-config --cflags' will define NEON_ZLIB if so.
* Rewrite hooks interface to register individual callbacks.
- inspired by the Apache 2.0/APR hooks interface
* Register cookies hooks using ne_cookie_register().
* Clean up configure scripts to enable use of autoconf 2.5x (Mo DeJong).
* Use new endianess configure macro to allow cross-compiling (Mo DeJong).
* Fix invalid C code in sock_init() in Win32 build (Mo DeJong).
* Fix use of signal() on Win32 (Mo DeJong).
* Workaround libxml 1.x string handling not being UTF-8.
* Test changes:
- add tests for decompression interface.
Changes in release 0.16.1:
* Also handle write errors in ne_get_range.
* Dump request body blocks in debugging mode.
* Fix ne_shave() causing memory corruption when the result should
have been the empty string.
* Refactor auth header parsing code; more efficient now.
- fixes digest auth RFC2617-style broken in 0.16.0
Changes in release 0.16.0:
* API change: ne_copy takes a depth parameter (thanks to Arun Garg, Medha Atre)
* API change: validate callback to ne_xml also takes a userdata arg.
* Added 'ne_lock_refresh' for performing lock refresh (Arun Garg).
* Add SSL support to Win32 build (Peter Boos <PediB@colorfullife.com>)
(see INSTALL.win32 for details). Compile with USE_DAV_LOCKS also.
* Remove Server header parser for 100-continue support in ne_options.
(and remove broken_expect100 from ne_server_capabilities).
* Set SIGPIPE disposition to "ignored" in sock_init().
* On platforms with setvbuf(), turn off buffering for the debug log
stream.
* Ignore repeated calls to sock_init().
* Fixes to error handling in ne_get_range.
* Minor improvements to memory handling in auth code.
* Fix for start_propstat callback being called with NULL response
argument when given invalid XML, causing a segfault in propfind code.
* Test changes:
- add regression test for the propfind segfault.
- handle segfaults better (reap the child, flush the debug log).
Changes in release 0.15.3:
* Fix --with-expat=DIR build.
Changes in release 0.15.2:
* Fix Win32 for XML parser changes (Gerald Richter).
* Substitute versions into config.hw at distribution time.
* Add date parser for ISO8601-formatted dates as defined by RFC2518, e.g.
the creationdate property (Taisuke Yamada <tai@iij.ad.jp>).
* Fix Y2K bug in RFC1036 date parsing algorithm.
* Test changes:
- add tests for date parsing functions.
Changes in release 0.15.1:
* Win32 update from Gerald Richter <richter@ecos.de>
- new files neon.mak, INSTALL.win32
* Fix for ne_socket.h includes (Mo DeJong).
* More improvements for XML parser selection logic:
- if parser is required, be sure to fail configure if none is found.
- added --with-included-expat for bundled expat logic.
* Rename --enable-debugging to --enable-debug (Mo DeJong).
- added NEON_DEBUG macro to exported autoconf macros.
* Call progress callbacks for request bodies.
* Test changes:
- check that reading response headers is a bounded operation.
- use a pipe between child and parent to avoid race condition and
tedious sleep().
Changes in release 0.15.0:
* Major API renaming to use ne_/NE_ namespace:
- http_ to ne_, HTTP_ to NE_, dav_ to ne_, DAV_ to NE_, neon_ to ne_
- hip_xml_ to ne_xml_, HIP_ELM_ to NE_ELM_, HIP_XML_ -> NE_XML_
- sbuffer_ to ne_buffer_
- DEBUG() to NE_DEBUG(), DEBUG_ to NE_DBG_
* Type renames:
- http_req to ne_request
- sbuffer to 'ne_buffer *'
* Note, 'ne_buffer' is not an implicit pointer type, you must
specify the '*' now, e.g. 'ne_buffer *buf = ne_buffer_create();'.
* ne_buffer is no longer opaque.
- ne_buffer_data() removed: use buf->data instead.
- ne_buffer_size() is a macro.
* Header renames and additions:
- http_request.h -> ne_request.h
- Session code split into ne_session.h
- hip_xml.h -> ne_xml.h, nsocket.h -> ne_socket.h, http_utils.h -> ne_utils.h
- neon_md5.h -> ne_md5.h, dav_207.h -> ne_207.h
- http_basic.h and dav_basic.h merged into ne_basic.h
* New functions:
- ne_token and ne_shave, to obsolete split_string, shave_string.
* Removed: ne_get_request_headers().
* autoconf changes:
- disable building shared neon library by default.
- option --enable-libxml is replaced by --with-libxml1 and
--with-libxml2 to force use of a particular parser.
* Fix auth code to only take MD5 digests of response body blocks when
necessary (thanks to Kai Sommerfeld).
* Fix alignment bug in MD5 code which could cause SIGBUS on Sparc
architectures (Kai Sommerfeld).
* Rewrite of request body handling:
- ne_set_request_body_fd replaces _stream, using an int fd rather than
a FILE *.
- added ne_set_request_body_provider to give a callback which is called
to provide request body blocks.
- removal of 'use_body' hook in favour of 'ne_pull_request_body' function
to allow hooks to manually read the request body.
- ne_{put,get,post,put_if_unmodified} all take an integer fd rather than a
FILE * stream.
* Test changes:
- added framework for testing "over the wire" (fork a server process)
- added tests for response message length handling, chunked responses,
header folding, sending request bodies.
- start at listing RFC2616 requirements and whether they are met
or not in test/STATUS.
- test for MD5 alignment bug on Sparc (thanks to Kai Sommerfeld).
Changes in release 0.14.0:
* Add C++ inclusion safety to http_auth.h (Kai Sommerfeld).
* Define ssize_t on Win32. (Kai Sommerfeld).
* Add C++ inclusion safety to dav_locks.h and ne_alloc.h (thanks to
Gregor Bornemann <Gregor.Bornemann@germany.sun.com>).
* Significant API change to properties code, to allow use of allprop
and complex properties:
- dav_propfind_set_complex and _set_flat are removed.
- add parameter to dav_propfind_named to take the list of property names
to be fetched.
- new function dav_propfind_set_private to set private callback.
- all properties not handled by caller are stored as flat properties.
* Untested: add basic SOCKSv5 support: configure --with-socks.
- please report success/failure to neon@webdav.org
* Win32/MSVC build files from Magnus Sirwiö <sirwio@hotmail.com>.
* Fix for expat detection from Shane Mayer <shanemayer42@yahoo.com>.
* Namespace-protect md5 code and more.
- md5_* -> ne_md5_*
- ascii_to_md5 -> ne_ascii_to_md5 (and moved to neon_md5.h)
* Parse authinfo segment in URIs (Johan Lindh <johan@link-Data.com>).
- added 'authinfo' field to struct uri.
* New API: hip_xml_get_attr to retrieve attributes.
* Store language for properties, access with dav_propset_lang.
- only if property is defined on the property element itself.
* Started a simple test suite (test/*).
- includes some simple HTTP server tests.
* Remove "Content-Length: 0" header for request with no body, fixing
interop with Squid 2.3-STABLE1 (thanks to Kai Sommerfeld).
* http_parse_statusline skips leading whitespace. (Johan Lindh).
* Partial fix for timezone/date parsing problems.
Changes in release 0.13.0:
* Fix ne_strndup allocating one byte less than it should (Kai Sommerfeld)
- if you use uri_parse, this bug may have caused subtle memory corruption
in your application.
* Revert API changes in 0.12: property values are not UTF-8 encoded/decoded
internally. (thanks to Greg Stein)
* Add another optional argument to NEON_BUNDLED macros, actions to
be run if bundled build is *not* selected.
* API change: added argument to http_add_hooks to register cleanup function
for the cookie.
* Removed dav_lock_unregister in favour of automatic cleanup when session
is destroyed.
* Fixed leaks in redirect code (Kai Sommerfeld).
* Fixed crashes in hip_xml_destroy (Kai Sommerfeld).
* Redirects to a different hostname/port/scheme are never followed: the request
will fail with HTTP_REDIRECT instead. Redirect notification callback is
only called for *followed* redirects.
New API: http_redirect_location() for retrieving location of last redirect.
* Authentication is now implemented as a hook, independently of http_request.c:
- API change: removed 'hostname' argument from auth callbacks.
- API change: you must now include http_auth.h from your application.
- Also fixes case of using server and proxy authentication simultaneously
* Added 'http_forget_auth' to clear authentication session.
* New API: http_session_hook_private for retrieving private per-session cookie
for hooks.
* API change: http_set_request_body_stream has a return error value.
* API change: http_set_request_body_buffer now takes the buffer length too.
* New API: caller-pulls interface for reading response body:
http_begin_request, http_end_request, http_read_response_block.
An alternative to using the (much simpler) http_request_dispatch.
* Make --disable-webdav build work.
* New API: dav_propnames for retrieving property names.
* New API: dav_propfind_get_request to access request object of handler.
* API change: progress and connection status callbacks implemented at
http_request.h level. Socket-level status callbacks removed, progress
callbacks made per-socket.
* Supports new expat (Sam TH <sam@uchicago.edu>)
* Supports libxml2 (in preference to libxml1).
* API change: added namespace protection to base64 and dates functions:
all have ne_ prefix now.
* Fixed ranged GETs where a specific range is requested (Johan Lindh
<johan@linkdata.se>).
* Limit number of response header fields to 100.
* Allow requests for the '*' URI even if a proxy server is in use.
* libxml: Get useful error messages for parse errors.
Changes in release 0.12.0:
* Portability fixes to http_request.c and http_auth.c.
- fixes digest auth on big-endian architectures.
* Fix warnings from stray tokens after #endif's in uri.h and string_utils.h.
* Add C++ inclusion safety to http_redirect.h (Kai Sommerfeld
<kai.sommerfeld@germany.sun.com>).
* Make redirects to a different host work (Kai Sommerfeld).
* Fix reading response bodies when non-chunked and no Content-Length
(Kai Sommerfeld).
* API change: 'http_add_hooks takes a 'const' request object.
* Fixed memory leaks in session hooks (thanks to Kai Sommerfeld).
* Fix passing NULL props argument to dav_simple_propfind, to support
allprop requests.
**** MAJOR INTERFACE CHANGE ****
- URIs passed to http_request_create() are NOT escaped by neon. You
MUST do this yourself to remain HTTP compliant, using e.g.
uri_abspath_escape. (Kai Sommerfeld)
* Added --disable-webdav flag to configure, to disable DAV support in
the library. This allows building neon without an XML parser.
* Corresponding NEON_WITHOUT_WEBDAV macro for use in bundled builds.
* Fix Makefile dependancies.
* A bundled neon directory builds or doesn't build automatically
(i.e. you recurse into it unconditionally).
* API clarification:
- dav_propset_status may return NULL if the server does not return
a response for the given property (issue is open for debate).
* API change up for debate:
- Property values to dav_proppatch are UTF-8 encoded internally.
- Property values in dav_propfind_* are UTF-8 decoded internally.
* API additions: ne_realloc, ne_utf8_encode.
Changes in release 0.11.0:
* Added SSL client certificate support with 'sock_set_client_cert'.
- Supports certs in PEM-encoded files.
- Specify a callback for prompting the user for the password with
sock_set_key_prompt.
* Added 'ne_oom_callback', to register a callback which is used if
malloc() returns NULL. (Mike Rosellini <m@icopyright.com>)
* Register appropriate callback with libxml to handle <![CDATA blocks
as normal character data (fixes PROPFINDs against sharemation.com).
* Added 'NEON_REQUIRE' macro to declare that you require a neon library
of a given minimum version, e.g. NEON_REQUIRE(0,10) means "I need
neon 0.11 or later". The _BUNDLED macros will fall back on the bundled
copy if an external library is found which is not of a new enough version.
* Added neon_version_minimum() function call for run-time version detection.
* neon_config.h has been removed.
* Use closesocket() to close sockets on Win32 (Markus Fleck <fleck@isoc.de>).
Changes in release 0.10.1:
* Default expect-100 to OFF.
Changes in release 0.10.0:
* hip_xml API changes:
- The search for a handler for a new child element begins at the
handler of the parent element, and carries on up the stack.
(previously, it always started from the base of the stack)
- Documentation written: doc/parsing-xml.txt
* Remove memory leaks and tidy debugging output in new properties code.
* API changes to DAV locking interface:
- New function: dav_lock_copy to copy a lock object.
- Re-ordered arguments to callback of dav_lock_discover, and made the
lock object passed back const.
- Fix leaks and crashes due to vague interface definitions.
* API change to dav_propfind_set_complex: use a callback to return the
'private' structure.
* NEON_NORMAL_BUILD and NEON_LIBTOOL_BUILD macros defined for setting
up neon's Makefile in a bundled build: see macros/neon.m4.
* NEON_VPATH_BUNDLED macro added which takes separate srcdir and
builddir arguments for supporting VPATH builds (thanks to Peter Moulder
<pjm@bofh.asn.au>).
* Added optional final argument to NEON_(VPATH_)BUNDLED, which gives
a set of actions to be run if the bundled build is chosen.
* NEON_SSL checks for OpenSSL in /usr too.
* API change: when using http_session_decide_proxy, it MUST be called
before using http_session_server to prevent the DNS lookup on the origin
server being optimised out. The real scheme in use is passed to the
callback now.
* New function, dav_207_ignore_unknown, to ignore any unknown XML fragments
in the 207 response. Used by properties layer.
Changes in release 0.9.2:
* Fix using both dav_propfind_set_complex and dav_propfind_set_flat with the
same propfind_handler.
Changes in release 0.9.1:
* dav_propfind interface
- Guarantee that the 'private' structure will be initialized to zero on
creation.
- Make it the *callers* responsibility to free() the private structure.
* Fix a few arguments/variables which mirrored globally declared symbols.
Changes in release 0.9.0:
* Removed old dav_propfind_* interface, replaced with a better, more
powerful, and easier to use interface:
- 'dav_simple_propfind' interface for just fetching "flat" (byte-string)
properties.
- 'dav_propfind_*' interface for fetching flat and/or "complex" (structured
XML) properties.
- Lets you retrieve the 'status' information, to see what happened if
fetching the property failed (e.g 404 Not Found).
* Fixes to doc/using-neon.txt (thanks to Greg Stein).
* Allow building when srcdir != builddir (Mo DeJong <mdejong@cygnus.com>)
Changes in release 0.8.1:
* Fix segfault in PROPFIND code.
Changes in release 0.8.0:
* Fix for using COPY/MOVE over SSL (thanks to David Sloat).
* Fix for using a proxy server and SSL.
* Added 'http_get_scheme' API call.
* Added 'http_redirect.h' to list of installed headers (thanks to everyone ;).
* Changes for building on Windows (Peter Boos <PediB@colorfullife.com>)
* Fixes for building on BeOS (Sam TH <sam@uchicago.edu> and David Reid
<dreid@jetnet.co.uk>).
* Add buffering to socket code for pre-BONE BeOS systems (David Reid).
* Interface changes for hip_xml:
- Renamed hip_xml_add_(mixed_)handler to hip_xml_push_(mixed_)handler
- Documentation updates.
- Added HIP_ELM_UNUSED for lowest element id which should be used.
*** MAJOR INTERFACE CHANGE ***
- Removed 'http_status *' pointer from http_request_dispatch.
- Added http_get_status(req) to retrieve the response-status information
instead. You don't have to declare an http_status object yourself now.
* Similarly, added DAV_ELM_207_UNUSED for lowest element id which should
be used by users of dav_207_* code (incl. use of dav_propfind_*
code).
* New NEON_* autoconf macro interface:
- Use NEON_BUNDLED if sources are bundled, otherwise NEON_LIBRARY.
- The NEON_XML_PARSER macro is NOT called automatically. You must
call this yourself if using NEON_BUNDLED; see doc/using-neon.txt
for details.
* Fix use of 'socket' in nsocket.h function prototypes (Greg Stein).
* Remove extra backslash at line 69 of src/Makefile.incl (Dirk Bergstrom).
* Examples directory is now a separate package.
Changes in release 0.7.7:
* Another fix for linking against a libtool-built expat (Greg Stein).
Changes in release 0.7.6:
* Better check for closed SSL connection after doing SSL_peek. (thanks
to Jeff Costlow <j.costlow@f5.com>).
* Attempt at correct sock_block() implementation for SSL.
* sock_peek() will return SOCK_CLOSED correctly.
Changes in release 0.7.5:
* Fixed workaround for linking against a libtool-built expat (Greg Stein).
Changes in release 0.7.4:
* Fix for fd leak on connect failure (David Sloat <d.sloat@f5.com>).
* Fix for Digest auth against IIS5 (David Sloat).
* Workaround for linking against a libtool-built libexpat.la (Greg Stein).
Changes in release 0.7.3:
* Check for -lsocket and -linet in configure.
* Workaround for SSL problems.
Changes in release 0.7.2:
* Define SHELL in Makefile (thanks to Eric Mumpower <nocturne@arepa.com>).
* Added 'all' target to Makefile (Greg Stein <gstein@lyra.org>)
* Added '--with-expat' argument to configure (Greg Stein)
* Added 'dav_propfind_destroy' function.
Changes in release 0.7.1:
* Don't register response body/header authentication callbacks if no
credentials-supplying callback has been registered (speed optimisation).
Changes in release 0.7.0:
* Deprecated use of 'NULL' to http_add_response_header_handler.
New interface, http_add_response_header_catcher, to register
a callback which is passed ALL response headers regardless of name.
* Speed optimisation (~10%?): storing response-header handlers in a
hash table for faster look.
* New SBUFFER_CAST() macro for getting to the 'char *' of an sbuffer
as fast as possible.
Changes in release 0.6.1:
* Fix for retrying request if connection is closed by server.
* Make redirect hook work for >1 request per session.
Changes in release 0.6.0:
* New interface to allow following HTTP redirects (301/302 responses).
A callback must be given to get user confirmation if the request method
is not GET, HEAD, or PROPFIND.
* New interface to determine whether the proxy server should be used
for a given request: http_session_decide_proxy.
* Fix nget build again. Support automatic redirects in 'nget'.
* Add --with-extra-includes and --with-extra-libs configure parameters
to point configure at
Changes in release 0.5.1:
* Prevent segfault if USE_DAV_LOCKS is defined, and a locking session
is not registered (thanks to David Sloat).
Changes in release 0.5.0:
* Rename xmalloc, xstrdup etc to ne_malloc, ne_strdup etc.
* Some speed optimisation in response-header reading.
* Use 'off_t' rather than 'size_t' in sock_progress callback,
sock_readfile_blocked, and sock_transfer.
Changes in release 0.4.2:
* Fix for sending request bodies after getting 100-continue response.
Changes in release 0.4.1:
* Fix nget build.
Changes in release 0.4.0:
* Install library headers into .../include/neon not .../include/libneon
* Install all necessary library headers.
* Compile support for WebDAV locking throughout the library
* Rename md5.h to neon_md5.h (avoids conflict with md5.h in OpenSSL)
* Rename socket.h to nsocket.h (avoids possible conflict with C library)
* Update licensing notice on macros/neon*.m4: note that these files are
NOT under the LGPL, and can be used in other packages regardless of
the license the package uses.
* Update NEON_LIBRARY m4 function to allow optional specification of
names of bundled neon/expat source directories.
* Increase socket read timeout to 60 seconds.
* Added an POST method: from Sander Alberink <sander.alberink@cmg.nl>.
* Added 'http_get_request_headers' to return the sbuffer containing
all request headers.
* Allow passing NULL as name to http_add_response_header_handler:
the handler callback is passed the entire header string, of ALL
response headers.
Changes in release 0.3.1:
* Compile fix for dav_locks.c (thanks to Paul D'Anna)
Changes in release 0.3.0:
* Rewrite of socket handling layer. All sock_* functions changed.
* Added basic SSL support: --with-ssl (requires OpenSSL).
NOTE: Certificates are NOT presented for verification.
* 'nget' accepts URL's using the 'https' scheme.
* New example program, 'nserver', to display the Server: string,
e.g. 'nserver https://www.eu.c2.net/'
* Fixed request re-send when persistent connection times out.
* "Hooks" support: allow external hooks into the HTTP request/
response dispatch loop.
* New printf-style interface for adding request headers.
* Make symbols used in header files C++-safe (Tom Bednarz).
* WebDAV locking support: lock discovery, LOCK (exclusive/shared)
UNLOCK. "If:" headers are sent as appropriate. Simple interface
for implementors of new methods to indicate which locks are
required for the method.
* Primitive HTTP cookies support.
* Primitive hack at a GNOME-based GUI example program "nbrowse".
Enable build with --enable-gnome-examples. It crashes, and
not much else. Requires GNOME and POSIX threads. Example usage:
'nbrowse dav.ics.uci.edu /msdav/'
Many thanks to Lee Mallabone for Gtk help, and showing how to
use Gtk and threads.
Changes in release 0.2.0:
* Use libtool: new configure options to select whether to build
shared and/or static libraries. Should build shared libraries
portably now.
* Complete rewrite of the hip_xml interface to use opaque pointers.
New functions: hip_xml_create, hip_xml_destroy: create parser.
hip_xml_{set,get}_error: Access to error string.
hip_xml_add_handler: Register callbacks for a set of elements.
hip_xml_valid: Returns whether the parse was valid or not.
Removed functions: hip_xml_init, hip_xml_finish.
* Removed functions made reduntant by above changes in dav_207.
* Don't include config.h in header files
* Fix PROPFIND allprop request body (Michael Sobolev)
* Added C++ safety macros around header files.
* Added neon-config script for getting correct CFLAGS and LIBS
values for using libneon in applications.
Changes in release 0.1.1:
* Fix for short writes in GET
Changes in release 0.1.0:
* Initial release.

View File

@ -1,10 +1,52 @@
In alphabetical order:
Arun Garg <arung@pspl.co.in>
Blair Zajac <blair@orcaware.com>
Branko Èibej <brane@xbc.nu>
Daniel Berlin <dberlin@dberlin.org>
David Sloat <d.sloat@f5.com>
David Reid <dreid@jetnet.co.uk>
Dirk Bergstrom <dirk@juniper.net>
Gerald Richter <richter@ecos.de>
Greg Stein <gstein@lyra.org>
Gregor Bornemann <Gregor.Bornemann@germany.sun.com>
Jeff Johnson <jbj@redhat.com>
Jeremy Elson <jelson@circlemud.org>
Jim Whitehead <ejw@cse.ucsc.edu>
Johan Lindh <johan@linkdata.se>
Justin Erenkrantz <jerenkrantz@apache.org>
Kai Sommerfeld <kai.sommerfeld@germany.sun.com>
Keith Wannamaker <keith@wannamaker.org>
Lee Mallabone <lee0@callnetuk.com>
Magnus Sirwiö <sirwio@hotmail.com>
Markus Mueller <markus-m.mueller@ubs.com>
Max Bowsher <maxb@ukf.net>
Michael Sobolev <mss@despair.spb.ru>
Mike Rosellini <m@icopyright.com>
Mo DeJong <mdejong@cygnus.com>
Noriaki Takamiya <takamiya@po.ntts.co.jp>
Olof Oberg <mill@pedgr571.sn.umu.se>
Pawel Golaszewski <blues@ds.pg.gda.pl>
Peter Boos <PediB@colorfullife.com>
Peter Moulder <pjm@bofh.asn.au>
rado <dzusto@yahoo.com>
Risko Gergely <risko@risko.hu>
Rodney Dawes <dobey@ximian.com>
Sam TH <sam@uchicago.edu>
Sander Alberink <sander.alberink@cmg.nl>
Sander Striker <striker@apache.org>
Stefan Esser <s.esser@e-matters.de>
Shane Mayer <shanemayer42@yahoo.com>
Taisuke Yamada <tai@iij.ad.jp>
Teng Xu <txu@soe.ucsc.edu>
Tom Bednarz <tombednarz@hotmail.com>
Tom Lee <i_am_gnomey@hotmail.com>
Torsten Kalix <torsten.kalix@bredex.de>
Wilfredo Sánchez <wsanchez@mit.edu>
Originators of stolen code:
Tommi Komulainen <Tommi.Komulainen@iki.fi>
Daniel Veillard <Daniel.Veillard@w3.org>
Eric S Raymond <esr@snark.thyrsus.com>
Ulrich Drepper <drepper@gnu.org>

160
neon/TODO
View File

@ -1,104 +1,118 @@
To Do List for neon -*- text -*-
------------------- Id: TODO,v 1.3 2000/05/13 20:52:43 joe Exp
===================
Please submit feature requests to <mailto:neon@webdav.org>
For one-point-oh
----------------
23. Mechanism for aborting a request mid-response; e.g., when a GET
fails due to out of disk space, abort the download.
31. Make it threadsafe:
socket.c: getservbyname -> getservbyname_r.
38. Replace all use of split_string/pair_string with ne_token.
40. XML body acceptance callback should check Content-Type. Should
also pass encoding to expat if one is given (how about libxml?).
Recent mod_dav's return XML bodies in 424 responses which need
displaying properly.
44. Finer-grained connection status feedback, i.e., "Sent Request",
"Got response status-line"... "Reading response body"
58. 2616 is quite strict about when to retry non-idempotent requests
and when not to. neon may not be compliant here.
61. Make everything namespace-safe:
remove split_string/pair_string.
62. Select which auth mechanisms are allowed, e.g. JUST SAY NO to
basic might very well be useful to some apps.
63. Unconditionally turn off Nagle algorithm.
Longer term
-----------
1. Support for HTTP-extended authoring methods ala WebRFM etc; using
New-URI header etc. Also support the BROWSE and INDEX methods. The
protocol is documented at:
http://www.ics.uci.edu/pub/ietf/webdav/ns_dav.html
DON'T do this inside ne_basic.c, do it separately in
ne_author.c or something.
2. Add proper domain support to authentication code. (requires full
URI parsing support). Need to tell the auth layer the server
details.
3. Add a callback to determine whether a specific request should go
through the proxy server or not... based on URI, maybe method too
since lots of HTTP/1.0 proxies break on DAV requests?
4. Better cnonce generation for authentication: use /dev/random or
whatever like mod_auth_digest.
5. Add request hooks to remove all authentication code from
http_request.c.
6. PUT/GET with ranges... http_get_range
7. hip_xml/dav_207/dav_prop might need a revamp.
hip_xml: use an expat-esque interface; i.e. make hip_xml_parser
opaque and add API to set handlers rather than initialize
structures directly. Two problems need to be solved more elegantly:
1) Allowing "sub-handler" for allowing parsing property element
contents independantly of the overally 207 response parse.
2) Allow "mixed-mode" parsing of XML which mixes cdata + elements.
Probably, make hip_xml more of a "utility" layer rather than a
"driving" layer; abstract out expat/libxml, namespace lookups,
element name -> id mapping, easy CDATA handling...
8. WebDAV class 2 locking. Problems: this requires parsing the XML
within a property element. This could be achieved by doing a
completely new XML parse of the property value returned by end_prop
from the 207 code, but this is a bit noddy. Options:
a) Ideally: extend hip_xml and the 207 layer to allow doing a
proper start/end_element/cdata parse of the XML *within* a
property. This is tricky since it means extending hip_xml to
*dynamically* determine whether to be in "collect" mode or not. Add
another callback for this?
6. PUT with ranges... ne_put_range
9. DeltaV support (http://www.webdav.org/deltav/). See also the
inversion project (http://inversion.tigris.org/) who might build a
versioning system over DAV.
subversion project (http://subversion.tigris.org/) who might build
a versioning system over DAV.
10. ACL support (http://www.webdav.org/acl/)
11. DASL support (http://www.webdav.org/dasl/). Xythos have server
support for this (www.sharemation.com).
support for this (www.sharemation.com). The UI is probably the
hardest problem here.
=> Jim Whitehead's UCI postgrad team is working on this and
has written a DASL implementation.
12. SSL/TLS support... make it pluggable so we don't have to export
crypto-related code at ALL?
13. Should we really be abort()'ing on out-of-memory? It makes a lot
of code MUCH simpler (esp. sbuffer_* usage).
14. Nicer request-header manipulation... some kind of indexed data
structure, so we're sure we don't add the same header to the
request twice (e.g. Cache-Control). Must be at least as flexible
as sbuffer usage, though.
16. Socket status notification (socket.c:sock_register_*) is awful.
14. Improved request-header manipulation... some kind of indexed table
(a la Apache, libghttp, so we're sure we don't add the same header
to the request twice. Better control over adding Cache-Control
headers would be good too.
17. Should we really be i18n'izing the low-level error messages in
http_request.c, dav_207.c ? It seems nice and clever to, so the
user REALLY know what is going wrong with the server (probably),
but it is maybe a bit frightening.
18. PROPFIND/propnames support.
ne_request.c, ne_207.c ? It seems nice and clever to, so the user
REALLY know what is going wrong with the server (probably), but it
is maybe a bit frightening.
19. libtool support, for proper shared libraries.
20. Add full URI parser + handling. Or stop pretending we are doing
"URI" parsing, and just handle HTTP URL's.
20. Add decent and proper URI parser + handling. Or stop pretending we
are doing "URI" parsing, and just handle HTTP URL's.
21. Storing multiple authentication "sessions" within an actual
http_auth_session, so I log into e.g. /foo/ and /bar/ (which
are not in the same authentication domain)
switch between them without having to re-enter passwords all the
time.
auth_session, so I can log into e.g. /foo/ and /bar/ (which are
not in the same authentication domain) and switch between them
without having to re-enter passwords all the time.
22. Handle PROPFIND property error responses properly.
28. Support response caching?
23. Mechanism for aborting a request mid-response; e.g., when a GET
fails due to out of disk space, abort the download.
35. Allow i18n'ization if building a shared library, iff gettext
support is on the system (and hence add -lintl or whatever to
NEON_LIBS). If system has no gettext support, then it's probably
impossible to support i18n in the library (although *applications*
can support it by bundling gettext themselves). Take a look at how
other libraries handle this.
24. In a PROPFIND response, if a property were to include e.g., a
DAV:multistatus element, this would not be handled correctly.
46. Asynchronous request-dispatching? Makes integration into GUI loop
easy... any other reasons? Must leave existing request_dispatch
interface intact.
25. A BSD C library has an MD5 implementation in the C Library...
support this. (someone who runs a BSD will need to do this)
47. Indexed table-based response-header access? Might simplify things
like response body acceptance callbacks (i.e., can get access to
Content-Type header for XML).
48. Possibly, store the time of last interaction over the TCP socket,
call it 't'. If the next request is made after t+20, presume the
persistent connection is dead, so re-connect automatically. If we
don't do this, then we have two wasted write() calls making the
request, then failing, then re-connecting. It's really only worth
doing this if this actually saves any packets on the wire, which
it probably doesn't. strace / tcpdump might help here.
50. opendir/readdir/closedir-esque interface for PROPFIND depth 1,
a la EZDAV. (cadaver has it already)
53. "ne_session" concept is hazy. Abstract out a "connection" concept
too, and allow >1 connection per-session in multi-threaded use,
somehow.
57. Add function to map of status-code values to i18n-ized reason
phrase.

View File

@ -1,6 +1,24 @@
#!/bin/sh
rm -f config.cache
([ ! -d macros ] || (echo -n aclocal...\ && aclocal -I macros)) && \
([ ! -r acconfig.h ] || (echo -n autoheader...\ && autoheader)) && \
([ ! -r macros/acconfig.h ] || (echo -n autoheader...\ && autoheader -l macros)) && \
echo -n autoconf...\ && autoconf
rm -f ltconfig ltmain.sh config.cache aclocal.m4
# remove the autoconf cache
rm -rf autom4te*.cache
# create a .version file for configure.in
if test ! -f .version; then
# Building from CVS rather than in a release
echo 0.0.0-dev > .version
# for the documentation:
date +"%e %B %Y" | tr -d '\n' > doc/date.xml
echo -n 0.0.0-dev > doc/version.xml
fi
set -e
echo -n "aclocal... "
${ACLOCAL:-aclocal} -I macros
echo -n "autoheader... "
${AUTOHEADER:-autoheader}
echo -n "libtoolize... "
${LIBTOOLIZE:-libtoolize} --copy --force >/dev/null
echo -n "autoconf... "
${AUTOCONF:-autoconf} -Wall
echo okay.
# remove the autoconf cache
rm -rf autom4te*.cache

View File

@ -1,42 +1,158 @@
dnl Require autoconf 2.53 for an AC_C_BIGENDIAN which supports
dnl cross-compiling.
AC_PREREQ(2.53)
AC_INIT(src/http_request.c)
dnl Extract the version (sans LF) from .version, created at release-time.
m4_define(ne_version, [m4_translit(m4_include(.version), [
])])
AC_INIT(neon, ne_version, [neon@webdav.org])
AC_COPYRIGHT([Copyright (c) 2000, 2001, 2002 Joe Orton
This configure script may be copied, distributed and modified under the
terms of the GNU Library General Public license; see COPYING for more details])
AC_CONFIG_HEADER(config.h)
AC_CONFIG_SRCDIR(src/ne_request.c)
AC_DEFINE([_GNU_SOURCE])
NEON_WITH_LIBS
# Pass through initial LDFLAGS verbatim to neon-config, so that extra
# libraries which are detected (e.g. OpenSSL) can still be found when
# building using the --libs output of neon-config.
user_LDFLAGS=$LDFLAGS
AC_SUBST(user_LDFLAGS)
# By default, allow 'make install' to work.
ALLOW_INSTALL=yes
AC_SUBST(ALLOW_INSTALL)
# Always defined
AC_DEFINE([_GNU_SOURCE], 1, [Unconditionally define _GNU_SOURCE])
# Defined when neon is built as library
AC_DEFINE(NEON_IS_LIBRARY, 1, [Define when building neon as a library])
AC_PROG_CC
AC_PROG_MAKE_SET
AC_ISC_POSIX
AC_PROG_INSTALL
AC_PROG_RANLIB
AC_LANG_C
AC_C_INLINE
AC_C_CONST
AC_HEADER_STDC
dnl Avoid libtool 1.5 bug where configure fails if a C++ compiler
dnl is not available.
m4_ifdef([AC_LIBTOOL_TAGS], [AC_LIBTOOL_TAGS([])])
AC_DISABLE_SHARED
AC_PROG_LIBTOOL
AC_EXEEXT
NEON_XML_PARSER
top_builddir=`pwd`
AC_SUBST(top_builddir)
AC_ARG_ENABLE(webdav,
AC_HELP_STRING([--disable-webdav], [disable WebDAV support]))
if test "$enable_webdav" = "no"; then
NEON_WITHOUT_WEBDAV
else
# Yes, we do need an XML parser. The _BUNDLED macros handle
# this normally.
NEON_NEED_XML_PARSER=yes
fi
# The bundled macros also set this, which makes sure we recurse
# into the 'src' directory.
NEON_BUILD_BUNDLED=yes
AC_SUBST(NEON_BUILD_BUNDLED)
# Define NEON_VERSION* and make the appropriate substitutions.
NEON_VERSIONS
# Pass the interface version on to libtool when linking libneon.la
NEON_LINK_FLAGS="-version-info ${NEON_INTERFACE_VERSION}"
# Checks to compile test suite
NEON_TEST
LIBNEON_SOURCE_CHECKS
AC_OUTPUT(Makefile)
# Use the libtool-type build.
NEON_LIBTOOL_BUILD
# Find an XML parser
NEON_XML_PARSER
# Extra checks for debugging, compiler warnings
NEON_DEBUG
# Leave till last to prevent CFLAGS affecting checks.
NEON_WARNINGS
cat <<EOF
CFLAGS="$CFLAGS -I\${top_builddir}"
Using configuration:
dnl Substitute NEON_VERSION for neon-config too.
AC_SUBST(NEON_VERSION)
AC_ARG_ENABLE(memleak,
AC_HELP_STRING([--enable-memleak], [for test builds only: enable memory leak checking]))
dnl Have autoheader include the following template in config.h.in:
AH_VERBATIM([NEON_MEMLEAK],
[/* Enable memory leak detection. */
#ifdef NEON_MEMLEAK
# include "memleak.h"
#endif])
if test "$enable_memleak" = "yes"; then
CPPFLAGS="$CPPFLAGS -DNEON_MEMLEAK -I\$(top_srcdir)/src"
# disable 'make install'
ALLOW_INSTALL=memleak
fi
# Enable tests for optional features
TESTS="\$(BASIC_TESTS)"
HELPERS=""
if test "$NEON_SUPPORTS_SSL" = "yes"; then
# Only enable SSL tests if an openssl binary is found (needed to make
# certs etc).
AC_PATH_PROG(OPENSSL, openssl, notfound)
if test "$OPENSSL" != "notfound"; then
TESTS="$TESTS \$(SSL_TESTS)"
HELPERS="$HELPERS \$(SSL_HELPERS)"
else
AC_MSG_WARN([no openssl binary in \$PATH: SSL tests disabled])
fi
fi
if test "$NEON_SUPPORTS_DAV" = "yes"; then
TESTS="$TESTS \$(DAV_TESTS)"
fi
if test "$NEON_SUPPORTS_ZLIB" = "yes"; then
TESTS="$TESTS \$(ZLIB_TESTS)"
HELPERS="$HELPERS \$(ZLIB_HELPERS)"
fi
AC_SUBST(HELPERS)
AC_SUBST(TESTS)
AC_CONFIG_FILES([neon-config], [chmod +x neon-config])
AC_CONFIG_FILES([Makefile src/Makefile test/Makefile neon.pc])
AC_OUTPUT
# for VPATH builds:
test -d test/common || mkdir test/common
AC_MSG_NOTICE([Configured to build AC_PACKAGE_STRING:
Install prefix: ${prefix}
Compiler: ${CC}
XML Parser: ${neon_xml_parser_message}
SSL library: ${neon_ssl_message}
zlib support: ${neon_zlib_message}
Build libraries: Shared=${enable_shared}, Static=${enable_static}
Now run 'make' to compile the neon library.
])
Now run: 'make' to compile the neon library (libneon.a)
'make shared' to compile a shared library with GCC (libneon.so)
'make examples' to compile the example programs
case $ALLOW_INSTALL in
memleak)
AC_MSG_NOTICE([Configured with development-only flags:
(Note: You might need to use GNU make if this is not the default 'make'.
GNU make could be installed as 'gmake' on your system.)
EOF
WARNING: This copy of neon has been configured with memory leak checking
WARNING: enabled, which should only be used in a development copy of neon.
WARNING: This neon library should not be installed for use by applications.
]);;
esac

74
neon/doc/biblio.xml Normal file
View File

@ -0,0 +1,74 @@
<bibliography id="biblio"> <!-- -*- xml -*- -->
<biblioentry id="bib.ssltls">
<abbrev>SSL-and-TLS</abbrev>
<title><ulink url="http://www.rtfm.com/sslbook/">SSL and
TLS: Designing and Building Secure Systems</ulink></title>
<author><firstname>Eric</firstname><surname>Rescorla</surname></author>
<isbn>0-201-62598-3</isbn>
<publisher><publishername>Addison-Wesley</publishername></publisher>
<pubdate>March 2001</pubdate>
</biblioentry>
<biblioentry id="bib.xsltrec">
<abbrev>REC-XML-names</abbrev>
<editor><firstname>James</firstname><surname>Clark</surname></editor>
<title><ulink url="http://www.w3.org/TR/xslt">XSL Transformations
(XSLT) Version 1.0</ulink></title> <publishername>W3C
Recommendation</publishername> <pubdate>16 November 1999</pubdate>
</biblioentry>
<biblioentry id="bib.rfc2616">
<abbrev>RFC2616</abbrev>
<title><ulink url="http://www.ietf.org/rfc/rfc2616.txt">Hypertext Transfer
Protocol&mdash;HTTP/1.1</ulink></title>
<authorgroup>
<author><firstname>Roy</firstname><surname>Fielding</surname></author>
<author><firstname>Jim</firstname><surname>Gettys</surname></author>
<author><firstname>Jeff</firstname><surname>Mogul</surname></author>
<author><firstname>Henrik</firstname><surname>Frystyk</surname></author>
<author><firstname>Larry</firstname><surname>Masinter</surname></author>
<author><firstname>Paul</firstname><surname>Leach</surname></author>
<author><firstname>Tim</firstname><surname>Berners-Lee</surname></author>
</authorgroup>
<publishername>IETF</publishername>
<pubdate>June 1999</pubdate>
</biblioentry>
<biblioentry id="bib.rfc2518">
<abbrev>RFC2518</abbrev>
<title><ulink url="http://www.ietf.org/rfc/rfc2518.txt">HTTP Extensions for Distributed Authoring&mdash;WEBDAV</ulink></title>
<authorgroup>
<author><firstname>Yaron</firstname><surname>Goland</surname></author>
<author><firstname>Jim</firstname><surname>Whitehead</surname></author>
<author><firstname>Asad</firstname><surname>Faizi</surname></author>
<author><firstname>Steve</firstname><surname>Carter</surname></author>
<author><firstname>Del</firstname><surname>Jensen</surname></author>
</authorgroup>
<publishername>IETF</publishername>
<pubdate>February 1999</pubdate>
</biblioentry>
<biblioentry id="bib.rfc3280">
<abbrev>RFC3280</abbrev>
<title><ulink url="http://www.ietf.org/rfc/rfc3280.txt">Internet X.509 Public Key Infrastructure
Certificate and Certificate Revocation List (CRL) Profile</ulink></title>
<authorgroup>
<author><firstname>Russel</firstname><surname>Housley</surname></author>
<author><firstname>Warwick</firstname><surname>Ford</surname></author>
<author><firstname>Tim</firstname><surname>Polk</surname></author>
<author><firstname>David</firstname><surname>Solo</surname></author>
</authorgroup>
<publishername>IETF</publishername>
<pubdate>April 2002</pubdate>
</biblioentry>
<!-- RFCs: 2617 -->
<!-- Other interesting RFCs:
3490 : Internationalizing Domain Names in Applications (IDNA)
3493 : Basic Socket Interface Extensions for IPv6
-->
</bibliography>

1
neon/doc/date.xml Normal file
View File

@ -0,0 +1 @@
5 July 2004

466
neon/doc/fdl.sgml Normal file
View File

@ -0,0 +1,466 @@
<appendix id="gfdl">
<title>GNU Free Documentation License</title>
<!-- - GNU Project - Free Software Foundation (FSF) -->
<!-- LINK REV="made" HREF="mailto:webmasters@gnu.org" -->
<!-- sect1>
<title>GNU Free Documentation License</title -->
<para>Version 1.1, March 2000</para>
<blockquote>
<para>Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.</para>
</blockquote>
<sect1 label="0">
<title>PREAMBLE</title>
<para>The purpose of this License is to make a manual, textbook,
or other written document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for the
author and publisher a way to get credit for their work, while not
being considered responsible for modifications made by
others.</para>
<para>This License is a kind of "copyleft", which means that
derivative works of the document must themselves be free in the
same sense. It complements the GNU General Public License, which
is a copyleft license designed for free software.</para>
<para>We have designed this License in order to use it for manuals
for free software, because free software needs free documentation:
a free program should come with manuals providing the same
freedoms that the software does. But this License is not limited
to software manuals; it can be used for any textual work,
regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works
whose purpose is instruction or reference.</para>
</sect1>
<sect1 label="1">
<title>APPLICABILITY AND DEFINITIONS</title>
<para>This License applies to any manual or other work that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. The "Document",
below, refers to any such manual or work. Any member of the
public is a licensee, and is addressed as "you".</para>
<para>A "Modified Version" of the Document means any work
containing the Document or a portion of it, either copied
verbatim, or with modifications and/or translated into another
language.</para>
<para>A "Secondary Section" is a named appendix or a front-matter
section of the Document that deals exclusively with the
relationship of the publishers or authors of the Document to the
Document's overall subject (or to related matters) and contains
nothing that could fall directly within that overall subject.
(For example, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.)
The relationship could be a matter of historical connection with
the subject or with related matters, or of legal, commercial,
philosophical, ethical or political position regarding
them.</para>
<para>The "Invariant Sections" are certain Secondary Sections
whose titles are designated, as being those of Invariant Sections,
in the notice that says that the Document is released under this
License.</para>
<para>The "Cover Texts" are certain short passages of text that
are listed, as Front-Cover Texts or Back-Cover Texts, in the
notice that says that the Document is released under this
License.</para>
<para>A "Transparent" copy of the Document means a
machine-readable copy, represented in a format whose specification
is available to the general public, whose contents can be viewed
and edited directly and straightforwardly with generic text
editors or (for images composed of pixels) generic paint programs
or (for drawings) some widely available drawing editor, and that
is suitable for input to text formatters or for automatic
translation to a variety of formats suitable for input to text
formatters. A copy made in an otherwise Transparent file format
whose markup has been designed to thwart or discourage subsequent
modification by readers is not Transparent. A copy that is not
"Transparent" is called "Opaque".</para>
<para>Examples of suitable formats for Transparent copies include
plain ASCII without markup, Texinfo input format, LaTeX input
format, SGML or XML using a publicly available DTD, and
standard-conforming simple HTML designed for human modification.
Opaque formats include PostScript, PDF, proprietary formats that
can be read and edited only by proprietary word processors, SGML
or XML for which the DTD and/or processing tools are not generally
available, and the machine-generated HTML produced by some word
processors for output purposes only.</para>
<para>The "Title Page" means, for a printed book, the title page
itself, plus such following pages as are needed to hold, legibly,
the material this License requires to appear in the title page.
For works in formats which do not have any title page as such,
"Title Page" means the text near the most prominent appearance of
the work's title, preceding the beginning of the body of the
text.</para>
</sect1>
<sect1 label="2">
<title>VERBATIM COPYING</title>
<para>You may copy and distribute the Document in any medium,
either commercially or noncommercially, provided that this
License, the copyright notices, and the license notice saying this
License applies to the Document are reproduced in all copies, and
that you add no other conditions whatsoever to those of this
License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or
distribute. However, you may accept compensation in exchange for
copies. If you distribute a large enough number of copies you
must also follow the conditions in section 3.</para>
<para>You may also lend copies, under the same conditions stated
above, and you may publicly display copies.</para>
</sect1>
<sect1 label="3">
<title>COPYING IN QUANTITY</title>
<para>If you publish printed copies of the Document numbering more
than 100, and the Document's license notice requires Cover Texts,
you must enclose the copies in covers that carry, clearly and
legibly, all these Cover Texts: Front-Cover Texts on the front
cover, and Back-Cover Texts on the back cover. Both covers must
also clearly and legibly identify you as the publisher of these
copies. The front cover must present the full title with all
words of the title equally prominent and visible. You may add
other material on the covers in addition. Copying with changes
limited to the covers, as long as they preserve the title of the
Document and satisfy these conditions, can be treated as verbatim
copying in other respects.</para>
<para>If the required texts for either cover are too voluminous to
fit legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto
adjacent pages.</para>
<para>If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a
machine-readable Transparent copy along with each Opaque copy, or
state in or with each Opaque copy a publicly-accessible
computer-network location containing a complete Transparent copy
of the Document, free of added material, which the general
network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the
latter option, you must take reasonably prudent steps, when you
begin distribution of Opaque copies in quantity, to ensure that
this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you
distribute an Opaque copy (directly or through your agents or
retailers) of that edition to the public.</para>
<para>It is requested, but not required, that you contact the
authors of the Document well before redistributing any large
number of copies, to give them a chance to provide you with an
updated version of the Document.</para>
</sect1>
<sect1 label="4">
<title>MODIFICATIONS</title>
<para>You may copy and distribute a Modified Version of the
Document under the conditions of sections 2 and 3 above, provided
that you release the Modified Version under precisely this
License, with the Modified Version filling the role of the
Document, thus licensing distribution and modification of the
Modified Version to whoever possesses a copy of it. In addition,
you must do these things in the Modified Version:</para>
<orderedlist numeration="upperalpha">
<listitem><para>Use in the Title Page
(and on the covers, if any) a title distinct from that of the
Document, and from those of previous versions (which should, if
there were any, be listed in the History section of the
Document). You may use the same title as a previous version if
the original publisher of that version gives permission.</para>
</listitem>
<listitem><para>List on the Title Page,
as authors, one or more persons or entities responsible for
authorship of the modifications in the Modified Version,
together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than
five).</para>
</listitem>
<listitem><para>State on the Title page
the name of the publisher of the Modified Version, as the
publisher.</para>
</listitem>
<listitem><para>Preserve all the
copyright notices of the Document.</para>
</listitem>
<listitem><para>Add an appropriate
copyright notice for your modifications adjacent to the other
copyright notices.</para>
</listitem>
<listitem><para>Include, immediately
after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this
License, in the form shown in the Addendum below.</para>
</listitem>
<listitem><para>Preserve in that license
notice the full lists of Invariant Sections and required Cover
Texts given in the Document's license notice.</para>
</listitem>
<listitem><para>Include an unaltered
copy of this License.</para>
</listitem>
<listitem><para>Preserve the section
entitled "History", and its title, and add to it an item stating
at least the title, year, new authors, and publisher of the
Modified Version as given on the Title Page. If there is no
section entitled "History" in the Document, create one stating
the title, year, authors, and publisher of the Document as given
on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.</para>
</listitem>
<listitem><para>Preserve the network
location, if any, given in the Document for public access to a
Transparent copy of the Document, and likewise the network
locations given in the Document for previous versions it was
based on. These may be placed in the "History" section. You
may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.</para>
</listitem>
<listitem><para>In any section entitled
"Acknowledgements" or "Dedications", preserve the section's
title, and preserve in the section all the substance and tone of
each of the contributor acknowledgements and/or dedications
given therein.</para>
</listitem>
<listitem><para>Preserve all the
Invariant Sections of the Document, unaltered in their text and
in their titles. Section numbers or the equivalent are not
considered part of the section titles.</para>
</listitem>
<listitem><para>Delete any section
entitled "Endorsements". Such a section may not be included in
the Modified Version.</para>
</listitem>
<listitem><para>Do not retitle any
existing section as "Endorsements" or to conflict in title with
any Invariant Section.</para>
</listitem>
</orderedlist>
<para>If the Modified Version includes new front-matter sections
or appendices that qualify as Secondary Sections and contain no
material copied from the Document, you may at your option
designate some or all of these sections as invariant. To do this,
add their titles to the list of Invariant Sections in the Modified
Version's license notice. These titles must be distinct from any
other section titles.</para>
<para>You may add a section entitled "Endorsements", provided it
contains nothing but endorsements of your Modified Version by
various parties--for example, statements of peer review or that
the text has been approved by an organization as the authoritative
definition of a standard.</para>
<para>You may add a passage of up to five words as a Front-Cover
Text, and a passage of up to 25 words as a Back-Cover Text, to the
end of the list of Cover Texts in the Modified Version. Only one
passage of Front-Cover Text and one of Back-Cover Text may be
added by (or through arrangements made by) any one entity. If the
Document already includes a cover text for the same cover,
previously added by you or by arrangement made by the same entity
you are acting on behalf of, you may not add another; but you may
replace the old one, on explicit permission from the previous
publisher that added the old one.</para>
<para>The author(s) and publisher(s) of the Document do not by
this License give permission to use their names for publicity for
or to assert or imply endorsement of any Modified Version.</para>
</sect1>
<sect1 label="5">
<title>COMBINING DOCUMENTS</title>
<para>You may combine the Document with other documents released
under this License, under the terms defined in section 4 above for
modified versions, provided that you include in the combination
all of the Invariant Sections of all of the original documents,
unmodified, and list them all as Invariant Sections of your
combined work in its license notice.</para>
<para>The combined work need only contain one copy of this
License, and multiple identical Invariant Sections may be replaced
with a single copy. If there are multiple Invariant Sections with
the same name but different contents, make the title of each such
section unique by adding at the end of it, in parentheses, the
name of the original author or publisher of that section if known,
or else a unique number. Make the same adjustment to the section
titles in the list of Invariant Sections in the license notice of
the combined work.</para>
<para>In the combination, you must combine any sections entitled
"History" in the various original documents, forming one section
entitled "History"; likewise combine any sections entitled
"Acknowledgements", and any sections entitled "Dedications". You
must delete all sections entitled "Endorsements."</para>
</sect1>
<sect1 label="6">
<title>COLLECTIONS OF DOCUMENTS</title>
<para>You may make a collection consisting of the Document and
other documents released under this License, and replace the
individual copies of this License in the various documents with a
single copy that is included in the collection, provided that you
follow the rules of this License for verbatim copying of each of
the documents in all other respects.</para>
<para>You may extract a single document from such a collection,
and distribute it individually under this License, provided you
insert a copy of this License into the extracted document, and
follow this License in all other respects regarding verbatim
copying of that document.</para>
</sect1>
<sect1 label="7">
<title>AGGREGATION WITH INDEPENDENT WORKS</title>
<para>A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of
a storage or distribution medium, does not as a whole count as a
Modified Version of the Document, provided no compilation
copyright is claimed for the compilation. Such a compilation is
called an "aggregate", and this License does not apply to the
other self-contained works thus compiled with the Document, on
account of their being thus compiled, if they are not themselves
derivative works of the Document.</para>
<para>If the Cover Text requirement of section 3 is applicable to
these copies of the Document, then if the Document is less than
one quarter of the entire aggregate, the Document's Cover Texts
may be placed on covers that surround only the Document within the
aggregate. Otherwise they must appear on covers around the whole
aggregate.</para>
</sect1>
<sect1 label="8">
<title>TRANSLATION</title>
<para>Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section
4. Replacing Invariant Sections with translations requires
special permission from their copyright holders, but you may
include translations of some or all Invariant Sections in addition
to the original versions of these Invariant Sections. You may
include a translation of this License provided that you also
include the original English version of this License. In case of
a disagreement between the translation and the original English
version of this License, the original English version will
prevail.</para>
</sect1>
<sect1 label="9">
<title>TERMINATION</title>
<para>You may not copy, modify, sublicense, or distribute the
Document except as expressly provided for under this License. Any
other attempt to copy, modify, sublicense or distribute the
Document is void, and will automatically terminate your rights
under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses
terminated so long as such parties remain in full
compliance.</para>
</sect1>
<sect1 label="10">
<title>FUTURE REVISIONS OF THIS LICENSE</title>
<para>The Free Software Foundation may publish new, revised
versions of the GNU Free Documentation License from time to time.
Such new versions will be similar in spirit to the present
version, but may differ in detail to address new problems or
concerns. See <ulink
url="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</ulink>.</para>
<para>Each version of the License is given a distinguishing
version number. If the Document specifies that a particular
numbered version of this License "or any later version" applies to
it, you have the option of following the terms and conditions
either of that specified version or of any later version that has
been published (not as a draft) by the Free Software Foundation.
If the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the
Free Software Foundation.</para>
</sect1>
<sect1 label="">
<title>How to use this License for your documents</title>
<para>To use this License in a document you have written, include
a copy of the License in the document and put the following
copyright and license notices just after the title page:</para>
<blockquote><para>
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
</para></blockquote>
<para>If you have no Invariant Sections, write "with no Invariant
Sections" instead of saying which ones are invariant. If you have
no Front-Cover Texts, write "no Front-Cover Texts" instead of
"Front-Cover Texts being LIST"; likewise for Back-Cover
Texts.</para>
<para>If your document contains nontrivial examples of program
code, we recommend releasing these examples in parallel under your
choice of free software license, such as the GNU General Public
License, to permit their use in free software.</para>
</sect1>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-parent-document: ("referenz.sgml" "appendix")
sgml-exposed-tags:nil
sgml-local-ecat-files:nil
sgml-local-catalogs: CATALOG
sgml-validate-command: "nsgmls -s referenz.sgml"
ispell-skip-sgml: t
End:
-->

78
neon/doc/feat.xml Normal file
View File

@ -0,0 +1,78 @@
<sect1 id="features">
<title>Feature list</title>
<para>The major features of the neon library are as follows:</para>
<itemizedlist>
<listitem><para>A high-level interface to common HTTP and WebDAV
methods. This allows you to easily dispatch a GET or a MKCOL request
against a resource with a single function call.</para></listitem>
<listitem><para>A low-level interface for HTTP request
handling; allowing you to implement requests using arbitrary methods
and request headers, capture arbitrary response headers, and so
on.</para></listitem>
<listitem><para>Persistent connection support; neon groups a
set of requests to a server into a "session"; requests within that
session can use a persistent (also known as "keep-alive")
connection.</para></listitem>
<listitem><para>Modern HTTP authentication support: a complete
implementation of the new authentication standard, RFC2617,
supporting the Digest (MD5) and Basic schemes, including integrity
checking. Credentials are supplied by an application-defined
callback.</para></listitem>
<listitem><para>Proxy server support; a session can be set to
use a proxy server. Authentication is supported for the Proxy as well
as the origin server.</para></listitem>
<listitem><para>Complete SSL support; a simple interface for
enabling SSL, hiding the complexity of using an SSL library directly.
Client certificate support, callback-based server certificate
verification, along with functions to load trusted CA
certificates.</para></listitem>
<!--
<listitem><para>Compression support.</para></listitem>
-->
<listitem><para>Generic XML parsing interface for handling XML
response bodies using SAX-like callbacks. Both the expat and libxml
XML parser libraries are supported.</para></listitem>
<listitem><para>WebDAV metadata support; set and remove
properties, query properties (PROPFIND); simple interface for
retrieving "flat" byte-string properties, more advanced support for
parsing "complex" XML structured properties.</para></listitem>
<!--
<listitem><para>WebDAV locking support</para></listitem>
-->
<listitem><para>Build environment support: the neon source
tree is designed so that it can be embedded in your application's
build tree; autoconf macros are supplied for integration. To get
started quickly a <xref linkend="refconfig"/> script is included,
to easily determine how to compile and link against an installed copy
of neon</para></listitem>
<listitem><para>Complete test suite: the neon test suite
comprises half as many lines of source code as the library itself,
including many tests for protocol compliance in network behaviour, and
that the library implementation meets the guarantees made by the
API.</para> </listitem>
<!--
<listitem><para>Thorough documentation: neon documentation is
provided in HTML and man page formats (from a single DocBook XML
source)</para></listitem>
-->
</itemizedlist>
</sect1>

View File

@ -27,12 +27,44 @@
</xsl:attribute-set>
<!-- use sane ANSI C function prototypes -->
<xsl:variable name="funcsynopsis.style">ansi</xsl:variable>
<xsl:variable name="funcsynopsis.style" select="'ansi'"/>
<!-- split each sect1 into a separate chunk -->
<xsl:variable name="chunk.first.sections" select="1"/>
<!-- don't generate table of contents within each chapter chunk. -->
<xsl:variable name="generate.chapter.toc" select="0"/>
<xsl:variable name="generate.appendix.toc" select="0"/>
<!-- don't include manual page numbers in refentry cross-references, they
look weird -->
<xsl:variable name="refentry.xref.manvolnum" select="0"/>
<!-- do generate variablelist's as tables -->
<xsl:variable name="variablelist.as.table" select="1"/>
<!-- and css'ize the tables so they can look pretty -->
<xsl:variable name="table.borders.with.css" select="1"/>
<!-- disable ugly tabular output -->
<xsl:variable name="funcsynopsis.tabular.threshold" select="99999"/>
<!-- change some presentation choices -->
<xsl:template match="type">
<xsl:call-template name="inline.italicseq"/>
</xsl:template>
<xsl:template match="parameter">
<xsl:call-template name="inline.monoseq"/>
</xsl:template>
<!-- enclose the whole funcprototype in <code> -->
<xsl:template match="funcprototype" mode="ansi-nontabular">
<div class="funcprototype"><code>
<xsl:apply-templates mode="ansi-nontabular"/>
</code></div>
</xsl:template>
</xsl:stylesheet>

18
neon/doc/html/apas01.html Normal file
View File

@ -0,0 +1,18 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PREAMBLE</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="next" href="apas02.html" title="APPLICABILITY AND DEFINITIONS"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">PREAMBLE</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="gfdl.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas02.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3036814"></a>PREAMBLE</h2></div></div><div></div></div><p>The purpose of this License is to make a manual, textbook,
or other written document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for the
author and publisher a way to get credit for their work, while not
being considered responsible for modifications made by
others.</p><p>This License is a kind of "copyleft", which means that
derivative works of the document must themselves be free in the
same sense. It complements the GNU General Public License, which
is a copyleft license designed for free software.</p><p>We have designed this License in order to use it for manuals
for free software, because free software needs free documentation:
a free program should come with manuals providing the same
freedoms that the software does. But this License is not limited
to software manuals; it can be used for any textual work,
regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works
whose purpose is instruction or reference.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="gfdl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix A. GNU Free Documentation License </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> APPLICABILITY AND DEFINITIONS</td></tr></table></div></body></html>

49
neon/doc/html/apas02.html Normal file
View File

@ -0,0 +1,49 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>APPLICABILITY AND DEFINITIONS</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas01.html" title="PREAMBLE"><link rel="next" href="apas03.html" title="VERBATIM COPYING"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">APPLICABILITY AND DEFINITIONS</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas01.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas03.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3036825"></a>APPLICABILITY AND DEFINITIONS</h2></div></div><div></div></div><p>This License applies to any manual or other work that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. The "Document",
below, refers to any such manual or work. Any member of the
public is a licensee, and is addressed as "you".</p><p>A "Modified Version" of the Document means any work
containing the Document or a portion of it, either copied
verbatim, or with modifications and/or translated into another
language.</p><p>A "Secondary Section" is a named appendix or a front-matter
section of the Document that deals exclusively with the
relationship of the publishers or authors of the Document to the
Document's overall subject (or to related matters) and contains
nothing that could fall directly within that overall subject.
(For example, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.)
The relationship could be a matter of historical connection with
the subject or with related matters, or of legal, commercial,
philosophical, ethical or political position regarding
them.</p><p>The "Invariant Sections" are certain Secondary Sections
whose titles are designated, as being those of Invariant Sections,
in the notice that says that the Document is released under this
License.</p><p>The "Cover Texts" are certain short passages of text that
are listed, as Front-Cover Texts or Back-Cover Texts, in the
notice that says that the Document is released under this
License.</p><p>A "Transparent" copy of the Document means a
machine-readable copy, represented in a format whose specification
is available to the general public, whose contents can be viewed
and edited directly and straightforwardly with generic text
editors or (for images composed of pixels) generic paint programs
or (for drawings) some widely available drawing editor, and that
is suitable for input to text formatters or for automatic
translation to a variety of formats suitable for input to text
formatters. A copy made in an otherwise Transparent file format
whose markup has been designed to thwart or discourage subsequent
modification by readers is not Transparent. A copy that is not
"Transparent" is called "Opaque".</p><p>Examples of suitable formats for Transparent copies include
plain ASCII without markup, Texinfo input format, LaTeX input
format, SGML or XML using a publicly available DTD, and
standard-conforming simple HTML designed for human modification.
Opaque formats include PostScript, PDF, proprietary formats that
can be read and edited only by proprietary word processors, SGML
or XML for which the DTD and/or processing tools are not generally
available, and the machine-generated HTML produced by some word
processors for output purposes only.</p><p>The "Title Page" means, for a printed book, the title page
itself, plus such following pages as are needed to hold, legibly,
the material this License requires to appear in the title page.
For works in formats which do not have any title page as such,
"Title Page" means the text near the most prominent appearance of
the work's title, preceding the beginning of the body of the
text.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PREAMBLE </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> VERBATIM COPYING</td></tr></table></div></body></html>

11
neon/doc/html/apas03.html Normal file
View File

@ -0,0 +1,11 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>VERBATIM COPYING</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas02.html" title="APPLICABILITY AND DEFINITIONS"><link rel="next" href="apas04.html" title="COPYING IN QUANTITY"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">VERBATIM COPYING</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas02.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas04.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037781"></a>VERBATIM COPYING</h2></div></div><div></div></div><p>You may copy and distribute the Document in any medium,
either commercially or noncommercially, provided that this
License, the copyright notices, and the license notice saying this
License applies to the Document are reproduced in all copies, and
that you add no other conditions whatsoever to those of this
License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or
distribute. However, you may accept compensation in exchange for
copies. If you distribute a large enough number of copies you
must also follow the conditions in section 3.</p><p>You may also lend copies, under the same conditions stated
above, and you may publicly display copies.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">APPLICABILITY AND DEFINITIONS </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> COPYING IN QUANTITY</td></tr></table></div></body></html>

31
neon/doc/html/apas04.html Normal file
View File

@ -0,0 +1,31 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>COPYING IN QUANTITY</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas03.html" title="VERBATIM COPYING"><link rel="next" href="apas05.html" title="MODIFICATIONS"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">COPYING IN QUANTITY</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas03.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas05.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037809"></a>COPYING IN QUANTITY</h2></div></div><div></div></div><p>If you publish printed copies of the Document numbering more
than 100, and the Document's license notice requires Cover Texts,
you must enclose the copies in covers that carry, clearly and
legibly, all these Cover Texts: Front-Cover Texts on the front
cover, and Back-Cover Texts on the back cover. Both covers must
also clearly and legibly identify you as the publisher of these
copies. The front cover must present the full title with all
words of the title equally prominent and visible. You may add
other material on the covers in addition. Copying with changes
limited to the covers, as long as they preserve the title of the
Document and satisfy these conditions, can be treated as verbatim
copying in other respects.</p><p>If the required texts for either cover are too voluminous to
fit legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto
adjacent pages.</p><p>If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a
machine-readable Transparent copy along with each Opaque copy, or
state in or with each Opaque copy a publicly-accessible
computer-network location containing a complete Transparent copy
of the Document, free of added material, which the general
network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the
latter option, you must take reasonably prudent steps, when you
begin distribution of Opaque copies in quantity, to ensure that
this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you
distribute an Opaque copy (directly or through your agents or
retailers) of that edition to the public.</p><p>It is requested, but not required, that you contact the
authors of the Document well before redistributing any large
number of copies, to give them a chance to provide you with an
updated version of the Document.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">VERBATIM COPYING </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> MODIFICATIONS</td></tr></table></div></body></html>

74
neon/doc/html/apas05.html Normal file
View File

@ -0,0 +1,74 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>MODIFICATIONS</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas04.html" title="COPYING IN QUANTITY"><link rel="next" href="apas06.html" title="COMBINING DOCUMENTS"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">MODIFICATIONS</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas04.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas06.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037880"></a>MODIFICATIONS</h2></div></div><div></div></div><p>You may copy and distribute a Modified Version of the
Document under the conditions of sections 2 and 3 above, provided
that you release the Modified Version under precisely this
License, with the Modified Version filling the role of the
Document, thus licensing distribution and modification of the
Modified Version to whoever possesses a copy of it. In addition,
you must do these things in the Modified Version:</p><div class="orderedlist"><ol type="A"><li><p>Use in the Title Page
(and on the covers, if any) a title distinct from that of the
Document, and from those of previous versions (which should, if
there were any, be listed in the History section of the
Document). You may use the same title as a previous version if
the original publisher of that version gives permission.</p></li><li><p>List on the Title Page,
as authors, one or more persons or entities responsible for
authorship of the modifications in the Modified Version,
together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than
five).</p></li><li><p>State on the Title page
the name of the publisher of the Modified Version, as the
publisher.</p></li><li><p>Preserve all the
copyright notices of the Document.</p></li><li><p>Add an appropriate
copyright notice for your modifications adjacent to the other
copyright notices.</p></li><li><p>Include, immediately
after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this
License, in the form shown in the Addendum below.</p></li><li><p>Preserve in that license
notice the full lists of Invariant Sections and required Cover
Texts given in the Document's license notice.</p></li><li><p>Include an unaltered
copy of this License.</p></li><li><p>Preserve the section
entitled "History", and its title, and add to it an item stating
at least the title, year, new authors, and publisher of the
Modified Version as given on the Title Page. If there is no
section entitled "History" in the Document, create one stating
the title, year, authors, and publisher of the Document as given
on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.</p></li><li><p>Preserve the network
location, if any, given in the Document for public access to a
Transparent copy of the Document, and likewise the network
locations given in the Document for previous versions it was
based on. These may be placed in the "History" section. You
may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.</p></li><li><p>In any section entitled
"Acknowledgements" or "Dedications", preserve the section's
title, and preserve in the section all the substance and tone of
each of the contributor acknowledgements and/or dedications
given therein.</p></li><li><p>Preserve all the
Invariant Sections of the Document, unaltered in their text and
in their titles. Section numbers or the equivalent are not
considered part of the section titles.</p></li><li><p>Delete any section
entitled "Endorsements". Such a section may not be included in
the Modified Version.</p></li><li><p>Do not retitle any
existing section as "Endorsements" or to conflict in title with
any Invariant Section.</p></li></ol></div><p>If the Modified Version includes new front-matter sections
or appendices that qualify as Secondary Sections and contain no
material copied from the Document, you may at your option
designate some or all of these sections as invariant. To do this,
add their titles to the list of Invariant Sections in the Modified
Version's license notice. These titles must be distinct from any
other section titles.</p><p>You may add a section entitled "Endorsements", provided it
contains nothing but endorsements of your Modified Version by
various parties--for example, statements of peer review or that
the text has been approved by an organization as the authoritative
definition of a standard.</p><p>You may add a passage of up to five words as a Front-Cover
Text, and a passage of up to 25 words as a Back-Cover Text, to the
end of the list of Cover Texts in the Modified Version. Only one
passage of Front-Cover Text and one of Back-Cover Text may be
added by (or through arrangements made by) any one entity. If the
Document already includes a cover text for the same cover,
previously added by you or by arrangement made by the same entity
you are acting on behalf of, you may not add another; but you may
replace the old one, on explicit permission from the previous
publisher that added the old one.</p><p>The author(s) and publisher(s) of the Document do not by
this License give permission to use their names for publicity for
or to assert or imply endorsement of any Modified Version.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">COPYING IN QUANTITY </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> COMBINING DOCUMENTS</td></tr></table></div></body></html>

18
neon/doc/html/apas06.html Normal file
View File

@ -0,0 +1,18 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>COMBINING DOCUMENTS</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas05.html" title="MODIFICATIONS"><link rel="next" href="apas07.html" title="COLLECTIONS OF DOCUMENTS"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">COMBINING DOCUMENTS</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas05.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas07.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3038074"></a>COMBINING DOCUMENTS</h2></div></div><div></div></div><p>You may combine the Document with other documents released
under this License, under the terms defined in section 4 above for
modified versions, provided that you include in the combination
all of the Invariant Sections of all of the original documents,
unmodified, and list them all as Invariant Sections of your
combined work in its license notice.</p><p>The combined work need only contain one copy of this
License, and multiple identical Invariant Sections may be replaced
with a single copy. If there are multiple Invariant Sections with
the same name but different contents, make the title of each such
section unique by adding at the end of it, in parentheses, the
name of the original author or publisher of that section if known,
or else a unique number. Make the same adjustment to the section
titles in the list of Invariant Sections in the license notice of
the combined work.</p><p>In the combination, you must combine any sections entitled
"History" in the various original documents, forming one section
entitled "History"; likewise combine any sections entitled
"Acknowledgements", and any sections entitled "Dedications". You
must delete all sections entitled "Endorsements."</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">MODIFICATIONS </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> COLLECTIONS OF DOCUMENTS</td></tr></table></div></body></html>

10
neon/doc/html/apas07.html Normal file
View File

@ -0,0 +1,10 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>COLLECTIONS OF DOCUMENTS</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas06.html" title="COMBINING DOCUMENTS"><link rel="next" href="apas08.html" title="AGGREGATION WITH INDEPENDENT WORKS"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">COLLECTIONS OF DOCUMENTS</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas06.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas08.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037562"></a>COLLECTIONS OF DOCUMENTS</h2></div></div><div></div></div><p>You may make a collection consisting of the Document and
other documents released under this License, and replace the
individual copies of this License in the various documents with a
single copy that is included in the collection, provided that you
follow the rules of this License for verbatim copying of each of
the documents in all other respects.</p><p>You may extract a single document from such a collection,
and distribute it individually under this License, provided you
insert a copy of this License into the extracted document, and
follow this License in all other respects regarding verbatim
copying of that document.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">COMBINING DOCUMENTS </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> AGGREGATION WITH INDEPENDENT WORKS</td></tr></table></div></body></html>

14
neon/doc/html/apas08.html Normal file
View File

@ -0,0 +1,14 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AGGREGATION WITH INDEPENDENT WORKS</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas07.html" title="COLLECTIONS OF DOCUMENTS"><link rel="next" href="apas09.html" title="TRANSLATION"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">AGGREGATION WITH INDEPENDENT WORKS</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas07.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas09.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037588"></a>AGGREGATION WITH INDEPENDENT WORKS</h2></div></div><div></div></div><p>A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of
a storage or distribution medium, does not as a whole count as a
Modified Version of the Document, provided no compilation
copyright is claimed for the compilation. Such a compilation is
called an "aggregate", and this License does not apply to the
other self-contained works thus compiled with the Document, on
account of their being thus compiled, if they are not themselves
derivative works of the Document.</p><p>If the Cover Text requirement of section 3 is applicable to
these copies of the Document, then if the Document is less than
one quarter of the entire aggregate, the Document's Cover Texts
may be placed on covers that surround only the Document within the
aggregate. Otherwise they must appear on covers around the whole
aggregate.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas07.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">COLLECTIONS OF DOCUMENTS </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> TRANSLATION</td></tr></table></div></body></html>

11
neon/doc/html/apas09.html Normal file
View File

@ -0,0 +1,11 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>TRANSLATION</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas08.html" title="AGGREGATION WITH INDEPENDENT WORKS"><link rel="next" href="apas10.html" title="TERMINATION"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">TRANSLATION</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas08.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas10.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037619"></a>TRANSLATION</h2></div></div><div></div></div><p>Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section
4. Replacing Invariant Sections with translations requires
special permission from their copyright holders, but you may
include translations of some or all Invariant Sections in addition
to the original versions of these Invariant Sections. You may
include a translation of this License provided that you also
include the original English version of this License. In case of
a disagreement between the translation and the original English
version of this License, the original English version will
prevail.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas08.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas10.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">AGGREGATION WITH INDEPENDENT WORKS </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> TERMINATION</td></tr></table></div></body></html>

View File

@ -0,0 +1,8 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>TERMINATION</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas09.html" title="TRANSLATION"><link rel="next" href="apas11.html" title="FUTURE REVISIONS OF THIS LICENSE"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">TERMINATION</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas09.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas11.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037642"></a>TERMINATION</h2></div></div><div></div></div><p>You may not copy, modify, sublicense, or distribute the
Document except as expressly provided for under this License. Any
other attempt to copy, modify, sublicense or distribute the
Document is void, and will automatically terminate your rights
under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses
terminated so long as such parties remain in full
compliance.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas09.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas11.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">TRANSLATION </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> FUTURE REVISIONS OF THIS LICENSE</td></tr></table></div></body></html>

13
neon/doc/html/apas11.html Normal file
View File

@ -0,0 +1,13 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>FUTURE REVISIONS OF THIS LICENSE</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas10.html" title="TERMINATION"><link rel="next" href="apas12.html" title="How to use this License for your documents"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">FUTURE REVISIONS OF THIS LICENSE</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas10.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> <a accesskey="n" href="apas12.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037662"></a>FUTURE REVISIONS OF THIS LICENSE</h2></div></div><div></div></div><p>The Free Software Foundation may publish new, revised
versions of the GNU Free Documentation License from time to time.
Such new versions will be similar in spirit to the present
version, but may differ in detail to address new problems or
concerns. See <a href="http://www.gnu.org/copyleft/" target="_top">http://www.gnu.org/copyleft/</a>.</p><p>Each version of the License is given a distinguishing
version number. If the Document specifies that a particular
numbered version of this License "or any later version" applies to
it, you have the option of following the terms and conditions
either of that specified version or of any later version that has
been published (not as a draft) by the Free Software Foundation.
If the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the
Free Software Foundation.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas10.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas12.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">TERMINATION </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> How to use this License for your documents</td></tr></table></div></body></html>

19
neon/doc/html/apas12.html Normal file
View File

@ -0,0 +1,19 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to use this License for your documents</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="gfdl.html" title="Appendix A. GNU Free Documentation License"><link rel="previous" href="apas11.html" title="FUTURE REVISIONS OF THIS LICENSE"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How to use this License for your documents</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas11.html">Prev</a> </td><th width="60%" align="center">Appendix A. GNU Free Documentation License</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3037689"></a>How to use this License for your documents</h2></div></div><div></div></div><p>To use this License in a document you have written, include
a copy of the License in the document and put the following
copyright and license notices just after the title page:</p><div class="blockquote"><blockquote class="blockquote"><p>
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
</p></blockquote></div><p>If you have no Invariant Sections, write "with no Invariant
Sections" instead of saying which ones are invariant. If you have
no Front-Cover Texts, write "no Front-Cover Texts" instead of
"Front-Cover Texts being LIST"; likewise for Back-Cover
Texts.</p><p>If your document contains nontrivial examples of program
code, we recommend releasing these examples in parallel under your
choice of free software license, such as the GNU General Public
License, to permit their use in free software.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas11.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gfdl.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">FUTURE REVISIONS OF THIS LICENSE </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>

4
neon/doc/html/api.html Normal file
View File

@ -0,0 +1,4 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 2. The neon C language interface</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="previous" href="compliance.html" title="Protocol compliance"><link rel="next" href="xml.html" title="Parsing XML"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. The neon C language interface</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="compliance.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="xml.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="api"></a>Chapter 2. The neon C language interface</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="xml.html">Parsing XML</a></span></dt><dd><dl><dt><span class="sect2"><a href="xml.html#xml-sax">Introduction to SAX</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-stacked">Stacked SAX handlers</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-state">Maintaining state</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-ns">XML namespaces</a></span></dt></dl></dd></dl></div><p>The documentation for the neon interface is split between
this chapter, which gives a broad introduction to the abstractions
exposed by the library, and <a href="ref.html" title="neon API reference">neon API reference</a>, which gives a
function-by-function breakdown of the interface.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="compliance.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="xml.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Protocol compliance </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Parsing XML</td></tr></table></div></body></html>

View File

@ -0,0 +1,6 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Bibliography</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="previous" href="refvers.html" title="ne_version_match"><link rel="next" href="gfdl.html" title="Appendix A. GNU Free Documentation License"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Bibliography</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refvers.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="gfdl.html">Next</a></td></tr></table><hr></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a name="biblio"></a>Bibliography</h2></div></div><div></div></div><div class="biblioentry"><a name="bib.ssltls"></a><p>[<span class="abbrev">SSL-and-TLS</span>] <span class="title"><i><a href="http://www.rtfm.com/sslbook/" target="_top">SSL and
TLS: Designing and Building Secure Systems</a></i>. </span><span class="author"><span class="firstname">Eric</span> <span class="surname">Rescorla</span>. </span><span class="isbn">0-201-62598-3. </span><span class="publisher"><span class="publishername">Addison-Wesley. </span></span><span class="pubdate">March 2001. </span></p></div><div class="biblioentry"><a name="bib.xsltrec"></a><p>[<span class="abbrev">REC-XML-names</span>] <span class="editor"><span class="firstname">James</span> <span class="surname">Clark</span>. </span><span class="title"><i><a href="http://www.w3.org/TR/xslt" target="_top">XSL Transformations
(XSLT) Version 1.0</a></i>. </span><span class="publishername">W3C
Recommendation. </span><span class="pubdate">16 November 1999. </span></p></div><div class="biblioentry"><a name="bib.rfc2616"></a><p>[<span class="abbrev">RFC2616</span>] <span class="title"><i><a href="http://www.ietf.org/rfc/rfc2616.txt" target="_top">Hypertext Transfer
Protocol&#8212;HTTP/1.1</a></i>. </span><span class="authorgroup"><span class="firstname">Roy</span> <span class="surname">Fielding</span>, <span class="firstname">Jim</span> <span class="surname">Gettys</span>, <span class="firstname">Jeff</span> <span class="surname">Mogul</span>, <span class="firstname">Henrik</span> <span class="surname">Frystyk</span>, <span class="firstname">Larry</span> <span class="surname">Masinter</span>, <span class="firstname">Paul</span> <span class="surname">Leach</span>, and <span class="firstname">Tim</span> <span class="surname">Berners-Lee</span>. </span><span class="publishername">IETF. </span><span class="pubdate">June 1999. </span></p></div><div class="biblioentry"><a name="bib.rfc2518"></a><p>[<span class="abbrev">RFC2518</span>] <span class="title"><i><a href="http://www.ietf.org/rfc/rfc2518.txt" target="_top">HTTP Extensions for Distributed Authoring&#8212;WEBDAV</a></i>. </span><span class="authorgroup"><span class="firstname">Yaron</span> <span class="surname">Goland</span>, <span class="firstname">Jim</span> <span class="surname">Whitehead</span>, <span class="firstname">Asad</span> <span class="surname">Faizi</span>, <span class="firstname">Steve</span> <span class="surname">Carter</span>, and <span class="firstname">Del</span> <span class="surname">Jensen</span>. </span><span class="publishername">IETF. </span><span class="pubdate">February 1999. </span></p></div><div class="biblioentry"><a name="bib.rfc3280"></a><p>[<span class="abbrev">RFC3280</span>] <span class="title"><i><a href="http://www.ietf.org/rfc/rfc3280.txt" target="_top">Internet X.509 Public Key Infrastructure
Certificate and Certificate Revocation List (CRL) Profile</a></i>. </span><span class="authorgroup"><span class="firstname">Russel</span> <span class="surname">Housley</span>, <span class="firstname">Warwick</span> <span class="surname">Ford</span>, <span class="firstname">Tim</span> <span class="surname">Polk</span>, and <span class="firstname">David</span> <span class="surname">Solo</span>. </span><span class="publishername">IETF. </span><span class="pubdate">April 2002. </span></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refvers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="gfdl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_version_match </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix A. GNU Free Documentation License</td></tr></table></div></body></html>

View File

@ -0,0 +1,25 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Protocol compliance</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="previous" href="using.html" title="How to use neon from your application"><link rel="next" href="api.html" title="Chapter 2. The neon C language interface"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Protocol compliance</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="compliance"></a>Protocol compliance</h2></div></div><div></div></div><p>neon is intended to be compliant with the IETF
protocol standards it implements, with a few exceptions where
real-world use has necessitated minor deviations. These
exceptions are documented in this section.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2957718"></a>RFC 2518, HTTP Extensions for Distributed Authoring&#8212;WebDAV</h3></div></div><div></div></div><p>neon is deliberately not compliant with section
23.4.2, and treats property names as a (namespace-URI, name)
pair. This is <a href="http://lists.w3.org/Archives/Public/w3c-dist-auth/1999OctDec/0343.html" target="_top">generally
considered</a> to be correct behaviour by the WebDAV
working group, and is likely to formally adopted in a future
revision of the specification.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id3018315"></a>RFC 2616, Hypertext Transfer Protocol&#8212;HTTP/1.1</h3></div></div><div></div></div><p>There is some confusion in this specification about the
use of the &#8220;<span class="quote">identity</span>&#8221;
<i class="firstterm">transfer-coding</i>. neon treats the
presence of <span class="emphasis"><em>any</em></span>
<tt class="literal">Transfer-Encoding</tt> response header as an
indication that the response message uses the
&#8220;<span class="quote">chunked</span>&#8221; transfer-coding. This was the
suggested resolution <a href="http://lists.w3.org/Archives/Public/ietf-http-wg-old/2001SepDec/0018.html" target="_top">proposed
by Larry Masinter</a>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id3018354"></a>RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</h3></div></div><div></div></div><p>neon is not strictly compliant with the quoting rules
given in the grammar for the <tt class="literal">Authorization</tt>
header. The grammar requires that the <tt class="literal">qop</tt>
and <tt class="literal">algorithm</tt> parameters are not quoted,
however one widely deployed server implementation
(Microsoft® IIS 5) rejects the request if these parameters
are not quoted. neon sends these parameters with
quotes&#8212;this is not known to cause any problems with
other server implementations.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">How to use neon from your application </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. The neon C language interface</td></tr></table></div></body></html>

View File

@ -0,0 +1,33 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Feature list</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="previous" href="intro.html" title="Chapter 1. Introduction"><link rel="next" href="using.html" title="How to use neon from your application"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Feature list</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features"></a>Feature list</h2></div></div><div></div></div><p>The major features of the neon library are as follows:</p><div class="itemizedlist"><ul type="disc"><li><p>A high-level interface to common HTTP and WebDAV
methods. This allows you to easily dispatch a GET or a MKCOL request
against a resource with a single function call.</p></li><li><p>A low-level interface for HTTP request
handling; allowing you to implement requests using arbitrary methods
and request headers, capture arbitrary response headers, and so
on.</p></li><li><p>Persistent connection support; neon groups a
set of requests to a server into a "session"; requests within that
session can use a persistent (also known as "keep-alive")
connection.</p></li><li><p>Modern HTTP authentication support: a complete
implementation of the new authentication standard, RFC2617,
supporting the Digest (MD5) and Basic schemes, including integrity
checking. Credentials are supplied by an application-defined
callback.</p></li><li><p>Proxy server support; a session can be set to
use a proxy server. Authentication is supported for the Proxy as well
as the origin server.</p></li><li><p>Complete SSL support; a simple interface for
enabling SSL, hiding the complexity of using an SSL library directly.
Client certificate support, callback-based server certificate
verification, along with functions to load trusted CA
certificates.</p></li><li><p>Generic XML parsing interface for handling XML
response bodies using SAX-like callbacks. Both the expat and libxml
XML parser libraries are supported.</p></li><li><p>WebDAV metadata support; set and remove
properties, query properties (PROPFIND); simple interface for
retrieving "flat" byte-string properties, more advanced support for
parsing "complex" XML structured properties.</p></li><li><p>Build environment support: the neon source
tree is designed so that it can be embedded in your application's
build tree; autoconf macros are supplied for integration. To get
started quickly a <a href="refconfig.html" title="neon-config"><span class="refentrytitle">neon-config</span></a> script is included,
to easily determine how to compile and link against an installed copy
of neon</p></li><li><p>Complete test suite: the neon test suite
comprises half as many lines of source code as the library itself,
including many tests for protocol compliance in network behaviour, and
that the library implementation meets the guarantees made by the
API.</p></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. Introduction </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> How to use neon from your application</td></tr></table></div></body></html>

4
neon/doc/html/gfdl.html Normal file
View File

@ -0,0 +1,4 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix A. GNU Free Documentation License</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="previous" href="biblio.html" title="Bibliography"><link rel="next" href="apas01.html" title="PREAMBLE"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A. GNU Free Documentation License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="biblio.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="apas01.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="gfdl"></a>Appendix A. GNU Free Documentation License</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="apas01.html">0. PREAMBLE</a></span></dt><dt><span class="sect1"><a href="apas02.html">1. APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="sect1"><a href="apas03.html">2. VERBATIM COPYING</a></span></dt><dt><span class="sect1"><a href="apas04.html">3. COPYING IN QUANTITY</a></span></dt><dt><span class="sect1"><a href="apas05.html">4. MODIFICATIONS</a></span></dt><dt><span class="sect1"><a href="apas06.html">5. COMBINING DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="apas07.html">6. COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="apas08.html">7. AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="sect1"><a href="apas09.html">8. TRANSLATION</a></span></dt><dt><span class="sect1"><a href="apas10.html">9. TERMINATION</a></span></dt><dt><span class="sect1"><a href="apas11.html">10. FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="sect1"><a href="apas12.html">How to use this License for your documents</a></span></dt></dl></div><p>Version 1.1, March 2000</p><div class="blockquote"><blockquote class="blockquote"><p>Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.</p></blockquote></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="biblio.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apas01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Bibliography </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> PREAMBLE</td></tr></table></div></body></html>

8
neon/doc/html/index.html Normal file
View File

@ -0,0 +1,8 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>neon HTTP/WebDAV client library</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="next" href="intro.html" title="Chapter 1. Introduction"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon HTTP/WebDAV client library</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2956954"></a>neon HTTP/WebDAV client library</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Joe</span> <span class="surname">Orton</span></h3><div class="affiliation"><div class="address"><p><tt class="email">&lt;<a href="mailto:neon@webdav.org">neon@webdav.org</a>&gt;</tt></p></div></div></div></div><div><p class="copyright">Copyright © 2001-2003 Joe Orton</p></div><div><div class="legalnotice"><p>Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts,
and with no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".</p></div></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="intro.html">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="features.html">Feature list</a></span></dt><dt><span class="sect1"><a href="using.html">How to use neon from your application</a></span></dt><dt><span class="sect1"><a href="compliance.html">Protocol compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#id2957718">RFC 2518, HTTP Extensions for Distributed Authoring&#8212;WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#id3018315">RFC 2616, Hypertext Transfer Protocol&#8212;HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#id3018354">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="api.html">2. The neon C language interface</a></span></dt><dd><dl><dt><span class="sect1"><a href="xml.html">Parsing XML</a></span></dt><dd><dl><dt><span class="sect2"><a href="xml.html#xml-sax">Introduction to SAX</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-stacked">Stacked SAX handlers</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-state">Maintaining state</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-ns">XML namespaces</a></span></dt></dl></dd></dl></dd><dt><span class="reference"><a href="ref.html">I. neon API reference</a></span></dt><dd><dl><dt><a href="refneon.html">neon</a> - HTTP and WebDAV client library</dt><dt><a href="refconfig.html">neon-config</a> - script providing information about installed copy
of neon library</dt><dt><a href="refreqhdr.html">ne_add_request_header</a> - add headers to a request</dt><dt><a href="refresolve.html">ne_addr_resolve</a> - functions to resolve hostnames to addresses</dt><dt><a href="refbuf.html">ne_buffer</a> - string buffer handling</dt><dt><a href="refbufapp.html">ne_buffer_append</a> - append data to a string buffer</dt><dt><a href="refbufutil.html">ne_buffer_clear</a> - general purpose of group of functions</dt><dt><a href="refbufcr.html">ne_buffer_create</a> - general purpose of group of functions</dt><dt><a href="refbufdest.html">ne_buffer_destroy</a> - destroy a buffer object</dt><dt><a href="referr.html">ne_get_error</a> - error handling for HTTP sessions</dt><dt><a href="refgetst.html">ne_get_status</a> - retrieve HTTP response status for request</dt><dt><a href="refiaddr.html">ne_iaddr_make</a> - functions to manipulate and compare network addresses</dt><dt><a href="refalloc.html">ne_malloc</a> - memory allocation wrappers</dt><dt><a href="refreq.html">ne_request_create</a> - low-level HTTP request handling</dt><dt><a href="refsess.html">ne_session_create</a> - set up HTTP sessions</dt><dt><a href="refopts.html">ne_set_useragent</a> - common settings for HTTP sessions</dt><dt><a href="refreqbody.html">ne_set_request_body_buffer</a> - include a message body with a request</dt><dt><a href="refauth.html">ne_set_server_auth</a> - register authentication callbacks</dt><dt><a href="refshave.html">ne_shave</a> - trim whitespace from a string</dt><dt><a href="refsockinit.html">ne_sock_init</a> - perform library initialization</dt><dt><a href="refcert.html">ne_ssl_cert_identity</a> - functions to access certificate properties</dt><dt><a href="refsslcert2.html">ne_ssl_cert_cmp</a> - functions to operate on certificate objects</dt><dt><a href="refsslcertio.html">ne_ssl_cert_read</a> - functions to read or write certificates to and from files or strings</dt><dt><a href="refssldname.html">ne_ssl_dname</a> - SSL distinguished name handling</dt><dt><a href="refsslca.html">ne_ssl_trust_cert</a> - functions to indicate that certificates are trusted</dt><dt><a href="refsslvfy.html">ne_ssl_set_verify</a> - register an SSL certificate verification callback</dt><dt><a href="refclicert.html">ne_ssl_client_cert</a> - SSL client certificate handling</dt><dt><a href="refstatus.html">ne_status</a> - HTTP status structure</dt><dt><a href="reftok.html">ne_token</a> - string tokenizers</dt><dt><a href="refvers.html">ne_version_match</a> - library versioning</dt></dl></dd><dt><span class="bibliography"><a href="biblio.html">Bibliography</a></span></dt><dt><span class="appendix"><a href="gfdl.html">A. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="sect1"><a href="apas01.html">0. PREAMBLE</a></span></dt><dt><span class="sect1"><a href="apas02.html">1. APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="sect1"><a href="apas03.html">2. VERBATIM COPYING</a></span></dt><dt><span class="sect1"><a href="apas04.html">3. COPYING IN QUANTITY</a></span></dt><dt><span class="sect1"><a href="apas05.html">4. MODIFICATIONS</a></span></dt><dt><span class="sect1"><a href="apas06.html">5. COMBINING DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="apas07.html">6. COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="apas08.html">7. AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="sect1"><a href="apas09.html">8. TRANSLATION</a></span></dt><dt><span class="sect1"><a href="apas10.html">9. TERMINATION</a></span></dt><dt><span class="sect1"><a href="apas11.html">10. FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="sect1"><a href="apas12.html">How to use this License for your documents</a></span></dt></dl></dd></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="xml.html#xml-example">An example XML document</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>

7
neon/doc/html/intro.html Normal file
View File

@ -0,0 +1,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 1. Introduction</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="previous" href="index.html" title="neon HTTP/WebDAV client library"><link rel="next" href="features.html" title="Feature list"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="features.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="intro"></a>Chapter 1. Introduction</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="features.html">Feature list</a></span></dt><dt><span class="sect1"><a href="using.html">How to use neon from your application</a></span></dt><dt><span class="sect1"><a href="compliance.html">Protocol compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#id2957718">RFC 2518, HTTP Extensions for Distributed Authoring&#8212;WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#id3018315">RFC 2616, Hypertext Transfer Protocol&#8212;HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#id3018354">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt></dl></dd></dl></div><p>This chapter provides an introduction to neon, giving an
overview of the range of features offered, and some general guidelines
for using the neon API.</p><p>neon aims to provide a modern, flexible, and simple API
in the C programming language for implementing HTTP and WebDAV
support. The WebDAV functionality is entirely separate from the basic
HTTP functionality; neon can be used simply as an HTTP client library,
ignoring the WebDAV support if desired.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="features.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">neon HTTP/WebDAV client library </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Feature list</td></tr></table></div></body></html>

2
neon/doc/html/ref.html Normal file
View File

@ -0,0 +1,2 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>neon API reference</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="previous" href="xml.html" title="Parsing XML"><link rel="next" href="refneon.html" title="neon"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon API reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="xml.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="refneon.html">Next</a></td></tr></table><hr></div><div class="reference" lang="en"><a name="ref"></a><div class="titlepage"><div><div><h1 class="title"><a name="ref"></a>neon API reference</h1></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="refneon.html">neon</a> - HTTP and WebDAV client library</dt><dt><a href="refconfig.html">neon-config</a> - script providing information about installed copy
of neon library</dt><dt><a href="refreqhdr.html">ne_add_request_header</a> - add headers to a request</dt><dt><a href="refresolve.html">ne_addr_resolve</a> - functions to resolve hostnames to addresses</dt><dt><a href="refbuf.html">ne_buffer</a> - string buffer handling</dt><dt><a href="refbufapp.html">ne_buffer_append</a> - append data to a string buffer</dt><dt><a href="refbufutil.html">ne_buffer_clear</a> - general purpose of group of functions</dt><dt><a href="refbufcr.html">ne_buffer_create</a> - general purpose of group of functions</dt><dt><a href="refbufdest.html">ne_buffer_destroy</a> - destroy a buffer object</dt><dt><a href="referr.html">ne_get_error</a> - error handling for HTTP sessions</dt><dt><a href="refgetst.html">ne_get_status</a> - retrieve HTTP response status for request</dt><dt><a href="refiaddr.html">ne_iaddr_make</a> - functions to manipulate and compare network addresses</dt><dt><a href="refalloc.html">ne_malloc</a> - memory allocation wrappers</dt><dt><a href="refreq.html">ne_request_create</a> - low-level HTTP request handling</dt><dt><a href="refsess.html">ne_session_create</a> - set up HTTP sessions</dt><dt><a href="refopts.html">ne_set_useragent</a> - common settings for HTTP sessions</dt><dt><a href="refreqbody.html">ne_set_request_body_buffer</a> - include a message body with a request</dt><dt><a href="refauth.html">ne_set_server_auth</a> - register authentication callbacks</dt><dt><a href="refshave.html">ne_shave</a> - trim whitespace from a string</dt><dt><a href="refsockinit.html">ne_sock_init</a> - perform library initialization</dt><dt><a href="refcert.html">ne_ssl_cert_identity</a> - functions to access certificate properties</dt><dt><a href="refsslcert2.html">ne_ssl_cert_cmp</a> - functions to operate on certificate objects</dt><dt><a href="refsslcertio.html">ne_ssl_cert_read</a> - functions to read or write certificates to and from files or strings</dt><dt><a href="refssldname.html">ne_ssl_dname</a> - SSL distinguished name handling</dt><dt><a href="refsslca.html">ne_ssl_trust_cert</a> - functions to indicate that certificates are trusted</dt><dt><a href="refsslvfy.html">ne_ssl_set_verify</a> - register an SSL certificate verification callback</dt><dt><a href="refclicert.html">ne_ssl_client_cert</a> - SSL client certificate handling</dt><dt><a href="refstatus.html">ne_status</a> - HTTP status structure</dt><dt><a href="reftok.html">ne_token</a> - string tokenizers</dt><dt><a href="refvers.html">ne_version_match</a> - library versioning</dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="xml.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refneon.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Parsing XML </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> neon</td></tr></table></div></body></html>

View File

@ -0,0 +1,12 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_malloc</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refiaddr.html" title="ne_iaddr_make"><link rel="next" href="refreq.html" title="ne_request_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_malloc</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refiaddr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreq.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refalloc"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_malloc, ne_calloc, ne_realloc, ne_strdup, ne_strndup, ne_oom_callback &#8212; memory allocation wrappers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_alloc.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void *<b class="fsfunc">ne_malloc</b>(</code>size_t <var xmlns="" class="pdparam">size</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void *<b class="fsfunc">ne_calloc</b>(</code>size_t <var xmlns="" class="pdparam">size</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void *<b class="fsfunc">ne_realloc</b>(</code>void *<var xmlns="" class="pdparam">size</var>, size_t <var xmlns="" class="pdparam">len</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_strdup</b>(</code>const char *<var xmlns="" class="pdparam">s</var>, size_t <var xmlns="" class="pdparam">size</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_strndup</b>(</code>const char *<var xmlns="" class="pdparam">s</var>, size_t <var xmlns="" class="pdparam">size</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_oom_callback</b>(</code>void (*<var xmlns="" class="pdparam">callback</var>)(void)<code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3026855"></a><h2>Description</h2><p>The functions <tt class="function">ne_malloc</tt>,
<tt class="function">ne_calloc</tt>, <tt class="function">ne_realloc</tt>,
<tt class="function">ne_strdup</tt> and <tt class="function">ne_strdnup</tt>
provide wrappers for the equivalent functions in the standard C
library. The wrappers provide the extra guarantee that if the C
library equivalent returns <tt class="literal">NULL</tt> when no memory is available, an
optional callback will be called, and the library will then call
<tt class="function">abort</tt>().</p><p><tt class="function">ne_oom_callback</tt> registers a callback
which will be invoked if an out of memory error is detected.</p></div><div class="refsect1" lang="en"><a name="id3026920"></a><h2>Notes</h2><p>If the operating system uses optimistic memory
allocation, the C library memory allocation routines will not return
<tt class="literal">NULL</tt>, so it is not possible to gracefully handle memory allocation
failures.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refiaddr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_iaddr_make </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_request_create</td></tr></table></div></body></html>

View File

@ -0,0 +1,38 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_set_server_auth</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refreqbody.html" title="ne_set_request_body_buffer"><link rel="next" href="refshave.html" title="ne_shave"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_server_auth</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreqbody.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refshave.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refauth"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_set_server_auth, ne_set_proxy_auth, ne_forget_auth &#8212; register authentication callbacks</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_auth.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">typedef int (*<b class="fsfunc">ne_request_auth</b>)(</code>void *<var xmlns="" class="pdparam">userdata</var>, const char *<var xmlns="" class="pdparam">realm</var>, int <var xmlns="" class="pdparam">attempt</var>, char *<var xmlns="" class="pdparam">username</var>, char *<var xmlns="" class="pdparam">password</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_set_server_auth</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, ne_request_auth <var xmlns="" class="pdparam">callback</var>, void *<var xmlns="" class="pdparam">userdata</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_set_proxy_auth</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, ne_request_auth <var xmlns="" class="pdparam">callback</var>, void *<var xmlns="" class="pdparam">userdata</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_forget_auth</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3030604"></a><h2>Description</h2><p>The <i class="type">ne_request_auth</i> function type defines a
callback which is invoked when a server or proxy server requires user
authentication for a particular request. The
<tt class="parameter">realm</tt> string is supplied by the server. The <tt class="parameter">attempt</tt> is a counter giving the
number of times the request has been retried with different
authentication credentials. The first time the callback is invoked
for a particular request, <tt class="parameter">attempt</tt> will be zero.</p><p>To retry the request using new authentication
credentials, the callback should return zero, and the
<tt class="parameter">username</tt> and <tt class="parameter">password</tt>
buffers must contain <tt class="literal">NUL</tt>-terminated strings. The
<tt class="literal">NE_ABUFSIZ</tt> constant gives the size of these
buffers.</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>If you only wish to allow the user one attempt to enter
credentials, use the value of the <tt class="parameter">attempt</tt>
parameter as the return value of the callback.</p></div><p>To abort the request, the callback should return a
non-zero value; in which case the contents of the
<tt class="parameter">username</tt> and <tt class="parameter">password</tt>
buffers are ignored.</p><p>The <tt class="function">ne_forget_auth</tt> function can be
used to discard the cached authentication credentials.</p></div><div class="refsect1" lang="en"><a name="id3030718"></a><h2>Examples</h2><pre class="programlisting">
/* Function which prompts for a line of user input: */
extern char *prompt_for(const char *prompt);
static int
my_auth(void *userdata, const char *realm, int attempts,
char *username, char *password)
{
strncpy(username, prompt_for("Username: "), NE_ABUFSIZ);
strncpy(password, prompt_for("Password: "), NE_ABUFSIZ);
return attempts;
}
int main(...)
{
ne_session *sess = ne_session_create(...);
ne_set_server_auth(sess, my_auth, NULL);
/* ... */
}</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreqbody.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refshave.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_request_body_buffer </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_shave</td></tr></table></div></body></html>

20
neon/doc/html/refbuf.html Normal file
View File

@ -0,0 +1,20 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_buffer</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refresolve.html" title="ne_addr_resolve"><link rel="next" href="refbufapp.html" title="ne_buffer_append"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refresolve.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufapp.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refbuf"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer &#8212; string buffer handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_string.h&gt;
typedef struct {
char *data;
size_t used;
size_t length;
} <i class="type">ne_buffer</i>;</pre></div></div><div class="refsect1" lang="en"><a name="id3023049"></a><h2>Description</h2><p>The <i class="type">ne_buffer</i> type represents an expandable
memory buffer for holding <tt class="literal">NUL</tt>-terminated strings. The
<i class="structfield"><tt>data</tt></i> field points to the beginnning of the
string, the length of which is given by the
<i class="structfield"><tt>used</tt></i> field. The current size of memory
allocated is given by the <i class="structfield"><tt>length</tt></i> field. It
is not recommended that the fields of a buffer are manipulated
directly. The <i class="structfield"><tt>data</tt></i> pointer may change when
the buffer is modified.</p><p>A buffer is created using <a href="refbufcr.html#ne_buffer_create">ne_buffer_create</a> or <a href="refbufcr.html#ne_buffer_create_sized">ne_buffer_ncreate</a>, and destroyed using <a href="refbufdest.html#ne_buffer_destroy">ne_buffer_destroy</a> or <a href="refbufdest.html#ne_buffer_finish">ne_buffer_finish</a>.
The functions <a href="refbufapp.html#ne_buffer_append">ne_buffer_append</a>, <a href="refbufapp.html#ne_buffer_zappend">ne_buffer_zappend</a> and <a href="refbufapp.html#ne_buffer_concat">ne_buffer_concat</a> are
used to append data to a buffer.</p><p>If the string referenced by the
<i class="structfield"><tt>data</tt></i> pointer is modified directly (rather
than using one of the functions listed above),
<tt class="function">ne_buffer_altered</tt> must be called.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refresolve.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbufapp.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_addr_resolve </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer_append</td></tr></table></div></body></html>

View File

@ -0,0 +1,22 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_buffer_append</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refbuf.html" title="ne_buffer"><link rel="next" href="refbufutil.html" title="ne_buffer_clear"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_append</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbuf.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufutil.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refbufapp"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_append, ne_buffer_zappend, ne_buffer_concat &#8212; append data to a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_string.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_buffer_append</b>(</code>ne_buffer *<var xmlns="" class="pdparam">buf</var>, const char *<var xmlns="" class="pdparam">string</var>, size_t <var xmlns="" class="pdparam">len</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_buffer_zappend</b>(</code>ne_buffer *<var xmlns="" class="pdparam">buf</var>, const char *<var xmlns="" class="pdparam">string</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_buffer_concat</b>(</code>ne_buffer *<var xmlns="" class="pdparam">buf</var>, const char *<var xmlns="" class="pdparam">str</var>, ...<code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3023469"></a><h2>Description</h2><p>The <tt class="function">ne_buffer_append</tt> and
<tt class="function">ne_buffer_zappend</tt> functions append a string to
the end of a buffer; extending the buffer as necessary. The
<tt class="parameter">len</tt> passed to
<tt class="function">ne_buffer_append</tt> specifies the length of the
string to append; there must be no <tt class="literal">NUL</tt> terminator in the first
<tt class="parameter">len</tt> bytes of the string.
<tt class="function">ne_buffer_zappend</tt> must be passed a
<tt class="literal">NUL</tt>-terminated string.</p><p>The <tt class="function">ne_buffer_concat</tt> function takes
a variable-length argument list following <tt class="parameter">str</tt>;
each argument must be a <i class="type">char *</i> pointer to a
<tt class="literal">NUL</tt>-terminated string. A <tt class="literal">NULL</tt> pointer must be given as the last
argument to mark the end of the list. The strings (including
<tt class="parameter">str</tt>) are appended to the buffer in the order
given. None of the strings passed to
<tt class="function">ne_buffer_concat</tt> are modified.</p></div><div class="refsect1" lang="en"><a name="id3023579"></a><h2>Examples</h2><p>The following code will output "<tt class="literal">Hello, world.
And goodbye.</tt>".</p><pre class="programlisting">ne_buffer *buf = ne_buffer_create();
ne_buffer_zappend(buf, "Hello");
ne_buffer_concat(buf, ", world. ", "And ", "goodbye.", NULL);
puts(buf-&gt;data);
ne_buffer_destroy(buf);</pre></div><div class="refsect1" lang="en"><a name="id3023604"></a><h2>See also</h2><p><a href="refbuf.html#ne_buffer">ne_buffer</a>, <a href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>,
<a href="refbufdest.html#ne_buffer_destroy">ne_buffer_destroy</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbuf.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbufutil.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer_clear</td></tr></table></div></body></html>

View File

@ -0,0 +1,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_buffer_create</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refbufutil.html" title="ne_buffer_clear"><link rel="next" href="refbufdest.html" title="ne_buffer_destroy"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufutil.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufdest.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refbufcr"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_create, ne_buffer_ncreate &#8212; general purpose of group of functions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_alloc.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_create</b>(</code><code xmlns="">void)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_ncreate</b>(</code>size_t <var xmlns="" class="pdparam">size</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3024503"></a><h2>Description</h2><p><tt class="function">ne_buffer_create</tt> creates a new
buffer object, with an implementation-defined initial size.
<tt class="function">ne_buffer_ncreate</tt> creates an
<i class="type">ne_buffer</i> where the minimum initial size is given in the
<tt class="parameter">size</tt> parameter. The buffer created will
contain the empty string (<tt class="literal">""</tt>).</p></div><div class="refsect1" lang="en"><a name="id3024542"></a><h2>Return value</h2><p>Both functions return a pointer to a new buffer object,
and never <tt class="literal">NULL</tt>.</p></div><div class="refsect1" lang="en"><a name="id3024559"></a><h2>See also</h2><p><a href="refbuf.html#ne_buffer">ne_buffer</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbufutil.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbufdest.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer_clear </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer_destroy</td></tr></table></div></body></html>

View File

@ -0,0 +1,17 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_buffer_destroy</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refbufcr.html" title="ne_buffer_create"><link rel="next" href="referr.html" title="ne_get_error"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_destroy</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufcr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="referr.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refbufdest"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_destroy, ne_buffer_finish &#8212; destroy a buffer object</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_string.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_buffer_destroy</b>(</code>ne_buffer *<var xmlns="" class="pdparam">buf</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_buffer_finish</b>(</code>ne_buffer *<var xmlns="" class="pdparam">buf</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3024841"></a><h2>Description</h2><p><tt class="function">ne_buffer_destroy</tt> frees all memory
associated with the buffer. <tt class="function">ne_buffer_finish</tt>
frees the buffer structure, but not the actual string stored in the
buffer, which is returned and must be <tt class="function">free</tt>()d by
the caller.</p><p>Any use of the buffer object after calling either of these
functions gives undefined behaviour.</p></div><div class="refsect1" lang="en"><a name="id3024874"></a><h2>Return value</h2><p><tt class="function">ne_buffer_finish</tt> returns the
<tt class="function">malloc</tt>-allocated string stored in the buffer.</p></div><div class="refsect1" lang="en"><a name="id3024896"></a><h2>Examples</h2><p>An example use of <tt class="function">ne_buffer_finish</tt>;
the <tt class="function">duplicate</tt> function returns a string made up of
<tt class="parameter">n</tt> copies of <tt class="parameter">str</tt>:</p><pre class="programlisting">static char *duplicate(int n, const char *str)
{
ne_buffer *buf = ne_buffer_create();
while (n--) {
ne_buffer_zappend(buf, str);
}
return ne_buffer_finish(buf);
}</pre></div><div class="refsect1" lang="en"><a name="id3024939"></a><h2>See also</h2><p><a href="refbuf.html#ne_buffer">ne_buffer</a>, <a href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>,
<a href="refbufapp.html#ne_buffer_zappend">ne_buffer_zappend</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbufcr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="referr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_get_error</td></tr></table></div></body></html>

View File

@ -0,0 +1,11 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_buffer_clear</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refbufapp.html" title="ne_buffer_append"><link rel="next" href="refbufcr.html" title="ne_buffer_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_clear</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufapp.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufcr.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refbufutil"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_clear, ne_buffer_grow, ne_buffer_altered &#8212; general purpose of group of functions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_string.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_buffer_clear</b>(</code>ne_buffer *<var xmlns="" class="pdparam">buf</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_buffer_altered</b>(</code>ne_buffer *<var xmlns="" class="pdparam">buf</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_buffer_grow</b>(</code>ne_buffer *<var xmlns="" class="pdparam">buf</var>, size_t <var xmlns="" class="pdparam">size</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3024105"></a><h2>Description</h2><p>The <tt class="function">ne_buffer_clear</tt> function sets
the string stored in <tt class="parameter">buf</tt> to be the empty string
(<tt class="literal">""</tt>).</p><p>The <tt class="function">ne_buffer_altered</tt> function must
be used after the string stored in the buffer
<tt class="parameter">buf</tt> is modified by directly rather than using
<a href="refbufapp.html#ne_buffer_append">ne_buffer_append</a>, <a href="refbufapp.html#ne_buffer_zappend">ne_buffer_zappend</a>
or <a href="refbufapp.html#ne_buffer_concat">ne_buffer_concat</a>.</p><p>The <tt class="function">ne_buffer_grow</tt> function
ensures that at least <tt class="parameter">size</tt> bytes are allocated
for the string; this can be used if a large amount of data is going to
be appended to the buffer and may result in more efficient memory
allocation.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbufapp.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbufcr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer_append </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer_create</td></tr></table></div></body></html>

View File

@ -0,0 +1,33 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_ssl_cert_identity</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refsockinit.html" title="ne_sock_init"><link rel="next" href="refsslcert2.html" title="ne_ssl_cert_cmp"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_identity</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsockinit.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslcert2.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refcert"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_identity, ne_ssl_cert_signedby, ne_ssl_cert_issuer, ne_ssl_cert_subject &#8212; functions to access certificate properties</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_ssl.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const char *<b class="fsfunc">ne_ssl_cert_identity</b>(</code>const ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_signedby</b>(</code>const ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_subject</b>(</code>const ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_issuer</b>(</code>const ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3031787"></a><h2>Description</h2><p>The function <tt class="function">ne_ssl_cert_identity</tt>
retrieves the &#8220;<span class="quote">identity</span>&#8221; of a certificate; for an
SSL server certificate, this will be the hostname for which the
certificate was issued. In PKI parlance, the identity is the
<span class="emphasis"><em>common name</em></span> attribute of the distinguished name of
the certificate subject.</p><p>The functions <tt class="function">ne_ssl_cert_subject</tt> and
<tt class="function">ne_ssl_cert_issuer</tt> can be used to access the
objects representing the distinguished name of the subject and of
the issuer of a certificate, respectively.</p><p>If a certificate object is part of a certificate chain, then
<tt class="function">ne_ssl_cert_signedby</tt> can be used to find the
certificate which signed a particular certificate. For a
self-signed certificate or a certificate for which the full chain
is not available, this function will return <tt class="literal">NULL</tt>.</p></div><div class="refsect1" lang="en"><a name="id3031853"></a><h2>Return value</h2><p><tt class="function">ne_ssl_cert_issuer</tt> and
<tt class="function">ne_ssl_cert_subject</tt> are guaranteed to never
return <tt class="literal">NULL</tt>. <tt class="function">ne_ssl_cert_identity</tt> may
return <tt class="literal">NULL</tt> if the certificate has no specific
&#8220;<span class="quote">identity</span>&#8221;. <tt class="function">ne_ssl_cert_signedby</tt>
may return <tt class="literal">NULL</tt> as covered above.</p></div><div class="refsect1" lang="en"><a name="id3031911"></a><h2>Examples</h2><p>The following function could be used to display information
about a given certificate:</p><pre class="programlisting">void dump_cert(const ne_ssl_certificate *cert) {
const char *id = ne_ssl_cert_identity(cert);
char *dn;
if (id)
printf("Certificate was issued for '%s'.\n", id);
dn = ne_ssl_readable_dname(ne_ssl_cert_subject(cert));
printf("Subject: %s\n", dn);
free(dn);
dn = ne_ssl_readable_dname(ne_ssl_cert_issuer(cert));
printf("Issuer: %s\n", dn);
free(dn);
}</pre></div><div class="refsect1" lang="en"><a name="id3031935"></a><h2>See also</h2><p><a href="refsslcert2.html#ne_ssl_cert_cmp">ne_ssl_cert_cmp</a>, <a href="refssldname.html#ne_ssl_readable_dname">ne_ssl_readable_dname</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsockinit.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslcert2.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_sock_init </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_cert_cmp</td></tr></table></div></body></html>

View File

@ -0,0 +1,55 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_ssl_client_cert</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refsslvfy.html" title="ne_ssl_set_verify"><link rel="next" href="refstatus.html" title="ne_status"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_client_cert</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslvfy.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refstatus.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refclicert"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_clicert_read, ne_ssl_clicert_name, ne_ssl_clicert_encrypted, ne_ssl_clicert_decrypt, ne_ssl_clicert_owner, ne_ssl_clicert_free &#8212; SSL client certificate handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_ssl.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_ssl_client_cert *<b class="fsfunc">ne_ssl_clicert_read</b>(</code>const char *<var xmlns="" class="pdparam">filename</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const char *<b class="fsfunc">ne_ssl_clicert_name</b>(</code>const ne_ssl_client_cert *<var xmlns="" class="pdparam">ccert</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_ssl_clicert_encrypted</b>(</code>const ne_ssl_client_cert *<var xmlns="" class="pdparam">ccert</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_ssl_clicert_decrypt</b>(</code>ne_ssl_client_cert *<var xmlns="" class="pdparam">ccert</var>, const char *<var xmlns="" class="pdparam">password</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_clicert_owner</b>(</code>const ne_ssl_client_cert *<var xmlns="" class="pdparam">ccert</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_ssl_clicert_free</b>(</code>ne_ssl_client_cert *<var xmlns="" class="pdparam">ccert</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3035077"></a><h2>Description</h2><p>The <tt class="function">ne_ssl_clicert_read</tt> function reads
a <i class="firstterm">client certificate</i> from a
PKCS#12-formatted file, and returns an
<i class="type">ne_ssl_client_certificate</i> object. If the client
certificate is encrypted, it must be decrypted before it is used.
An <i class="type">ne_ssl_client_certificate</i> object holds a client
certificate and the associated private key, not just a
certificate; the term "<i class="glossterm">client certificate</i>"
will used to refer to this pair.</p><p>A client certificate can be in one of two states:
<span class="emphasis"><em>encrypted</em></span> or <span class="emphasis"><em>decrypted</em></span>.
The <tt class="function">ne_ssl_clicert_encrypted</tt> function will
return non-zero if the client certificate is in the
<span class="emphasis"><em>encrypted</em></span> state. A client certificate object
returned by <tt class="function">ne_ssl_clicert_read</tt> may be
initially in either state, depending on whether the file was
encrypted or not.</p><p><tt class="function">ne_ssl_clicert_decrypt</tt> can be used to
decrypt a client certificate using the appropriate password. This
function must only be called if the object is in the
<span class="emphasis"><em>encrypted</em></span> state; if decryption fails, the
certificate state does not change, so decryption can be attempted
more than once using different passwords.</p><p>A client certificate can be given a "friendly name" when it
is created; <tt class="function">ne_ssl_clicert_name</tt> will return
this name (or <tt class="literal">NULL</tt> if no friendly name was specified).
<tt class="function">ne_ssl_clicert_name</tt> can be used when the
client certificate is in either the encrypted or decrypted state,
and will return the same string for the lifetime of the
object.</p><p>The function <tt class="function">ne_ssl_clicert_owner</tt>
returns the certificate part of the client certificate; it must
only be called if the client certificate is in the
<span class="emphasis"><em>decrypted</em></span> state.</p><p>When the client certificate is no longer needed, the
<tt class="function">ne_ssl_clicert_free</tt> function should be used
to destroy the object.</p></div><div class="refsect1" lang="en"><a name="id3035215"></a><h2>Return value</h2><p><tt class="function">ne_ssl_clicert_read</tt> returns a client
certificate object, or <tt class="literal">NULL</tt> if the file could not be read.
<tt class="function">ne_ssl_clicert_encrypted</tt> returns zero if the
object is in the decrypted state, or non-zero if it is in the
encrypted state. <tt class="function">ne_ssl_clicert_name</tt> returns
a <tt class="literal">NUL</tt>-terminated friendly name string, or <tt class="literal">NULL</tt>.
<tt class="function">ne_ssl_clicert_owner</tt> returns a certificate
object.</p></div><div class="refsect1" lang="en"><a name="id3035273"></a><h2>Examples</h2><p>The following code reads a client certificate and decrypts
it if necessary, then loads it into an HTTP session.</p><pre class="programlisting">ne_ssl_client_certificate *ccert;
ccert = ne_ssl_clicert_read("/path/to/client.p12");
if (ccert == NULL) {
/* handle error... */
} else if (ne_ssl_clicert_encrypted(ccert)) {
char *password = prompt_for_password();
if (ne_ssl_clicert_decrypt(ccert, password)) {
/* could not decrypt! handle error... */
}
}
ne_ssl_set_clicert(sess, ccert);
</pre></div><div class="refsect1" lang="en"><a name="id3035296"></a><h2>See also</h2><p><a href="refsslcertio.html#ne_ssl_cert_read">ne_ssl_cert_read</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslvfy.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refstatus.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_set_verify </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_status</td></tr></table></div></body></html>

View File

@ -0,0 +1,32 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>neon-config</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refneon.html" title="neon"><link rel="next" href="refreqhdr.html" title="ne_add_request_header"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon-config</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refneon.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqhdr.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refconfig"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>neon-config &#8212; script providing information about installed copy
of neon library</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><tt class="command">neon-config</tt> [<tt class="option">--prefix</tt>] [[<tt class="option">--cflags</tt>] | [<tt class="option">--libs</tt>] | [<tt class="option">--la-file</tt>] | [<tt class="option">--support</tt> <i class="replaceable"><tt>feature</tt></i>] | [<tt class="option">--help</tt>] | [<tt class="option">--version</tt>]]</p></div></div><div class="refsect1" lang="en"><a name="id3020952"></a><h2>Description</h2><p>The <span><b class="command">neon-config</b></span> script provides
information about an installed copy of the neon library. The
<tt class="option">--cflags</tt> and <tt class="option">--libs</tt> options instruct
how to compile and link an application against the library; the
<tt class="option">--version</tt> and <tt class="option">--support</tt> options can
help determine whether the library meets the applications
requirements.</p></div><div class="refsect1" lang="en"><a name="id3020986"></a><h2>Options</h2><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><tt class="option">--cflags</tt></span></td><td>Print the flags which should be passed to
the C compiler when compiling object files, when the object files use
neon header files.</td></tr><tr><td><span class="term"><tt class="option">--libs</tt></span></td><td>Print the flags which should be passed to
the linker when linking an application which uses the neon
library</td></tr><tr><td><span class="term"><tt class="option">--la-file</tt></span></td><td>Print the location of the libtool library
script, <tt class="filename">libneon.la</tt>, which can be used to link against
neon by applications using libtool.</td></tr><tr><td><span class="term"><tt class="option">--version</tt></span></td><td>Print the version of the library</td></tr><tr><td><span class="term"><tt class="option">--prefix</tt> <i class="replaceable"><tt>dir</tt></i></span></td><td>If <i class="replaceable"><tt>dir</tt></i> is given; relocate output of
<tt class="option">--cflags</tt> and <tt class="option">--libs</tt> as if neon was
installed in given prefix directory. Otherwise, print the
installation prefix of the library.</td></tr><tr><td><span class="term"><tt class="option">--support</tt> <i class="replaceable"><tt>feature</tt></i></span></td><td>The script exits with success if
<i class="replaceable"><tt>feature</tt></i> is supported by the
library.</td></tr><tr><td><span class="term"><tt class="option">--help</tt></span></td><td>Print help message; includes list of known
features and whether they are supported or not.</td></tr></tbody></table></div></div><div class="refsect1" lang="en"><a name="example"></a><h2>Example</h2><p>Below is a Makefile fragment which could be used to
build an application against an installed neon library, when the
<span><b class="command">neon-config</b></span> script can be found in
<tt class="envar">$PATH</tt>.</p><pre class="programlisting">CFLAGS = `neon-config --cflags`
LIBS = `neon-config --libs`
OBJECTS = myapp.o
TARGET = myapp
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)
myapp.o: myapp.c
$(CC) $(CFLAGS) -c myapp.c -o myapp.o</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refneon.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreqhdr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">neon </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_add_request_header</td></tr></table></div></body></html>

11
neon/doc/html/referr.html Normal file
View File

@ -0,0 +1,11 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_get_error</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refbufdest.html" title="ne_buffer_destroy"><link rel="next" href="refgetst.html" title="ne_get_status"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_get_error</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufdest.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refgetst.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="referr"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_get_error, ne_set_error &#8212; error handling for HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_session.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const char *<b class="fsfunc">ne_get_error</b>(</code>ne_sesssion *<var xmlns="" class="pdparam">session</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_set_error</b>(</code>ne_sesssion *<var xmlns="" class="pdparam">session</var>, const char *<var xmlns="" class="pdparam">format</var>, ...<code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3025309"></a><h2>Description</h2><p>The session error string is used to store any
human-readable error information associated with any errors which
occur whilst using the HTTP session.</p><p>The <tt class="function">ne_get_error</tt> function returns the current
session error string. This string persists only until it is changed by a
subsequent operation on the session.</p><p>The <tt class="function">ne_set_error</tt> function can be
used to set a new session error string, using a
<tt class="function">printf</tt>-style format string interface.</p></div><div class="refsect1" lang="en"><a name="id3025350"></a><h2>Examples</h2><p>Retrieve the current error string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
...
printf("Error was: %s\n", ne_get_error(sess));</pre><p>Set a new error string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
...
ne_set_error(sess, "Response missing header %s", "somestring");</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbufdest.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refgetst.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer_destroy </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_get_status</td></tr></table></div></body></html>

View File

@ -0,0 +1,13 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_get_status</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="referr.html" title="ne_get_error"><link rel="next" href="refiaddr.html" title="ne_iaddr_make"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_get_status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="referr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refiaddr.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refgetst"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_get_status &#8212; retrieve HTTP response status for request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_request.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const ne_status *<b class="fsfunc">ne_get_status</b>(</code>const ne_request *<var xmlns="" class="pdparam">request</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3023988"></a><h2>Description</h2><p>The <tt class="function">ne_get_status</tt> function returns
a pointer to the HTTP status object giving the result of a request.
The object returned only becomes valid once the request has been
<span class="emphasis"><em>successfully</em></span> dispatched (the return value of
<tt class="function">ne_request_dispatch</tt> or
<tt class="function">ne_begin_request</tt> was zero). The object remains
valid until the associated request object is destroyed.</p></div><div class="refsect1" lang="en"><a name="id3024024"></a><h2>See also</h2><p><a href="refstatus.html#ne_status">ne_status</a>, <a href="refreq.html#ne_request_create">ne_request_create</a></p></div><div class="refsect1" lang="en"><a name="id3025702"></a><h2>Example</h2><p>Display the response status code of applying the
<tt class="literal">HEAD</tt> method to some resource.</p><pre class="programlisting">ne_request *req = ne_request_create(sess, "HEAD", "/foo/bar");
if (ne_request_dispatch(req))
/* handle errors... */
else
printf("Response status code was %d\n", ne_get_status(req)-&gt;code);
ne_request_destroy(req);</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="referr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refiaddr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_get_error </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_iaddr_make</td></tr></table></div></body></html>

View File

@ -0,0 +1,36 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_iaddr_make</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refgetst.html" title="ne_get_status"><link rel="next" href="refalloc.html" title="ne_malloc"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_iaddr_make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refgetst.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refalloc.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refiaddr"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_print, ne_iaddr_free &#8212; functions to manipulate and compare network addresses</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_socket.h&gt;
typedef enum {
ne_iaddr_ipv4 = 0,
ne_iaddr_ipv6
} <i class="type">ne_iaddr_type</i>;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_make</b>(</code>ne_iaddr_type <var xmlns="" class="pdparam">type</var>, const unsigned char *<var xmlns="" class="pdparam">raw</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_iaddr_cmp</b>(</code>const ne_inet_addr *<var xmlns="" class="pdparam">i1</var>, const ne_inet_addr *<var xmlns="" class="pdparam">i2</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_iaddr_print</b>(</code>const ne_inet_addr *<var xmlns="" class="pdparam">ia</var>, char *<var xmlns="" class="pdparam">buffer</var>, size_t <var xmlns="" class="pdparam">bufsiz</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_iaddr_free</b>(</code>const ne_inet_addr *<var xmlns="" class="pdparam">addr</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3026080"></a><h2>Description</h2><p><tt class="function">ne_iaddr_make</tt> creates an
<i class="type">ne_inet_addr</i> object from a raw binary network
address; for instance the four bytes <tt class="literal">0x7f 0x00 0x00
0x01</tt> represent the IPv4 address
<tt class="literal">127.0.0.1</tt>. The object returned is suitable for
passing to <tt class="function">ne_sock_connect</tt>. A binary IPv4
address contains four bytes; a binary IPv6 address contains
sixteen bytes; addresses passed must be in network byte
order.</p><p><tt class="function">ne_iaddr_cmp</tt> can be used to compare two
network addresses; returning zero only if they are identical. The
addresses need not be of the same address type; if the addresses
are not of the same type, the return value is guaranteed to be
non-zero.</p><p><tt class="function">ne_iaddr_print</tt> can be used to print the
human-readable string representation of a network address into a
buffer, for instance the string
<tt class="literal">"127.0.0.1"</tt>.</p><p><tt class="function">ne_iaddr_free</tt> releases the memory
associated with a network address object.</p></div><div class="refsect1" lang="en"><a name="id3026159"></a><h2>Return value</h2><p><tt class="function">ne_iaddr_make</tt> returns <tt class="literal">NULL</tt> if the
address type passed is not supported (for instance on a platform
which does not support IPv6).</p><p><tt class="function">ne_iaddr_print</tt> returns the
<tt class="parameter">buffer</tt> pointer, and never <tt class="literal">NULL</tt>.</p></div><div class="refsect1" lang="en"><a name="id3026204"></a><h2>Examples</h2><p>The following example connects a socket to port 80 at the
address <tt class="literal">127.0.0.1</tt>.</p><pre class="programlisting">unsigned char addr[] = "\0x7f\0x00\0x00\0x01";
ne_inet_addr *ia;
ia = ne_iaddr_make(ne_iaddr_ipv4, addr);
if (ia != NULL) {
ne_socket *sock = ne_sock_connect(ia, 80);
ne_iaddr_free(ia);
/* ... */
} else {
/* ... */
}</pre></div><div class="refsect1" lang="en"><a name="id3026230"></a><h2>See also</h2><p><a href="refresolve.html#ne_addr_resolve">ne_addr_resolve</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refgetst.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refalloc.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_get_status </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_malloc</td></tr></table></div></body></html>

View File

@ -0,0 +1,68 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>neon</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="ref.html" title="neon API reference"><link rel="next" href="refconfig.html" title="neon-config"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ref.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refconfig.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refneon"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>neon &#8212; HTTP and WebDAV client library</p></div><div class="refsect1" lang="en"><a name="id3019464"></a><h2>Description</h2><p>neon is an HTTP and WebDAV client library. The major
abstractions exposed are the HTTP <span class="emphasis"><em>session</em></span>,
created by <a href="refsess.html#ne_session_create">ne_session_create</a>; and the HTTP
<span class="emphasis"><em>request</em></span>, created by <a href="refreq.html#ne_request_create">ne_request_create</a>. HTTP authentication is handled
transparently for server and proxy servers, see <a href="refauth.html#ne_set_server_auth">ne_set_server_auth</a>; complete SSL/TLS support is also
included, see <a href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>.</p></div><div class="refsect1" lang="en"><a name="id3019953"></a><h2>Conventions</h2><p>Some conventions are used throughout the neon API, to
provide a consistent and simple interface; these are documented
below.</p><div class="refsect2" lang="en"><a name="id3019964"></a><h3>Thread-safeness and global initialization</h3><p>neon itself is implemented to be thread-safe (avoiding any
use of global state), but relies on the operating system providing
a thread-safe resolver interface. Modern operating systems offer
the thread-safe <tt class="function">getaddrinfo</tt> interface, which
neon supports; some others implement
<tt class="function">gethostbyname</tt> using thread-local
storage.</p><p>To allow thread-safe use of the OpenSSL library, the
application must register some locking callbacks in accordance
with the <a href="http://www.openssl.org/docs/crypto/threads.html" target="_top">OpenSSL
documentation</a>.</p><p>Some platforms and libraries used by neon require global
initialization before use; notably:
</p><div class="itemizedlist"><ul type="disc"><li>OpenSSL requires global initialization to
load shared lookup tables.</li><li>The SOCKS library requires initialization
before use.</li><li>The Win32 socket library requires
initialization before use.</li></ul></div><p>
The <a href="refsockinit.html#ne_sock_init">ne_sock_init</a> function should be called
before any other use of neon to perform any necessary
initialization needed for the particular platform.</p></div><div class="refsect2" lang="en"><a name="id3020179"></a><h3>Namespaces</h3><p>To avoid possible collisions between names used for symbols
and preprocessor macros by an application and the libraries it
uses, it is good practice for each library to reserve a particular
<span class="emphasis"><em>namespace prefix</em></span>. An application which
ensures it uses no names with these prefixes is then guaranteed to
avoid such collisions.</p><p>The neon library reserves the use of the namespace
prefixes <tt class="literal">ne_</tt> and <tt class="literal">NE_</tt>. The
libraries used by neon may also reserve certain namespaces;
collisions between these libraries and a neon-based application
will not be detected at compile time, since the underlying library
interfaces are not exposed through the neon header files. Such
collisions can only be detected at link time, when the linker
attempts to resolve symbols. The following list documents some of
the namespaces claimed by libraries used by neon; this list may
be incomplete.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term">SSL, ssl, TLS, tls, ERR_, BIO_, d2i_, i2d_, ASN1_</span></td><td>Some of the many prefixes used by the OpenSSL
library; little attempt has been made to keep exported symbols
within any particular prefixes for this
library.</td></tr><tr><td><span class="term">XML_, Xml[A-Z]</span></td><td>Namespaces
used by the expat library.</td></tr><tr><td><span class="term">xml[A-Z], html[A-Z], docb[A-Z]</span></td><td>Namespaces used by the libxml2 library; a
relatively small number of symbols are used without these
prefixes.</td></tr></tbody></table></div></div><div class="refsect2" lang="en"><a name="id3020264"></a><h3>Argument validation</h3><p>neon does not attempt to validate that the parameters
passed to functions conform to the API (for instance, checking
that pointer arguments are not <tt class="literal">NULL</tt>). Any use of the neon API
which is not documented to produce a certain behaviour results is
said to produce <span class="emphasis"><em>undefined behaviour</em></span>; it is
likely that neon will segfault under these conditions.</p></div><div class="refsect2" lang="en"><a name="id3020280"></a><h3>URI paths, WebDAV metadata</h3><p>The path strings passed to any function must be
<span class="emphasis"><em>URI-encoded</em></span> by the application; neon never
performs any URI encoding or decoding internally. WebDAV property
names and values must be valid UTF-8 encoded Unicode
strings.</p></div><div class="refsect2" lang="en"><a name="id3020308"></a><h3>User interaction</h3><p>As a pure library interface, neon will never produce
output on <tt class="constant">stdout</tt> or
<tt class="constant">stderr</tt>; all user interaction is the
responsibilty of the application.</p></div><div class="refsect2" lang="en"><a name="id3020332"></a><h3>Memory handling</h3><p>neon does not attempt to cope gracefully with an
out-of-memory situation; instead, by default, the
<tt class="function">abort</tt> function is called to immediately
terminate the process. An application may register a custom
function which will be called before <tt class="function">abort</tt> in
such a situation; see <a href="refalloc.html#ne_oom_callback">ne_oom_callback</a>.</p></div><div class="refsect2" lang="en"><a name="id3020364"></a><h3>Callbacks and userdata</h3><p>Whenever a callback is registered, a
<tt class="literal">userdata</tt> pointer is also used to allow the
application to associate a context with the callback. The
userdata is of type <i class="type">void *</i>, allowing any pointer to
be used.</p></div></div><div class="refsect1" lang="en"><a name="id3020386"></a><h2>See also</h2><p><a href="refsess.html" title="ne_session_create"><span class="refentrytitle">ne_session_create</span></a>, <a href="refalloc.html#ne_oom_callback">ne_oom_callback</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ref.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refconfig.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">neon API reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> neon-config</td></tr></table></div></body></html>

View File

@ -0,0 +1,35 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_set_useragent</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refsess.html" title="ne_session_create"><link rel="next" href="refreqbody.html" title="ne_set_request_body_buffer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_useragent</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsess.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqbody.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refopts"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_set_useragent, ne_set_persist, ne_set_read_timeout, ne_set_expect100 &#8212; common settings for HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_session.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_set_useragent</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, const char *<var xmlns="" class="pdparam">product</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_set_persist</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, int <var xmlns="" class="pdparam">flag</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_set_read_timeout</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, int <var xmlns="" class="pdparam">timeout</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_set_expect100</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, int <var xmlns="" class="pdparam">flag</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3029476"></a><h2>Description</h2><p>The <tt class="literal">User-Agent</tt> request header is used
to identify the software which generated the request for statistical
or debugging purposes. neon does not send a
<tt class="literal">User-Agent</tt> header unless a call is made to the
<tt class="function">ne_set_useragent</tt>.
<tt class="function">ne_set_useragent</tt> must be passed a product string
conforming to RFC2616's product token grammar; of the form
<tt class="literal">"Product/Version"</tt>.</p><p>By default neon will use a persistent connection
whenever possible. For specific applications, or for debugging
purposes, it is sometimes useful to disable persistent connections.
The <tt class="function">ne_set_persist</tt> function will disable
persistent connections if passed a <tt class="parameter">flag</tt>
parameter of <tt class="literal">0</tt>, and will enable them
otherwise.</p><p>When neon reads from a socket, by default the read
operation will time out after 60 seconds, and the request will fail
giving an <span class="errorcode">NE_TIMEOUT</span> error. To configure this
timeout interval, call <tt class="function">ne_set_read_timeout</tt> giving
the desired number of seconds as the <tt class="parameter">timeout</tt>
parameter.</p><p>An extension introduced in the HTTP/1.1 specification
was the use of the <tt class="literal">Expect: 100-continue</tt> header.
This header allows an HTTP client to be informed of the expected
response status before the request message body is sent: a useful
optimisation for situations where a large message body is to be sent.
The <tt class="function">ne_set_expect100</tt> function can be used to
enable this feature by passing the <tt class="parameter">flag</tt>
parameter as any non-zero integer.</p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>Unfortunately, if this header is sent to a server which
is not fully compliant with the HTTP/1.1 specification, a deadlock
occurs resulting in a temporarily "hung" connection. neon will
recover gracefully from this situation, but only after a 15 second
timeout. It is highly recommended that this option is not enabled
unless it is known that the server in use correctly implements
<tt class="literal">Expect: 100-continue</tt> support.</p></div></div><div class="refsect1" lang="en"><a name="id3029626"></a><h2>Examples</h2><p>Set a user-agent string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
ne_set_useragent(sess, "MyApplication/2.1");</pre><p>Disable use of persistent connections:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
ne_set_persist(sess, 0);</pre><p>Set a 30 second read timeout:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
ne_set_read_timeout(sess, 30);</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsess.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreqbody.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_session_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_request_body_buffer</td></tr></table></div></body></html>

42
neon/doc/html/refreq.html Normal file
View File

@ -0,0 +1,42 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_request_create</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refalloc.html" title="ne_malloc"><link rel="next" href="refsess.html" title="ne_session_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_request_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refalloc.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsess.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refreq"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_request_create, ne_request_dispatch, ne_request_destroy &#8212; low-level HTTP request handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_request.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_request *<b class="fsfunc">ne_request_create</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, const char *<var xmlns="" class="pdparam">method</var>, const char *<var xmlns="" class="pdparam">path</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_request_dispatch</b>(</code>ne_request *<var xmlns="" class="pdparam">req</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_request_destroy</b>(</code>ne_request *<var xmlns="" class="pdparam">req</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3027419"></a><h2>Description</h2><p>An HTTP request, represented by the
<i class="type">ne_request</i> type, specifies that some operation is to be
performed on some resource. The
<tt class="function">ne_request_create</tt> function creates a request
object, specifying the operation in the <tt class="parameter">method</tt>
parameter. The location of the resource is determined by the server in
use for the session given by the <tt class="parameter">sess</tt>
parameter, combined with the <tt class="parameter">path</tt> parameter.</p><p>The <tt class="parameter">path</tt> string used must conform to the
<tt class="literal">abs_path</tt> definition given in RFC2396, with an
optional "?query" part, and must be URI-escaped by the caller (for
instance, using <tt class="function">ne_path_escape</tt>). If the string
comes from an untrusted source, failure to perform URI-escaping
results in a security vulnerability.</p><p>To dispatch a request, and process the response, the
<tt class="function">ne_request_dispatch</tt> function can be used. An
alternative is to use the (more complex, but more flexible)
combination of the <tt class="function">ne_begin_request</tt>,
<tt class="function">ne_end_request</tt>, and
<tt class="function">ne_read_response_block</tt> functions; see
<tt class="function">ne_begin_request</tt>.</p><p>To add extra headers in the request, the functions <a href="refreqhdr.html#ne_add_request_header">ne_add_request_header</a> and <a href="refreqhdr.html#ne_print_request_header">ne_print_request_header</a> can be used. To include a message
body with the request, one of the functions
<tt class="function">ne_set_request_body_buffer</tt>, <a href="refreqbody.html#ne_set_request_body_fd">ne_set_request_body_fd</a>, or
<tt class="function">ne_set_request_body_provider</tt> can be used.</p><p>The return value of
<tt class="function">ne_request_dispatch</tt> indicates merely whether the
request was sent and the response read successfully. To discover the
result of the operation, <a href="refgetst.html#ne_get_status">ne_get_status</a>, along with
any processing of the response headers and message body.</p><p>A request can only be dispatched once: calling
<tt class="function">ne_request_dispatch</tt> more than once on a single
<i class="type">ne_request</i> object produces undefined behaviour. Once all
processing associated with the request object is complete, use the
<tt class="function">ne_request_destroy</tt> function to destroy the
resources associated with it. Any subsequent use of the request
object produces undefined behaviour.</p></div><div class="refsect1" lang="en"><a name="id3027607"></a><h2>Return value</h2><p>The <tt class="function">ne_request_create</tt> function
returns a pointer to a request object (and never <tt class="literal">NULL</tt>).</p><p>The <tt class="function">ne_request_dispatch</tt> function
returns zero if the request was dispatched successfully, and a
non-zero error code otherwise.</p></div><div class="refsect1" lang="en"><a name="id3027646"></a><h2>Errors</h2><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><span class="errorcode">NE_ERROR</span></span></td><td>Request failed (see session error string)</td></tr><tr><td><span class="term"><span class="errorcode">NE_LOOKUP</span></span></td><td>The DNS lookup for the server (or proxy server) failed.</td></tr><tr><td><span class="term"><span class="errorcode">NE_AUTH</span></span></td><td>Authentication failed on the server.</td></tr><tr><td><span class="term"><span class="errorcode">NE_PROXYAUTH</span></span></td><td>Authentication failed on the proxy server.</td></tr><tr><td><span class="term"><span class="errorcode">NE_CONNECT</span></span></td><td>A connection to the server could not be established.</td></tr><tr><td><span class="term"><span class="errorcode">NE_TIMEOUT</span></span></td><td>A timeout occurred while waiting for the server to respond.</td></tr></tbody></table></div></div><div class="refsect1" lang="en"><a name="id3027753"></a><h2>Example</h2><p>An example of applying a <tt class="literal">MKCOL</tt>
operation to the resource at the location
<tt class="literal">http://www.example.com/foo/bar/</tt>:</p><pre class="programlisting">ne_session *sess = ne_session_create("http", "www.example.com", 80);
ne_request *req = ne_request_create(sess, "MKCOL", "/foo/bar/");
if (ne_request_dispatch(req)) {
printf("Request failed: %s\n", ne_get_error(sess));
}
ne_request_destroy(req);</pre></div><div class="refsect1" lang="en"><a name="id3027786"></a><h2>See also</h2><p><a href="referr.html#ne_get_error">ne_get_error</a>, <a href="referr.html#ne_set_error">ne_set_error</a>, <a href="refgetst.html#ne_get_status">ne_get_status</a>, <a href="refreqhdr.html#ne_add_request_header">ne_add_request_header</a>, <a href="refreqbody.html#ne_set_request_body_buffer">ne_set_request_body_buffer</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refalloc.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsess.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_malloc </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_session_create</td></tr></table></div></body></html>

View File

@ -0,0 +1,4 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_set_request_body_buffer</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refopts.html" title="ne_set_useragent"><link rel="next" href="refauth.html" title="ne_set_server_auth"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_request_body_buffer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refopts.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refauth.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refreqbody"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_set_request_body_buffer, ne_set_request_body_fd &#8212; include a message body with a request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_request.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_set_request_body_buffer</b>(</code>ne_request *<var xmlns="" class="pdparam">req</var>, const char *<var xmlns="" class="pdparam">buf</var>, size_t <var xmlns="" class="pdparam">count</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3029363"></a><h2>Description</h2><p>The <tt class="function">ne_set_request_body_buffer</tt>
function specifies that a message body should be included with the
body, which is stored in the <tt class="parameter">count</tt> bytes buffer
<tt class="parameter">buf</tt>.</p></div><div class="refsect1" lang="en"><a name="id3030206"></a><h2>See also</h2><p><a href="refreq.html#ne_request_create">ne_request_create</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refopts.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refauth.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_useragent </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_server_auth</td></tr></table></div></body></html>

View File

@ -0,0 +1,8 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_add_request_header</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refconfig.html" title="neon-config"><link rel="next" href="refresolve.html" title="ne_addr_resolve"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_add_request_header</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refconfig.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refresolve.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refreqhdr"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_add_request_header, ne_print_request_header &#8212; add headers to a request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_request.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_add_request_header</b>(</code>ne_request *<var xmlns="" class="pdparam">request</var>, const char *<var xmlns="" class="pdparam">name</var>, const char *<var xmlns="" class="pdparam">value</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_print_request_header</b>(</code>ne_request *<var xmlns="" class="pdparam">request</var>, const char *<var xmlns="" class="pdparam">name</var>, const char *<var xmlns="" class="pdparam">format</var>, ...<code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3021663"></a><h2>Description</h2><p>The functions <tt class="function">ne_add_request_header</tt>
and <tt class="function">ne_print_request_header</tt> can be used to add
headers to a request, before it is sent.</p><p><tt class="function">ne_add_request_header</tt> simply adds a
header of given <tt class="parameter">name</tt>, with given
<tt class="parameter">value</tt>.</p><p><tt class="function">ne_print_request_header</tt> adds a
header of given <tt class="parameter">name</tt>, taking the value from the
<tt class="function">printf</tt>-like <tt class="parameter">format</tt> string
parameter and subsequent variable-length argument list.</p></div><div class="refsect1" lang="en"><a name="id3021735"></a><h2>See also</h2><p><a href="refreq.html#ne_request_create">ne_request_create</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refconfig.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refresolve.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">neon-config </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_addr_resolve</td></tr></table></div></body></html>

View File

@ -0,0 +1,48 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_addr_resolve</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refreqhdr.html" title="ne_add_request_header"><link rel="next" href="refbuf.html" title="ne_buffer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_addr_resolve</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreqhdr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbuf.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refresolve"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_addr_resolve, ne_addr_result, ne_addr_first, ne_addr_next, ne_addr_error, ne_addr_destroy &#8212; functions to resolve hostnames to addresses</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_socket.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_sock_addr *<b class="fsfunc">ne_addr_resolve</b>(</code>const char *<var xmlns="" class="pdparam">hostname</var>, int <var xmlns="" class="pdparam">flags</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_addr_result</b>(</code>const ne_sock_addr *<var xmlns="" class="pdparam">addr</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_first</b>(</code>ne_sock_addr *<var xmlns="" class="pdparam">addr</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_next</b>(</code>ne_sock_addr *<var xmlns="" class="pdparam">addr</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_addr_error</b>(</code>const ne_sock_addr *<var xmlns="" class="pdparam">addr</var>, char *<var xmlns="" class="pdparam">buffer</var>, size_t <var xmlns="" class="pdparam">bufsiz</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_addr_destroy</b>(</code>ne_sock_addr *<var xmlns="" class="pdparam">addr</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3022216"></a><h2>Description</h2><p>The <tt class="function">ne_addr_resolve</tt> function resolves
the given <tt class="parameter">hostname</tt>, returning an
<i class="type">ne_sock_addr</i> object representing the address (or
addresses) associated with the hostname. The
<tt class="parameter">flags</tt> parameter is currently unused, and
must be passed as 0.</p><p>The <tt class="parameter">hostname</tt> passed to
<tt class="function">ne_addr_resolve</tt> can be a DNS hostname
(e.g. <tt class="literal">"www.example.com"</tt>) or an IPv4 dotted quad
(e.g. <tt class="literal">"192.0.34.72"</tt>); or, on systems which
support IPv6, an IPv6 hex address, which may be enclosed in
brackets, e.g. <tt class="literal">"[::1]"</tt>.</p><p>To determine whether the hostname was successfully resolved,
the <tt class="function">ne_addr_result</tt> function is used, which
returns non-zero if an error occurred. If an error did occur, the
<tt class="function">ne_addr_error</tt> function can be used, which
will copy the error string into a given
<tt class="parameter">buffer</tt> (of size
<tt class="parameter">bufsiz</tt>).</p><p>The functions <tt class="function">ne_addr_first</tt> and
<tt class="function">ne_addr_next</tt> are used to retrieve the
Internet addresses associated with an address object which has
been successfully resolved. <tt class="function">ne_addr_first</tt>
returns the first address; <tt class="function">ne_addr_next</tt>
returns the next address after the most recent call to
<tt class="function">ne_addr_next</tt> or
<tt class="function">ne_addr_first</tt>, or <tt class="literal">NULL</tt> if there are no more
addresses. The <i class="type">ne_inet_addr</i> pointer returned by
these functions can be passed to
<tt class="function">ne_sock_connect</tt> to connect a socket.</p><p>After the address object has been used, it should be
destroyed using <tt class="function">ne_addr_destroy</tt>.</p></div><div class="refsect1" lang="en"><a name="id3022391"></a><h2>Return value</h2><p><tt class="function">ne_addr_resolve</tt> returns a pointer to an
address object, and never <tt class="literal">NULL</tt>.
<tt class="function">ne_addr_error</tt> returns the
<tt class="parameter">buffer</tt> parameter .</p></div><div class="refsect1" lang="en"><a name="id3022426"></a><h2>Examples</h2><p>The code below prints out the set of addresses associated
with the hostname <tt class="literal">www.google.com</tt>.</p><pre class="programlisting">ne_sock_addr *addr;
char buf[256];
addr = ne_addr_resolve("www.google.com", 0);
if (ne_addr_result(addr)) {
printf("Could not resolve www.google.com: %s\n",
ne_addr_error(addr, buf, sizeof buf));
} else {
const ne_inet_addr *ia;
printf("www.google.com:");
for (ia = ne_addr_first(addr); ia != NULL; ia = ne_addr_next(addr)) {
printf(" %s", ne_iaddr_print(ia, buf, sizeof buf));
}
putchar('\n');
}
ne_addr_destroy(addr);
</pre></div><div class="refsect1" lang="en"><a name="id3022456"></a><h2>See also</h2><p><a href="refiaddr.html#ne_iaddr_print">ne_iaddr_print</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreqhdr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbuf.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_add_request_header </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer</td></tr></table></div></body></html>

View File

@ -0,0 +1,35 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_session_create</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refreq.html" title="ne_request_create"><link rel="next" href="refopts.html" title="ne_set_useragent"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_session_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreq.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refopts.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refsess"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_session_create, ne_close_connection, ne_session_proxy, ne_session_destroy &#8212; set up HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_session.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_session *<b class="fsfunc">ne_session_create</b>(</code>const char *<var xmlns="" class="pdparam">scheme</var>, const char *<var xmlns="" class="pdparam">hostname</var>, unsigned int <var xmlns="" class="pdparam">port</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_session_proxy</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, const char *<var xmlns="" class="pdparam">hostname</var>, unsigned int <var xmlns="" class="pdparam">port</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_close_connection</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_session_destroy</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3028602"></a><h2>Description</h2><p>An <i class="type">ne_session</i> object represents an HTTP
session - a logical grouping of a sequence of HTTP requests made to a
certain server. Any requests made using the session can use a
persistent connection, share cached authentication credentials and any
other common attributes.</p><p>A new HTTP session is created using
<tt class="function">ne_session_create</tt>, giving the
<tt class="parameter">hostname</tt> and <tt class="parameter">port</tt> of the
server to use, along with the <tt class="parameter">scheme</tt> used to
contact the server (usually <tt class="literal">"http"</tt>). Before the
first use of <tt class="function">ne_session_create</tt> in a process,
<a href="refsockinit.html#ne_sock_init">ne_sock_init</a> must have been called to perform any
global initialization needed by any libraries used by neon.</p><p>To enable SSL/TLS for the session, pass the string
<tt class="literal">"https"</tt> as the <tt class="parameter">scheme</tt>
parameter, and either register a certificate verification function
(see <a href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>) or trust the appropriate
certificate (see <a href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a href="refsslca.html#ne_ssl_trust_default_ca">ne_ssl_trust_default_ca</a>).</p><p>If an HTTP proxy server should be used for the session,
<tt class="function">ne_session_proxy</tt> must be called giving the
hostname and port on which to contact the proxy.</p><p>If it is known that the session will not be used for a
significant period of time, <tt class="function">ne_close_connection</tt>
can be called to close the connection, if one remains open. Use of
this function is entirely optional, but it must not be called if there
is a request active using the session.</p><p>Once a session has been completed,
<tt class="function">ne_session_destroy</tt> must be called to destroy the
resources associated with the session. Any subsequent use of the
session pointer produces undefined behaviour.</p></div><div class="refsect1" lang="en"><a name="id3028744"></a><h2>Notes</h2><p>The hostname passed to
<tt class="function">ne_session_create</tt> is resolved when the first
request using the session is dispatched; a DNS resolution failure can
only be detected at that time (using the <tt class="literal">NE_LOOKUP</tt>
error code); see <a href="refreq.html#ne_request_dispatch">ne_request_dispatch</a> for
details.</p></div><div class="refsect1" lang="en"><a name="id3028775"></a><h2>Return Values</h2><p><tt class="function">ne_session_create</tt> will return
a pointer to a new session object (and never <tt class="literal">NULL</tt>).</p></div><div class="refsect1" lang="en"><a name="id3028797"></a><h2>Examples</h2><p>Create and destroy a session:</p><pre class="programlisting">ne_session *sess;
sess = ne_session_create("http", "host.example.com", 80);
/* ... use sess ... */
ne_session_destroy(sess);
</pre></div><div class="refsect1" lang="en"><a name="id3028816"></a><h2>See Also</h2><p><a href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a href="refsockinit.html#ne_sock_init">ne_sock_init</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreq.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refopts.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_request_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_useragent</td></tr></table></div></body></html>

View File

@ -0,0 +1,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_shave</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refauth.html" title="ne_set_server_auth"><link rel="next" href="refsockinit.html" title="ne_sock_init"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_shave</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refauth.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsockinit.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refshave"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_shave &#8212; trim whitespace from a string</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_string.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_shave</b>(</code>char *<var xmlns="" class="pdparam">str</var>, const char *<var xmlns="" class="pdparam">whitespace</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3031186"></a><h2>Description</h2><p><tt class="function">ne_shave</tt> returns a portion of
<tt class="parameter">str</tt> with any leading or trailing characters in
the <tt class="parameter">whitespace</tt> array removed.
<tt class="parameter">str</tt> may be modified. Note that the return
value may not be equal to <tt class="parameter">str</tt>.</p></div><div class="refsect1" lang="en"><a name="id3031226"></a><h2>Examples</h2><p>The following code segment will output
<tt class="literal">"fish"</tt>:</p><pre class="programlisting">char s[] = ".!.fish!.!";
puts(ne_shave(s, ".!"));</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refauth.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsockinit.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_server_auth </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_sock_init</td></tr></table></div></body></html>

View File

@ -0,0 +1,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_sock_init</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refshave.html" title="ne_shave"><link rel="next" href="refcert.html" title="ne_ssl_cert_identity"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_sock_init</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refshave.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refcert.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refsockinit"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_sock_init &#8212; perform library initialization</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_socket.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_sock_init</b>(</code><code xmlns="">void)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3031110"></a><h2>Description</h2><p>In some platforms and configurations, neon may be using
some socket or SSL libraries which require global initialization
before use. To perform this initialization, the
<tt class="function">ne_sock_init</tt> function must be called once
before any other library functions are used.</p></div><div class="refsect1" lang="en"><a name="id3031131"></a><h2>Return value</h2><p><tt class="function">ne_sock_init</tt> returns zero on success,
or non-zero on error. If an error occurs, no further use of the
neon library should be attempted.</p></div><div class="refsect1" lang="en"><a name="id3031149"></a><h2>See also</h2><p><a href="refneon.html" title="neon"><span class="refentrytitle">neon</span></a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refshave.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refcert.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_shave </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_cert_identity</td></tr></table></div></body></html>

View File

@ -0,0 +1,15 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_ssl_trust_cert</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refssldname.html" title="ne_ssl_dname"><link rel="next" href="refsslvfy.html" title="ne_ssl_set_verify"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_trust_cert</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refssldname.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslvfy.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refsslca"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_trust_cert, ne_ssl_trust_default_ca &#8212; functions to indicate that certificates are trusted</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_session.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_ssl_trust_cert</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, const ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_ssl_trust_default_ca</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3033806"></a><h2>Description</h2><p>To indicate that a given certificate is trusted by the
user, the certificate object can be passed to
<tt class="function">ne_ssl_trust_cert</tt>. The certificate object is
duplicated internally and can subequently be destroyed.</p><p>The SSL library in use by neon may include a default
set of CA certificates; calling the
<tt class="function">ne_ssl_trust_default_ca</tt> function will indicate
that these CAs are trusted by the user.</p></div><div class="refsect1" lang="en"><a name="id3033837"></a><h2>Examples</h2><p>Load the CA certificate stored in <tt class="filename">/path/to/cacert.pem</tt>:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
ne_ssl_certificate *cert = ne_ssl_cert_read("/path/to/cacert.pem");
if (cert) {
ne_ssl_trust_cert(sess, cert);
ne_ssl_cert_free(cert);
} else {
printf("Could not load CA cert: %s\n", ne_get_error(sess));
}</pre></div><div class="refsect1" lang="en"><a name="id3033864"></a><h2>See also</h2><p><a href="refsslcertio.html#ne_ssl_cert_read">ne_ssl_cert_read</a>, <a href="refsslcertio.html#ne_ssl_cert_import">ne_ssl_cert_import</a>, <a href="refsslcert2.html#ne_ssl_cert_free">ne_ssl_cert_free</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refssldname.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslvfy.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_dname </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_set_verify</td></tr></table></div></body></html>

View File

@ -0,0 +1,5 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_ssl_cert_cmp</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refcert.html" title="ne_ssl_cert_identity"><link rel="next" href="refsslcertio.html" title="ne_ssl_cert_read"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_cmp</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refcert.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslcertio.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refsslcert2"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_cmp, ne_ssl_cert_free &#8212; functions to operate on certificate objects</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_header.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_ssl_cert_cmp</b>(</code>const ne_ssl_certificate *<var xmlns="" class="pdparam">c1</var>, const ne_ssl_certificate *<var xmlns="" class="pdparam">c2</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_ssl_cert_free</b>(</code>ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3032404"></a><h2>Description</h2><p>The <tt class="function">ne_ssl_cert_cmp</tt> function can be
used to compare two certificate objects; it returns zero if they
refer to the same certificate, and non-zero otherwise.</p><p>The <tt class="function">ne_ssl_cert_free</tt> function can be
used to destroy a certificate object when it is no longer
needed.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refcert.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslcertio.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_cert_identity </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_cert_read</td></tr></table></div></body></html>

View File

@ -0,0 +1,24 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_ssl_cert_read</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refsslcert2.html" title="ne_ssl_cert_cmp"><link rel="next" href="refssldname.html" title="ne_ssl_dname"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_read</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslcert2.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refssldname.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refsslcertio"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_read, ne_ssl_cert_write, ne_ssl_cert_import, ne_ssl_cert_export &#8212; functions to read or write certificates to and from files or strings</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_ssl.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_read</b>(</code>const char *<var xmlns="" class="pdparam">filename</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_ssl_cert_write</b>(</code>const ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var>, const char *<var xmlns="" class="pdparam">filename</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_import</b>(</code>const char *<var xmlns="" class="pdparam">data</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_ssl_cert_export</b>(</code>const ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3032737"></a><h2>Description</h2><p>The <tt class="function">ne_ssl_cert_write</tt> function writes a
certificate to a file using the PEM encoding. The
<tt class="function">ne_ssl_cert_export</tt> function returns a
base64-encoded <tt class="literal">NUL</tt>-terminated string representing the
certificate. This string is malloc-allocated and should be
destroyed using <tt class="function">free</tt> by the caller.</p><p>The <tt class="function">ne_ssl_cert_read</tt> function reads a
certificate from a PEM-encoded file, and returns a certificate
object. The <tt class="function">ne_ssl_cert_import</tt> function
returns a certificate object from a base64-encoded string,
<tt class="parameter">data</tt>, as returned by
<tt class="function">ne_ssl_cert_export</tt>. The certificate object
returned by these functions should be destroyed using <a href="refsslcert2.html#ne_ssl_cert_free">ne_ssl_cert_free</a> after use.</p></div><div class="refsect1" lang="en"><a name="id3032815"></a><h2>Return value</h2><p><tt class="function">ne_ssl_cert_read</tt> returns <tt class="literal">NULL</tt> if a
certificate could not be read from the file.
<tt class="function">ne_ssl_cert_write</tt> returns non-zero if the
certificate could not be written to the file.
<tt class="function">ne_ssl_cert_export</tt> always returns a
<tt class="literal">NUL</tt>-terminated string, and never <tt class="literal">NULL</tt>.
<tt class="function">ne_ssl_cert_import</tt> returns <tt class="literal">NULL</tt> if the
string was not a valid base64-encoded certificate.</p></div><div class="refsect1" lang="en"><a name="id3032878"></a><h2>Encoding Formats</h2><p>The string produced by
<tt class="function">ne_ssl_cert_export</tt> is the base64 encoding of
the DER representation of the certificate. The file written by
<tt class="function">ne_ssl_cert_write</tt> uses the PEM format: this
is the base64 encoding of the DER representation with newlines
every 64 characters, and start and end marker lines.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslcert2.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refssldname.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_cert_cmp </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_dname</td></tr></table></div></body></html>

View File

@ -0,0 +1,9 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_ssl_dname</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refsslcertio.html" title="ne_ssl_cert_read"><link rel="next" href="refsslca.html" title="ne_ssl_trust_cert"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_dname</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslcertio.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslca.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refssldname"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_readable_dname, ne_ssl_dname_cmp &#8212; SSL distinguished name handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_ssl.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const char *<b class="fsfunc">ne_ssl_readable_dname</b>(</code>const ne_ssl_dname *<var xmlns="" class="pdparam">dname</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_ssl_dname_cmp</b>(</code>const ne_ssl_dname *<var xmlns="" class="pdparam">dn1</var>, const ne_ssl_dname *<var xmlns="" class="pdparam">dn2</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3033358"></a><h2>Description</h2><p>The <tt class="function">ne_ssl_readable_dname</tt> function
creates a single-line, human-readable string out of an
<i class="type">ne_ssl_dname</i> object. The returned string is
<tt class="function">malloc</tt>()-allocated, and must be
<tt class="function">free</tt>()d by the caller.</p><p>The <tt class="function">ne_ssl_dname_cmp</tt> function
compares two distinguished names, and returns zero if they are
equal, or non-zero otherwise.</p></div><div class="refsect1" lang="en"><a name="id3033404"></a><h2>Return value</h2><p><tt class="function">ne_ssl_readable_dname</tt> returns a <tt class="function">malloc</tt>-allocated
string, and never <tt class="literal">NULL</tt>.</p></div><div class="refsect1" lang="en"><a name="id3033432"></a><h2>Examples</h2><p>See <a href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a> for an example
use of <tt class="function">ne_ssl_readable_dname</tt>.</p></div><div class="refsect1" lang="en"><a name="id3033455"></a><h2>See also</h2><p><a href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslcertio.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslca.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_cert_read </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_trust_cert</td></tr></table></div></body></html>

View File

@ -0,0 +1,66 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_ssl_set_verify</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refsslca.html" title="ne_ssl_trust_cert"><link rel="next" href="refclicert.html" title="ne_ssl_client_cert"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_set_verify</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslca.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refclicert.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refsslvfy"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_set_verify &#8212; register an SSL certificate verification callback</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_session.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">typedef int <b class="fsfunc">ne_ssl_verify_fn</b>(</code>void *<var xmlns="" class="pdparam">userdata</var>, int <var xmlns="" class="pdparam">failures</var>, const ne_ssl_certificate *<var xmlns="" class="pdparam">cert</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">void <b class="fsfunc">ne_ssl_set_verify</b>(</code>ne_session *<var xmlns="" class="pdparam">session</var>, ne_ssl_verify_fn <var xmlns="" class="pdparam">verify_fn</var>, void *<var xmlns="" class="pdparam">userdata</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3034219"></a><h2>Description</h2><p>To enable manual SSL certificate verification, a
callback can be registered using
<tt class="function">ne_ssl_set_verify</tt>. If such a callback is not
registered, when a connection is established to an SSL server which
does not present a certificate signed by a trusted CA (see <a href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>), or if the certificate presented is invalid in
some way, the connection will fail.</p><p>When the callback is invoked, the
<tt class="parameter">failures</tt> parameter gives a bitmask indicating
in what way the automatic certificate verification failed. The value
is equal to the bit-wise OR of one or more of the following
constants (and is guaranteed to be non-zero):</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><tt class="constant">NE_SSL_NOTYETVALID</tt></span></td><td>The certificate is not yet valid.</td></tr><tr><td><span class="term"><tt class="constant">NE_SSL_EXPIRED</tt></span></td><td>The certificate has expired.</td></tr><tr><td><span class="term"><tt class="constant">NE_SSL_IDMISMATCH</tt></span></td><td>The hostname used for the session does not match
the hostname to which the certificate was issued.</td></tr><tr><td><span class="term"><tt class="constant">NE_SSL_UNTRUSTED</tt></span></td><td>The Certificate Authority which signed the certificate
is not trusted.</td></tr></tbody></table></div><p>Note that if either of the
<tt class="constant">NE_SSL_IDMISMATCH</tt> or
<tt class="constant">NE_SSL_UNTRUSTED</tt> failures is given, the
connection may have been intercepted by a third party, and
must not be presumed to be &#8220;<span class="quote">secure</span>&#8221;.</p><p>The <tt class="parameter">cert</tt> parameter passed to the
callback represents the certificate which was presented by the server.
If the server presented a chain of certificates, the chain can be
accessed using <a href="refcert.html#ne_ssl_cert_signedby">ne_ssl_cert_signedby</a>. The
<tt class="parameter">cert</tt> object given is not valid after the
callback returns.</p></div><div class="refsect1" lang="en"><a name="id3034364"></a><h2>Return value</h2><p>The verification callback must return zero to indicate
that the certificate should be trusted; and non-zero otherwise (in
which case, the connection will fail).</p></div><div class="refsect1" lang="en"><a name="id3034377"></a><h2>Examples</h2><p>The following code implements an example verification
callback, using the <tt class="function">dump_cert</tt> function
from <a href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a> to display
certification information. Notice that the hostname of the
server used for the session is passed as the
<tt class="parameter">userdata</tt> parameter to the
callback.</p><pre class="programlisting">
static int
my_verify(void *userdata, int failures, const ne_ssl_certificate *cert)
{
const char *hostname = userdata;
dump_cert(cert);
puts("Certificate verification failed - the connection may have been "
"intercepted by a third party!");
if (failures &amp; NE_SSL_IDMISMATCH) {
const char *id = ne_ssl_cert_identity(cert);
if (id)
printf("Server certificate was issued to '%s' not '%s'.\n",
id, hostname);
else
printf("The certificate was not issued for '%s'\n", hostname);
}
if (failures &amp; NE_SSL_UNTRUSTED)
puts("The certificate is not signed by a trusted Certificate Authority.");
/* ... check for validity failures ... */
if (prompt_user())
return 1; /* fail verification */
else
return 0; /* trust the certificate anyway */
}
int
main(...)
{
ne_session *sess = ne_session_create("https", "some.host.name", 443);
ne_ssl_set_verify(sess, my_verify, "some.host.name");
...
}</pre></div><div class="refsect1" lang="en"><a name="id3034441"></a><h2>See also</h2><p><a href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a href="refssldname.html#ne_ssl_readable_dname">ne_ssl_readable_dname</a>, <a href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslca.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refclicert.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_trust_cert </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_client_cert</td></tr></table></div></body></html>

View File

@ -0,0 +1,22 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_status</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refclicert.html" title="ne_ssl_client_cert"><link rel="next" href="reftok.html" title="ne_token"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refclicert.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="reftok.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refstatus"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_status &#8212; HTTP status structure</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_utils.h&gt;
typedef struct {
int major_version, minor_version;
int code, klass;
const char *reason_phrase;
} <i class="type">ne_status</i>;</pre></div></div><div class="refsect1" lang="en"><a name="id3035848"></a><h2>Description</h2><p>An <i class="type">ne_status</i> type represents an HTTP
response status; used in response messages giving a result of request.
The <i class="structfield"><tt>major_version</tt></i> and
<i class="structfield"><tt>minor_version</tt></i> fields give the HTTP version
supported by the server issuing the response. The
<i class="structfield"><tt>code</tt></i> field gives the status code of the
result (lying between 100 and 999 inclusive), and the
<i class="structfield"><tt>klass</tt></i> field gives the
class<sup>[<a name="id3035878" href="#ftn.id3035878">2</a>]</sup>, which is equal to the most significant digit
of the status.</p><p>There are five classes of HTTP status code defined by
RFC2616:</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><tt class="literal">1xx</tt></span></td><td>Informational response.</td></tr><tr><td><span class="term"><tt class="literal">2xx</tt></span></td><td>Success: the operation was successful</td></tr><tr><td><span class="term"><tt class="literal">3xx</tt></span></td><td>Redirection</td></tr><tr><td><span class="term"><tt class="literal">4xx</tt></span></td><td>Client
error: the request made was incorrect in some
manner.</td></tr><tr><td><span class="term"><tt class="literal">5xx</tt></span></td><td>Server error</td></tr></tbody></table></div></div><div class="refsect1" lang="en"><a name="id3035979"></a><h2>See also</h2><p><a href="refgetst.html#ne_get_status">ne_get_status</a>.</p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id3035878" href="#id3035878">2</a>] </sup>the field is named &#8220;<span class="quote">klass</span>&#8221; not
&#8220;<span class="quote">class</span>&#8221; so that the header can be used from a C++
program, in which &#8220;<span class="quote">class</span>&#8221; is a reserved
word)</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refclicert.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="reftok.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_client_cert </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_token</td></tr></table></div></body></html>

20
neon/doc/html/reftok.html Normal file
View File

@ -0,0 +1,20 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_token</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="refstatus.html" title="ne_status"><link rel="next" href="refvers.html" title="ne_version_match"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_token</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refstatus.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refvers.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="reftok"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_token, ne_qtoken &#8212; string tokenizers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_string.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_token</b>(</code>char **<var xmlns="" class="pdparam">str</var>, char <var xmlns="" class="pdparam">sep</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">char *<b class="fsfunc">ne_qtoken</b>(</code>char **<var xmlns="" class="pdparam">str</var>, char <var xmlns="" class="pdparam">sep</var>, const char *<var xmlns="" class="pdparam">quotes</var><code xmlns="">)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3036326"></a><h2>Description</h2><p><tt class="function">ne_token</tt> and
<tt class="function">ne_qtoken</tt> tokenize the string at the location
stored in the pointer <tt class="parameter">str</tt>. Each time the
function is called, it returns the next token, and modifies the
<tt class="parameter">str</tt> pointer to point to the remainer of the
string, or <tt class="literal">NULL</tt> if there are no more tokens in the string. A token
is delimited by the separator character <tt class="parameter">sep</tt>; if
<tt class="function">ne_qtoken</tt> is used any quoted segments of the
string are skipped when searching for a separator. A quoted segment
is enclosed in a pair of one of the characters given in the
<tt class="parameter">quotes</tt> string.</p><p>The string being tokenized is modified each time
the tokenizing function is called; replacing the next separator
character with a <tt class="literal">NUL</tt> terminator.</p></div><div class="refsect1" lang="en"><a name="id3036405"></a><h2>Examples</h2><p>The following function prints out each token in a
comma-separated string <tt class="parameter">list</tt>, which is
modified in-place:</p><pre class="programlisting">static void splitter(char *list)
{
do {
printf("Token: %s\n", ne_token(&amp;list, ','));
while (list);
}</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refstatus.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refvers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_status </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_version_match</td></tr></table></div></body></html>

View File

@ -0,0 +1,11 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ne_version_match</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="previous" href="reftok.html" title="ne_token"><link rel="next" href="biblio.html" title="Bibliography"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_version_match</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="reftok.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="biblio.html">Next</a></td></tr></table><hr></div><div class="refentry" lang="en"><a name="refvers"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>ne_version_match, ne_version_string &#8212; library versioning</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_utils.h&gt;</pre><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">int <b class="fsfunc">ne_version_match</b>(</code>int <var xmlns="" class="pdparam">major</var>, int <var xmlns="" class="pdparam">minor</var><code xmlns="">)</code>;</code></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="funcprototype"><code><code xmlns="" class="funcdef">const char *<b class="fsfunc">ne_version_string</b>(</code><code xmlns="">void)</code>;</code></div></div></div><div class="refsect1" lang="en"><a name="id3035751"></a><h2>Description</h2><p>The <tt class="function">ne_version_match</tt> function returns
non-zero if the library version is not of major version
<tt class="parameter">major</tt>, or the minor version is less than
<tt class="parameter">minor</tt>. For neon versions 0.x, every
minor version is assumed to be incompatible with every other minor
version.</p><p>The <tt class="function">ne_version_string</tt> function returns
a string giving the library version.</p></div><div class="refsect1" lang="en"><a name="id3035796"></a><h2>Examples</h2><p>To require neon 1.x, version 1.2 or later:</p><pre class="programlisting">if (ne_version_match(1, 2)) {
printf("Library version out of date: 1.2 required, found %s.",
ne_version_string());
exit(1);
}</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="reftok.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="biblio.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_token </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Bibliography</td></tr></table></div></body></html>

40
neon/doc/html/using.html Normal file
View File

@ -0,0 +1,40 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to use neon from your application</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="previous" href="features.html" title="Feature list"><link rel="next" href="compliance.html" title="Protocol compliance"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How to use neon from your application</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="features.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="compliance.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="using"></a>How to use neon from your application</h2></div></div><div></div></div><p>This section describes how to add neon support to an
application. If you just want to quickly try out neon, use
the <a href="refconfig.html" title="neon-config"><span class="refentrytitle">neon-config</span></a> script.</p><p>The neon source code is designed to be easily embedded
into an application source tree. neon has no dependencies on
libraries other than an SSL toolkit and XML parser, though the
source tree can be configured to have no support for SSL or XML
if desired. To configure the neon source code some <a href="http://www.gnu.org/software/autoconf/" target="_top">GNU autoconf</a>
macros are supplied, which can be used in a number of ways, as
follows:</p><div class="itemizedlist"><ul type="disc"><li><p>autoconf macros are distributed in the 'macros'
subdirectory of the neon distribution. Use the NEON_LIBRARY
macro from your configure.in to check for the presence of
the neon library installed on the system. The macro adds an
'--with-neon=...' argument to configure, which allows the
user to specify a location for the library (the standard
/usr and /usr/local directories are checked automatically
without having to be specified).</p></li><li><p>The 'src' directory of the neon package can be
imported directly into your application, if you do not wish
to add an external dependency. If you wish to bundle, use
the NEON_BUNDLED macro to configure neon in your application:
here, the neon sources are bundled in a directory called
'libneon':</p><pre class="programlisting">NEON_BUNDLED(libneon, ...)</pre><p>If your application supports builds where srcdir != builddir,
you should use the NEON_VPATH_BUNDLED macro like this:</p><pre class="programlisting">NEON_VPATH_BUNDLED(${srcdir}/libneon, libneon, ...)</pre><p>If you use this macro, a '--with-included-neon' option
will be added to the generated configure script. This
allows the user to force the bundled neon to be used in the
application, rather than any neon library found on the
system. If you allow neon to be configured this way, you
must also configure an XML parser. Use the NEON_XML_PARSER
macro to do this.</p></li><li><p>The final argument to the _BUNDLED macros is a
set of actions which are executed if the bundled build *is*
chosen (rather than an external neon which might have been
found on the user's system). In here, use either the
NEON_LIBTOOL_BUILD or NEON_NORMAL_BUILD macro to set up the
neon Makefile appropriately: including adding the neon source
directory to the recursive make.</p></li></ul></div><p>A full fragment might be:</p><pre class="programlisting">NEON_BUNDLED(libneon, [
NEON_NORMAL_BUILD
NEON_XML_PARSER
SUBDIRS="libneon $SUBDIRS"
])</pre><p>This means the bundled neon source directory (called 'libneon')
is used if no neon is found on the system, and the standard XML
parser search is used.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="features.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="compliance.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Feature list </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Protocol compliance</td></tr></table></div></body></html>

90
neon/doc/html/xml.html Normal file
View File

@ -0,0 +1,90 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Parsing XML</title><link rel="stylesheet" href="../manual.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="api.html" title="Chapter 2. The neon C language interface"><link rel="previous" href="api.html" title="Chapter 2. The neon C language interface"><link rel="next" href="ref.html" title="neon API reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Parsing XML</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Chapter 2. The neon C language interface</th><td width="20%" align="right"> <a accesskey="n" href="ref.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="xml"></a>Parsing XML</h2></div></div><div></div></div><p>The neon XML interface is exposed by the
<tt class="filename">ne_xml.h</tt> header file. This interface gives a
wrapper around the standard <a href="http://www.saxproject.org/" target="_top">SAX</a> API used by XML
parsers, with an additional abstraction, <i class="firstterm">stacked SAX
handlers</i>, and also giving consistent <a href="http://www.w3.org/TR/REC-xml-names" target="_top">XML Namespace</a> support.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="xml-sax"></a>Introduction to SAX</h3></div></div><div></div></div><p>A SAX-based parser works by emitting a sequence of
<i class="firstterm">events</i> to reflect the tokens being parsed
from the XML document. For example, parsing the following document
fragment:
</p><pre class="programlisting">
&lt;hello&gt;world&lt;/hello&gt;
</pre><p>
results in the following events:
</p><div class="orderedlist"><ol type="1"><li><span class="emphasis"><em>start-element</em></span> "hello"</li><li><span class="emphasis"><em>character-data</em></span> "world"</li><li><span class="emphasis"><em>end-element</em></span> "hello"</li></ol></div><p>
This example demonstrates the three event types used used in the
subset of SAX exposed by the neon XML interface: <span class="emphasis"><em>start-element</em></span>,
<span class="emphasis"><em>character-data</em></span> and <span class="emphasis"><em>end-element</em></span>. In a C API, an &#8220;<span class="quote">event</span>&#8221; is
implemented as a function callback; three callback types are used in
neon, one for each type of event.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="xml-stacked"></a>Stacked SAX handlers</h3></div></div><div></div></div><p>WebDAV property values are represented as fragments of XML,
transmitted as parts of larger XML documents over HTTP (notably in
the body of the response to a <tt class="literal">PROPFIND</tt> request).
When neon parses such documents, the SAX events generated for
these property value fragments may need to be handled by the
application, since neon has no knowledge of the structure of
properties used by the application.</p><p>To solve this problem<sup>[<a name="id3018824" href="#ftn.id3018824">1</a>]</sup> the neon XML interface introduces
the concept of a <i class="firstterm">SAX handler</i>. A SAX handler
comprises a <span class="emphasis"><em>start-element</em></span>, <span class="emphasis"><em>character-data</em></span> and <span class="emphasis"><em>end-element</em></span> callback; the
<span class="emphasis"><em>start-element</em></span> callback being defined such that each handler may
<span class="emphasis"><em>accept</em></span> or <span class="emphasis"><em>decline</em></span> the
<span class="emphasis"><em>start-element</em></span> event. Handlers are composed into a <i class="firstterm">handler
stack</i> before parsing a document. When a new <span class="emphasis"><em>start-element</em></span>
event is generated by the XML parser, neon invokes each <span class="emphasis"><em>start-element</em></span>
callback in the handler stack in turn until one accepts the event.
The handler which accepts the event will then be subsequently be
passed <span class="emphasis"><em>character-data</em></span> events if the element contains character data,
followed by an <span class="emphasis"><em>end-element</em></span> event when the element is closed. If no
handler in the stack accepts a <span class="emphasis"><em>start-element</em></span> event, the branch of the
tree is ignored.</p><p>To illustrate, given a handler A, which accepts the
<tt class="literal">cat</tt> and <tt class="literal">age</tt> elements, and a
handler B, which accepts the <tt class="literal">name</tt> element, the
following document:
</p><div class="example"><a name="xml-example"></a><p class="title"><b>Example 2.1. An example XML document</b></p><pre class="programlisting">
&lt;cat&gt;
&lt;age&gt;3&lt;/age&gt;
&lt;name&gt;Bob&lt;/name&gt;
&lt;/cat&gt;
</pre></div><p>
would be parsed as follows:
</p><div class="orderedlist"><ol type="1"><li>A <span class="emphasis"><em>start-element</em></span> "cat" &#8594; <span class="emphasis"><em>accept</em></span></li><li>A <span class="emphasis"><em>start-element</em></span> "age" &#8594; <span class="emphasis"><em>accept</em></span></li><li>A <span class="emphasis"><em>character-data</em></span> "3"</li><li>A <span class="emphasis"><em>end-element</em></span> "age"</li><li>A <span class="emphasis"><em>start-element</em></span> "name" &#8594; <span class="emphasis"><em>decline</em></span></li><li>B <span class="emphasis"><em>start-element</em></span> "name" &#8594; <span class="emphasis"><em>accept</em></span></li><li>B <span class="emphasis"><em>character-data</em></span> "Bob"</li><li>B <span class="emphasis"><em>end-element</em></span> "name"</li><li>A <span class="emphasis"><em>end-element</em></span> "cat"</li></ol></div><p>The search for a handler which will accept a <span class="emphasis"><em>start-element</em></span> event
begins at the handler of the parent element and continues toward the
top of the stack. For the root element, it begins at the base of
the stack. In the above example, handler A is at the base, and
handler B at the top; if the <tt class="literal">name</tt> element had any
children, only B's <span class="emphasis"><em>start-element</em></span> would be invoked to accept
them.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="xml-state"></a>Maintaining state</h3></div></div><div></div></div><p>To facilitate communication between independent handlers, a
<i class="firstterm">state integer</i> is associated with each element
being parsed. This integer is returned by <span class="emphasis"><em>start-element</em></span> callback and
is passed to the subsequent <span class="emphasis"><em>character-data</em></span> and <span class="emphasis"><em>end-element</em></span> callbacks
associated with the element. The state integer of the parent
element is also passed to each <span class="emphasis"><em>start-element</em></span> callback, the value zero
used for the root element (which by definition has no
parent).</p><p>To further extend <a href="xml.html#xml-example" title="Example 2.1. An example XML document">Example 2.1, &#8220;An example XML document&#8221;</a>: if handler A
defines that the state of the root element <tt class="sgmltag-element">cat</tt>
will be <tt class="literal">42</tt>, the event trace would be as
follows:
</p><div class="orderedlist"><ol type="1"><li>A <span class="emphasis"><em>start-element</em></span> (parent = 0, "cat") &#8594;
<span class="emphasis"><em>accept</em></span>, state = 42
</li><li>A <span class="emphasis"><em>start-element</em></span> (parent = 42, "age") &#8594;
<span class="emphasis"><em>accept</em></span>, state = 50
</li><li>A <span class="emphasis"><em>character-data</em></span> (state = 50, "3")</li><li>A <span class="emphasis"><em>end-element</em></span> (state = 50, "age")</li><li>A <span class="emphasis"><em>start-element</em></span> (parent = 42, "name") &#8594;
<span class="emphasis"><em>decline</em></span></li><li>B <span class="emphasis"><em>start-element</em></span> (parent = 42, "name") &#8594;
<span class="emphasis"><em>accept</em></span>, state = 99</li><li>B <span class="emphasis"><em>character-data</em></span> (state = 99, "Bob")</li><li>B <span class="emphasis"><em>end-element</em></span> (state = 99, "name")</li><li>A <span class="emphasis"><em>end-element</em></span> (state = 42, "cat")</li></ol></div><p>To avoid collisions between state integers used by different
handlers, the interface definition of any handler includes the range
of integers it will use.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="xml-ns"></a>XML namespaces</h3></div></div><div></div></div><p>To support XML namespaces, every element name is represented
as a <span class="emphasis"><em>(namespace, name)</em></span> pair. The <span class="emphasis"><em>start-element</em></span>
and <span class="emphasis"><em>end-element</em></span> callbacks are passed namespace and name strings
accordingly. If an element in the XML document has no declared
namespace, the namespace given will be the empty string,
<tt class="literal">""</tt>.</p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id3018824" href="#id3018824">1</a>] </sup>This
&#8220;<span class="quote">problem</span>&#8221; only needs solving because the SAX interface
is so inflexible when implemented as C function callbacks; a better
approach would be to use an XML parser interface which is not based
on callbacks.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="api.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ref.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. The neon C language interface </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> neon API reference</td></tr></table></div></body></html>

View File

@ -0,0 +1,53 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_ADD_REQUEST_HEA" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_add_request_header, ne_print_request_header \- add headers to a request
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_request\&.h>
.sp
.HP 28
void\ \fBne_add_request_header\fR\ (ne_request\ *\fIrequest\fR, const\ char\ *\fIname\fR, const\ char\ *\fIvalue\fR);
.HP 30
void\ \fBne_print_request_header\fR\ (ne_request\ *\fIrequest\fR, const\ char\ *\fIname\fR, const\ char\ *\fIformat\fR, \&.\&.\&.);
.ad
.hy
.SH "DESCRIPTION"
.PP
The functions \fBne_add_request_header\fR and \fBne_print_request_header\fR can be used to add headers to a request, before it is sent\&.
.PP
\fBne_add_request_header\fR simply adds a header of given \fIname\fR, with given \fIvalue\fR\&.
.PP
\fBne_print_request_header\fR adds a header of given \fIname\fR, taking the value from the \fBprintf\fR\-like \fIformat\fR string parameter and subsequent variable\-length argument list\&.
.SH "SEE ALSO"
.PP
\fBne_request_create\fR(3)
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1 @@
.so man3/ne_addr_resolve.3

View File

@ -0,0 +1 @@
.so man3/ne_addr_resolve.3

View File

@ -0,0 +1 @@
.so man3/ne_addr_resolve.3

View File

@ -0,0 +1 @@
.so man3/ne_addr_resolve.3

View File

@ -0,0 +1,97 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_ADDR_RESOLVE" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_addr_resolve, ne_addr_result, ne_addr_first, ne_addr_next, ne_addr_error, ne_addr_destroy \- functions to resolve hostnames to addresses
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_socket\&.h>
.sp
.HP 31
ne_sock_addr\ *\fBne_addr_resolve\fR\ (const\ char\ *\fIhostname\fR, int\ \fIflags\fR);
.HP 20
int\ \fBne_addr_result\fR\ (const\ ne_sock_addr\ *\fIaddr\fR);
.HP 36
const\ ne_inet_addr\ *\fBne_addr_first\fR\ (ne_sock_addr\ *\fIaddr\fR);
.HP 35
const\ ne_inet_addr\ *\fBne_addr_next\fR\ (ne_sock_addr\ *\fIaddr\fR);
.HP 21
char\ *\fBne_addr_error\fR\ (const\ ne_sock_addr\ *\fIaddr\fR, char\ *\fIbuffer\fR, size_t\ \fIbufsiz\fR);
.HP 22
void\ \fBne_addr_destroy\fR\ (ne_sock_addr\ *\fIaddr\fR);
.ad
.hy
.SH "DESCRIPTION"
.PP
The \fBne_addr_resolve\fR function resolves the given \fIhostname\fR, returning an \fBne_sock_addr\fR object representing the address (or addresses) associated with the hostname\&. The \fIflags\fR parameter is currently unused, and must be passed as 0\&.
.PP
The \fIhostname\fR passed to \fBne_addr_resolve\fR can be a DNS hostname (e\&.g\&. "www\&.example\&.com") or an IPv4 dotted quad (e\&.g\&. "192\&.0\&.34\&.72"); or, on systems which support IPv6, an IPv6 hex address, which may be enclosed in brackets, e\&.g\&. "[::1]"\&.
.PP
To determine whether the hostname was successfully resolved, the \fBne_addr_result\fR function is used, which returns non\-zero if an error occurred\&. If an error did occur, the \fBne_addr_error\fR function can be used, which will copy the error string into a given \fIbuffer\fR (of size \fIbufsiz\fR)\&.
.PP
The functions \fBne_addr_first\fR and \fBne_addr_next\fR are used to retrieve the Internet addresses associated with an address object which has been successfully resolved\&. \fBne_addr_first\fR returns the first address; \fBne_addr_next\fR returns the next address after the most recent call to \fBne_addr_next\fR or \fBne_addr_first\fR, or NULL if there are no more addresses\&. The \fBne_inet_addr\fR pointer returned by these functions can be passed to \fBne_sock_connect\fR to connect a socket\&.
.PP
After the address object has been used, it should be destroyed using \fBne_addr_destroy\fR\&.
.SH "RETURN VALUE"
.PP
\fBne_addr_resolve\fR returns a pointer to an address object, and never NULL\&. \fBne_addr_error\fR returns the \fIbuffer\fR parameter \&.
.SH "EXAMPLES"
.PP
The code below prints out the set of addresses associated with the hostname www\&.google\&.com\&.
.nf
ne_sock_addr *addr;
char buf[256];
addr = ne_addr_resolve("www\&.google\&.com", 0);
if (ne_addr_result(addr)) {
printf("Could not resolve www\&.google\&.com: %s\\n",
ne_addr_error(addr, buf, sizeof buf));
} else {
const ne_inet_addr *ia;
printf("www\&.google\&.com:");
for (ia = ne_addr_first(addr); ia != NULL; ia = ne_addr_next(addr)) {
printf(" %s", ne_iaddr_print(ia, buf, sizeof buf));
}
putchar('\\n');
}
ne_addr_destroy(addr);
.fi
.SH "SEE ALSO"
.PP
\fBne_iaddr_print\fR(3)
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1 @@
.so man3/ne_addr_resolve.3

50
neon/doc/man/ne_buffer.3 Normal file
View File

@ -0,0 +1,50 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_BUFFER" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_buffer \- string buffer handling
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_string\&.h>
typedef struct {
char *data;
size_t used;
size_t length;
} \fBne_buffer\fR;
.sp
.ad
.hy
.SH "DESCRIPTION"
.PP
The \fBne_buffer\fR type represents an expandable memory buffer for holding NUL\-terminated strings\&. The data field points to the beginnning of the string, the length of which is given by the used field\&. The current size of memory allocated is given by the length field\&. It is not recommended that the fields of a buffer are manipulated directly\&. The data pointer may change when the buffer is modified\&.
.PP
A buffer is created using \fBne_buffer_create\fR(3) or \fBne_buffer_ncreate\fR(3), and destroyed using \fBne_buffer_destroy\fR(3) or \fBne_buffer_finish\fR(3)\&. The functions \fBne_buffer_append\fR(3), \fBne_buffer_zappend\fR(3) and \fBne_buffer_concat\fR(3) are used to append data to a buffer\&.
.PP
If the string referenced by the data pointer is modified directly (rather than using one of the functions listed above), \fBne_buffer_altered\fR must be called\&.
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1 @@
.so man3/ne_buffer_clear.3

View File

@ -0,0 +1,65 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_BUFFER_APPEND" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_buffer_append, ne_buffer_zappend, ne_buffer_concat \- append data to a string buffer
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_string\&.h>
.sp
.HP 23
void\ \fBne_buffer_append\fR\ (ne_buffer\ *\fIbuf\fR, const\ char\ *\fIstring\fR, size_t\ \fIlen\fR);
.HP 24
void\ \fBne_buffer_zappend\fR\ (ne_buffer\ *\fIbuf\fR, const\ char\ *\fIstring\fR);
.HP 23
void\ \fBne_buffer_concat\fR\ (ne_buffer\ *\fIbuf\fR, const\ char\ *\fIstr\fR, \&.\&.\&.);
.ad
.hy
.SH "DESCRIPTION"
.PP
The \fBne_buffer_append\fR and \fBne_buffer_zappend\fR functions append a string to the end of a buffer; extending the buffer as necessary\&. The \fIlen\fR passed to \fBne_buffer_append\fR specifies the length of the string to append; there must be no NUL terminator in the first \fIlen\fR bytes of the string\&. \fBne_buffer_zappend\fR must be passed a NUL\-terminated string\&.
.PP
The \fBne_buffer_concat\fR function takes a variable\-length argument list following \fIstr\fR; each argument must be a \fBchar *\fR pointer to a NUL\-terminated string\&. A NULL pointer must be given as the last argument to mark the end of the list\&. The strings (including \fIstr\fR) are appended to the buffer in the order given\&. None of the strings passed to \fBne_buffer_concat\fR are modified\&.
.SH "EXAMPLES"
.PP
The following code will output "Hello, world\&. And goodbye\&."\&.
.nf
ne_buffer *buf = ne_buffer_create();
ne_buffer_zappend(buf, "Hello");
ne_buffer_concat(buf, ", world\&. ", "And ", "goodbye\&.", NULL);
puts(buf\->data);
ne_buffer_destroy(buf);
.fi
.SH "SEE ALSO"
.PP
\fBne_buffer\fR(3), \fBne_buffer_create\fR(3), \fBne_buffer_destroy\fR(3)
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1,50 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_BUFFER_CLEAR" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_buffer_clear, ne_buffer_grow, ne_buffer_altered \- general purpose of group of functions
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_string\&.h>
.sp
.HP 22
void\ \fBne_buffer_clear\fR\ (ne_buffer\ *\fIbuf\fR);
.HP 24
void\ \fBne_buffer_altered\fR\ (ne_buffer\ *\fIbuf\fR);
.HP 21
void\ \fBne_buffer_grow\fR\ (ne_buffer\ *\fIbuf\fR, size_t\ \fIsize\fR);
.ad
.hy
.SH "DESCRIPTION"
.PP
The \fBne_buffer_clear\fR function sets the string stored in \fIbuf\fR to be the empty string ("")\&.
.PP
The \fBne_buffer_altered\fR function must be used after the string stored in the buffer \fIbuf\fR is modified by directly rather than using \fBne_buffer_append\fR(3), \fBne_buffer_zappend\fR(3) or \fBne_buffer_concat\fR(3)\&.
.PP
The \fBne_buffer_grow\fR function ensures that at least \fIsize\fR bytes are allocated for the string; this can be used if a large amount of data is going to be appended to the buffer and may result in more efficient memory allocation\&.
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1 @@
.so man3/ne_buffer_append.3

View File

@ -0,0 +1,52 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_BUFFER_CREATE" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_buffer_create, ne_buffer_ncreate \- general purpose of group of functions
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_alloc\&.h>
.sp
.HP 29
ne_buffer\ *\fBne_buffer_create\fR\ (void);
.HP 30
ne_buffer\ *\fBne_buffer_ncreate\fR\ (size_t\ \fIsize\fR);
.ad
.hy
.SH "DESCRIPTION"
.PP
\fBne_buffer_create\fR creates a new buffer object, with an implementation\-defined initial size\&. \fBne_buffer_ncreate\fR creates an \fBne_buffer\fR where the minimum initial size is given in the \fIsize\fR parameter\&. The buffer created will contain the empty string ("")\&.
.SH "RETURN VALUE"
.PP
Both functions return a pointer to a new buffer object, and never NULL\&.
.SH "SEE ALSO"
.PP
\fBne_buffer\fR(3)
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1,71 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_BUFFER_DESTROY" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_buffer_destroy, ne_buffer_finish \- destroy a buffer object
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_string\&.h>
.sp
.HP 24
void\ \fBne_buffer_destroy\fR\ (ne_buffer\ *\fIbuf\fR);
.HP 24
char\ *\fBne_buffer_finish\fR\ (ne_buffer\ *\fIbuf\fR);
.ad
.hy
.SH "DESCRIPTION"
.PP
\fBne_buffer_destroy\fR frees all memory associated with the buffer\&. \fBne_buffer_finish\fR frees the buffer structure, but not the actual string stored in the buffer, which is returned and must be \fBfree\fR()d by the caller\&.
.PP
Any use of the buffer object after calling either of these functions gives undefined behaviour\&.
.SH "RETURN VALUE"
.PP
\fBne_buffer_finish\fR returns the \fBmalloc\fR\-allocated string stored in the buffer\&.
.SH "EXAMPLES"
.PP
An example use of \fBne_buffer_finish\fR; the \fBduplicate\fR function returns a string made up of \fIn\fR copies of \fIstr\fR:
.nf
static char *duplicate(int n, const char *str)
{
ne_buffer *buf = ne_buffer_create();
while (n\-\-) {
ne_buffer_zappend(buf, str);
}
return ne_buffer_finish(buf);
}
.fi
.SH "SEE ALSO"
.PP
\fBne_buffer\fR(3), \fBne_buffer_create\fR(3), \fBne_buffer_zappend\fR(3)
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1 @@
.so man3/ne_buffer_destroy.3

View File

@ -0,0 +1 @@
.so man3/ne_buffer_clear.3

View File

@ -0,0 +1 @@
.so man3/ne_buffer_create.3

View File

@ -0,0 +1 @@
.so man3/ne_buffer_append.3

1
neon/doc/man/ne_calloc.3 Normal file
View File

@ -0,0 +1 @@
.so man3/ne_malloc.3

View File

@ -0,0 +1 @@
.so man3/ne_session_create.3

View File

@ -0,0 +1 @@
.so man3/ne_set_server_auth.3

View File

@ -0,0 +1,68 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_GET_ERROR" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_get_error, ne_set_error \- error handling for HTTP sessions
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_session\&.h>
.sp
.HP 27
const\ char\ *\fBne_get_error\fR\ (ne_sesssion\ *\fIsession\fR);
.HP 19
void\ \fBne_set_error\fR\ (ne_sesssion\ *\fIsession\fR, const\ char\ *\fIformat\fR, \&.\&.\&.);
.ad
.hy
.SH "DESCRIPTION"
.PP
The session error string is used to store any human\-readable error information associated with any errors which occur whilst using the HTTP session\&.
.PP
The \fBne_get_error\fR function returns the current session error string\&. This string persists only until it is changed by a subsequent operation on the session\&.
.PP
The \fBne_set_error\fR function can be used to set a new session error string, using a \fBprintf\fR\-style format string interface\&.
.SH "EXAMPLES"
.PP
Retrieve the current error string:
.nf
ne_session *sess = ne_session_create(\&.\&.\&.);
\&.\&.\&.
printf("Error was: %s\\n", ne_get_error(sess));
.fi
.PP
Set a new error string:
.nf
ne_session *sess = ne_session_create(\&.\&.\&.);
\&.\&.\&.
ne_set_error(sess, "Response missing header %s", "somestring");
.fi
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1,59 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_GET_STATUS" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_get_status \- retrieve HTTP response status for request
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_request\&.h>
.sp
.HP 33
const\ ne_status\ *\fBne_get_status\fR\ (const\ ne_request\ *\fIrequest\fR);
.ad
.hy
.SH "DESCRIPTION"
.PP
The \fBne_get_status\fR function returns a pointer to the HTTP status object giving the result of a request\&. The object returned only becomes valid once the request has been successfully dispatched (the return value of \fBne_request_dispatch\fR or \fBne_begin_request\fR was zero)\&. The object remains valid until the associated request object is destroyed\&.
.SH "SEE ALSO"
.PP
\fBne_status\fR(3), \fBne_request_create\fR(3)
.SH "EXAMPLE"
.PP
Display the response status code of applying the HEAD method to some resource\&.
.nf
ne_request *req = ne_request_create(sess, "HEAD", "/foo/bar");
if (ne_request_dispatch(req))
/* handle errors\&.\&.\&. */
else
printf("Response status code was %d\\n", ne_get_status(req)\->code);
ne_request_destroy(req);
.fi
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1 @@
.so man3/ne_iaddr_make.3

View File

@ -0,0 +1 @@
.so man3/ne_iaddr_make.3

View File

@ -0,0 +1,92 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_IADDR_MAKE" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_print, ne_iaddr_free \- functions to manipulate and compare network addresses
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_socket\&.h>
typedef enum {
ne_iaddr_ipv4 = 0,
ne_iaddr_ipv6
} \fBne_iaddr_type\fR;
.sp
.HP 29
ne_inet_addr\ *\fBne_iaddr_make\fR\ (ne_iaddr_type\ \fItype\fR, const\ unsigned\ char\ *\fIraw\fR);
.HP 18
int\ \fBne_iaddr_cmp\fR\ (const\ ne_inet_addr\ *\fIi1\fR, const\ ne_inet_addr\ *\fIi2\fR);
.HP 22
char\ *\fBne_iaddr_print\fR\ (const\ ne_inet_addr\ *\fIia\fR, char\ *\fIbuffer\fR, size_t\ \fIbufsiz\fR);
.HP 20
void\ \fBne_iaddr_free\fR\ (const\ ne_inet_addr\ *\fIaddr\fR);
.ad
.hy
.SH "DESCRIPTION"
.PP
\fBne_iaddr_make\fR creates an \fBne_inet_addr\fR object from a raw binary network address; for instance the four bytes 0x7f 0x00 0x00 0x01 represent the IPv4 address 127\&.0\&.0\&.1\&. The object returned is suitable for passing to \fBne_sock_connect\fR\&. A binary IPv4 address contains four bytes; a binary IPv6 address contains sixteen bytes; addresses passed must be in network byte order\&.
.PP
\fBne_iaddr_cmp\fR can be used to compare two network addresses; returning zero only if they are identical\&. The addresses need not be of the same address type; if the addresses are not of the same type, the return value is guaranteed to be non\-zero\&.
.PP
\fBne_iaddr_print\fR can be used to print the human\-readable string representation of a network address into a buffer, for instance the string "127\&.0\&.0\&.1"\&.
.PP
\fBne_iaddr_free\fR releases the memory associated with a network address object\&.
.SH "RETURN VALUE"
.PP
\fBne_iaddr_make\fR returns NULL if the address type passed is not supported (for instance on a platform which does not support IPv6)\&.
.PP
\fBne_iaddr_print\fR returns the \fIbuffer\fR pointer, and never NULL\&.
.SH "EXAMPLES"
.PP
The following example connects a socket to port 80 at the address 127\&.0\&.0\&.1\&.
.nf
unsigned char addr[] = "\\0x7f\\0x00\\0x00\\0x01";
ne_inet_addr *ia;
ia = ne_iaddr_make(ne_iaddr_ipv4, addr);
if (ia != NULL) {
ne_socket *sock = ne_sock_connect(ia, 80);
ne_iaddr_free(ia);
/* \&.\&.\&. */
} else {
/* \&.\&.\&. */
}
.fi
.SH "SEE ALSO"
.PP
\fBne_addr_resolve\fR(3)
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1 @@
.so man3/ne_iaddr_make.3

58
neon/doc/man/ne_malloc.3 Normal file
View File

@ -0,0 +1,58 @@
.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "NE_MALLOC" 3 "5 July 2004" "neon 0.24.7" "neon API reference"
.SH NAME
ne_malloc, ne_calloc, ne_realloc, ne_strdup, ne_strndup, ne_oom_callback \- memory allocation wrappers
.SH "SYNOPSIS"
.ad l
.hy 0
#include <ne_alloc\&.h>
.sp
.HP 17
void\ *\fBne_malloc\fR\ (size_t\ \fIsize\fR);
.HP 17
void\ *\fBne_calloc\fR\ (size_t\ \fIsize\fR);
.HP 18
void\ *\fBne_realloc\fR\ (void\ *\fIsize\fR, size_t\ \fIlen\fR);
.HP 17
char\ *\fBne_strdup\fR\ (const\ char\ *\fIs\fR, size_t\ \fIsize\fR);
.HP 18
char\ *\fBne_strndup\fR\ (const\ char\ *\fIs\fR, size_t\ \fIsize\fR);
.HP 22
void\ \fBne_oom_callback\fR\ (void\ (*\fIcallback\fR)(void));
.ad
.hy
.SH "DESCRIPTION"
.PP
The functions \fBne_malloc\fR, \fBne_calloc\fR, \fBne_realloc\fR, \fBne_strdup\fR and \fBne_strdnup\fR provide wrappers for the equivalent functions in the standard C library\&. The wrappers provide the extra guarantee that if the C library equivalent returns NULL when no memory is available, an optional callback will be called, and the library will then call \fBabort\fR()\&.
.PP
\fBne_oom_callback\fR registers a callback which will be invoked if an out of memory error is detected\&.
.SH "NOTES"
.PP
If the operating system uses optimistic memory allocation, the C library memory allocation routines will not return NULL, so it is not possible to gracefully handle memory allocation failures\&.
.SH AUTHOR
Joe Orton <neon@webdav\&.org>.

View File

@ -0,0 +1 @@
.so man3/ne_malloc.3

View File

@ -0,0 +1 @@
.so man3/ne_add_request_header.3

1
neon/doc/man/ne_qtoken.3 Normal file
View File

@ -0,0 +1 @@
.so man3/ne_token.3

View File

@ -0,0 +1 @@
.so man3/ne_malloc.3

Some files were not shown because too many files have changed in this diff Show More