Update to 0.24.7.
CVS patchset: 7522 CVS date: 2004/10/29 13:34:35
This commit is contained in:
parent
0189ffbf59
commit
e603ae4198
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.23.7
|
||||
0.24.7
|
||||
|
|
29
neon/BUGS
29
neon/BUGS
|
@ -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.
|
||||
|
|
669
neon/ChangeLog
669
neon/ChangeLog
|
@ -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.
|
||||
|
|
186
neon/Makefile.in
186
neon/Makefile.in
|
@ -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
934
neon/NEWS
|
@ -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. "&") 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.
|
||||
|
|
44
neon/THANKS
44
neon/THANKS
|
@ -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
160
neon/TODO
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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—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—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>
|
|
@ -0,0 +1 @@
|
|||
5 July 2004
|
|
@ -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:
|
||||
-->
|
|
@ -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>
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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—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—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>
|
|
@ -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—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—HTTP/1.1</h3></div></div><div></div></div><p>There is some confusion in this specification about the
|
||||
use of the “<span class="quote">identity</span>”
|
||||
<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
|
||||
“<span class="quote">chunked</span>” 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—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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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"><<a href="mailto:neon@webdav.org">neon@webdav.org</a>></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—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#id3018315">RFC 2616, Hypertext Transfer Protocol—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>
|
|
@ -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—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#id3018315">RFC 2616, Hypertext Transfer Protocol—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>
|
|
@ -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>
|
|
@ -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 — memory allocation wrappers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_alloc.h></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>
|
|
@ -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 — register authentication callbacks</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_auth.h></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>
|
|
@ -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 — string buffer handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h>
|
||||
|
||||
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>
|
|
@ -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 — append data to a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></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->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>
|
|
@ -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 — general purpose of group of functions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_alloc.h></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>
|
|
@ -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 — destroy a buffer object</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></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>
|
|
@ -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 — general purpose of group of functions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></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>
|
|
@ -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 — functions to access certificate properties</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></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 “<span class="quote">identity</span>” 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
|
||||
“<span class="quote">identity</span>”. <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>
|
|
@ -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 — SSL client certificate handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></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>
|
|
@ -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 — 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>
|
|
@ -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 — error handling for HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></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>
|
|
@ -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 — retrieve HTTP response status for request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></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)->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>
|
|
@ -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 — functions to manipulate and compare network addresses</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h>
|
||||
|
||||
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>
|
|
@ -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 — 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>
|
|
@ -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 — common settings for HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></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>
|
|
@ -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 — low-level HTTP request handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></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>
|
|
@ -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 — include a message body with a request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></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>
|
|
@ -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 — add headers to a request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></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>
|
|
@ -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 — functions to resolve hostnames to addresses</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h></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>
|
|
@ -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 — set up HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></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>
|
|
@ -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 — trim whitespace from a string</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></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>
|
|
@ -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 — perform library initialization</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h></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>
|
|
@ -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 — functions to indicate that certificates are trusted</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></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>
|
|
@ -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 — functions to operate on certificate objects</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_header.h></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>
|
|
@ -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 — 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 <ne_ssl.h></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>
|
|
@ -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 — SSL distinguished name handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></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>
|
|
@ -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 — register an SSL certificate verification callback</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></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 “<span class="quote">secure</span>”.</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 & 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 & 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>
|
|
@ -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 — HTTP status structure</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h>
|
||||
|
||||
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 “<span class="quote">klass</span>” not
|
||||
“<span class="quote">class</span>” so that the header can be used from a C++
|
||||
program, in which “<span class="quote">class</span>” 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>
|
|
@ -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 — string tokenizers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></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(&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>
|
|
@ -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 — library versioning</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h></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>
|
|
@ -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>
|
|
@ -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">
|
||||
<hello>world</hello>
|
||||
</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 “<span class="quote">event</span>” 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">
|
||||
<cat>
|
||||
<age>3</age>
|
||||
<name>Bob</name>
|
||||
</cat>
|
||||
</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" → <span class="emphasis"><em>accept</em></span></li><li>A <span class="emphasis"><em>start-element</em></span> "age" → <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" → <span class="emphasis"><em>decline</em></span></li><li>B <span class="emphasis"><em>start-element</em></span> "name" → <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, “An example XML document”</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") →
|
||||
<span class="emphasis"><em>accept</em></span>, state = 42
|
||||
</li><li>A <span class="emphasis"><em>start-element</em></span> (parent = 42, "age") →
|
||||
<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") →
|
||||
<span class="emphasis"><em>decline</em></span></li><li>B <span class="emphasis"><em>start-element</em></span> (parent = 42, "name") →
|
||||
<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
|
||||
“<span class="quote">problem</span>” 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>
|
|
@ -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>.
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_addr_resolve.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_addr_resolve.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_addr_resolve.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_addr_resolve.3
|
|
@ -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>.
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_addr_resolve.3
|
|
@ -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>.
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_buffer_clear.3
|
|
@ -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>.
|
|
@ -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>.
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_buffer_append.3
|
|
@ -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>.
|
|
@ -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>.
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_buffer_destroy.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_buffer_clear.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_buffer_create.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_buffer_append.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_malloc.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_session_create.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_set_server_auth.3
|
|
@ -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>.
|
|
@ -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>.
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_iaddr_make.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_iaddr_make.3
|
|
@ -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>.
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_iaddr_make.3
|
|
@ -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>.
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_malloc.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_add_request_header.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_token.3
|
|
@ -0,0 +1 @@
|
|||
.so man3/ne_malloc.3
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue