Request 1573 (accepted)
dropped -docs package because of broken build provess
Submit package sailfishos:chum:testing / neon (revision 3) to package sailfishos:chum / neon
[-] [+] | Changed | libneon.spec |
[-] [+] | Added | libneon-xmlto.patch ^ |
@@ -0,0 +1,13 @@ +diff --git a/Makefile.in b/Makefile.in +index 6272892..373b93a 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -45,7 +45,7 @@ INSTALL = @INSTALL@ + transform = @program_transform_name@ + + LIBTOOL = @LIBTOOL@ +-XMLTO = xmlto ++XMLTO = xmlto --skip-validation + GCOV = gcov + XGETTEXT_OPTS = --keyword=_ --keyword=N_ --msgid-bugs-address=neon@lists.manyfish.co.uk \ + --default-domain=neon --flag ne_print_request_header:3:c-format \ | ||
[-] [+] | Changed | libneon.yaml ^ |
@@ -1,15 +1,19 @@ Name: libneon Summary: HTTP and WebDAV client library -Version: 0.31.2 -Group: Libraries +Version: 0.32.1 +Group: Applications/Internet License: GPLv2 URL: 'https://notroj.github.io/neon' Sources: - 'https://notroj.github.io/neon/neon-%{version}.tar.gz' +#Patches: +# - 'libneon-xmlto.patch' #Requires: # - ^^^ + #PkgBR: -# - ^^^ +# # needed for -docs but doesn't work in this version on OBS +# - xmlto PkgConfigBR: - zlib - openssl @@ -23,18 +27,20 @@ - '--with-libproxy' - '--with-libxml2' - '--with-zlib' +# it is make but we want to do it custom so we don't need docs +Builder: none Files: - '%{_libdir}/*.so.*' AutoSubPackages: - devel -SubPackages: - - Name: doc - Summary: Documentation for %{name} - Group: Documentation - BuildArch: noarch - AutoDepend: false - Files: - - '%{_mandir}/*/*' - - '%{_docdir}/*' +#SubPackages: +# - Name: doc +# Summary: Documentation for %{name} +# Group: Documentation +# BuildArch: noarch +# AutoDepend: false +# Files: +# - '%{_mandir}/*/*' +# - '%{_docdir}/*' | ||
[-] [+] | Deleted | neon-0.31.2.tar.gz/ChangeLog.CVS ^ |
@@ -1,737 +0,0 @@ -Mon May 17 21:25:44 2004 Joe Orton <joe@manyfish.co.uk> - - * neon.mak: Fix for 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. - -Sun Feb 22 20:29:04 2004 Joe Orton <joe@manyfish.co.uk> - - * configure.in: Move memleak.h include to end of config.h. - -Sun Feb 22 18:44:55 2004 Joe Orton <joe@manyfish.co.uk> - - * configure.in: Fix to run DAV tests when an XML parser is - configured. - -Sat Jan 24 17:50:52 2004 Joe Orton <joe@manyfish.co.uk> - - * configure.in: AC_DEFINE _GNU_SOURCE again so that it's used - during compiler checks. - -Sat Jan 24 17:33:54 2004 Joe Orton <joe@manyfish.co.uk> - - * configure.in: Cleanup; move all AC_SUBSTs together; use a single - AH_TOP for config.h.in header; require autoconf 2.58. - -Thu Jan 1 17:40:34 2004 Joe Orton <joe@manyfish.co.uk> - - * neon-config.in: Handle 'lfs' feature. - -Sat Nov 15 09:42:40 2003 Joe Orton <joe@manyfish.co.uk> - - * neon-config.in: Print help output on stderr for unknown arguments. - (usage): Update help output for new NE_FLAG_ substitutions. - -Sat Nov 15 09:24:49 2003 Joe Orton <joe@manyfish.co.uk> - - * configure.in: Update for use latest autoconf best-practice: - s/AC_HELP_STRING/AS_HELP_STRING. - -Fri Nov 14 11:28:24 2003 Joe Orton <joe@manyfish.co.uk> - - * configure.in, neon-config.in: Use new NE_FLAG substitutions - for feature detection. - -Fri Nov 14 09:08:10 2003 Joe Orton <joe@manyfish.co.uk> - - * configure.in: Add -export-symbols-regex to NEON_LINK_FLAGS to - prevent export of ne__ symbols where possible. - -Sun Oct 26 12:42:15 2003 Joe Orton <joe@manyfish.co.uk> - - * neon-config.in: Fix to exit with failure for an unrecognized - option. - -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) | ||
[-] [+] | Added | neon-0.32.1.tar.gz/.github ^ |
+(directory) | ||
[-] [+] | Added | neon-0.32.1.tar.gz/.github/ISSUE_TEMPLATE ^ |
+(directory) | ||
[-] [+] | Added | neon-0.32.1.tar.gz/.github/ISSUE_TEMPLATE/bug_report.md ^ |
@@ -0,0 +1,22 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is, what happened and what you expected to happen. + +**Environment** + - neon version: [e.g. 0.31.1] + - OS: [e.g. Ubuntu] + - SSL library version: [e.g. OpenSSL 1.1.1] + +**To Reproduce** +Please provide a minimal code snippet using the neon API to trigger the issue. + +**Debugging output** +Please include neon debugging output generated by e.g. `ne_debug_init(stderr, NE_DBG_HTTP);` | ||
[-] [+] | Added | neon-0.32.1.tar.gz/.github/workflows ^ |
+(directory) | ||
[-] [+] | Added | neon-0.32.1.tar.gz/.github/workflows/ci.yml ^ |
@@ -0,0 +1,27 @@ +name: Build and test + +on: [push] + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-18.04, ubuntu-20.04] + conf-shared: [--enable-static, --enable-shared ] + conf-xml: [--with-expat, --with-libxml2 ] + conf-ssl: [--without-ssl, --with-ssl=openssl, --with-ssl=gnutls] + conf-memleak: [--disable-memleak, --enable-memleak] + conf-debug: [--enable-debug, --disable-debug] + steps: + - uses: actions/checkout@v2 + - run: ./autogen.sh + - run: case ${{matrix.conf-ssl}} in + *gnutls) sudo apt-get update && sudo apt-get -y install libgnutls28-dev gnutls-bin xmlto ;; + esac + - run: ./configure ${{matrix.conf-shared}} ${{matrix.conf-xml}} + ${{matrix.conf-ssl}} ${{matrix.conf-memleak}} + ${{matrix.conf-debug}} + - run: make + - run: make check | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/.release.sh ^ |
@@ -29,6 +29,7 @@ tmp=`mktemp /tmp/neon-XXXXXX` sed -e 's,@SET_MAKE@,,;s,@SHELL@,/bin/sh,' \ -e "s,@top_srcdir@,`pwd`," \ + -e "s,@srcdir@,`pwd`," \ -e "s,@ALL_LINGUAS@,${ALL_LINGUAS}," \ < Makefile.in > $tmp make -f $tmp docs compile-gmo | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/.travis.yml ^ |
@@ -8,32 +8,16 @@ - libxml2-dev - libnss3-tools - libproxy-dev - - gnutls-bin - - libgnutls28-dev env: global: - MARGS="-j2 check" matrix: include: - - name: Static - compiler: gcc - env: CONF="--enable-static" - - name: Shared - compiler: gcc - env: CONF="--enable-shared" - name: Disable-all - compiler: gcc env: CONF="--without-libproxy --without-gssapi --without-zlib --disable-nls --disable-debug --disable-webdav" - - name: Memleak - compiler: gcc - env: CONF="--enable-memleak" - - name: Libxml2 - compiler: gcc - env: CONF="--with-libxml2" - name: Static UBSan w/OpenSSL env: CONF="--enable-static --with-ssl=openssl" CFLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined" LIBS=-lubsan NEON_LIBS=-lubsan - name: Static 32-bit w/OpenSSL - compiler: gcc env: CONF="--enable-static --with-ssl=openssl" CC='gcc -m32' addons: apt: @@ -43,41 +27,13 @@ - libexpat1-dev:i386 - libssl-dev:i386 - lib32z1-dev - - name: OpenSSL - compiler: gcc - env: CONF="--with-ssl=openssl" - name: OpenSSL on arm64 arch: arm64 env: CONF="--with-ssl=openssl" - name: OpenSSL on s390x arch: s390x env: CONF="--with-ssl=openssl" - - name: OpenSSL on trusty - dist: trusty - env: CONF="--with-ssl=openssl" - - name: OpenSSL on trusty, shared w/thread-safety - dist: trusty - env: CONF="--with-ssl=openssl --enable-shared --disable-static --enable-threadsafe-ssl=posix" - CC="gcc -pthread" - - name: OpenSSL on bionic - compiler: gcc - dist: bionic - env: CONF="--with-ssl=openssl" - - name: OpenSSL memleak - compiler: gcc - env: CONF="--with-ssl=openssl --enable-memleak" - - name: GnuTLS - env: CONF="--with-ssl=gnutls" - - name: GnuTLS on bionic - dist: bionic - env: CONF="--with-ssl=gnutls" - - name: GnuTLS on trusty - dist: trusty - env: CONF="--with-ssl=gnutls" - - name: GnuTLS memleak - env: CONF="--with-ssl=gnutls --enable-memleak" - name: Copyright check - compiler: gcc env: CONF="--without-libproxy --without-gssapi --without-zlib --disable-nls --disable-debug --disable-webdav" MARGS="update-copyright" allow_failures: # s390x builds currently flaky | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/.version ^ |
@@ -1 +1 @@ -0.31.2 +0.32.1 | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/ChangeLog ^ |
@@ -1,6 +1,6 @@ ------------------------------------------------------------------------ -r1590 | joe.orton | 2020-06-20 08:09:24 +0100 (Sat, 20 Jun 2020) | 2 lines +r1718 | joe.orton | 2021-09-20 20:17:44 +0100 (Mon, 20 Sep 2021) | 2 lines -Bump to 0.31.2. +Bump for 0.32.1. ------------------------------------------------------------------------ | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/Makefile.in ^ |
@@ -77,7 +77,7 @@ @cd test && $(MAKE) check @cd src && $(GCOV) -cb $(MODULE) -# as per 'cover' target; prints list of functions without 100% coverage +# as per 'cover' target; prints list of functions without 100% coverage uncover: subdirs @rm -f src/*.*da test/common/*.*da test/*.*da @cd test && $(MAKE) check @@ -93,23 +93,23 @@ docs: docs-man docs-html docs-man: - rm -rf doc/man; mkdir doc/man - $(XMLTO) -o `pwd`/doc/man -x doc/man.xsl man doc/manual.xml + rm -rf doc/man; mkdir -p doc/man + $(XMLTO) -o `pwd`/doc/man -x $(srcdir)/doc/man.xsl man $(srcdir)/doc/manual.xml docs-pdf: - $(XMLTO) -o `pwd`/doc pdf doc/manual.xml + $(XMLTO) -o `pwd`/doc pdf $(srcdir)/doc/manual.xml docs-ps: - $(XMLTO) -o `pwd`/doc ps doc/manual.xml + $(XMLTO) -o `pwd`/doc ps $(srcdir)/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 + mkdir -p doc/html + $(XMLTO) -o `pwd`/doc/html -x $(srcdir)/doc/html.xsl html $(srcdir)/doc/manual.xml # Validate the manual source docs-valid: - xmllint --noout --valid doc/manual.xml + xmllint --noout --valid $(srcdir)/doc/manual.xml clean: @cd src && $(MAKE) clean @@ -128,18 +128,18 @@ install-docs: install-man install-html -install-html: +install-html: docs-html $(INSTALL) -d $(DESTDIR)$(docdir)/html - for d in $(srcdir)/doc/html/*.html; do \ + for d in doc/html/*.html; do \ $(INSTALL_DATA) $$d $(DESTDIR)$(docdir)/html; \ done -install-man: +install-man: docs-man $(INSTALL) -d $(DESTDIR)$(man3dir) $(INSTALL) -d $(DESTDIR)$(man1dir) - for m in $(srcdir)/doc/man/*.3; do \ + for m in doc/man/*.3; do \ $(INSTALL_DATA) $$m $(DESTDIR)$(man3dir); done - for m in $(srcdir)/doc/man/*.1; do \ + for m in doc/man/*.1; do \ $(INSTALL_DATA) $$m $(DESTDIR)$(man1dir); done install: install-@ALLOW_INSTALL@ @@ -218,4 +218,3 @@ @for f in `nm src/.libs/libneon.so | grep ' T ' | colrm 1 11`; do \ test -f doc/man/$$f.3 || echo -n " $$f"; \ done; echo - | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/NEWS ^ |
@@ -1,3 +1,40 @@ +Changes in release 0.32.1: +* Fix configure CFLAGS handling in Kerberos detection. +* Various spelling fixes. + +Changes in release 0.32.0: +* Interface changes: + - API and ABI backwards-compatible with 0.27.x and later + - NE_AUTH_DIGEST now only enables RFC 2617/7616 auth by default; + to enable weaker RFC 2069 Digest, use NE_AUTH_LEGACY_DIGEST + (treated as a security enhancement, not an API/ABI break) +* Interface clarifications: + - ne_auth.h: use of non-ASCII usernames with the ne_auth_creds + callback type is now rejected for Digest auth since the + encoding is not specified. ne_add_auth() can be used instead. + - ne_request.h: the ne_create_request_fn callback is passed the + request-target using RFC 7230 terminology +* New interfaces and features: + - ne_string.h: added ne_strhash(), ne_vstrhash(), ne_strparam() + - ne_auth.h: added RFC 7616 (Digest authentication) support, + including userhash=, username*= and SHA-2 algorithms + (SHA-2 requires GnuTLS/OpenSSL). added NE_AUTH_LEGACY_DIGEST + - ne_auth.h: added ne_add_auth() unified auth callback interface, + accepts (only) UTF-8 usernames, uses a larger password buffer, + and has different/improved attempt counter semantics. + - RFC 7617 scoping rules are now applied for Basic authentication. + - ne_ssl.h: added ne_ssl_cert_hdigest() + - ne_socket.h: added ne_sock_shutdown() + - sendmsg()/send() are used with the MSG_NOSIGNAL flag to write to + sockets on Unix, rather than write()/writev(), avoiding SIGPIPE + - explicit_bzero() is used where available to clear credentials +* Bug fixes: + - fixed TLS connection shutdown handling for OpenSSL 3 + - fix various Coverity and cppcheck warnings (Sebastian Reschke) + - Kerberos library detection uses pkg-config where possible. + - fix some configure checks on Win32 (Christopher Degawa) + - fix some configure errors on MacOS (Ryan Schmidt) + Changes in release 0.31.2: * Fix ne_md5_read_ctx() with OpenSSL on big-endian architectures. * Fix GCC 10 warning in PKCS#11 build. | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/README.md ^ |
@@ -1,5 +1,6 @@ -[![Travis CI Build Status](https://travis-ci.org/notroj/neon.svg?branch=0.31.x)](https://travis-ci.org/notroj/neon) +[![Travis CI Build Status](https://travis-ci.com/notroj/neon.svg?branch=master)](https://travis-ci.com/github/notroj/neon) +[![Build and test](https://github.com/notroj/neon/actions/workflows/ci.yml/badge.svg)](https://github.com/notroj/neon/actions/workflows/ci.yml) # neon @@ -16,17 +17,18 @@ - Low-level interface to HTTP request handling, to allow implementing new methods easily. - Persistent connection support (HTTP/1.1 and HTTP/1.0 aware) - - Basic and digest authentication (RFC2617) (including auth-int, md5-sess) - - Proxy support (including basic/digest authentication) - - SSL/TLS support using OpenSSL (including client certificate support) + - Basic and Digest authentication (RFC 7616/7617, including SHA-2, userhash) + - Kerberos (Negotiate) and SSPI/NTLM authentication (Unix and Windows) + - HTTP and SOCKS (v4/5) proxy support (including authentication) + - SSL/TLS support using OpenSSL or GnuTLS (client certs via files or PKCS#11) - Generic WebDAV 207 XML response handling mechanism - - XML parsing using expat or libxml (1.x or 2.x) parser + - XML parsing using expat or libxml2 - Easy generation of error messages from 207 error responses - Basic HTTP/1.1 methods: GET, PUT, HEAD, OPTIONS, conditional PUT - WebDAV resource manipulation: MOVE, COPY, DELETE, MKCOL. - WebDAV metadata support: set and remove properties (PROPPATCH), query any set of properties (PROPFIND). - - WebDAV locking support + - WebDAV locking and ACL (RFC 3744) support - Autoconf macros supplied for easily embedding neon directly inside an application source tree. @@ -41,7 +43,7 @@ restrictive license, see each file for details. ~~~ -neon is Copyright (C) 1999-2008 Joe Orton +neon is Copyright (C) 1999-2021 Joe Orton Portions are: Copyright (C) Aleix Conchillo Flaque Copyright (C) Arfrever Frehtes Taifersar Arahesis | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/aclocal.m4 ^ |
@@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- +# generated automatically by aclocal 1.16.2 -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9046,7 +9046,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9077,7 +9077,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# Copyright (C) 2006-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/autogen.sh ^ |
@@ -8,21 +8,21 @@ 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 + echo 0.0.0-dev > doc/version.xml fi set -e -echo -n "libtoolize... " -LIBTOOLIZE=${LIBTOOLIZE:-libtoolize} +printf "libtoolize... " +LIBTOOLIZE=${LIBTOOLIZE:-`which libtoolize || which glibtoolize`} if ${LIBTOOLIZE} --help | grep -- --install > /dev/null; then ${LIBTOOLIZE} --copy --force --install >/dev/null; else ${LIBTOOLIZE} --copy --force >/dev/null fi -echo -n "aclocal... " +printf "aclocal... " ${ACLOCAL:-aclocal} -I macros -echo -n "autoheader... " +printf "autoheader... " ${AUTOHEADER:-autoheader} -echo -n "autoconf... " +printf "autoconf... " ${AUTOCONF:-autoconf} -Wall echo okay. # remove the autoconf cache | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/config.h.in ^ |
@@ -42,6 +42,9 @@ /* Define if you have expat */ #undef HAVE_EXPAT +/* Define to 1 if you have the `explicit_bzero' function. */ +#undef HAVE_EXPLICIT_BZERO + /* Define to 1 if you have the `fcntl' function. */ #undef HAVE_FCNTL @@ -166,6 +169,9 @@ /* Define if OpenSSL support is enabled */ #undef HAVE_OPENSSL +/* Enable OpenSSL 1.1 support */ +#undef HAVE_OPENSSL11 + /* Define to 1 if you have the <openssl/opensslv.h> header file. */ #undef HAVE_OPENSSL_OPENSSLV_H @@ -187,6 +193,9 @@ /* Define to 1 if you have the `pthread_mutex_lock' function. */ #undef HAVE_PTHREAD_MUTEX_LOCK +/* Define to 1 if you have the `sendmsg' function. */ +#undef HAVE_SENDMSG + /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/config.hw ^ |
@@ -25,9 +25,9 @@ #ifdef WIN32 -#define NEON_VERSION "0.31.2" +#define NEON_VERSION "0.32.1" #define NE_VERSION_MAJOR (0) -#define NE_VERSION_MINOR (31) +#define NE_VERSION_MINOR (32) #define HAVE_ERRNO_H #define HAVE_LIMITS_H | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/configure ^ |
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for neon 0.31.2. +# Generated by GNU Autoconf 2.69 for neon 0.32.1. # # Report bugs to <neon@lists.manyfish.co.uk>. # @@ -595,8 +595,8 @@ # Identity of this package. PACKAGE_NAME='neon' PACKAGE_TARNAME='neon' -PACKAGE_VERSION='0.31.2' -PACKAGE_STRING='neon 0.31.2' +PACKAGE_VERSION='0.32.1' +PACKAGE_STRING='neon 0.32.1' PACKAGE_BUGREPORT='neon@lists.manyfish.co.uk' PACKAGE_URL='' @@ -695,7 +695,7 @@ NEON_LIBS NEON_CFLAGS NE_FLAG_LIBPXY -KRB5_CONFIG +KRB5_CONF_TOOL NEON_SUPPORTS_SSL NE_FLAG_TS_SSL GNUTLS_CONFIG @@ -738,6 +738,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -835,6 +836,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1087,6 +1089,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1224,7 +1235,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1337,7 +1348,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures neon 0.31.2 to adapt to many kinds of systems. +\`configure' configures neon 0.32.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1377,6 +1388,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1402,7 +1414,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of neon 0.31.2:";; + short | recursive ) echo "Configuration of neon 0.32.1:";; esac cat <<\_ACEOF @@ -1530,7 +1542,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -neon configure 0.31.2 +neon configure 0.32.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2244,7 +2256,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by neon $as_me 0.31.2, which was +It was created by neon $as_me 0.32.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2789,12 +2801,12 @@ # Define the current versions. NE_VERSION_MAJOR=0 -NE_VERSION_MINOR=31 -NE_VERSION_PATCH=2 +NE_VERSION_MINOR=32 +NE_VERSION_PATCH=1 NE_VERSION_TAG= -# 0.31.x is backwards-compatible to 0.27.x, so AGE=4 -NE_LIBTOOL_VERSINFO="31:${NE_VERSION_PATCH}:4" +# 0.32.x is backwards-compatible to 0.27.x, so AGE=5 +NE_LIBTOOL_VERSINFO="32:${NE_VERSION_PATCH}:5" @@ -5451,7 +5463,8 @@ -for ac_func in signal setvbuf setsockopt stpcpy poll fcntl getsockopt +for ac_func in signal setvbuf setsockopt stpcpy poll fcntl getsockopt \ + explicit_bzero sendmsg do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -5500,13 +5513,33 @@ $as_echo_n "(cached) " >&6 else -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + case $ne_cv_os_uname in + MINGW*) + ;; + *) + case socket in + getaddrinfo) + ne__prologue="#include <netdb.h>" + ne__code="getaddrinfo(0,0,0,0);" + ;; + socket) + ne__prologue="#include <sys/socket.h>" + ne__code="socket(0,0,0);" + ;; + *) + ne__prologue="" + ne__code="socket();" + ;; + esac + ;; + esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - +$ne__prologue int main () { -socket(); +$ne__code ; return 0; } @@ -5515,19 +5548,39 @@ ne_cv_libsfor_socket="none needed" else -ne_sl_save_LIBS=$LIBS -ne_cv_libsfor_socket="not found" -for lib in socket inet ws2_32 network; do - # The w32api libraries link using the stdcall calling convention. - case ${lib}-${ne_cv_os_uname} in - ws2_32-MINGW*) ne__code="__stdcall socket();" ;; - *) ne__code="socket();" ;; - esac - - LIBS="$ne_sl_save_LIBS -l$lib $NEON_LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + ne_sl_save_LIBS=$LIBS + ne_cv_libsfor_socket="not found" + for lib in socket inet ws2_32 network; do + case $ne_cv_os_uname in + MINGW*) + case $lib in + ws2_32) + ne__prologue="#include <winsock2.h>" | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/date.xml ^ |
@@ -1 +1 @@ -20 June 2020 \ No newline at end of file +20 September 2021 \ No newline at end of file | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/compliance.html ^ |
@@ -1,12 +1,12 @@ <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Standards compliance</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="using.html" title="How to use neon from your application"><link rel="next" href="security.html" title="HTTP Client Security"></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">Standards 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="security.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="compliance"></a>Standards compliance</h2></div></div></div><p>neon is intended to be compliant with the IETF and W3C standards which it implements, with a few exceptions due to practical necessity or interoperability issues. These - exceptions are documented in this section.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46200848345840"></a>RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</h3></div></div></div><p>neon is deliberately not compliant with section + exceptions are documented in this section.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46097884355344"></a>RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</h3></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 class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idm46200848344016"></a>RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</h3></div></div></div><p>There is some confusion in this specification about the + revision of the specification.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46097884616112"></a>RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</h3></div></div></div><p>There is some confusion in this specification about the use of the <span class="quote">“<span class="quote">identity</span>”</span> <em class="firstterm">transfer-coding</em>. neon ignores the <code class="literal">Transfer-Encoding</code> response header if it @@ -15,7 +15,7 @@ the header was not present. neon will give an error if a response includes a <code class="literal">Transfer-Encoding</code> header with a value other than <span class="quote">“<span class="quote">identity</span>”</span> or - <span class="quote">“<span class="quote">chunked</span>”</span>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46200848339248"></a>RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</h3></div></div></div><p>neon is not strictly compliant with the quoting rules + <span class="quote">“<span class="quote">chunked</span>”</span>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46097885255024"></a>RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</h3></div></div></div><p>neon is not strictly compliant with the quoting rules given in the grammar for the <code class="literal">Authorization</code> header. The grammar requires that the <code class="literal">qop</code> and <code class="literal">algorithm</code> parameters are not quoted, @@ -23,7 +23,7 @@ (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 class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46200848335424"></a>Namespaces in XML</h3></div></div></div><p>The neon XML parser interface will accept and parse + other server implementations.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46097884956352"></a>Namespaces in XML</h3></div></div></div><p>The neon XML parser interface will accept and parse without error some XML documents which are well-formed according to the XML specification but do not conform to the "Namespaces in XML" specification <a class="xref" href="biblio.html#bib.xmlnames" title="Namespaces in XML">[<abbr class="abbrev">REC-XML-names</abbr>]</a>. Specifically: the restrictions on | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/index.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon HTTP/WebDAV client library</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"><div class="titlepage"><div><div><h1 class="title"><a name="idm46200853658096"></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><code class="email"><<a class="email" href="mailto:neon@lists.manyfish.co.uk">neon@lists.manyfish.co.uk</a>></code></div></div><div><p class="copyright">Copyright © 2001-2008 Joe Orton</p></div><div><div class="legalnotice"><a name="idm46200853654352"></a><p>This document is free documentation; you can redistribute +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon HTTP/WebDAV client library</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"><div class="titlepage"><div><div><h1 class="title"><a name="idm46097888573504"></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><code class="email"><<a class="email" href="mailto:neon@lists.manyfish.co.uk">neon@lists.manyfish.co.uk</a>></code></div></div><div><p class="copyright">Copyright © 2001-2021 Joe Orton</p></div><div><div class="legalnotice"><a name="idm46097888627424"></a><p>This document is free documentation; you can redistribute it and/or modify it under the terms of the <a class="ulink" href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License</a> as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later @@ -10,5 +10,5 @@ License for more details.</p><p>You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, - USA.</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><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">Standards compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#idm46200848345840">RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46200848344016">RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46200848339248">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46200848335424">Namespaces in XML</a></span></dt></dl></dd><dt><span class="sect1"><a href="security.html">HTTP Client Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="security.html#idm46200853782144">CPU or memory consumption attacks</a></span></dt><dt><span class="sect2"><a href="security.html#idm46200853773616">SSL/TLS connection security</a></span></dt><dt><span class="sect2"><a href="security.html#idm46200848285312">Control character insertion in error messages</a></span></dt><dt><span class="sect2"><a href="security.html#idm46200848283264">Attacks against authentication credentials</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><span class="refentrytitle"><a href="refneon.html">neon</a></span><span class="refpurpose"> — HTTP and WebDAV client library</span></dt><dt><span class="refentrytitle"><a href="refconfig.html">neon-config</a></span><span class="refpurpose"> — script providing information about installed copy - of neon library</span></dt><dt><span class="refentrytitle"><a href="refresolve.html">ne_addr_resolve</a></span><span class="refpurpose"> — functions to resolve hostnames to addresses</span></dt><dt><span class="refentrytitle"><a href="refbuf.html">ne_buffer</a></span><span class="refpurpose"> — string buffer handling</span></dt><dt><span class="refentrytitle"><a href="refbufapp.html">ne_buffer_append</a></span><span class="refpurpose"> — append data to a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufutil.html">ne_buffer_clear</a></span><span class="refpurpose"> — clear, grow, or mark as altered a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufcr.html">ne_buffer_create</a></span><span class="refpurpose"> — create a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufdest.html">ne_buffer_destroy</a></span><span class="refpurpose"> — destroy a buffer object</span></dt><dt><span class="refentrytitle"><a href="referr.html">ne_get_error</a></span><span class="refpurpose"> — error handling for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refgetst.html">ne_get_status</a></span><span class="refpurpose"> — retrieve HTTP response status for request</span></dt><dt><span class="refentrytitle"><a href="reffeat.html">ne_has_support</a></span><span class="refpurpose"> — determine feature support status</span></dt><dt><span class="refentrytitle"><a href="refi18n.html">ne_i18n_init</a></span><span class="refpurpose"> — functions to initialize internationalization support</span></dt><dt><span class="refentrytitle"><a href="refiaddr.html">ne_iaddr_make</a></span><span class="refpurpose"> — functions to manipulate network addresses</span></dt><dt><span class="refentrytitle"><a href="refalloc.html">ne_malloc</a></span><span class="refpurpose"> — memory allocation wrappers</span></dt><dt><span class="refentrytitle"><a href="refsess.html">ne_session_create</a></span><span class="refpurpose"> — set up HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refproxy.html">ne_session_proxy</a></span><span class="refpurpose"> — configure proxy servers</span></dt><dt><span class="refentrytitle"><a href="refsessflags.html">ne_set_session_flag</a></span><span class="refpurpose"> — set and retrieve session flags</span></dt><dt><span class="refentrytitle"><a href="refreq.html">ne_request_create</a></span><span class="refpurpose"> — low-level HTTP request handling</span></dt><dt><span class="refentrytitle"><a href="refreqhdr.html">ne_add_request_header</a></span><span class="refpurpose"> — add headers to a request</span></dt><dt><span class="refentrytitle"><a href="refresphdr.html">ne_get_response_header</a></span><span class="refpurpose"> — functions to access response headers</span></dt><dt><span class="refentrytitle"><a href="refopts.html">ne_set_useragent</a></span><span class="refpurpose"> — common properties for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refreqflags.html">ne_set_request_flag</a></span><span class="refpurpose"> — set and retrieve per-request flags</span></dt><dt><span class="refentrytitle"><a href="refreqbody.html">ne_set_request_body_buffer</a></span><span class="refpurpose"> — include a message body with a request</span></dt><dt><span class="refentrytitle"><a href="refauth.html">ne_set_server_auth</a></span><span class="refpurpose"> — register authentication callbacks</span></dt><dt><span class="refentrytitle"><a href="refshave.html">ne_shave</a></span><span class="refpurpose"> — trim whitespace from a string</span></dt><dt><span class="refentrytitle"><a href="refsockinit.html">ne_sock_init</a></span><span class="refpurpose"> — perform library initialization</span></dt><dt><span class="refentrytitle"><a href="refcert.html">ne_ssl_cert_identity</a></span><span class="refpurpose"> — functions to access certificate properties</span></dt><dt><span class="refentrytitle"><a href="refsslcert2.html">ne_ssl_cert_cmp</a></span><span class="refpurpose"> — functions to operate on certificate objects</span></dt><dt><span class="refentrytitle"><a href="refsslcertio.html">ne_ssl_cert_read</a></span><span class="refpurpose"> — functions to read or write certificates to and from files or strings</span></dt><dt><span class="refentrytitle"><a href="refssldname.html">ne_ssl_dname</a></span><span class="refpurpose"> — SSL distinguished name handling</span></dt><dt><span class="refentrytitle"><a href="refsslca.html">ne_ssl_trust_cert</a></span><span class="refpurpose"> — functions to indicate that certificates are trusted</span></dt><dt><span class="refentrytitle"><a href="refsslvfy.html">ne_ssl_set_verify</a></span><span class="refpurpose"> — register an SSL certificate verification callback</span></dt><dt><span class="refentrytitle"><a href="refclicert.html">ne_ssl_client_cert</a></span><span class="refpurpose"> — SSL client certificate handling</span></dt><dt><span class="refentrytitle"><a href="refstatus.html">ne_status</a></span><span class="refpurpose"> — HTTP status structure</span></dt><dt><span class="refentrytitle"><a href="reftok.html">ne_token</a></span><span class="refpurpose"> — string tokenizers</span></dt><dt><span class="refentrytitle"><a href="refvers.html">ne_version_match</a></span><span class="refpurpose"> — library versioning</span></dt><dt><span class="refentrytitle"><a href="refxml.html">ne_xml_create</a></span><span class="refpurpose"> — create and destroy an XML parser</span></dt></dl></dd><dt><span class="bibliography"><a href="biblio.html">Bibliography</a></span></dt></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> + USA.</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><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">Standards compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#idm46097884355344">RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46097884616112">RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46097885255024">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46097884956352">Namespaces in XML</a></span></dt></dl></dd><dt><span class="sect1"><a href="security.html">HTTP Client Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="security.html#idm46097888446992">CPU or memory consumption attacks</a></span></dt><dt><span class="sect2"><a href="security.html#idm46097888494800">SSL/TLS connection security</a></span></dt><dt><span class="sect2"><a href="security.html#idm46097882952960">Control character insertion in error messages</a></span></dt><dt><span class="sect2"><a href="security.html#idm46097882950912">Attacks against authentication credentials</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><span class="refentrytitle"><a href="refneon.html">neon</a></span><span class="refpurpose"> — HTTP and WebDAV client library</span></dt><dt><span class="refentrytitle"><a href="refconfig.html">neon-config</a></span><span class="refpurpose"> — script providing information about installed copy + of neon library</span></dt><dt><span class="refentrytitle"><a href="refresolve.html">ne_addr_resolve</a></span><span class="refpurpose"> — functions to resolve hostnames to addresses</span></dt><dt><span class="refentrytitle"><a href="refbuf.html">ne_buffer</a></span><span class="refpurpose"> — string buffer handling</span></dt><dt><span class="refentrytitle"><a href="refbufapp.html">ne_buffer_append</a></span><span class="refpurpose"> — append data to a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufutil.html">ne_buffer_clear</a></span><span class="refpurpose"> — clear, grow, or mark as altered a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufcr.html">ne_buffer_create</a></span><span class="refpurpose"> — create a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufdest.html">ne_buffer_destroy</a></span><span class="refpurpose"> — destroy a buffer object</span></dt><dt><span class="refentrytitle"><a href="refhash.html">ne_strhash</a></span><span class="refpurpose"> — string hash interface</span></dt><dt><span class="refentrytitle"><a href="refparam.html">ne_strparam</a></span><span class="refpurpose"> — HTTP extended parameter value encoding</span></dt><dt><span class="refentrytitle"><a href="referr.html">ne_get_error</a></span><span class="refpurpose"> — error handling for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refgetst.html">ne_get_status</a></span><span class="refpurpose"> — retrieve HTTP response status for request</span></dt><dt><span class="refentrytitle"><a href="reffeat.html">ne_has_support</a></span><span class="refpurpose"> — determine feature support status</span></dt><dt><span class="refentrytitle"><a href="refi18n.html">ne_i18n_init</a></span><span class="refpurpose"> — functions to initialize internationalization support</span></dt><dt><span class="refentrytitle"><a href="refiaddr.html">ne_iaddr_make</a></span><span class="refpurpose"> — functions to manipulate network addresses</span></dt><dt><span class="refentrytitle"><a href="refalloc.html">ne_malloc</a></span><span class="refpurpose"> — memory allocation wrappers</span></dt><dt><span class="refentrytitle"><a href="refsess.html">ne_session_create</a></span><span class="refpurpose"> — set up HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refproxy.html">ne_session_proxy</a></span><span class="refpurpose"> — configure proxy servers</span></dt><dt><span class="refentrytitle"><a href="refsessflags.html">ne_set_session_flag</a></span><span class="refpurpose"> — set and retrieve session flags</span></dt><dt><span class="refentrytitle"><a href="refreq.html">ne_request_create</a></span><span class="refpurpose"> — low-level HTTP request handling</span></dt><dt><span class="refentrytitle"><a href="refreqhdr.html">ne_add_request_header</a></span><span class="refpurpose"> — add headers to a request</span></dt><dt><span class="refentrytitle"><a href="refresphdr.html">ne_get_response_header</a></span><span class="refpurpose"> — functions to access response headers</span></dt><dt><span class="refentrytitle"><a href="refopts.html">ne_set_useragent</a></span><span class="refpurpose"> — common properties for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refreqflags.html">ne_set_request_flag</a></span><span class="refpurpose"> — set and retrieve per-request flags</span></dt><dt><span class="refentrytitle"><a href="refreqbody.html">ne_set_request_body_buffer</a></span><span class="refpurpose"> — include a message body with a request</span></dt><dt><span class="refentrytitle"><a href="refauth.html">ne_set_server_auth</a></span><span class="refpurpose"> — register authentication callbacks</span></dt><dt><span class="refentrytitle"><a href="refshave.html">ne_shave</a></span><span class="refpurpose"> — trim whitespace from a string</span></dt><dt><span class="refentrytitle"><a href="refsockinit.html">ne_sock_init</a></span><span class="refpurpose"> — perform library initialization</span></dt><dt><span class="refentrytitle"><a href="refcert.html">ne_ssl_cert_identity</a></span><span class="refpurpose"> — functions to access certificate properties</span></dt><dt><span class="refentrytitle"><a href="refsslcert2.html">ne_ssl_cert_cmp</a></span><span class="refpurpose"> — functions to operate on certificate objects</span></dt><dt><span class="refentrytitle"><a href="refsslcertio.html">ne_ssl_cert_read</a></span><span class="refpurpose"> — functions to read or write certificates to and from files or strings</span></dt><dt><span class="refentrytitle"><a href="refssldname.html">ne_ssl_dname</a></span><span class="refpurpose"> — SSL distinguished name handling</span></dt><dt><span class="refentrytitle"><a href="refsslca.html">ne_ssl_trust_cert</a></span><span class="refpurpose"> — functions to indicate that certificates are trusted</span></dt><dt><span class="refentrytitle"><a href="refsslvfy.html">ne_ssl_set_verify</a></span><span class="refpurpose"> — register an SSL certificate verification callback</span></dt><dt><span class="refentrytitle"><a href="refclicert.html">ne_ssl_client_cert</a></span><span class="refpurpose"> — SSL client certificate handling</span></dt><dt><span class="refentrytitle"><a href="refstatus.html">ne_status</a></span><span class="refpurpose"> — HTTP status structure</span></dt><dt><span class="refentrytitle"><a href="reftok.html">ne_token</a></span><span class="refpurpose"> — string tokenizers</span></dt><dt><span class="refentrytitle"><a href="refvers.html">ne_version_match</a></span><span class="refpurpose"> — library versioning</span></dt><dt><span class="refentrytitle"><a href="refxml.html">ne_xml_create</a></span><span class="refpurpose"> — create and destroy an XML parser</span></dt></dl></dd><dt><span class="bibliography"><a href="biblio.html">Bibliography</a></span></dt></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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/intro.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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="prev" 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"><div class="titlepage"><div><div><h1 class="title"><a name="intro"></a>Chapter 1. Introduction</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><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">Standards compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#idm46200848345840">RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46200848344016">RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46200848339248">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46200848335424">Namespaces in XML</a></span></dt></dl></dd><dt><span class="sect1"><a href="security.html">HTTP Client Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="security.html#idm46200853782144">CPU or memory consumption attacks</a></span></dt><dt><span class="sect2"><a href="security.html#idm46200853773616">SSL/TLS connection security</a></span></dt><dt><span class="sect2"><a href="security.html#idm46200848285312">Control character insertion in error messages</a></span></dt><dt><span class="sect2"><a href="security.html#idm46200848283264">Attacks against authentication credentials</a></span></dt></dl></dd></dl></div><p>This chapter provides an introduction to neon, giving an +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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="prev" 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"><div class="titlepage"><div><div><h1 class="title"><a name="intro"></a>Chapter 1. Introduction</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><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">Standards compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#idm46097884355344">RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46097884616112">RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46097885255024">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm46097884956352">Namespaces in XML</a></span></dt></dl></dd><dt><span class="sect1"><a href="security.html">HTTP Client Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="security.html#idm46097888446992">CPU or memory consumption attacks</a></span></dt><dt><span class="sect2"><a href="security.html#idm46097888494800">SSL/TLS connection security</a></span></dt><dt><span class="sect2"><a href="security.html#idm46097882952960">Control character insertion in error messages</a></span></dt><dt><span class="sect2"><a href="security.html#idm46097882950912">Attacks against authentication credentials</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 | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/ref.html ^ |
@@ -1,2 +1,2 @@ <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon API reference</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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="prev" 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"><div class="titlepage"><div><div><h1 class="title"><a name="ref"></a>neon API reference</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="refentrytitle"><a href="refneon.html">neon</a></span><span class="refpurpose"> — HTTP and WebDAV client library</span></dt><dt><span class="refentrytitle"><a href="refconfig.html">neon-config</a></span><span class="refpurpose"> — script providing information about installed copy - of neon library</span></dt><dt><span class="refentrytitle"><a href="refresolve.html">ne_addr_resolve</a></span><span class="refpurpose"> — functions to resolve hostnames to addresses</span></dt><dt><span class="refentrytitle"><a href="refbuf.html">ne_buffer</a></span><span class="refpurpose"> — string buffer handling</span></dt><dt><span class="refentrytitle"><a href="refbufapp.html">ne_buffer_append</a></span><span class="refpurpose"> — append data to a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufutil.html">ne_buffer_clear</a></span><span class="refpurpose"> — clear, grow, or mark as altered a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufcr.html">ne_buffer_create</a></span><span class="refpurpose"> — create a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufdest.html">ne_buffer_destroy</a></span><span class="refpurpose"> — destroy a buffer object</span></dt><dt><span class="refentrytitle"><a href="referr.html">ne_get_error</a></span><span class="refpurpose"> — error handling for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refgetst.html">ne_get_status</a></span><span class="refpurpose"> — retrieve HTTP response status for request</span></dt><dt><span class="refentrytitle"><a href="reffeat.html">ne_has_support</a></span><span class="refpurpose"> — determine feature support status</span></dt><dt><span class="refentrytitle"><a href="refi18n.html">ne_i18n_init</a></span><span class="refpurpose"> — functions to initialize internationalization support</span></dt><dt><span class="refentrytitle"><a href="refiaddr.html">ne_iaddr_make</a></span><span class="refpurpose"> — functions to manipulate network addresses</span></dt><dt><span class="refentrytitle"><a href="refalloc.html">ne_malloc</a></span><span class="refpurpose"> — memory allocation wrappers</span></dt><dt><span class="refentrytitle"><a href="refsess.html">ne_session_create</a></span><span class="refpurpose"> — set up HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refproxy.html">ne_session_proxy</a></span><span class="refpurpose"> — configure proxy servers</span></dt><dt><span class="refentrytitle"><a href="refsessflags.html">ne_set_session_flag</a></span><span class="refpurpose"> — set and retrieve session flags</span></dt><dt><span class="refentrytitle"><a href="refreq.html">ne_request_create</a></span><span class="refpurpose"> — low-level HTTP request handling</span></dt><dt><span class="refentrytitle"><a href="refreqhdr.html">ne_add_request_header</a></span><span class="refpurpose"> — add headers to a request</span></dt><dt><span class="refentrytitle"><a href="refresphdr.html">ne_get_response_header</a></span><span class="refpurpose"> — functions to access response headers</span></dt><dt><span class="refentrytitle"><a href="refopts.html">ne_set_useragent</a></span><span class="refpurpose"> — common properties for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refreqflags.html">ne_set_request_flag</a></span><span class="refpurpose"> — set and retrieve per-request flags</span></dt><dt><span class="refentrytitle"><a href="refreqbody.html">ne_set_request_body_buffer</a></span><span class="refpurpose"> — include a message body with a request</span></dt><dt><span class="refentrytitle"><a href="refauth.html">ne_set_server_auth</a></span><span class="refpurpose"> — register authentication callbacks</span></dt><dt><span class="refentrytitle"><a href="refshave.html">ne_shave</a></span><span class="refpurpose"> — trim whitespace from a string</span></dt><dt><span class="refentrytitle"><a href="refsockinit.html">ne_sock_init</a></span><span class="refpurpose"> — perform library initialization</span></dt><dt><span class="refentrytitle"><a href="refcert.html">ne_ssl_cert_identity</a></span><span class="refpurpose"> — functions to access certificate properties</span></dt><dt><span class="refentrytitle"><a href="refsslcert2.html">ne_ssl_cert_cmp</a></span><span class="refpurpose"> — functions to operate on certificate objects</span></dt><dt><span class="refentrytitle"><a href="refsslcertio.html">ne_ssl_cert_read</a></span><span class="refpurpose"> — functions to read or write certificates to and from files or strings</span></dt><dt><span class="refentrytitle"><a href="refssldname.html">ne_ssl_dname</a></span><span class="refpurpose"> — SSL distinguished name handling</span></dt><dt><span class="refentrytitle"><a href="refsslca.html">ne_ssl_trust_cert</a></span><span class="refpurpose"> — functions to indicate that certificates are trusted</span></dt><dt><span class="refentrytitle"><a href="refsslvfy.html">ne_ssl_set_verify</a></span><span class="refpurpose"> — register an SSL certificate verification callback</span></dt><dt><span class="refentrytitle"><a href="refclicert.html">ne_ssl_client_cert</a></span><span class="refpurpose"> — SSL client certificate handling</span></dt><dt><span class="refentrytitle"><a href="refstatus.html">ne_status</a></span><span class="refpurpose"> — HTTP status structure</span></dt><dt><span class="refentrytitle"><a href="reftok.html">ne_token</a></span><span class="refpurpose"> — string tokenizers</span></dt><dt><span class="refentrytitle"><a href="refvers.html">ne_version_match</a></span><span class="refpurpose"> — library versioning</span></dt><dt><span class="refentrytitle"><a href="refxml.html">ne_xml_create</a></span><span class="refpurpose"> — create and destroy an XML parser</span></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"> </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> + of neon library</span></dt><dt><span class="refentrytitle"><a href="refresolve.html">ne_addr_resolve</a></span><span class="refpurpose"> — functions to resolve hostnames to addresses</span></dt><dt><span class="refentrytitle"><a href="refbuf.html">ne_buffer</a></span><span class="refpurpose"> — string buffer handling</span></dt><dt><span class="refentrytitle"><a href="refbufapp.html">ne_buffer_append</a></span><span class="refpurpose"> — append data to a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufutil.html">ne_buffer_clear</a></span><span class="refpurpose"> — clear, grow, or mark as altered a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufcr.html">ne_buffer_create</a></span><span class="refpurpose"> — create a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufdest.html">ne_buffer_destroy</a></span><span class="refpurpose"> — destroy a buffer object</span></dt><dt><span class="refentrytitle"><a href="refhash.html">ne_strhash</a></span><span class="refpurpose"> — string hash interface</span></dt><dt><span class="refentrytitle"><a href="refparam.html">ne_strparam</a></span><span class="refpurpose"> — HTTP extended parameter value encoding</span></dt><dt><span class="refentrytitle"><a href="referr.html">ne_get_error</a></span><span class="refpurpose"> — error handling for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refgetst.html">ne_get_status</a></span><span class="refpurpose"> — retrieve HTTP response status for request</span></dt><dt><span class="refentrytitle"><a href="reffeat.html">ne_has_support</a></span><span class="refpurpose"> — determine feature support status</span></dt><dt><span class="refentrytitle"><a href="refi18n.html">ne_i18n_init</a></span><span class="refpurpose"> — functions to initialize internationalization support</span></dt><dt><span class="refentrytitle"><a href="refiaddr.html">ne_iaddr_make</a></span><span class="refpurpose"> — functions to manipulate network addresses</span></dt><dt><span class="refentrytitle"><a href="refalloc.html">ne_malloc</a></span><span class="refpurpose"> — memory allocation wrappers</span></dt><dt><span class="refentrytitle"><a href="refsess.html">ne_session_create</a></span><span class="refpurpose"> — set up HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refproxy.html">ne_session_proxy</a></span><span class="refpurpose"> — configure proxy servers</span></dt><dt><span class="refentrytitle"><a href="refsessflags.html">ne_set_session_flag</a></span><span class="refpurpose"> — set and retrieve session flags</span></dt><dt><span class="refentrytitle"><a href="refreq.html">ne_request_create</a></span><span class="refpurpose"> — low-level HTTP request handling</span></dt><dt><span class="refentrytitle"><a href="refreqhdr.html">ne_add_request_header</a></span><span class="refpurpose"> — add headers to a request</span></dt><dt><span class="refentrytitle"><a href="refresphdr.html">ne_get_response_header</a></span><span class="refpurpose"> — functions to access response headers</span></dt><dt><span class="refentrytitle"><a href="refopts.html">ne_set_useragent</a></span><span class="refpurpose"> — common properties for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refreqflags.html">ne_set_request_flag</a></span><span class="refpurpose"> — set and retrieve per-request flags</span></dt><dt><span class="refentrytitle"><a href="refreqbody.html">ne_set_request_body_buffer</a></span><span class="refpurpose"> — include a message body with a request</span></dt><dt><span class="refentrytitle"><a href="refauth.html">ne_set_server_auth</a></span><span class="refpurpose"> — register authentication callbacks</span></dt><dt><span class="refentrytitle"><a href="refshave.html">ne_shave</a></span><span class="refpurpose"> — trim whitespace from a string</span></dt><dt><span class="refentrytitle"><a href="refsockinit.html">ne_sock_init</a></span><span class="refpurpose"> — perform library initialization</span></dt><dt><span class="refentrytitle"><a href="refcert.html">ne_ssl_cert_identity</a></span><span class="refpurpose"> — functions to access certificate properties</span></dt><dt><span class="refentrytitle"><a href="refsslcert2.html">ne_ssl_cert_cmp</a></span><span class="refpurpose"> — functions to operate on certificate objects</span></dt><dt><span class="refentrytitle"><a href="refsslcertio.html">ne_ssl_cert_read</a></span><span class="refpurpose"> — functions to read or write certificates to and from files or strings</span></dt><dt><span class="refentrytitle"><a href="refssldname.html">ne_ssl_dname</a></span><span class="refpurpose"> — SSL distinguished name handling</span></dt><dt><span class="refentrytitle"><a href="refsslca.html">ne_ssl_trust_cert</a></span><span class="refpurpose"> — functions to indicate that certificates are trusted</span></dt><dt><span class="refentrytitle"><a href="refsslvfy.html">ne_ssl_set_verify</a></span><span class="refpurpose"> — register an SSL certificate verification callback</span></dt><dt><span class="refentrytitle"><a href="refclicert.html">ne_ssl_client_cert</a></span><span class="refpurpose"> — SSL client certificate handling</span></dt><dt><span class="refentrytitle"><a href="refstatus.html">ne_status</a></span><span class="refpurpose"> — HTTP status structure</span></dt><dt><span class="refentrytitle"><a href="reftok.html">ne_token</a></span><span class="refpurpose"> — string tokenizers</span></dt><dt><span class="refentrytitle"><a href="refvers.html">ne_version_match</a></span><span class="refpurpose"> — library versioning</span></dt><dt><span class="refentrytitle"><a href="refxml.html">ne_xml_create</a></span><span class="refpurpose"> — create and destroy an XML parser</span></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"> </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refalloc.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_malloc</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refiaddr.html" title="ne_iaddr_make"><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_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="refsess.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refalloc"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_malloc</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_calloc</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_realloc</b>(</code></td><td>void *<var class="pdparam">size</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">len</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strdup</b>(</code></td><td>const char *<var class="pdparam">s</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strndup</b>(</code></td><td>const char *<var class="pdparam">s</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_oom_callback</b>(</code></td><td>void (*<var class="pdparam">callback</var>)(void)<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847243568"></a><h2>Description</h2><p>The functions <code class="function">ne_malloc</code>, +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_malloc</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refiaddr.html" title="ne_iaddr_make"><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_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="refsess.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refalloc"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_malloc</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_calloc</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_realloc</b>(</code></td><td>void *<var class="pdparam">size</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">len</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strdup</b>(</code></td><td>const char *<var class="pdparam">s</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strndup</b>(</code></td><td>const char *<var class="pdparam">s</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_oom_callback</b>(</code></td><td>void (*<var class="pdparam">callback</var>)(void)<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881797712"></a><h2>Description</h2><p>The functions <code class="function">ne_malloc</code>, <code class="function">ne_calloc</code>, <code class="function">ne_realloc</code>, <code class="function">ne_strdup</code> and <code class="function">ne_strdnup</code> provide wrappers for the equivalent functions in the standard C @@ -6,7 +6,7 @@ library equivalent returns <code class="literal">NULL</code> when no memory is available, an optional callback will be called, and the library will then call <code class="function">abort</code>().</p><p><code class="function">ne_oom_callback</code> registers a callback -which will be invoked if an out of memory error is detected.</p></div><div class="refsect1"><a name="idm46200847236880"></a><h2>Notes</h2><p>If the operating system uses optimistic memory +which will be invoked if an out of memory error is detected.</p></div><div class="refsect1"><a name="idm46097881791024"></a><h2>Notes</h2><p>If the operating system uses optimistic memory allocation, the C library memory allocation routines will not return <code class="literal">NULL</code>, 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="refsess.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_session_create</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refauth.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_server_auth</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refauth"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">typedef int (*<b class="fsfunc">ne_auth_creds</b>)(</code></td><td>void *<var class="pdparam">userdata</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">realm</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">attempt</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">username</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_server_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_auth_creds <var class="pdparam">callback</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_proxy_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_auth_creds <var class="pdparam">callback</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_forget_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846476048"></a><h2>Description</h2><p>The <em class="type">ne_auth_creds</em> function type defines a +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_server_auth</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refauth"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">typedef int (*<b class="fsfunc">ne_auth_creds</b>)(</code></td><td>void *<var class="pdparam">userdata</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">realm</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">attempt</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">username</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_server_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_auth_creds <var class="pdparam">callback</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_proxy_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_auth_creds <var class="pdparam">callback</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_forget_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881030288"></a><h2>Description</h2><p>The <em class="type">ne_auth_creds</em> function type defines a callback which is invoked when a server or proxy server requires user authentication for a particular request. The <code class="parameter">realm</code> string is supplied by the server. The <code class="parameter">attempt</code> is a counter giving the @@ -15,7 +15,7 @@ non-zero value; in which case the contents of the <code class="parameter">username</code> and <code class="parameter">password</code> buffers are ignored.</p><p>The <code class="function">ne_forget_auth</code> function can be -used to discard the cached authentication credentials.</p></div><div class="refsect1"><a name="idm46200846464784"></a><h2>Examples</h2><pre class="programlisting"> +used to discard the cached authentication credentials.</p></div><div class="refsect1"><a name="idm46097881019024"></a><h2>Examples</h2><pre class="programlisting"> /* Function which prompts for a line of user input: */ extern char *prompt_for(const char *prompt); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refbuf.html ^ |
@@ -4,9 +4,9 @@ char *data; size_t used; size_t length; -} <em class="type">ne_buffer</em>;</pre></div></div><div class="refsect1"><a name="idm46200847797200"></a><h2>Description</h2><p>The <em class="type">ne_buffer</em> type represents an expandable +} <em class="type">ne_buffer</em>;</pre></div></div><div class="refsect1"><a name="idm46097882466048"></a><h2>Description</h2><p>The <em class="type">ne_buffer</em> type represents an expandable memory buffer for holding <code class="literal">NUL</code>-terminated strings. The -<em class="structfield"><code>data</code></em> field points to the beginnning of the +<em class="structfield"><code>data</code></em> field points to the beginning of the string, the length of which is given by the <em class="structfield"><code>used</code></em> field. The current size of memory allocated is given by the <em class="structfield"><code>length</code></em> field. It | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refbufapp.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_append</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refbufapp"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_append</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">string</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">len</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_zappend</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">string</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_concat</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847750864"></a><h2>Description</h2><p>The <code class="function">ne_buffer_append</code> and +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_append</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refbufapp"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_append</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">string</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">len</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_zappend</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">string</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_concat</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882419712"></a><h2>Description</h2><p>The <code class="function">ne_buffer_append</code> and <code class="function">ne_buffer_zappend</code> functions append a string to the end of a buffer; extending the buffer as necessary. The <code class="parameter">len</code> passed to @@ -13,10 +13,10 @@ argument to mark the end of the list. The strings (including <code class="parameter">str</code>) are appended to the buffer in the order given. None of the strings passed to -<code class="function">ne_buffer_concat</code> are modified.</p></div><div class="refsect1"><a name="idm46200847739984"></a><h2>Examples</h2><p>The following code will output "<code class="literal">Hello, world. +<code class="function">ne_buffer_concat</code> are modified.</p></div><div class="refsect1"><a name="idm46097882408832"></a><h2>Examples</h2><p>The following code will output "<code class="literal">Hello, world. And goodbye.</code>".</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"><a name="idm46200847737392"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a>, <a class="xref" href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>, +ne_buffer_destroy(buf);</pre></div><div class="refsect1"><a name="idm46097882406240"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a>, <a class="xref" href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>, <a class="xref" 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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refbufcr.html ^ |
@@ -1,7 +1,7 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refbufcr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_create, ne_buffer_ncreate — create a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_alloc.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_create</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_ncreate</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847640816"></a><h2>Description</h2><p><code class="function">ne_buffer_create</code> creates a new +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refbufcr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_create, ne_buffer_ncreate — create a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_alloc.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_create</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_ncreate</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882309664"></a><h2>Description</h2><p><code class="function">ne_buffer_create</code> creates a new buffer object, with an implementation-defined initial size. <code class="function">ne_buffer_ncreate</code> creates an <em class="type">ne_buffer</em> where the minimum initial size is given in the <code class="parameter">size</code> parameter. The buffer created will -contain the empty string (<code class="literal">""</code>).</p></div><div class="refsect1"><a name="idm46200847636912"></a><h2>Return value</h2><p>Both functions return a pointer to a new buffer object, -and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46200847635136"></a><h2>See also</h2><p><a class="xref" 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> +contain the empty string (<code class="literal">""</code>).</p></div><div class="refsect1"><a name="idm46097882305760"></a><h2>Return value</h2><p>Both functions return a pointer to a new buffer object, +and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46097882303984"></a><h2>See also</h2><p><a class="xref" 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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refbufdest.html ^ |
@@ -1,10 +1,10 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_destroy</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refbufdest"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_destroy</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_buffer_finish</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847604336"></a><h2>Description</h2><p><code class="function">ne_buffer_destroy</code> frees all memory +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_destroy</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufcr.html" title="ne_buffer_create"><link rel="next" href="refhash.html" title="ne_strhash"></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="refhash.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refbufdest"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_destroy</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_buffer_finish</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882273184"></a><h2>Description</h2><p><code class="function">ne_buffer_destroy</code> frees all memory associated with the buffer. <code class="function">ne_buffer_finish</code> frees the buffer structure, but not the actual string stored in the buffer, which is returned and must be <code class="function">free</code>()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"><a name="idm46200847600816"></a><h2>Return value</h2><p><code class="function">ne_buffer_finish</code> returns the -<code class="function">malloc</code>-allocated string stored in the buffer.</p></div><div class="refsect1"><a name="idm46200847598544"></a><h2>Examples</h2><p>An example use of <code class="function">ne_buffer_finish</code>; +functions gives undefined behaviour.</p></div><div class="refsect1"><a name="idm46097882269664"></a><h2>Return value</h2><p><code class="function">ne_buffer_finish</code> returns the +<code class="function">malloc</code>-allocated string stored in the buffer.</p></div><div class="refsect1"><a name="idm46097882267392"></a><h2>Examples</h2><p>An example use of <code class="function">ne_buffer_finish</code>; the <code class="function">duplicate</code> function returns a string made up of <code class="parameter">n</code> copies of <code class="parameter">str</code>:</p><pre class="programlisting">static char *duplicate(int n, const char *str) { @@ -13,5 +13,5 @@ ne_buffer_zappend(buf, str); } return ne_buffer_finish(buf); -}</pre></div><div class="refsect1"><a name="idm46200847594080"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a>, <a class="xref" href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>, -<a class="xref" 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> +}</pre></div><div class="refsect1"><a name="idm46097882262928"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a>, <a class="xref" href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>, +<a class="xref" 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="refhash.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_strhash</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refbufutil.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_clear</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refbufutil"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_clear, ne_buffer_grow, ne_buffer_altered — clear, grow, or mark as altered a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_clear</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_altered</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_grow</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847683088"></a><h2>Description</h2><p>The <code class="function">ne_buffer_clear</code> function sets +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_clear</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refbufutil"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_clear, ne_buffer_grow, ne_buffer_altered — clear, grow, or mark as altered a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_clear</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_altered</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_grow</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882351936"></a><h2>Description</h2><p>The <code class="function">ne_buffer_clear</code> function sets the string stored in <code class="parameter">buf</code> to be the empty string (<code class="literal">""</code>).</p><p>The <code class="function">ne_buffer_altered</code> function must be used after the string stored in the buffer | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refcert.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_identity</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refcert"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_cert_identity</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_signedby</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_subject</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_issuer</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846310080"></a><h2>Description</h2><p>The function <code class="function">ne_ssl_cert_identity</code> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_identity</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refcert"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_cert_identity</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_signedby</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_subject</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_issuer</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880864448"></a><h2>Description</h2><p>The function <code class="function">ne_ssl_cert_identity</code> retrieves the <span class="quote">“<span class="quote">identity</span>”</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 @@ -10,12 +10,12 @@ <code class="function">ne_ssl_cert_signedby</code> 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 <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46200846303712"></a><h2>Return value</h2><p><code class="function">ne_ssl_cert_issuer</code> and + is not available, this function will return <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46097880858080"></a><h2>Return value</h2><p><code class="function">ne_ssl_cert_issuer</code> and <code class="function">ne_ssl_cert_subject</code> are guaranteed to never return <code class="literal">NULL</code>. <code class="function">ne_ssl_cert_identity</code> may return <code class="literal">NULL</code> if the certificate has no specific <span class="quote">“<span class="quote">identity</span>”</span>. <code class="function">ne_ssl_cert_signedby</code> - may return <code class="literal">NULL</code> as covered above.</p></div><div class="refsect1"><a name="idm46200846297936"></a><h2>Examples</h2><p>The following function could be used to display information + may return <code class="literal">NULL</code> as covered above.</p></div><div class="refsect1"><a name="idm46097880852304"></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; @@ -30,4 +30,4 @@ dn = ne_ssl_readable_dname(ne_ssl_cert_issuer(cert)); printf("Issuer: %s\n", dn); free(dn); -}</pre></div><div class="refsect1"><a name="idm46200846296048"></a><h2>See also</h2><p><a class="xref" href="refsslcert2.html#ne_ssl_cert_cmp">ne_ssl_cert_cmp</a>, <a class="xref" 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> +}</pre></div><div class="refsect1"><a name="idm46097880850416"></a><h2>See also</h2><p><a class="xref" href="refsslcert2.html#ne_ssl_cert_cmp">ne_ssl_cert_cmp</a>, <a class="xref" 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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refclicert.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_client_cert</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refclicert"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_client_cert *<b class="fsfunc">ne_ssl_clicert_read</b>(</code></td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_clicert_name</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_clicert_encrypted</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_clicert_decrypt</b>(</code></td><td>ne_ssl_client_cert *<var class="pdparam">ccert</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_clicert_owner</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_clicert_free</b>(</code></td><td>ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200845969824"></a><h2>Description</h2><p>The <code class="function">ne_ssl_clicert_read</code> function reads +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_client_cert</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refclicert"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_client_cert *<b class="fsfunc">ne_ssl_clicert_read</b>(</code></td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_clicert_name</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_clicert_encrypted</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_clicert_decrypt</b>(</code></td><td>ne_ssl_client_cert *<var class="pdparam">ccert</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_clicert_owner</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_clicert_free</b>(</code></td><td>ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880523936"></a><h2>Description</h2><p>The <code class="function">ne_ssl_clicert_read</code> function reads a <em class="firstterm">client certificate</em> from a PKCS#12-formatted file, and returns an <em class="type">ne_ssl_client_cert</em> object. If the client @@ -29,14 +29,14 @@ 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 <code class="function">ne_ssl_clicert_free</code> function should be used - to destroy the object.</p></div><div class="refsect1"><a name="idm46200845956720"></a><h2>Return value</h2><p><code class="function">ne_ssl_clicert_read</code> returns a client + to destroy the object.</p></div><div class="refsect1"><a name="idm46097880510832"></a><h2>Return value</h2><p><code class="function">ne_ssl_clicert_read</code> returns a client certificate object, or <code class="literal">NULL</code> if the file could not be read. <code class="function">ne_ssl_clicert_encrypted</code> returns zero if the object is in the decrypted state, or non-zero if it is in the encrypted state. <code class="function">ne_ssl_clicert_name</code> returns a <code class="literal">NUL</code>-terminated friendly name string, or <code class="literal">NULL</code>. <code class="function">ne_ssl_clicert_owner</code> returns a certificate - object.</p></div><div class="refsect1"><a name="idm46200845951200"></a><h2>Examples</h2><p>The following code reads a client certificate and decrypts + object.</p></div><div class="refsect1"><a name="idm46097880505312"></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_cert *ccert; ccert = ne_ssl_clicert_read("/path/to/client.p12"); @@ -52,4 +52,4 @@ } ne_ssl_set_clicert(sess, ccert); -</pre></div><div class="refsect1"><a name="idm46200845948928"></a><h2>See also</h2><p><a class="xref" 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> +</pre></div><div class="refsect1"><a name="idm46097880503408"></a><h2>See also</h2><p><a class="xref" 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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refconfig.html ^ |
@@ -1,11 +1,11 @@ <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon-config</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refneon.html" title="neon"><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">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="refresolve.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refconfig"></a><div class="titlepage"></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><code class="command">neon-config</code> [<code class="option">--prefix</code>] [[<code class="option">--cflags</code>] | [<code class="option">--libs</code>] | [<code class="option">--la-file</code>] | [<code class="option">--support</code> <em class="replaceable"><code>feature</code></em>] | [<code class="option">--help</code>] | [<code class="option">--version</code>]]</p></div></div><div class="refsect1"><a name="idm46200847967408"></a><h2>Description</h2><p>The <span class="command"><strong>neon-config</strong></span> script provides + of neon library</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">neon-config</code> [<code class="option">--prefix</code>] [[<code class="option">--cflags</code>] | [<code class="option">--libs</code>] | [<code class="option">--la-file</code>] | [<code class="option">--support</code> <em class="replaceable"><code>feature</code></em>] | [<code class="option">--help</code>] | [<code class="option">--version</code>]]</p></div></div><div class="refsect1"><a name="idm46097882636160"></a><h2>Description</h2><p>The <span class="command"><strong>neon-config</strong></span> script provides information about an installed copy of the neon library. The <code class="option">--cflags</code> and <code class="option">--libs</code> options instruct how to compile and link an application against the library; the <code class="option">--version</code> and <code class="option">--support</code> options can help determine whether the library meets the applications -requirements.</p></div><div class="refsect1"><a name="idm46200847963904"></a><h2>Options</h2><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="option">--cflags</code></span></p></td><td>Print the flags which should be passed to +requirements.</p></div><div class="refsect1"><a name="idm46097882632656"></a><h2>Options</h2><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="option">--cflags</code></span></p></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><p><span class="term"><code class="option">--libs</code></span></p></td><td>Print the flags which should be passed to the linker when linking an application which uses the neon | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/referr.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_error</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="referr"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_error</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_error</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">format</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847553856"></a><h2>Description</h2><p>The session error string is used to store any +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_error</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refparam.html" title="ne_strparam"><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="refparam.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"><a name="referr"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_error</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_error</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">format</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882108688"></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 <code class="function">ne_get_error</code> function returns the current session error string. This string persists only @@ -8,11 +8,11 @@ translated into the user's current locale.</p><p>The <code class="function">ne_set_error</code> function can be used to set a new session error string, using a <code class="function">printf</code>-style format string - interface.</p></div><div class="refsect1"><a name="idm46200847549408"></a><h2>Return value</h2><p><code class="function">ne_set_error</code> returns a constant + interface.</p></div><div class="refsect1"><a name="idm46097882103888"></a><h2>Return value</h2><p><code class="function">ne_set_error</code> returns a constant <code class="literal">NUL</code>-terminated string. In the default English locale, the returned string will <span class="emphasis"><em>not</em></span> have a - terminating <span class="quote">“<span class="quote">.</span>”</span> period character.</p></div><div class="refsect1"><a name="idm46200847546272"></a><h2>Examples</h2><p>Retrieve the current error string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...); + terminating <span class="quote">“<span class="quote">.</span>”</span> period character.</p></div><div class="refsect1"><a name="idm46097882100752"></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> +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="refparam.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_strparam </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/reffeat.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_has_support</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refgetst.html" title="ne_get_status"><link rel="next" href="refi18n.html" title="ne_i18n_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_has_support</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="refi18n.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="reffeat"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_has_support — determine feature support status</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_has_support</b>(</code></td><td>int <var class="pdparam">feature</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847477872"></a><h2>Description</h2><p>The <code class="function">ne_has_support</code> function can be used +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_has_support</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refgetst.html" title="ne_get_status"><link rel="next" href="refi18n.html" title="ne_i18n_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_has_support</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="refi18n.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="reffeat"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_has_support — determine feature support status</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_has_support</b>(</code></td><td>int <var class="pdparam">feature</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882031872"></a><h2>Description</h2><p>The <code class="function">ne_has_support</code> function can be used to determine whether a particular optional feature, given by the feature code <code class="parameter">feature</code>, is supported. The following feature codes are available: @@ -6,5 +6,5 @@ </p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_FEATURE_SSL</code></span></p></td><td>Indicates support for SSL/TLS</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_ZLIB</code></span></p></td><td>Indicates support for compressed responses</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_IPV6</code></span></p></td><td>Indicates support for IPv6</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_LFS</code></span></p></td><td>Indicates support for large files</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_SOCKS</code></span></p></td><td>Indicates support for SOCKSv5</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_TS_SSL</code></span></p></td><td>Indicates support for thread-safe SSL initialization — see <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a></td></tr></tbody></table></div><p> - </p></div><div class="refsect1"><a name="idm46200847464608"></a><h2>Return value</h2><p><code class="function">ne_has_support</code> returns non-zero if - the given feature is supported, or zero otherwise.</p></div><div class="refsect1"><a name="idm46200847462960"></a><h2>See also</h2><p><a class="xref" href="refvers.html" title="ne_version_match"><span class="refentrytitle">ne_version_match</span></a>, <a class="xref" href="refsockinit.html" title="ne_sock_init"><span class="refentrytitle">ne_sock_init</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="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="refi18n.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_i18n_init</td></tr></table></div></body></html> + </p></div><div class="refsect1"><a name="idm46097882018608"></a><h2>Return value</h2><p><code class="function">ne_has_support</code> returns non-zero if + the given feature is supported, or zero otherwise.</p></div><div class="refsect1"><a name="idm46097882016960"></a><h2>See also</h2><p><a class="xref" href="refvers.html" title="ne_version_match"><span class="refentrytitle">ne_version_match</span></a>, <a class="xref" href="refsockinit.html" title="ne_sock_init"><span class="refentrytitle">ne_sock_init</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="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="refi18n.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_i18n_init</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refgetst.html ^ |
@@ -1,10 +1,10 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_status</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="referr.html" title="ne_get_error"><link rel="next" href="reffeat.html" title="ne_has_support"></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="reffeat.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refgetst"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_status *<b class="fsfunc">ne_get_status</b>(</code></td><td>const ne_request *<var class="pdparam">request</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847584032"></a><h2>Description</h2><p>The <code class="function">ne_get_status</code> function returns +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_status</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="referr.html" title="ne_get_error"><link rel="next" href="reffeat.html" title="ne_has_support"></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="reffeat.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refgetst"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_status *<b class="fsfunc">ne_get_status</b>(</code></td><td>const ne_request *<var class="pdparam">request</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882137088"></a><h2>Description</h2><p>The <code class="function">ne_get_status</code> 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 <code class="function">ne_request_dispatch</code> or <code class="function">ne_begin_request</code> was zero). The object remains -valid until the associated request object is destroyed.</p></div><div class="refsect1"><a name="idm46200847506976"></a><h2>See also</h2><p><a class="xref" href="refstatus.html#ne_status">ne_status</a>, <a class="xref" href="refreq.html#ne_request_create">ne_request_create</a></p></div><div class="refsect1"><a name="idm46200847505088"></a><h2>Example</h2><p>Display the response status code of applying the +valid until the associated request object is destroyed.</p></div><div class="refsect1"><a name="idm46097882060864"></a><h2>See also</h2><p><a class="xref" href="refstatus.html#ne_status">ne_status</a>, <a class="xref" href="refreq.html#ne_request_create">ne_request_create</a></p></div><div class="refsect1"><a name="idm46097882058976"></a><h2>Example</h2><p>Display the response status code of applying the <code class="literal">HEAD</code> 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... */ | ||
[-] [+] | Added | neon-0.32.1.tar.gz/doc/html/refhash.html ^ |
@@ -0,0 +1,23 @@ +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_strhash</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufdest.html" title="ne_buffer_destroy"><link rel="next" href="refparam.html" title="ne_strparam"></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_strhash</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="refparam.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refhash"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_strhash, ne_vstrhash — string hash interface</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strhash</b>(</code></td><td>unsigned int <var class="pdparam">flags</var>, </td></tr><tr><td> </td><td><var class="pdparam">...</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_vstrhash</b>(</code></td><td>unsigned int <var class="pdparam">flags</var>, </td></tr><tr><td> </td><td>va_list <var class="pdparam">ap</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882222336"></a><h2>Description</h2><p>The <code class="function">ne_strhash</code> and + <code class="function">ne_vstrhash</code> functions can be used to + create hashes. The varargs argument list must be <em class="type">const + char *</em> strings followed by a <code class="literal">NULL</code> terminator. The + <code class="parameter">flags</code> argument must select exactly one + hash algorithm from the list below, which can be optionally + bitwise-ORed with one of the formatting option. The hash is + calculated for the concatenation of the argument list, without + separators.</p><div class="refsect2"><a name="idm46097882218432"></a><h3>Hash algorithms</h3><p>The following hash algorithms are available: + </p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_HASH_MD5</code></span></p></td><td>MD5</td></tr><tr><td><p><span class="term"><code class="constant">NE_HASH_SHA256</code></span></p></td><td>SHA-256 (SHA-2)</td></tr><tr><td><p><span class="term"><code class="constant">NE_HASH_SHA512</code></span></p></td><td>SHA-512 (SHA-2)</td></tr><tr><td><p><span class="term"><code class="constant">NE_HASH_SHA256_256</code></span></p></td><td>SHA-512/256 (SHA-2)</td></tr></tbody></table></div><p> + + </p></div><div class="refsect2"><a name="idm46097882211392"></a><h3>Formatting options</h3><p>By default, the hash is returned as a hexadecimal + lower-case character string. The following formatting + options are available: + + </p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_HASH_COLON</code></span></p></td><td>colon-separated hex pairs, e.g. <code class="literal">"aa:11:22..."</code> </td></tr><tr><td><p><span class="term"><code class="constant">NE_HASH_SPACE</code></span></p></td><td>space-separated hex pairs, e.g. <code class="literal">"aa 11 22..."</code></td></tr></tbody></table></div></div></div><div class="refsect1"><a name="idm46097882205744"></a><h2>Return value</h2><p>The return value is the ASCII hexadecimal representation + of the hash as a malloc-allocated, NUL-terminated string, or + <code class="literal">NULL</code> if the hash cannot be created. The string length is + determined by the hash algorithm (and formatting options + used). Support for hash algorithms is specific to the SSL + toolkit with which neon is compiled. Some systems will + further restrict hash availability at runtime, e.g. due to + FIPS mode.</p></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="refparam.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_strparam</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refi18n.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_i18n_init</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="reffeat.html" title="ne_has_support"><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_i18n_init</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="reffeat.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"><a name="refi18n"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_i18n_init — functions to initialize internationalization support</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_i18n.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_i18n_init</b>(</code></td><td>const char *<var class="pdparam">encoding</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847426448"></a><h2>Description</h2><p>The <code class="function">ne_i18n_init</code> function can be used +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_i18n_init</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="reffeat.html" title="ne_has_support"><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_i18n_init</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="reffeat.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"><a name="refi18n"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_i18n_init — functions to initialize internationalization support</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_i18n.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_i18n_init</b>(</code></td><td>const char *<var class="pdparam">encoding</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881980448"></a><h2>Description</h2><p>The <code class="function">ne_i18n_init</code> function can be used to enable support for translated messages in the neon library. The <code class="parameter">encoding</code> parameter, if non-<code class="literal">NULL</code>, specifies the character encoding required for generated translated @@ -15,4 +15,4 @@ will otherwise operate correctly.</p><p>Note that the encoding used is a process-global setting and so results may be unexpected if other users of neon within the process call <code class="function">ne_i18n_init</code> with a different - encoding parameter.</p></div><div class="refsect1"><a name="idm46200847417280"></a><h2>See also</h2><p><a class="xref" 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="reffeat.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_has_support </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> + encoding parameter.</p></div><div class="refsect1"><a name="idm46097881971200"></a><h2>See also</h2><p><a class="xref" 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="reffeat.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_has_support </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refiaddr.html ^ |
@@ -3,7 +3,7 @@ typedef enum { ne_iaddr_ipv4 = 0, ne_iaddr_ipv6 -} <em class="type">ne_iaddr_type</em>;</pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_make</b>(</code></td><td>ne_iaddr_type <var class="pdparam">type</var>, </td></tr><tr><td> </td><td>const unsigned char *<var class="pdparam">raw</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_iaddr_cmp</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia1</var>, </td></tr><tr><td> </td><td>const ne_inet_addr *<var class="pdparam">ia2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_iaddr_print</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">bufsiz</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_iaddr_type <b class="fsfunc">ne_iaddr_typeof</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_parse</b>(</code></td><td>const char *<var class="pdparam">address</var>, </td></tr><tr><td> </td><td>ne_iaddr_type <var class="pdparam">type</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">unsigned char *<b class="fsfunc">ne_iaddr_raw</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>unsigned char *<var class="pdparam">buffer</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_iaddr_reverse</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">buflen</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_iaddr_free</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847360416"></a><h2>Description</h2><p><code class="function">ne_iaddr_make</code> creates an +} <em class="type">ne_iaddr_type</em>;</pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_make</b>(</code></td><td>ne_iaddr_type <var class="pdparam">type</var>, </td></tr><tr><td> </td><td>const unsigned char *<var class="pdparam">raw</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_iaddr_cmp</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia1</var>, </td></tr><tr><td> </td><td>const ne_inet_addr *<var class="pdparam">ia2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_iaddr_print</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">bufsiz</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_iaddr_type <b class="fsfunc">ne_iaddr_typeof</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_parse</b>(</code></td><td>const char *<var class="pdparam">address</var>, </td></tr><tr><td> </td><td>ne_iaddr_type <var class="pdparam">type</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">unsigned char *<b class="fsfunc">ne_iaddr_raw</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>unsigned char *<var class="pdparam">buffer</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_iaddr_reverse</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">buflen</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_iaddr_free</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881914336"></a><h2>Description</h2><p><code class="function">ne_iaddr_make</code> creates an <em class="type">ne_inet_addr</em> object from a raw binary network address; for instance the four bytes <code class="literal">0x7f 0x00 0x00 0x01</code> represent the IPv4 address @@ -31,7 +31,7 @@ hostname is longer than the buffer it will be silently truncated; on success the string written to the buffer is always <code class="literal">NUL</code>-terminated.</p><p><code class="function">ne_iaddr_free</code> releases the memory - associated with a network address object.</p></div><div class="refsect1"><a name="idm46200847347392"></a><h2>Return value</h2><p><code class="function">ne_iaddr_make</code> returns <code class="literal">NULL</code> if the + associated with a network address object.</p></div><div class="refsect1"><a name="idm46097881901312"></a><h2>Return value</h2><p><code class="function">ne_iaddr_make</code> returns <code class="literal">NULL</code> if the address type passed is not supported (for instance on a platform which does not support IPv6).</p><p><code class="function">ne_iaddr_print</code> returns the <code class="parameter">buffer</code> pointer, and never <code class="literal">NULL</code>.</p><p><code class="function">ne_iaddr_parse</code> returns a network @@ -39,7 +39,7 @@ <code class="parameter">address</code> parameter.</p><p><code class="function">ne_iaddr_reverse</code> returns zero on success or non-zero if no hostname is associated with the address.</p><p><code class="function">ne_iaddr_raw</code> returns the - <code class="parameter">buffer</code> parameter, and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46200847337616"></a><h2>Examples</h2><p>The following example connects a socket to port 80 at the + <code class="parameter">buffer</code> parameter, and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46097881891536"></a><h2>Examples</h2><p>The following example connects a socket to port 80 at the address <code class="literal">127.0.0.1</code>.</p><pre class="programlisting">unsigned char addr[] = "\0x7f\0x00\0x00\0x01"; ne_inet_addr *ia; @@ -50,4 +50,4 @@ /* ... */ } else { /* ... */ -}</pre></div><div class="refsect1"><a name="idm46200847334880"></a><h2>See also</h2><p><a class="xref" 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="refi18n.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_i18n_init </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> +}</pre></div><div class="refsect1"><a name="idm46097881888800"></a><h2>See also</h2><p><a class="xref" 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="refi18n.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_i18n_init </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refneon.html ^ |
@@ -1,11 +1,11 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refneon"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>neon — HTTP and WebDAV client library</p></div><div class="refsect1"><a name="idm46200848159056"></a><h2>Description</h2><p>neon is an HTTP and WebDAV client library. The major +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refneon"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>neon — HTTP and WebDAV client library</p></div><div class="refsect1"><a name="idm46097882827776"></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 class="xref" href="refsess.html#ne_session_create">ne_session_create</a>; and the HTTP <span class="emphasis"><em>request</em></span>, created by <a class="xref" href="refreq.html#ne_request_create">ne_request_create</a>. HTTP authentication is handled transparently for server and proxy servers, see <a class="xref" href="refauth.html#ne_set_server_auth">ne_set_server_auth</a>; complete SSL/TLS support is also - included, see <a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>.</p></div><div class="refsect1"><a name="idm46200848126064"></a><h2>Conventions</h2><p>Some conventions are used throughout the neon API, to + included, see <a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>.</p></div><div class="refsect1"><a name="idm46097882785808"></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"><a name="idm46200848124896"></a><h3>Thread-safeness and global initialization</h3><p>neon itself is implemented to be thread-safe (avoiding any + below.</p><div class="refsect2"><a name="idm46097882784640"></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 <code class="function">getaddrinfo</code> interface, which @@ -35,11 +35,11 @@ (and <a class="xref" href="refsockinit.html#ne_sock_exit">ne_sock_exit</a>); neon neither checks whether these functions are called nor calls them itself.</p><p>For some applications and configurations it may be necessary to call <a class="xref" href="refi18n.html#ne_i18n_init">ne_i18n_init</a> to initialize the support - for internationalization in neon.</p></div><div class="refsect2"><a name="idm46200848097552"></a><h3>Asynchronous signal safety</h3><p>No function in neon is defined to be <span class="quote">“<span class="quote">async-signal safe</span>”</span> - + for internationalization in neon.</p></div><div class="refsect2"><a name="idm46097882766256"></a><h3>Asynchronous signal safety</h3><p>No function in neon is defined to be <span class="quote">“<span class="quote">async-signal safe</span>”</span> - that is, no function is safe to call from a signal handler. Any call into the neon library from a signal handler will have undefined behaviour - in other words, it may crash the - process.</p></div><div class="refsect2"><a name="idm46200848095680"></a><h3>Functions using global state</h3><p>Any function in neon may modify the + process.</p></div><div class="refsect2"><a name="idm46097882764384"></a><h3>Functions using global state</h3><p>Any function in neon may modify the <code class="literal">errno</code> global variable as a side-effect. Except where explicitly documented, the value of <code class="literal">errno</code> is unspecified after any neon function call.</p><p>Other than in the use of <code class="literal">errno</code>, the only @@ -51,7 +51,7 @@ <code class="function">ne_debug</code>, if enabled at compile time; for debugging output</li><li class="listitem"><a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a> for installing a process-global callback to be invoked on - <code class="function">malloc</code> failure</li></ul></div></div><div class="refsect2"><a name="idm46200848086736"></a><h3>Namespaces</h3><p>To avoid possible collisions between names used for symbols + <code class="function">malloc</code> failure</li></ul></div></div><div class="refsect2"><a name="idm46097882755440"></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 @@ -80,28 +80,28 @@ library and dependencies thereof; a number of symbols lie outside these prefixes.</td></tr><tr><td><p><span class="term">pakchois_</span></p></td><td>Namespace used by the pakchois library.</td></tr><tr><td><p><span class="term">px_</span></p></td><td>Namespace used by the libproxy - library.</td></tr></tbody></table></div></div><div class="refsect2"><a name="idm46200848071232"></a><h3>Argument validation</h3><p>neon does not attempt to validate that the parameters + library.</td></tr></tbody></table></div></div><div class="refsect2"><a name="idm46097882739936"></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 <code class="literal">NULL</code>). 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"><a name="idm46200848067792"></a><h3>URI paths, WebDAV metadata</h3><p>The path strings passed to any function must be + likely that neon will segfault under these conditions.</p></div><div class="refsect2"><a name="idm46097882736496"></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"><a name="idm46200848065488"></a><h3>User interaction</h3><p>As a pure library interface, neon will never produce + strings.</p></div><div class="refsect2"><a name="idm46097882734192"></a><h3>User interaction</h3><p>As a pure library interface, neon will never produce output on <code class="constant">stdout</code> or <code class="constant">stderr</code>; all user interaction is the - responsibility of the application.</p></div><div class="refsect2"><a name="idm46200848063376"></a><h3>Memory handling</h3><p>neon does not attempt to cope gracefully with an + responsibility of the application.</p></div><div class="refsect2"><a name="idm46097882732080"></a><h3>Memory handling</h3><p>neon does not attempt to cope gracefully with an out-of-memory situation; instead, by default, the <code class="function">abort</code> function is called to immediately terminate the process. An application may register a custom function which will be called before <code class="function">abort</code> in - such a situation; see <a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a>.</p></div><div class="refsect2"><a name="idm46200848060016"></a><h3>Callbacks and userdata</h3><p>Whenever a callback is registered, a + such a situation; see <a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a>.</p></div><div class="refsect2"><a name="idm46097882728720"></a><h3>Callbacks and userdata</h3><p>Whenever a callback is registered, a <code class="literal">userdata</code> pointer is also used to allow the application to associate a context with the callback. The userdata is of type <em class="type">void *</em>, allowing any pointer to - be used.</p></div><div class="refsect2"><a name="idm46200848057568"></a><h3>Large File Support</h3><p>Since version 0.27.0, neon transparently uses the "LFS + be used.</p></div><div class="refsect2"><a name="idm46097882726272"></a><h3>Large File Support</h3><p>Since version 0.27.0, neon transparently uses the "LFS transitional" interfaces in functions which use file descriptors. This allows use of files larger than 2GiB on platforms with a native 32-bit <code class="literal">off_t</code> type, where LFS support is @@ -109,5 +109,5 @@ type, which is defined to be either <code class="literal">off_t</code> or <code class="literal">off64_t</code> according to whether LFS support is detected at build time. neon does not use or require the - <code class="literal">-D_FILE_OFFSET_BITS=64</code> macro definition.</p></div></div><div class="refsect1"><a name="idm46200848052304"></a><h2>See also</h2><p><a class="xref" href="refsess.html" title="ne_session_create"><span class="refentrytitle">ne_session_create</span></a>, <a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a>, + <code class="literal">-D_FILE_OFFSET_BITS=64</code> macro definition.</p></div></div><div class="refsect1"><a name="idm46097882721008"></a><h2>See also</h2><p><a class="xref" href="refsess.html" title="ne_session_create"><span class="refentrytitle">ne_session_create</span></a>, <a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a>, <a class="ulink" href="https://notroj.github.io/neon/" target="_top">https://notroj.github.io/neon/</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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refopts.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_useragent</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refresphdr.html" title="ne_get_response_header"><link rel="next" href="refreqflags.html" title="ne_set_request_flag"></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="refresphdr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqflags.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refopts"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_useragent, ne_set_read_timeout, ne_set_connect_timeout, ne_get_scheme, ne_get_server_hostport — common properties for HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_useragent</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">product</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_read_timeout</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">timeout</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_connect_timeout</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">timeout</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_scheme</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_server_hostport</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846663648"></a><h2>Description</h2><p>The <code class="literal">User-Agent</code> request header is used +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_useragent</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refresphdr.html" title="ne_get_response_header"><link rel="next" href="refreqflags.html" title="ne_set_request_flag"></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="refresphdr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqflags.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refopts"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_useragent, ne_set_read_timeout, ne_set_connect_timeout, ne_get_scheme, ne_get_server_hostport — common properties for HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_useragent</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">product</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_read_timeout</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">timeout</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_connect_timeout</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">timeout</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_scheme</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_server_hostport</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881217872"></a><h2>Description</h2><p>The <code class="literal">User-Agent</code> request header is used to identify the software which generated the request for statistical or debugging purposes. neon does not send a <code class="literal">User-Agent</code> header unless a call is made to the @@ -23,6 +23,6 @@ <code class="function">ne_get_server_hostport</code>; for example <code class="literal">www.example.com:8080</code>. Note that the <code class="literal">:port</code> will be omitted if the default port - for the scheme is used.</p></div><div class="refsect1"><a name="idm46200846650704"></a><h2>Examples</h2><p>Set a user-agent string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...); + for the scheme is used.</p></div><div class="refsect1"><a name="idm46097881204928"></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>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 class="refsect1"><a name="idm46200846647728"></a><h2>See also</h2><p><a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refresphdr.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="refreqflags.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_get_response_header </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_flag</td></tr></table></div></body></html> +ne_set_read_timeout(sess, 30);</pre></div><div class="refsect1"><a name="idm46097881201952"></a><h2>See also</h2><p><a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refresphdr.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="refreqflags.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_get_response_header </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_flag</td></tr></table></div></body></html> | ||
[-] [+] | Added | neon-0.32.1.tar.gz/doc/html/refparam.html ^ |
@@ -0,0 +1,19 @@ +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_strparam</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refhash.html" title="ne_strhash"><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_strparam</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refhash.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"><a name="refparam"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_strparam — HTTP extended parameter value encoding</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strparam</b>(</code></td><td>const char *<var class="pdparam">charset</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">lang</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882158848"></a><h2>Description</h2><p>The <code class="function">ne_strparam</code> function can be + used to encode an extended parameter value for an HTTP header, + as defined in RFC 5987. The function takes as arguments the + <code class="parameter">value</code> to encode, using a given MIME + <code class="parameter">charset</code> character set, and + <code class="parameter">lang</code> language tag. The extended + parameter encoding is used in HTTP protocol specifications to + allow easily embedding special characters (such as quote + marks, separators or non-ASCII) in header values.</p><p>In accordance with RFC 5987, the + <code class="parameter">charset</code> argument must be either + <code class="constant">"UTF-8"</code> or + <code class="constant">"IS0-8859-1"</code>, but the + <code class="parameter">lang</code> argument may be <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46097882152016"></a><h2>Return value</h2><p>The return value is either: + + </p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="literal">NULL</code></span></p></td><td>if the value parameter is a "regular + parameter" and does not need extended + encoding</td></tr><tr><td><p><span class="term">non-<code class="literal">NULL</code></span></p></td><td>the encoding of the input value as an + extended parameter as a NUL-terminated, malloc-allocated + string</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46097882146912"></a><h2>See also</h2><p><a class="ulink" href="https://tools.ietf.org/html/rfc5987" target="_top">https://tools.ietf.org/html/rfc5987</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refhash.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_strhash </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refproxy.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_session_proxy</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsess.html" title="ne_session_create"><link rel="next" href="refsessflags.html" title="ne_set_session_flag"></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_proxy</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="refsessflags.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refproxy"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_session_proxy, ne_session_socks_proxy, ne_session_system_proxy, ne_set_addrlist — configure proxy servers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_system_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">flags</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_socks_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>enum ne_sock_sversion <var class="pdparam">version</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">username</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_addrlist</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const ne_inet_addr **<var class="pdparam">addrlist</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">count</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847091344"></a><h2>Description</h2><p>One (and no more than one) of the functions +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_session_proxy</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsess.html" title="ne_session_create"><link rel="next" href="refsessflags.html" title="ne_set_session_flag"></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_proxy</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="refsessflags.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refproxy"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_session_proxy, ne_session_socks_proxy, ne_session_system_proxy, ne_set_addrlist — configure proxy servers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_system_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">flags</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_socks_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>enum ne_sock_sversion <var class="pdparam">version</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">username</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_addrlist</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const ne_inet_addr **<var class="pdparam">addrlist</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">count</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881645488"></a><h2>Description</h2><p>One (and no more than one) of the functions <code class="function">ne_session_proxy</code>, <code class="function">ne_session_system_proxy</code>, <code class="function">ne_session_socks_proxy</code>, @@ -7,17 +7,17 @@ function is invoked for any given session object, only the last call has effect. If one of the functions is to be used, it must be used before the creation of any request object for - the session.</p><div class="refsect2"><a name="idm46200847087520"></a><h3>HTTP proxy specification</h3><p>The <code class="function">ne_session_proxy</code> function + the session.</p><div class="refsect2"><a name="idm46097881641664"></a><h3>HTTP proxy specification</h3><p>The <code class="function">ne_session_proxy</code> function configures use of an HTTP proxy server for the session, the location of which is given by the <code class="parameter">hostname</code> and <code class="parameter">port</code> parameters. If the proxy requires authentication, <a class="xref" href="refauth.html#ne_set_proxy_auth">ne_set_proxy_auth</a> - should be used.</p></div><div class="refsect2"><a name="idm46200847083776"></a><h3>System proxy configuration</h3><p>The <code class="function">ne_session_system_proxy</code> + should be used.</p></div><div class="refsect2"><a name="idm46097881637920"></a><h3>System proxy configuration</h3><p>The <code class="function">ne_session_system_proxy</code> function configures the session to use any proxy servers specified by the system configuration. Support for this function is platform-specific; if unsupported, the function - has no effect.</p></div><div class="refsect2"><a name="idm46200847081760"></a><h3>SOCKS proxy configuration</h3><p>The <code class="function">ne_session_socks_proxy</code> + has no effect.</p></div><div class="refsect2"><a name="idm46097881635904"></a><h3>SOCKS proxy configuration</h3><p>The <code class="function">ne_session_socks_proxy</code> function configures the session to use a SOCKS proxy. The <code class="parameter">version</code> indicates which version of the SOCKS protocol should be used. The @@ -33,7 +33,7 @@ parameter is ignored.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SOCK_SOCKSV5</code> (version 5)</span></p></td><td>The <code class="parameter">username</code> parameter may be <code class="literal">NULL</code>; if it is non-<code class="literal">NULL</code>, the <code class="parameter">password</code> parameter must also - be non-<code class="literal">NULL</code>; otherwise, it is ignored..</td></tr></tbody></table></div></div><div class="refsect2"><a name="idm46200847065504"></a><h3>Origin server address override</h3><p>The <code class="function">ne_set_addrlist</code> function + be non-<code class="literal">NULL</code>; otherwise, it is ignored..</td></tr></tbody></table></div></div><div class="refsect2"><a name="idm46097881619648"></a><h3>Origin server address override</h3><p>The <code class="function">ne_set_addrlist</code> function forces use of an address and port the a specified list when establishing a TCP connection, ignoring the "real" hostname and port identifying the origin server for the session (as @@ -44,10 +44,10 @@ through the <code class="parameter">addrlist</code> list, attempting to connect to the address <code class="parameter">addrlist[0]</code> through to <code class="parameter">addrlist[count-1]</code> in turn, - until a connection can be established.</p></div></div><div class="refsect1"><a name="idm46200847059904"></a><h2>Return Values</h2><p>None of the functions described here has a return - value.</p></div><div class="refsect1"><a name="idm46200847058672"></a><h2>Examples</h2><p>Create and destroy a session:</p><pre class="programlisting">ne_session *sess; + until a connection can be established.</p></div></div><div class="refsect1"><a name="idm46097881614048"></a><h2>Return Values</h2><p>None of the functions described here has a return + value.</p></div><div class="refsect1"><a name="idm46097881612816"></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); ne_session_proxy(sess, "proxy.example.com", 3128); /* ... use sess ... */ ne_session_destroy(sess); -</pre></div><div class="refsect1"><a name="idm46200847056704"></a><h2>See Also</h2><p><a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a></p></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="refsessflags.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_session_flag</td></tr></table></div></body></html> +</pre></div><div class="refsect1"><a name="idm46097881610848"></a><h2>See Also</h2><p><a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a></p></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="refsessflags.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_session_flag</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refreq.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_request_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsessflags.html" title="ne_set_session_flag"><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">ne_request_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsessflags.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"><a name="refreq"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_request *<b class="fsfunc">ne_request_create</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">method</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">path</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_request_dispatch</b>(</code></td><td>ne_request *<var class="pdparam">req</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_request_destroy</b>(</code></td><td>ne_request *<var class="pdparam">req</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846901776"></a><h2>Description</h2><p>The <em class="type">ne_request</em> object represents an HTTP +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_request_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsessflags.html" title="ne_set_session_flag"><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">ne_request_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsessflags.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"><a name="refreq"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_request *<b class="fsfunc">ne_request_create</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">method</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">path</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_request_dispatch</b>(</code></td><td>ne_request *<var class="pdparam">req</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_request_destroy</b>(</code></td><td>ne_request *<var class="pdparam">req</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881455920"></a><h2>Description</h2><p>The <em class="type">ne_request</em> object represents an HTTP request and the associated response. The <code class="function">ne_request_create</code> function creates a new request object for the @@ -33,14 +33,14 @@ request object produces undefined behaviour.</p><p>If a request is being using a non-idempotent method such as <code class="literal">POST</code>, the <code class="literal">NE_REQFLAG_IDEMPOTENT</code> flag should be - disabled; see <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div><div class="refsect1"><a name="idm46200846881968"></a><h2>Return value</h2><p>The <code class="function">ne_request_create</code> function + disabled; see <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div><div class="refsect1"><a name="idm46097881436112"></a><h2>Return value</h2><p>The <code class="function">ne_request_create</code> function returns a pointer to a request object (and never <code class="literal">NULL</code>).</p><p>The <code class="function">ne_request_dispatch</code> function returns zero if the request was dispatched successfully, and a -non-zero error code otherwise.</p></div><div class="refsect1"><a name="idm46200846878112"></a><h2>Errors</h2><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><span class="errorcode">NE_ERROR</span></span></p></td><td>Request failed (see session error string)</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_LOOKUP</span></span></p></td><td>The DNS lookup for the server (or proxy server) failed.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_AUTH</span></span></p></td><td>Authentication failed on the server.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_PROXYAUTH</span></span></p></td><td>Authentication failed on the proxy server.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_CONNECT</span></span></p></td><td>A connection to the server could not be established.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_TIMEOUT</span></span></p></td><td>A timeout occurred while waiting for the server to respond.</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46200846866224"></a><h2>Example</h2><p>An example of applying a <code class="literal">MKCOL</code> +non-zero error code otherwise.</p></div><div class="refsect1"><a name="idm46097881432256"></a><h2>Errors</h2><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><span class="errorcode">NE_ERROR</span></span></p></td><td>Request failed (see session error string)</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_LOOKUP</span></span></p></td><td>The DNS lookup for the server (or proxy server) failed.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_AUTH</span></span></p></td><td>Authentication failed on the server.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_PROXYAUTH</span></span></p></td><td>Authentication failed on the proxy server.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_CONNECT</span></span></p></td><td>A connection to the server could not be established.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_TIMEOUT</span></span></p></td><td>A timeout occurred while waiting for the server to respond.</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46097881420368"></a><h2>Example</h2><p>An example of applying a <code class="literal">MKCOL</code> operation to the resource at the location <code class="literal">http://www.example.com/foo/bar/</code>:</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"><a name="idm46200846862944"></a><h2>See also</h2><p><a class="xref" href="referr.html#ne_get_error">ne_get_error</a>, <a class="xref" href="referr.html#ne_set_error">ne_set_error</a>, <a class="xref" href="refgetst.html#ne_get_status">ne_get_status</a>, <a class="xref" href="refreqhdr.html#ne_add_request_header">ne_add_request_header</a>, <a class="xref" href="refreqbody.html#ne_set_request_body_buffer">ne_set_request_body_buffer</a>, <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsessflags.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">ne_set_session_flag </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> +ne_request_destroy(req);</pre></div><div class="refsect1"><a name="idm46097881417088"></a><h2>See also</h2><p><a class="xref" href="referr.html#ne_get_error">ne_get_error</a>, <a class="xref" href="referr.html#ne_set_error">ne_set_error</a>, <a class="xref" href="refgetst.html#ne_get_status">ne_get_status</a>, <a class="xref" href="refreqhdr.html#ne_add_request_header">ne_add_request_header</a>, <a class="xref" href="refreqbody.html#ne_set_request_body_buffer">ne_set_request_body_buffer</a>, <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsessflags.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">ne_set_session_flag </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refreqbody.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_request_body_buffer</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqflags.html" title="ne_set_request_flag"><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="refreqflags.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"><a name="refreqbody"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_request_body_buffer</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">count</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_set_request_body_fd</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">fd</var>, </td></tr><tr><td> </td><td>ne_off_t <var class="pdparam">begin</var>, </td></tr><tr><td> </td><td>ne_off_t <var class="pdparam">length</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846536336"></a><h2>Description</h2><p>The <code class="function">ne_set_request_body_buffer</code> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_request_body_buffer</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqflags.html" title="ne_set_request_flag"><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="refreqflags.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"><a name="refreqbody"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_request_body_buffer</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">count</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_set_request_body_fd</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">fd</var>, </td></tr><tr><td> </td><td>ne_off_t <var class="pdparam">begin</var>, </td></tr><tr><td> </td><td>ne_off_t <var class="pdparam">length</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881090576"></a><h2>Description</h2><p>The <code class="function">ne_set_request_body_buffer</code> function specifies that a message body should be included with the body, which is stored in the <code class="parameter">count</code> bytes buffer <code class="parameter">buf</code>.</p><p>The <code class="function">ne_set_request_body_fd</code> function @@ -14,4 +14,4 @@ <code class="function">ne_set_request_body_buffer</code> nor the file descriptor passed to <code class="function">ne_set_request_body_fd</code> are copied - internally.</p></div><div class="refsect1"><a name="idm46200846527712"></a><h2>See also</h2><p><a class="xref" 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="refreqflags.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_request_flag </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> + internally.</p></div><div class="refsect1"><a name="idm46097881081952"></a><h2>See also</h2><p><a class="xref" 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="refreqflags.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_request_flag </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refreqflags.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_request_flag</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refopts.html" title="ne_set_useragent"><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_request_flag</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="refreqbody.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refreqflags"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_request_flag, ne_get_request_flag — set and retrieve per-request flags</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_request_flag</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>ne_request_flag <var class="pdparam">flag</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_get_request_flag</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>ne_request_flag <var class="pdparam">flag</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846589152"></a><h2>Description</h2><p>The <code class="function">ne_set_request_flag</code> function +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_request_flag</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refopts.html" title="ne_set_useragent"><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_request_flag</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="refreqbody.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refreqflags"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_request_flag, ne_get_request_flag — set and retrieve per-request flags</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_request_flag</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>ne_request_flag <var class="pdparam">flag</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_get_request_flag</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>ne_request_flag <var class="pdparam">flag</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881143392"></a><h2>Description</h2><p>The <code class="function">ne_set_request_flag</code> function enables or disables a per-request flag. Passing a non-zero <code class="parameter">value</code> argument enables the flag, and zero disables it.</p><p>The following flags are defined:</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_REQFLAG_EXPECT100</code></span></p></td><td>enable this flag to use the "Expect: @@ -9,6 +9,6 @@ the request to be resent), but has interoperability problems with some older servers.</td></tr><tr><td><p><span class="term"><code class="constant">NE_REQFLAG_IDEMPOTENT</code></span></p></td><td>disable this flag if the request uses a non-idempotent method such as - <code class="literal">POST</code></td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46200846581664"></a><h2>Return value</h2><p>The <code class="function">ne_get_request_flag</code> function returns + <code class="literal">POST</code></td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46097881135904"></a><h2>Return value</h2><p>The <code class="function">ne_get_request_flag</code> function returns zero if a flag is disabled, less than zero if the flag is not - supported, or greater than zero if the flag is enabled.</p></div><div class="refsect1"><a name="idm46200846579888"></a><h2>See also</h2><p><a class="xref" 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="refreqbody.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_request_body_buffer</td></tr></table></div></body></html> + supported, or greater than zero if the flag is enabled.</p></div><div class="refsect1"><a name="idm46097881134128"></a><h2>See also</h2><p><a class="xref" 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="refreqbody.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_request_body_buffer</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refreqhdr.html ^ |
@@ -1,8 +1,8 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_add_request_header</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreq.html" title="ne_request_create"><link rel="next" href="refresphdr.html" title="ne_get_response_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">ne_add_request_header</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="refresphdr.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refreqhdr"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_add_request_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_print_request_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">format</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846782800"></a><h2>Description</h2><p>The functions <code class="function">ne_add_request_header</code> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_add_request_header</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreq.html" title="ne_request_create"><link rel="next" href="refresphdr.html" title="ne_get_response_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">ne_add_request_header</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="refresphdr.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refreqhdr"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_add_request_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_print_request_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">format</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881336944"></a><h2>Description</h2><p>The functions <code class="function">ne_add_request_header</code> and <code class="function">ne_print_request_header</code> can be used to add headers to a request, before it is sent.</p><p><code class="function">ne_add_request_header</code> simply adds a header of given <code class="parameter">name</code>, with given <code class="parameter">value</code>.</p><p><code class="function">ne_print_request_header</code> adds a header of given <code class="parameter">name</code>, taking the value from the <code class="function">printf</code>-like <code class="parameter">format</code> string -parameter and subsequent variable-length argument list.</p></div><div class="refsect1"><a name="idm46200846775520"></a><h2>See also</h2><p><a class="xref" 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="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="refresphdr.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_get_response_header</td></tr></table></div></body></html> +parameter and subsequent variable-length argument list.</p></div><div class="refsect1"><a name="idm46097881329664"></a><h2>See also</h2><p><a class="xref" 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="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="refresphdr.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_get_response_header</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refresolve.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_addr_resolve</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refconfig.html" title="neon-config"><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="refconfig.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"><a name="refresolve"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_sock_addr *<b class="fsfunc">ne_addr_resolve</b>(</code></td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">flags</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_addr_result</b>(</code></td><td>const ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_first</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_next</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_addr_error</b>(</code></td><td>const ne_sock_addr *<var class="pdparam">addr</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">bufsiz</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_addr_destroy</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847882352"></a><h2>Description</h2><p>The <code class="function">ne_addr_resolve</code> function resolves +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_addr_resolve</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refconfig.html" title="neon-config"><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="refconfig.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"><a name="refresolve"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_sock_addr *<b class="fsfunc">ne_addr_resolve</b>(</code></td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">flags</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_addr_result</b>(</code></td><td>const ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_first</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_next</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_addr_error</b>(</code></td><td>const ne_sock_addr *<var class="pdparam">addr</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">bufsiz</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_addr_destroy</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097882551120"></a><h2>Description</h2><p>The <code class="function">ne_addr_resolve</code> function resolves the given <code class="parameter">hostname</code>, returning an <em class="type">ne_sock_addr</em> object representing the address (or addresses) associated with the hostname. The @@ -25,10 +25,10 @@ addresses. The <em class="type">ne_inet_addr</em> pointer returned by these functions can be passed to <code class="function">ne_sock_connect</code> to connect a socket.</p><p>After the address object has been used, it should be - destroyed using <code class="function">ne_addr_destroy</code>.</p></div><div class="refsect1"><a name="idm46200847865040"></a><h2>Return value</h2><p><code class="function">ne_addr_resolve</code> returns a pointer to an + destroyed using <code class="function">ne_addr_destroy</code>.</p></div><div class="refsect1"><a name="idm46097882533808"></a><h2>Return value</h2><p><code class="function">ne_addr_resolve</code> returns a pointer to an address object, and never <code class="literal">NULL</code>. <code class="function">ne_addr_error</code> returns the - <code class="parameter">buffer</code> parameter .</p></div><div class="refsect1"><a name="idm46200847861520"></a><h2>Examples</h2><p>The code below prints out the set of addresses associated + <code class="parameter">buffer</code> parameter .</p></div><div class="refsect1"><a name="idm46097882530288"></a><h2>Examples</h2><p>The code below prints out the set of addresses associated with the hostname <code class="literal">www.google.com</code>.</p><pre class="programlisting">ne_sock_addr *addr; char buf[256]; @@ -45,4 +45,4 @@ putchar('\n'); } ne_addr_destroy(addr); -</pre></div><div class="refsect1"><a name="idm46200847859024"></a><h2>See also</h2><p><a class="xref" 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="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="refbuf.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_buffer</td></tr></table></div></body></html> +</pre></div><div class="refsect1"><a name="idm46097882527792"></a><h2>See also</h2><p><a class="xref" 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="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="refbuf.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_buffer</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refresphdr.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_response_header</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqhdr.html" title="ne_add_request_header"><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_get_response_header</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="refopts.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refresphdr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_get_response_header, ne_response_header_iterate — functions to access response headers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_response_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_response_header_iterate</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">cursor</var>, </td></tr><tr><td> </td><td>const char **<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char **<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846734032"></a><h2>Description</h2><p>To retrieve the value of a response header field, the +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_response_header</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqhdr.html" title="ne_add_request_header"><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_get_response_header</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="refopts.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refresphdr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_get_response_header, ne_response_header_iterate — functions to access response headers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_response_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_response_header_iterate</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">cursor</var>, </td></tr><tr><td> </td><td>const char **<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char **<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881288176"></a><h2>Description</h2><p>To retrieve the value of a response header field, the <code class="function">ne_get_response_header</code> function can be used, and is given the name of the header to return.</p><p>To iterate over all the response headers returned, the <code class="function">ne_response_header_iterate</code> function can be @@ -8,14 +8,14 @@ the <code class="parameter">name</code> and <code class="parameter">value</code> parameters, and returns a new cursor pointer which can be passed to <code class="function">ne_response_header_iterate</code> to retrieve the - next header.</p></div><div class="refsect1"><a name="idm46200846727824"></a><h2>Return value</h2><p><code class="function">ne_get_response_header</code> returns a + next header.</p></div><div class="refsect1"><a name="idm46097881281968"></a><h2>Return value</h2><p><code class="function">ne_get_response_header</code> returns a string, or <code class="literal">NULL</code> if no header with that name was given. If used during request processing, the return value pointer is valid only until the next call to <code class="function">ne_begin_request</code>, or else, until the request object is destroyed.</p><p>Likewise, the cursor, names, and values returned by <code class="function">ne_response_header_iterate</code> are only valid until the next call to <code class="function">ne_begin_request</code> or - until the request object is destroyed.</p></div><div class="refsect1"><a name="idm46200846723056"></a><h2>Examples</h2><p>The following code will output the value of the + until the request object is destroyed.</p></div><div class="refsect1"><a name="idm46097881277200"></a><h2>Examples</h2><p>The following code will output the value of the <code class="literal">Last-Modified</code> header for a resource:</p><pre class="programlisting">ne_request *req = ne_request_create(sess, "GET", "/foo.txt"); if (ne_request_dispatch(req) == NE_OK) { const char *mtime = ne_get_response_header(req, "Last-Modified"); @@ -23,4 +23,4 @@ printf("/foo.txt has last-modified value %s\n", mtime); } } -ne_request_destroy(req);</pre></div><div class="refsect1"><a name="idm46200846720352"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a>, <a class="xref" href="refreq.html#ne_request_destroy">ne_request_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="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="refopts.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_set_useragent</td></tr></table></div></body></html> +ne_request_destroy(req);</pre></div><div class="refsect1"><a name="idm46097881274496"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a>, <a class="xref" href="refreq.html#ne_request_destroy">ne_request_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="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="refopts.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_set_useragent</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refsess.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_session_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refalloc.html" title="ne_malloc"><link rel="next" href="refproxy.html" title="ne_session_proxy"></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="refalloc.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refproxy.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsess"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_session_create, ne_close_connection, 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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_session *<b class="fsfunc">ne_session_create</b>(</code></td><td>const char *<var class="pdparam">scheme</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_close_connection</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_destroy</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200847184032"></a><h2>Description</h2><p>An <em class="type">ne_session</em> object represents an HTTP +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_session_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refalloc.html" title="ne_malloc"><link rel="next" href="refproxy.html" title="ne_session_proxy"></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="refalloc.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refproxy.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsess"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_session_create, ne_close_connection, 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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_session *<b class="fsfunc">ne_session_create</b>(</code></td><td>const char *<var class="pdparam">scheme</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_close_connection</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_destroy</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881738176"></a><h2>Description</h2><p>An <em class="type">ne_session</em> 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 @@ -27,14 +27,14 @@ subsequent use of the session pointer produces undefined behaviour. The session object must not be destroyed until after all associated request objects have been - destroyed.</p></div><div class="refsect1"><a name="idm46200847169872"></a><h2>Notes</h2><p>The hostname passed to + destroyed.</p></div><div class="refsect1"><a name="idm46097881724016"></a><h2>Notes</h2><p>The hostname passed to <code class="function">ne_session_create</code> is resolved when the first request using the session is dispatched; a DNS resolution failure can only be detected at that time (using the <code class="literal">NE_LOOKUP</code> error code); see <a class="xref" href="refreq.html#ne_request_dispatch">ne_request_dispatch</a> for -details.</p></div><div class="refsect1"><a name="idm46200847166816"></a><h2>Return Values</h2><p><code class="function">ne_session_create</code> will return - a pointer to a new session object (and never <code class="literal">NULL</code>).</p></div><div class="refsect1"><a name="idm46200847164464"></a><h2>Examples</h2><p>Create and destroy a session:</p><pre class="programlisting">ne_session *sess; +details.</p></div><div class="refsect1"><a name="idm46097881720960"></a><h2>Return Values</h2><p><code class="function">ne_session_create</code> will return + a pointer to a new session object (and never <code class="literal">NULL</code>).</p></div><div class="refsect1"><a name="idm46097881718608"></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"><a name="idm46200847162544"></a><h2>See Also</h2><p><a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</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="refproxy.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_proxy</td></tr></table></div></body></html> +</pre></div><div class="refsect1"><a name="idm46097881716688"></a><h2>See Also</h2><p><a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</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="refproxy.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_proxy</td></tr></table></div></body></html> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refsessflags.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_session_flag</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refproxy.html" title="ne_session_proxy"><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_set_session_flag</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refproxy.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"><a name="refsessflags"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_session_flag, ne_get_session_flag — set and retrieve session flags</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_session_flag</b>(</code></td><td>ne_session *<var class="pdparam">sess</var>, </td></tr><tr><td> </td><td>ne_session_flag <var class="pdparam">flag</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_get_session_flag</b>(</code></td><td>ne_session *<var class="pdparam">sess</var>, </td></tr><tr><td> </td><td>ne_session_flag <var class="pdparam">flag</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846974320"></a><h2>Description</h2><p>The <code class="function">ne_set_session_flag</code> function +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_session_flag</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refproxy.html" title="ne_session_proxy"><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_set_session_flag</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refproxy.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"><a name="refsessflags"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_session_flag, ne_get_session_flag — set and retrieve session flags</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_session_flag</b>(</code></td><td>ne_session *<var class="pdparam">sess</var>, </td></tr><tr><td> </td><td>ne_session_flag <var class="pdparam">flag</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_get_session_flag</b>(</code></td><td>ne_session *<var class="pdparam">sess</var>, </td></tr><tr><td> </td><td>ne_session_flag <var class="pdparam">flag</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097881528464"></a><h2>Description</h2><p>The <code class="function">ne_set_session_flag</code> function enables or disables a session flag. Passing a non-zero <code class="parameter">value</code> argument enables the flag, and zero disables it.</p><p>The following flags are defined:</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_SESSFLAG_PERSIST</code></span></p></td><td>disable this flag to prevent use of persistent @@ -12,6 +12,6 @@ which does not correctly support the TLS SNI extension</td></tr><tr><td><p><span class="term"><code class="constant">NE_SESSFLAG_EXPECT100</code></span></p></td><td>enable this flag to enable the request flag <code class="constant">NE_REQFLAG_EXPECT100</code> for new - requests</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46200846958528"></a><h2>Return value</h2><p>The <code class="function">ne_get_session_flag</code> function + requests</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46097881512672"></a><h2>Return value</h2><p>The <code class="function">ne_get_session_flag</code> function returns zero if a flag is disabled, less than zero if the flag is - not supported, or greater than zero if the flag is enabled.</p></div><div class="refsect1"><a name="idm46200846956592"></a><h2>See also</h2><p><a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>, <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refproxy.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_session_proxy </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> + not supported, or greater than zero if the flag is enabled.</p></div><div class="refsect1"><a name="idm46097881510736"></a><h2>See also</h2><p><a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>, <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refproxy.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_session_proxy </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refshave.html ^ |
@@ -1,7 +1,7 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_shave</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refshave"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_shave</b>(</code></td><td>char *<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">whitespace</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846415344"></a><h2>Description</h2><p><code class="function">ne_shave</code> returns a portion of +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_shave</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refshave"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_shave</b>(</code></td><td>char *<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">whitespace</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880969584"></a><h2>Description</h2><p><code class="function">ne_shave</code> returns a portion of <code class="parameter">str</code> with any leading or trailing characters in the <code class="parameter">whitespace</code> array removed. <code class="parameter">str</code> may be modified. Note that the return -value may not be equal to <code class="parameter">str</code>.</p></div><div class="refsect1"><a name="idm46200846411200"></a><h2>Examples</h2><p>The following code segment will output +value may not be equal to <code class="parameter">str</code>.</p></div><div class="refsect1"><a name="idm46097880965440"></a><h2>Examples</h2><p>The following code segment will output <code class="literal">"fish"</code>:</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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refsockinit.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_sock_init</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsockinit"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_sock_init, ne_sock_exit — perform library initialization</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_sock_init</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_sock_exit</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846383456"></a><h2>Description</h2><p>In some platforms and configurations, neon may be using +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_sock_init</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsockinit"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_sock_init, ne_sock_exit — perform library initialization</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_sock_init</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_sock_exit</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880937696"></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 <code class="function">ne_sock_init</code> function must be called before @@ -25,7 +25,7 @@ section. Otherwise, it is not safe to use neon with SSL in a multi-threaded process. The <a class="xref" href="reffeat.html#ne_has_support">ne_has_support</a> function can be used to determine whether neon is built to - enable thread-safety support in the SSL library.</p><div class="refsect2"><a name="idm46200846371984"></a><h3>Thread-safe SSL with OpenSSL</h3><p>neon follows two simple rules when dealing with the + enable thread-safety support in the SSL library.</p><div class="refsect2"><a name="idm46097880926224"></a><h3>Thread-safe SSL with OpenSSL</h3><p>neon follows two simple rules when dealing with the OpenSSL locking callbacks: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><code class="function">ne_sock_init</code> will set @@ -37,7 +37,7 @@ Applications and libraries should be able to co-operate to ensure that SSL use is always thread-safe if similar rules are - always followed.</p></div><div class="refsect2"><a name="idm46200846367392"></a><h3>Thread-safe SSL with GnuTLS</h3><p>The cryptography library used by GnuTLS, libgcrypt, only + always followed.</p></div><div class="refsect2"><a name="idm46097880921632"></a><h3>Thread-safe SSL with GnuTLS</h3><p>The cryptography library used by GnuTLS, libgcrypt, only supports an initialization operation to register thread-safety callbacks. <code class="function">ne_sock_init</code> will register the thread-safe locking callbacks on first use; @@ -46,6 +46,6 @@ unsafe to dynamically unload neon from the process if neon is configured with thread-safe SSL support enabled (since the callbacks would be left pointing at unmapped memory once neon - is unloaded).</p></div></div><div class="refsect1"><a name="idm46200846364224"></a><h2>Return value</h2><p><code class="function">ne_sock_init</code> returns zero on success, + is unloaded).</p></div></div><div class="refsect1"><a name="idm46097880918464"></a><h2>Return value</h2><p><code class="function">ne_sock_init</code> 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"><a name="idm46200846362320"></a><h2>See also</h2><p><a class="xref" href="refneon.html" title="neon"><span class="refentrytitle">neon</span></a>, <a class="xref" href="reffeat.html" title="ne_has_support"><span class="refentrytitle">ne_has_support</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> + neon library should be attempted.</p></div><div class="refsect1"><a name="idm46097880916560"></a><h2>See also</h2><p><a class="xref" href="refneon.html" title="neon"><span class="refentrytitle">neon</span></a>, <a class="xref" href="reffeat.html" title="ne_has_support"><span class="refentrytitle">ne_has_support</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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refsslca.html ^ |
@@ -1,10 +1,10 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_trust_cert</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsslca"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_trust_cert</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_trust_default_ca</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846100144"></a><h2>Description</h2><p>To indicate that a given certificate is trusted by the +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_trust_cert</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsslca"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_trust_cert</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_trust_default_ca</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880654384"></a><h2>Description</h2><p>To indicate that a given certificate is trusted by the user, the certificate object can be passed to <code class="function">ne_ssl_trust_cert</code>. The certificate object is duplicated internally and can subsequently be destroyed.</p><p>The SSL library in use by neon may include a default set of CA certificates; calling the <code class="function">ne_ssl_trust_default_ca</code> function will indicate -that these CAs are trusted by the user.</p></div><div class="refsect1"><a name="idm46200846097136"></a><h2>Examples</h2><p>Load the CA certificate stored in <code class="filename">/path/to/cacert.pem</code>:</p><pre class="programlisting">ne_session *sess = ne_session_create(...); +that these CAs are trusted by the user.</p></div><div class="refsect1"><a name="idm46097880651376"></a><h2>Examples</h2><p>Load the CA certificate stored in <code class="filename">/path/to/cacert.pem</code>:</p><pre class="programlisting">ne_session *sess = ne_session_create(...); ne_ssl_certificate *cert = ne_ssl_cert_read("/path/to/cacert.pem"); if (cert) { @@ -12,4 +12,4 @@ ne_ssl_cert_free(cert); } else { printf("Could not load CA cert: %s\n", ne_get_error(sess)); -}</pre></div><div class="refsect1"><a name="idm46200846094464"></a><h2>See also</h2><p><a class="xref" href="refsslcertio.html#ne_ssl_cert_read">ne_ssl_cert_read</a>, <a class="xref" href="refsslcertio.html#ne_ssl_cert_import">ne_ssl_cert_import</a>, <a class="xref" 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> +}</pre></div><div class="refsect1"><a name="idm46097880648704"></a><h2>See also</h2><p><a class="xref" href="refsslcertio.html#ne_ssl_cert_read">ne_ssl_cert_read</a>, <a class="xref" href="refsslcertio.html#ne_ssl_cert_import">ne_ssl_cert_import</a>, <a class="xref" 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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refsslcert2.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_cmp</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsslcert2"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_cert_cmp</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">c1</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">c2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_cert_free</b>(</code></td><td>ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846247312"></a><h2>Description</h2><p>The <code class="function">ne_ssl_cert_cmp</code> function can be +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_cmp</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsslcert2"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_cert_cmp</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">c1</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">c2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_cert_free</b>(</code></td><td>ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880801680"></a><h2>Description</h2><p>The <code class="function">ne_ssl_cert_cmp</code> 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 <code class="function">ne_ssl_cert_free</code> function can be used to destroy a certificate object when it is no longer | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refsslcertio.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_read</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsslcertio"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_read</b>(</code></td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_cert_write</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_import</b>(</code></td><td>const char *<var class="pdparam">data</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_ssl_cert_export</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846212112"></a><h2>Description</h2><p>The <code class="function">ne_ssl_cert_write</code> function writes a +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_read</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsslcertio"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_read</b>(</code></td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_cert_write</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_import</b>(</code></td><td>const char *<var class="pdparam">data</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_ssl_cert_export</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880766352"></a><h2>Description</h2><p>The <code class="function">ne_ssl_cert_write</code> function writes a certificate to a file using the PEM encoding. The <code class="function">ne_ssl_cert_export</code> function returns a base64-encoded <code class="literal">NUL</code>-terminated string representing the @@ -9,14 +9,14 @@ returns a certificate object from a base64-encoded string, <code class="parameter">data</code>, as returned by <code class="function">ne_ssl_cert_export</code>. The certificate object - returned by these functions should be destroyed using <a class="xref" href="refsslcert2.html#ne_ssl_cert_free">ne_ssl_cert_free</a> after use.</p></div><div class="refsect1"><a name="idm46200846204640"></a><h2>Return value</h2><p><code class="function">ne_ssl_cert_read</code> returns <code class="literal">NULL</code> if a + returned by these functions should be destroyed using <a class="xref" href="refsslcert2.html#ne_ssl_cert_free">ne_ssl_cert_free</a> after use.</p></div><div class="refsect1"><a name="idm46097880758880"></a><h2>Return value</h2><p><code class="function">ne_ssl_cert_read</code> returns <code class="literal">NULL</code> if a certificate could not be read from the file. <code class="function">ne_ssl_cert_write</code> returns non-zero if the certificate could not be written to the file. <code class="function">ne_ssl_cert_export</code> always returns a <code class="literal">NUL</code>-terminated string, and never <code class="literal">NULL</code>. <code class="function">ne_ssl_cert_import</code> returns <code class="literal">NULL</code> if the - string was not a valid base64-encoded certificate.</p></div><div class="refsect1"><a name="idm46200846198368"></a><h2>Encoding Formats</h2><p>The string produced by + string was not a valid base64-encoded certificate.</p></div><div class="refsect1"><a name="idm46097880752608"></a><h2>Encoding Formats</h2><p>The string produced by <code class="function">ne_ssl_cert_export</code> is the base64 encoding of the DER representation of the certificate. The file written by <code class="function">ne_ssl_cert_write</code> uses the PEM format: this | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refssldname.html ^ |
@@ -1,9 +1,9 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_dname</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refssldname"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_readable_dname</b>(</code></td><td>const ne_ssl_dname *<var class="pdparam">dname</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_dname_cmp</b>(</code></td><td>const ne_ssl_dname *<var class="pdparam">dn1</var>, </td></tr><tr><td> </td><td>const ne_ssl_dname *<var class="pdparam">dn2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846147312"></a><h2>Description</h2><p>The <code class="function">ne_ssl_readable_dname</code> function +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_dname</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refssldname"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_readable_dname</b>(</code></td><td>const ne_ssl_dname *<var class="pdparam">dname</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_dname_cmp</b>(</code></td><td>const ne_ssl_dname *<var class="pdparam">dn1</var>, </td></tr><tr><td> </td><td>const ne_ssl_dname *<var class="pdparam">dn2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880701552"></a><h2>Description</h2><p>The <code class="function">ne_ssl_readable_dname</code> function creates a single-line, human-readable string out of an <em class="type">ne_ssl_dname</em> object. The returned string is <code class="function">malloc</code>()-allocated, and must be <code class="function">free</code>()d by the caller.</p><p>The <code class="function">ne_ssl_dname_cmp</code> function compares two distinguished names, and returns zero if they are - equal, or non-zero otherwise.</p></div><div class="refsect1"><a name="idm46200846142768"></a><h2>Return value</h2><p><code class="function">ne_ssl_readable_dname</code> returns a <code class="function">malloc</code>-allocated - string, and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46200846139872"></a><h2>Examples</h2><p>See <a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a> for an example - use of <code class="function">ne_ssl_readable_dname</code>.</p></div><div class="refsect1"><a name="idm46200846137600"></a><h2>See also</h2><p><a class="xref" 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> + equal, or non-zero otherwise.</p></div><div class="refsect1"><a name="idm46097880697008"></a><h2>Return value</h2><p><code class="function">ne_ssl_readable_dname</code> returns a <code class="function">malloc</code>-allocated + string, and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm46097880694112"></a><h2>Examples</h2><p>See <a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a> for an example + use of <code class="function">ne_ssl_readable_dname</code>.</p></div><div class="refsect1"><a name="idm46097880691840"></a><h2>See also</h2><p><a class="xref" 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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refsslvfy.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_set_verify</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsslvfy"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">typedef int <b class="fsfunc">ne_ssl_verify_fn</b>(</code></td><td>void *<var class="pdparam">userdata</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">failures</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_set_verify</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_ssl_verify_fn <var class="pdparam">verify_fn</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200846056016"></a><h2>Description</h2><p>To enable manual SSL certificate verification, a +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_set_verify</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="refsslvfy"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">typedef int <b class="fsfunc">ne_ssl_verify_fn</b>(</code></td><td>void *<var class="pdparam">userdata</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">failures</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_set_verify</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_ssl_verify_fn <var class="pdparam">verify_fn</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880610640"></a><h2>Description</h2><p>To enable manual SSL certificate verification, a callback can be registered using <code class="function">ne_ssl_set_verify</code>. If such a callback is not registered, when a connection is established to an SSL server which @@ -18,9 +18,9 @@ If the server presented a chain of certificates, the chain can be accessed using <a class="xref" href="refcert.html#ne_ssl_cert_signedby">ne_ssl_cert_signedby</a>. The <code class="parameter">cert</code> object given is not valid after the -callback returns.</p></div><div class="refsect1"><a name="idm46200846041936"></a><h2>Return value</h2><p>The verification callback must return zero to indicate +callback returns.</p></div><div class="refsect1"><a name="idm46097880596336"></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"><a name="idm46200846040608"></a><h2>Examples</h2><p>The following code implements an example verification +which case, the connection will fail).</p></div><div class="refsect1"><a name="idm46097880595008"></a><h2>Examples</h2><p>The following code implements an example verification callback, using the <code class="function">dump_cert</code> function from <a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a> to display certification information. Notice that the hostname of the @@ -63,4 +63,4 @@ 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"><a name="idm46200846035184"></a><h2>See also</h2><p><a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refssldname.html#ne_ssl_readable_dname">ne_ssl_readable_dname</a>, <a class="xref" 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> +}</pre></div><div class="refsect1"><a name="idm46097880589584"></a><h2>See also</h2><p><a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refssldname.html#ne_ssl_readable_dname">ne_ssl_readable_dname</a>, <a class="xref" 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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refstatus.html ^ |
@@ -4,7 +4,7 @@ int major_version, minor_version; int code, klass; const char *reason_phrase; -} <em class="type">ne_status</em>;</pre></div></div><div class="refsect1"><a name="idm46200845892192"></a><h2>Description</h2><p>An <em class="type">ne_status</em> type represents an HTTP +} <em class="type">ne_status</em>;</pre></div></div><div class="refsect1"><a name="idm46097880446752"></a><h2>Description</h2><p>An <em class="type">ne_status</em> type represents an HTTP response status; used in response messages giving a result of request. The <em class="structfield"><code>major_version</code></em> and <em class="structfield"><code>minor_version</code></em> fields give the HTTP version @@ -12,11 +12,11 @@ <em class="structfield"><code>code</code></em> field gives the status code of the result (lying between 100 and 999 inclusive), and the <em class="structfield"><code>klass</code></em> field gives the -class<a href="#ftn.idm46200845889152" class="footnote" name="idm46200845889152"><sup class="footnote">[2]</sup></a>, which is equal to the most significant digit +class<a href="#ftn.idm46097880443712" class="footnote" name="idm46097880443712"><sup class="footnote">[2]</sup></a>, 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" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="literal">1xx</code></span></p></td><td>Informational response.</td></tr><tr><td><p><span class="term"><code class="literal">2xx</code></span></p></td><td>Success: the operation was successful</td></tr><tr><td><p><span class="term"><code class="literal">3xx</code></span></p></td><td>Redirection</td></tr><tr><td><p><span class="term"><code class="literal">4xx</code></span></p></td><td>Client error: the request made was incorrect in some - manner.</td></tr><tr><td><p><span class="term"><code class="literal">5xx</code></span></p></td><td>Server error</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46200845877984"></a><h2>See also</h2><p><a class="xref" href="refgetst.html#ne_get_status">ne_get_status</a>.</p></div><div class="footnotes"><br><hr style="width:100; text-align:left;margin-left: 0"><div id="ftn.idm46200845889152" class="footnote"><p><a href="#idm46200845889152" class="para"><sup class="para">[2] </sup></a>the field is named <span class="quote">“<span class="quote">klass</span>”</span> not + manner.</td></tr><tr><td><p><span class="term"><code class="literal">5xx</code></span></p></td><td>Server error</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm46097880432544"></a><h2>See also</h2><p><a class="xref" href="refgetst.html#ne_get_status">ne_get_status</a>.</p></div><div class="footnotes"><br><hr style="width:100; text-align:left;margin-left: 0"><div id="ftn.idm46097880443712" class="footnote"><p><a href="#idm46097880443712" class="para"><sup class="para">[2] </sup></a>the field is named <span class="quote">“<span class="quote">klass</span>”</span> not <span class="quote">“<span class="quote">class</span>”</span> so that the header can be used from a C++ program, in which <span class="quote">“<span class="quote">class</span>”</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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/reftok.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_token</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="reftok"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_token</b>(</code></td><td>char **<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>char <var class="pdparam">sep</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_qtoken</b>(</code></td><td>char **<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>char <var class="pdparam">sep</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">quotes</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200845840144"></a><h2>Description</h2><p><code class="function">ne_token</code> and +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_token</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" 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"><a name="reftok"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_token</b>(</code></td><td>char **<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>char <var class="pdparam">sep</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_qtoken</b>(</code></td><td>char **<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>char <var class="pdparam">sep</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">quotes</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880394704"></a><h2>Description</h2><p><code class="function">ne_token</code> and <code class="function">ne_qtoken</code> tokenize the string at the location stored in the pointer <code class="parameter">str</code>. Each time the function is called, it returns the next token, and modifies the @@ -10,7 +10,7 @@ is enclosed in a pair of one of the characters given in the <code class="parameter">quotes</code> string.</p><p>The string being tokenized is modified each time the tokenizing function is called; replacing the next separator -character with a <code class="literal">NUL</code> terminator.</p></div><div class="refsect1"><a name="idm46200845832432"></a><h2>Examples</h2><p>The following function prints out each token in a +character with a <code class="literal">NUL</code> terminator.</p></div><div class="refsect1"><a name="idm46097880386992"></a><h2>Examples</h2><p>The following function prints out each token in a comma-separated string <code class="parameter">list</code>, which is modified in-place:</p><pre class="programlisting">static void splitter(char *list) { | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refvers.html ^ |
@@ -1,10 +1,10 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_version_match</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="reftok.html" title="ne_token"><link rel="next" href="refxml.html" title="ne_xml_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_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="refxml.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refvers"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_version_match</b>(</code></td><td>int <var class="pdparam">major</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">minor</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_version_string</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200845794320"></a><h2>Description</h2><p>The <code class="function">ne_version_match</code> function returns +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_version_match</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="reftok.html" title="ne_token"><link rel="next" href="refxml.html" title="ne_xml_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_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="refxml.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refvers"></a><div class="titlepage"></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><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_version_match</b>(</code></td><td>int <var class="pdparam">major</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">minor</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_version_string</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880348880"></a><h2>Description</h2><p>The <code class="function">ne_version_match</code> function returns non-zero if the library version is not of major version <code class="parameter">major</code>, or the minor version is less than <code class="parameter">minor</code>. For neon versions 0.x, every minor version is assumed to be incompatible with every other minor version.</p><p>The <code class="function">ne_version_string</code> function returns - a string giving the library version.</p></div><div class="refsect1"><a name="idm46200845789904"></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)) { + a string giving the library version.</p></div><div class="refsect1"><a name="idm46097880344464"></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); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/refxml.html ^ |
@@ -1,4 +1,4 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_xml_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refvers.html" title="ne_version_match"><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_xml_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refvers.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"><a name="refxml"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_xml_create, ne_xml_destroy — create and destroy an XML parser</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_xml.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_xml_parser *<b class="fsfunc">ne_xml_create</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_xml_destroy</b>(</code></td><td>ne_xml_parser *<var class="pdparam">parser</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46200845760112"></a><h2>Description</h2><p>The <code class="function">ne_xml_create</code> function creates an +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_xml_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refvers.html" title="ne_version_match"><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_xml_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refvers.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"><a name="refxml"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_xml_create, ne_xml_destroy — create and destroy an XML parser</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_xml.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_xml_parser *<b class="fsfunc">ne_xml_create</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_xml_destroy</b>(</code></td><td>ne_xml_parser *<var class="pdparam">parser</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm46097880314672"></a><h2>Description</h2><p>The <code class="function">ne_xml_create</code> function creates an XML parser object, which can be used for parsing XML documents - using stacked SAX handlers.</p></div><div class="refsect1"><a name="idm46200845758208"></a><h2>Return value</h2><p><code class="function">ne_xml_create</code> returns a pointer to an - XML parser object, and never <code class="literal">NULL</code></p></div><div class="refsect1"><a name="idm46200845756064"></a><h2>See also</h2><p>XXX</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="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_version_match </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> + using stacked SAX handlers.</p></div><div class="refsect1"><a name="idm46097880312768"></a><h2>Return value</h2><p><code class="function">ne_xml_create</code> returns a pointer to an + XML parser object, and never <code class="literal">NULL</code></p></div><div class="refsect1"><a name="idm46097880310624"></a><h2>See also</h2><p>XXX</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="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_version_match </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> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/html/security.html ^ |
@@ -4,7 +4,7 @@ application) can be tricked into accessing an HTTP server which is controlled by an attacker. This section documents various types of possible attack and describes what mitigation is used in - neon.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46200853782144"></a>CPU or memory consumption attacks</h3></div></div></div><p>neon uses fixed resource limits to prevent the following + neon.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46097888446992"></a>CPU or memory consumption attacks</h3></div></div></div><p>neon uses fixed resource limits to prevent the following attacks:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>memory/CPU consumption attack using an unbounded number of response header fields</p></li><li class="listitem"><p>memory consumption attack using an unbounded length of individual response header lines (or continuation @@ -17,7 +17,7 @@ must be mitigated at application level. Memory consumption in neon itself is fixed and is not proportional to the response size.</p><p>Test cases for all the above attacks are present in the - neon test suite.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46200853773616"></a>SSL/TLS connection security</h3></div></div></div><p>When using a connection secured by SSL/TLS, it is necessary + neon test suite.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46097888494800"></a>SSL/TLS connection security</h3></div></div></div><p>When using a connection secured by SSL/TLS, it is necessary for clients to verify that the X.509 certificate presented by the server matches the server's expected identity. The algorithm required for this purpose is described in RFC 2818 and RFC 3280, @@ -35,14 +35,14 @@ present the certificate details to a user for manual/off-line verification, if possible.</p><p>Test cases for the correctness of the implementation of the identity verification algorithm are present in the neon test - suite.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46200848285312"></a>Control character insertion in error messages</h3></div></div></div><p>Where error messages (as returned by + suite.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46097882952960"></a>Control character insertion in error messages</h3></div></div></div><p>Where error messages (as returned by (<a class="xref" href="referr.html#ne_get_error">ne_get_error</a>) contain data supplied by the server, the untrusted data is sanitised to remove both control characters and non-ASCII characters. This prevents any attacks where such error messages are exposed to the user and can potentially distort the presentation of the interface (for example, through the use of a carriage return character in a text - user interface).</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46200848283264"></a>Attacks against authentication credentials</h3></div></div></div><p>Authentication credentials can be compromised by a + user interface).</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm46097882950912"></a>Attacks against authentication credentials</h3></div></div></div><p>Authentication credentials can be compromised by a "downgrade attack" by an active attacker; for example, where a MITM presents a Basic authentication challenge in place of the server's Digest challenge. neon mitigates these attacks by | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_add_request_header.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_add_request_header .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_ADD_REQUEST_HEADE" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_ADD_REQUEST_HEADE" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_addr_resolve.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_addr_resolve .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_ADDR_RESOLVE" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_ADDR_RESOLVE" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_buffer.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_buffer .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_BUFFER" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_BUFFER" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -49,7 +49,7 @@ type represents an expandable memory buffer for holding NUL\-terminated strings\&. The \fIdata\fR -field points to the beginnning of the string, the length of which is given by the +field points to the beginning of the string, the length of which is given by the \fIused\fR field\&. The current size of memory allocated is given by the \fIlength\fR | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_buffer_append.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_buffer_append .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_BUFFER_APPEND" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_BUFFER_APPEND" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_buffer_clear.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_buffer_clear .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_BUFFER_CLEAR" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_BUFFER_CLEAR" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_buffer_create.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_buffer_create .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_BUFFER_CREATE" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_BUFFER_CREATE" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_buffer_destroy.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_buffer_destroy .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_BUFFER_DESTROY" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_BUFFER_DESTROY" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_get_error.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_get_error .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_GET_ERROR" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_GET_ERROR" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_get_response_header.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_get_response_header .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_GET_RESPONSE_HEAD" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_GET_RESPONSE_HEAD" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_get_status.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_get_status .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_GET_STATUS" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_GET_STATUS" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_has_support.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_has_support .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_HAS_SUPPORT" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_HAS_SUPPORT" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_i18n_init.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_i18n_init .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_I18N_INIT" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_I18N_INIT" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_iaddr_make.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_iaddr_make .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_IADDR_MAKE" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_IADDR_MAKE" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_malloc.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_malloc .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_MALLOC" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_MALLOC" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_request_create.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_request_create .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_REQUEST_CREATE" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_REQUEST_CREATE" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_session_create.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_session_create .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SESSION_CREATE" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SESSION_CREATE" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_session_proxy.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_session_proxy .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SESSION_PROXY" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SESSION_PROXY" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_set_request_body_buffer.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_set_request_body_buffer .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SET_REQUEST_BODY_" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SET_REQUEST_BODY_" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_set_request_flag.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_set_request_flag .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SET_REQUEST_FLAG" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SET_REQUEST_FLAG" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_set_server_auth.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_set_server_auth .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SET_SERVER_AUTH" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SET_SERVER_AUTH" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_set_session_flag.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_set_session_flag .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SET_SESSION_FLAG" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SET_SESSION_FLAG" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_set_useragent.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_set_useragent .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SET_USERAGENT" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SET_USERAGENT" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_shave.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_shave .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SHAVE" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SHAVE" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_sock_init.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_sock_init .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SOCK_INIT" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SOCK_INIT" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_ssl_cert_cmp.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_ssl_cert_cmp .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SSL_CERT_CMP" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SSL_CERT_CMP" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_ssl_cert_identity.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_ssl_cert_identity .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SSL_CERT_IDENTITY" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SSL_CERT_IDENTITY" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_ssl_cert_read.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_ssl_cert_read .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SSL_CERT_READ" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SSL_CERT_READ" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_ssl_clicert_read.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_ssl_client_cert .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SSL_CLIENT_CERT" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SSL_CLIENT_CERT" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_ssl_readable_dname.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_ssl_dname .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SSL_DNAME" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SSL_DNAME" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_ssl_set_verify.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_ssl_set_verify .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SSL_SET_VERIFY" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SSL_SET_VERIFY" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_ssl_trust_cert.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_ssl_trust_cert .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_SSL_TRUST_CERT" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_SSL_TRUST_CERT" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_status.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_status .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_STATUS" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_STATUS" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Added | neon-0.32.1.tar.gz/doc/man/ne_strhash.3 ^ |
@@ -0,0 +1,106 @@ +'\" t +.\" Title: ne_strhash +.\" Author: +.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> +.\" Date: 20 September 2021 +.\" Manual: neon API reference +.\" Source: neon 0.32.1 +.\" Language: English +.\" +.TH "NE_STRHASH" "3" "20 September 2021" "neon 0.32.1" "neon API reference" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +ne_strhash, ne_vstrhash \- string hash interface +.SH "SYNOPSIS" +.sp +.ft B +.nf +#include <ne_string\&.h> +.fi +.ft +.HP \w'char\ *ne_strhash('u +.BI "char *ne_strhash(unsigned\ int\ " "flags" ", " "\&.\&.\&." ");" +.HP \w'char\ *ne_vstrhash('u +.BI "char *ne_vstrhash(unsigned\ int\ " "flags" ", va_list\ " "ap" ");" +.SH "DESCRIPTION" +.PP +The +\fBne_strhash\fR +and +\fBne_vstrhash\fR +functions can be used to create hashes\&. The varargs argument list must be +\fBconst char *\fR +strings followed by a +NULL +terminator\&. The +\fIflags\fR +argument must select exactly one hash algorithm from the list below, which can be optionally bitwise\-ORed with one of the formatting option\&. The hash is calculated for the concatenation of the argument list, without separators\&. +.SS "Hash algorithms" +.PP +The following hash algorithms are available: +.PP +\fBNE_HASH_MD5\fR +.RS 4 +MD5 +.RE +.PP +\fBNE_HASH_SHA256\fR +.RS 4 +SHA\-256 (SHA\-2) +.RE +.PP +\fBNE_HASH_SHA512\fR +.RS 4 +SHA\-512 (SHA\-2) +.RE +.PP +\fBNE_HASH_SHA256_256\fR +.RS 4 +SHA\-512/256 (SHA\-2) +.RE +.SS "Formatting options" +.PP +By default, the hash is returned as a hexadecimal lower\-case character string\&. The following formatting options are available: +.PP +\fBNE_HASH_COLON\fR +.RS 4 +colon\-separated hex pairs, e\&.g\&. +"aa:11:22\&.\&.\&." +.RE +.PP +\fBNE_HASH_SPACE\fR +.RS 4 +space\-separated hex pairs, e\&.g\&. +"aa 11 22\&.\&.\&." +.RE +.SH "RETURN VALUE" +.PP +The return value is the ASCII hexadecimal representation of the hash as a malloc\-allocated, NUL\-terminated string, or +NULL +if the hash cannot be created\&. The string length is determined by the hash algorithm (and formatting options used)\&. Support for hash algorithms is specific to the SSL toolkit with which neon is compiled\&. Some systems will further restrict hash availability at runtime, e\&.g\&. due to FIPS mode\&. +.SH "AUTHOR" +.PP +\fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> +.RS 4 +Author. +.RE +.SH "COPYRIGHT" +.br | ||
[-] [+] | Added | neon-0.32.1.tar.gz/doc/man/ne_strparam.3 ^ |
@@ -0,0 +1,85 @@ +'\" t +.\" Title: ne_strparam +.\" Author: +.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> +.\" Date: 20 September 2021 +.\" Manual: neon API reference +.\" Source: neon 0.32.1 +.\" Language: English +.\" +.TH "NE_STRPARAM" "3" "20 September 2021" "neon 0.32.1" "neon API reference" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +ne_strparam \- HTTP extended parameter value encoding +.SH "SYNOPSIS" +.sp +.ft B +.nf +#include <ne_string\&.h> +.fi +.ft +.HP \w'char\ *ne_strparam('u +.BI "char *ne_strparam(const\ char\ *" "charset" ", const\ char\ *" "lang" ", const\ char\ *" "value" ");" +.SH "DESCRIPTION" +.PP +The +\fBne_strparam\fR +function can be used to encode an extended parameter value for an HTTP header, as defined in RFC 5987\&. The function takes as arguments the +\fIvalue\fR +to encode, using a given MIME +\fIcharset\fR +character set, and +\fIlang\fR +language tag\&. The extended parameter encoding is used in HTTP protocol specifications to allow easily embedding special characters (such as quote marks, separators or non\-ASCII) in header values\&. +.PP +In accordance with RFC 5987, the +\fIcharset\fR +argument must be either +\fB"UTF\-8"\fR +or +\fB"IS0\-8859\-1"\fR, but the +\fIlang\fR +argument may be +NULL\&. +.SH "RETURN VALUE" +.PP +The return value is either: +.PP +NULL +.RS 4 +if the value parameter is a "regular parameter" and does not need extended encoding +.RE +.PP +non\-NULL +.RS 4 +the encoding of the input value as an extended parameter as a NUL\-terminated, malloc\-allocated string +.RE +.SH "SEE ALSO" +.PP +\m[blue]\fB\%https://tools.ietf.org/html/rfc5987\fR\m[] +.SH "AUTHOR" +.PP +\fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> +.RS 4 +Author. +.RE +.SH "COPYRIGHT" +.br | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_token.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_token .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_TOKEN" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_TOKEN" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_version_match.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_version_match .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_VERSION_MATCH" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_VERSION_MATCH" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Added | neon-0.32.1.tar.gz/doc/man/ne_vstrhash.3 ^ |
@@ -0,0 +1 @@ +.so man3/ne_strhash.3 | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/ne_xml_create.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: ne_xml_create .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NE_XML_CREATE" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NE_XML_CREATE" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/neon-config.1 ^ |
@@ -2,12 +2,12 @@ .\" Title: neon-config .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NEON\-CONFIG" "1" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NEON\-CONFIG" "1" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/man/neon.3 ^ |
@@ -2,12 +2,12 @@ .\" Title: neon .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 20 June 2020 +.\" Date: 20 September 2021 .\" Manual: neon API reference -.\" Source: neon 0.31.2 +.\" Source: neon 0.32.1 .\" Language: English .\" -.TH "NEON" "3" "20 June 2020" "neon 0.31.2" "neon API reference" +.TH "NEON" "3" "20 September 2021" "neon 0.32.1" "neon API reference" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/manual.xml ^ |
@@ -65,6 +65,8 @@ <!ENTITY refbufapp SYSTEM "ref/bufapp.xml"> <!ENTITY refbufdest SYSTEM "ref/bufdest.xml"> <!ENTITY refbufutil SYSTEM "ref/bufutil.xml"> +<!ENTITY refhash SYSTEM "ref/hash.xml"> +<!ENTITY refparam SYSTEM "ref/param.xml"> <!ENTITY reftok SYSTEM "ref/tok.xml"> <!ENTITY refshave SYSTEM "ref/shave.xml"> <!ENTITY refvers SYSTEM "ref/vers.xml"> @@ -87,7 +89,7 @@ </personname> <email>neon@lists.manyfish.co.uk</email> </author> - <copyright><year>2001-2008</year><holder>Joe Orton</holder></copyright> + <copyright><year>2001-2021</year><holder>Joe Orton</holder></copyright> <legalnotice> @@ -170,6 +172,8 @@ &refbufutil; <!-- ne_buffer_clear --> &refbufcr; <!-- ne_buffer_create --> &refbufdest; <!-- ne_buffer_destroy --> + &refhash; <!-- ne_strhash --> + &refparam; <!-- ne_strparam --> &referr; <!-- ne_get_error --> &refgetst; <!-- ne_get_status --> &reffeat; <!-- ne_has_support --> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/ref/buf.xml ^ |
@@ -27,7 +27,7 @@ <para>The <type>ne_buffer</type> type represents an expandable memory buffer for holding &nul;-terminated strings. The -<structfield>data</structfield> field points to the beginnning of the +<structfield>data</structfield> field points to the beginning of the string, the length of which is given by the <structfield>used</structfield> field. The current size of memory allocated is given by the <structfield>length</structfield> field. It | ||
[-] [+] | Added | neon-0.32.1.tar.gz/doc/ref/hash.xml ^ |
@@ -0,0 +1,108 @@ + <refentry id="refhash"> + + <refmeta> + <refentrytitle>ne_strhash</refentrytitle> + <manvolnum>3</manvolnum> + </refmeta> + + <refnamediv> + <refname id="ne_strhash">ne_strhash</refname> + <refname id="ne_vstrhash">ne_vstrhash</refname> + <refpurpose>string hash interface</refpurpose> + </refnamediv> + + <refsynopsisdiv> + + <funcsynopsis> + <funcsynopsisinfo>#include <ne_string.h></funcsynopsisinfo> + + <funcprototype> + <funcdef>char *<function>ne_strhash</function></funcdef> + <paramdef>unsigned int <parameter>flags</parameter></paramdef> + <paramdef><parameter>...</parameter></paramdef> + </funcprototype> + + <funcprototype> + <funcdef>char *<function>ne_vstrhash</function></funcdef> + <paramdef>unsigned int <parameter>flags</parameter></paramdef> + <paramdef>va_list <parameter>ap</parameter></paramdef> + </funcprototype> + </funcsynopsis> + + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + + <para>The <function>ne_strhash</function> and + <function>ne_vstrhash</function> functions can be used to + create hashes. The varargs argument list must be <type>const + char *</type> strings followed by a &null; terminator. The + <parameter>flags</parameter> argument must select exactly one + hash algorithm from the list below, which can be optionally + bitwise-ORed with one of the formatting option. The hash is + calculated for the concatenation of the argument list, without + separators.</para> + + <refsect2> + <title>Hash algorithms</title> + + <para>The following hash algorithms are available: + <variablelist> + <varlistentry> + <term><constant>NE_HASH_MD5</constant></term> + <listitem><simpara>MD5</simpara></listitem> + </varlistentry> + <varlistentry> + <term><constant>NE_HASH_SHA256</constant></term> + <listitem><simpara>SHA-256 (SHA-2)</simpara></listitem> + </varlistentry> + <varlistentry> + <term><constant>NE_HASH_SHA512</constant></term> + <listitem><simpara>SHA-512 (SHA-2)</simpara></listitem> + </varlistentry> + <varlistentry> + <term><constant>NE_HASH_SHA256_256</constant></term> + <listitem><simpara>SHA-512/256 (SHA-2)</simpara></listitem> + </varlistentry> + </variablelist> + + </para></refsect2> + + <refsect2> + <title>Formatting options</title> + + <para>By default, the hash is returned as a hexadecimal + lower-case character string. The following formatting + options are available: + + <variablelist> + <varlistentry> + <term><constant>NE_HASH_COLON</constant></term> + <listitem><simpara>colon-separated hex pairs, e.g. <literal>"aa:11:22..."</literal> </simpara></listitem> + </varlistentry> + <varlistentry> + <term><constant>NE_HASH_SPACE</constant></term> + <listitem><simpara>space-separated hex pairs, e.g. <literal>"aa 11 22..."</literal></simpara></listitem> + </varlistentry> + </variablelist></para> + + </refsect2> + + </refsect1> + + <refsect1> + <title>Return value</title> + + <para>The return value is the ASCII hexadecimal representation + of the hash as a malloc-allocated, NUL-terminated string, or + &null; if the hash cannot be created. The string length is + determined by the hash algorithm (and formatting options + used). Support for hash algorithms is specific to the SSL + toolkit with which &neon; is compiled. Some systems will + further restrict hash availability at runtime, e.g. due to + FIPS mode.</para> + + </refsect1> + + </refentry> | ||
[-] [+] | Added | neon-0.32.1.tar.gz/doc/ref/param.xml ^ |
@@ -0,0 +1,74 @@ + <refentry id="refparam"> + + <refmeta> + <refentrytitle>ne_strparam</refentrytitle> + <manvolnum>3</manvolnum> + </refmeta> + + <refnamediv> + <refname id="ne_strparam">ne_strparam</refname> + <refpurpose>HTTP extended parameter value encoding</refpurpose> + </refnamediv> + + <refsynopsisdiv> + + <funcsynopsis> + <funcsynopsisinfo>#include <ne_string.h></funcsynopsisinfo> + + <funcprototype> + <funcdef>char *<function>ne_strparam</function></funcdef> + <paramdef>const char *<parameter>charset</parameter></paramdef> + <paramdef>const char *<parameter>lang</parameter></paramdef> + <paramdef>const char *<parameter>value</parameter></paramdef> + </funcprototype> + </funcsynopsis> + + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + + <para>The <function>ne_strparam</function> function can be + used to encode an extended parameter value for an HTTP header, + as defined in RFC 5987. The function takes as arguments the + <parameter>value</parameter> to encode, using a given MIME + <parameter>charset</parameter> character set, and + <parameter>lang</parameter> language tag. The extended + parameter encoding is used in HTTP protocol specifications to + allow easily embedding special characters (such as quote + marks, separators or non-ASCII) in header values.</para> + + <para>In accordance with RFC 5987, the + <parameter>charset</parameter> argument must be either + <constant>"UTF-8"</constant> or + <constant>"IS0-8859-1"</constant>, but the + <parameter>lang</parameter> argument may be &null;.</para> + </refsect1> + + <refsect1> + <title>Return value</title> + + <para>The return value is either: + + <variablelist> + <varlistentry> + <term>&null;</term> + <listitem><simpara>if the value parameter is a "regular + parameter" and does not need extended + encoding</simpara></listitem> </varlistentry> + <varlistentry> + <term>non-&null;</term> + <listitem><simpara>the encoding of the input value as an + extended parameter as a NUL-terminated, malloc-allocated + string</simpara></listitem> + </varlistentry> + </variablelist></para> + </refsect1> + + <refsect1> + <title>See also</title> + + <para><ulink url="https://tools.ietf.org/html/rfc5987"/></para> + </refsect1> + +</refentry> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/doc/version.xml ^ |
@@ -1 +1 @@ -0.31.2 \ No newline at end of file +0.32.1 \ No newline at end of file | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/macros/neon.m4 ^ |
@@ -136,12 +136,12 @@ # Define the current versions. NE_VERSION_MAJOR=0 -NE_VERSION_MINOR=31 -NE_VERSION_PATCH=2 +NE_VERSION_MINOR=32 +NE_VERSION_PATCH=1 NE_VERSION_TAG= -# 0.31.x is backwards-compatible to 0.27.x, so AGE=4 -NE_LIBTOOL_VERSINFO="31:${NE_VERSION_PATCH}:4" +# 0.32.x is backwards-compatible to 0.27.x, so AGE=5 +NE_LIBTOOL_VERSINFO="32:${NE_VERSION_PATCH}:5" NE_DEFINE_VERSIONS @@ -363,27 +363,67 @@ AC_REQUIRE([NE_CHECK_OS]) AC_CACHE_CHECK([for library containing $1], [ne_cv_libsfor_$1], [ -AC_LINK_IFELSE( - [AC_LANG_PROGRAM([], [[$1();]])], - [ne_cv_libsfor_$1="none needed"], [ -ne_sl_save_LIBS=$LIBS -ne_cv_libsfor_$1="not found" -for lib in $2; do - # The w32api libraries link using the stdcall calling convention. - case ${lib}-${ne_cv_os_uname} in - ws2_32-MINGW*) ne__code="__stdcall $1();" ;; - *) ne__code="$1();" ;; + case $ne_cv_os_uname in + MINGW*) + ;; + *) + case $1 in + getaddrinfo) + ne__prologue="#include <netdb.h>" + ne__code="getaddrinfo(0,0,0,0);" + ;; + socket) + ne__prologue="#include <sys/socket.h>" + ne__code="socket(0,0,0);" + ;; + *) + ne__prologue="" + ne__code="$1();" + ;; esac - - LIBS="$ne_sl_save_LIBS -l$lib $NEON_LIBS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([], [$ne__code])], - [ne_cv_libsfor_$1="-l$lib"; break]) - m4_if($3, [], [], dnl If $3 is specified, then... - [LIBS="$ne_sl_save_LIBS -l$lib $3 $NEON_LIBS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([], [$ne__code])], - [ne_cv_libsfor_$1="-l$lib $3"; break])]) -done -LIBS=$ne_sl_save_LIBS])]) + ;; + esac + AC_LINK_IFELSE([AC_LANG_PROGRAM([$ne__prologue], [$ne__code])], [ne_cv_libsfor_$1="none needed"], [ + ne_sl_save_LIBS=$LIBS + ne_cv_libsfor_$1="not found" + for lib in $2; do + case $ne_cv_os_uname in + MINGW*) + case $lib in + ws2_32) + ne__prologue="#include <winsock2.h>" + case $1 in + gethostbyname) + ne__code="gethostbyname(\"\")" + ;; + socket) + ne__code="socket(0,0,0);" + ;; + *) + ne__code="$1();" + ;; + esac + ;; + *) + ne__prologue="" + ne__code="" + ;; + esac + ;; + *) + ;; + esac + LIBS="$ne_sl_save_LIBS -l$lib $NEON_LIBS" + AC_LINK_IFELSE([AC_LANG_PROGRAM([$ne__prologue], [$ne__code])], + [ne_cv_libsfor_$1="-l$lib"; break]) + m4_if($3, [], [], dnl If $3 is specified, then... + [LIBS="$ne_sl_save_LIBS -l$lib $3 $NEON_LIBS" + AC_LINK_IFELSE([AC_LANG_PROGRAM([$ne__prologue], [$ne__code])], + [ne_cv_libsfor_$1="-l$lib $3"; break])]) + done + LIBS=$ne_sl_save_LIBS + ]) +]) if test "$ne_cv_libsfor_$1" = "not found"; then m4_if([$4], [], [AC_MSG_ERROR([could not find library containing $1])], [$4]) @@ -614,7 +654,8 @@ AC_REPLACE_FUNCS(strcasecmp) -AC_CHECK_FUNCS(signal setvbuf setsockopt stpcpy poll fcntl getsockopt) +AC_CHECK_FUNCS([signal setvbuf setsockopt stpcpy poll fcntl getsockopt \ + explicit_bzero sendmsg]) if test "x${ac_cv_func_poll}${ac_cv_header_sys_poll_h}y" = "xyesyesy"; then AC_DEFINE([NE_USE_POLL], 1, [Define if poll() should be used]) @@ -849,7 +890,8 @@ AC_EGREP_CPP(good, [#include <openssl/opensslv.h> #if OPENSSL_VERSION_NUMBER >= $3 good -#endif], [$1=yes], [$1=no])])]) +#endif], [$1=yes +$4], [$1=no])])]) dnl Less noisy replacement for PKG_CHECK_MODULES AC_DEFUN([NE_PKG_CONFIG], [ @@ -919,6 +961,7 @@ NE_CHECK_OPENSSLVER(ne_cv_lib_ssl110, 1.1.0, 0x10100000L) if test "$ne_cv_lib_ssl110" = "yes"; then NE_ENABLE_SUPPORT(SSL, [SSL support enabled, using OpenSSL $NE_SSL_VERSION]) + AC_DEFINE(HAVE_OPENSSL11, 1, [Enable OpenSSL 1.1 support]) elif test "$ne_cv_lib_ssl097" = "yes"; then # Enable EGD support if using 0.9.7 or newer AC_MSG_NOTICE([OpenSSL >= 0.9.7; EGD support not needed in neon]) @@ -1063,21 +1106,29 @@ AC_DEFUN([NEON_GSSAPI], [ AC_ARG_WITH(gssapi, AS_HELP_STRING(--without-gssapi, disable GSSAPI support)) if test "$with_gssapi" != "no"; then - AC_PATH_PROG([KRB5_CONFIG], krb5-config, none, $PATH:/usr/kerberos/bin) -else - KRB5_CONFIG=none -fi -if test "x$KRB5_CONFIG" != "xnone"; then - ne_save_CPPFLAGS=$CPPFLAGS - ne_save_LIBS=$NEON_LIBS - NEON_LIBS="$NEON_LIBS `${KRB5_CONFIG} --libs gssapi`" - CPPFLAGS="$CPPFLAGS `${KRB5_CONFIG} --cflags gssapi`" + ne_save_CFLAGS=$CFLAGS + ne_save_LIBS=$NEON_LIBS + NE_PKG_CONFIG(NE_GSSAPI, [krb5-gssapi], + [AC_MSG_NOTICE(using GSSAPI configuration from pkg-config) + KRB5_CONF_TOOL=pkgconf], + [AC_PATH_PROG([KRB5_CONF_TOOL], krb5-config, none, $PATH:/usr/kerberos/bin) + if test "x$KRB5_CONF_TOOL" != "xnone"; then + NE_GSSAPI_LIBS="`${KRB5_CONF_TOOL} --libs gssapi`" + NE_GSSAPI_CFLAGS="`${KRB5_CONF_TOOL} --cflags gssapi`" + NE_GSSAPI_VERSION="`${KRB5_CONF_TOOL} --version`" + fi]) +else + KRB5_CONF_TOOL=none +fi +if test "x$KRB5_CONF_TOOL" != "xnone"; then + CFLAGS="$CFLAGS ${NE_GSSAPI_CFLAGS}" + NEON_LIBS="${NEON_LIBS} ${NE_GSSAPI_LIBS}" # MIT and Heimdal put gssapi.h in different places AC_CHECK_HEADERS(gssapi/gssapi.h gssapi.h, [ NE_CHECK_FUNCS(gss_init_sec_context, [ - ne_save_CPPFLAGS=$CPPFLAGS + ne_save_CFLAGS=$CFLAGS ne_save_LIBS=$NEON_LIBS - AC_MSG_NOTICE([GSSAPI authentication support enabled]) + AC_MSG_NOTICE([GSSAPI authentication support enabled, using $NE_GSSAPI_VERSION]) AC_DEFINE(HAVE_GSSAPI, 1, [Define if GSSAPI support is enabled]) AC_CHECK_HEADERS(gssapi/gssapi_generic.h) # Older versions of MIT Kerberos lack GSS_C_NT_HOSTBASED_SERVICE @@ -1091,7 +1142,7 @@ #endif])]) break ]) - CPPFLAGS=$ne_save_CPPFLAGS + CFLAGS=$ne_save_CFLAGS NEON_LIBS=$ne_save_LIBS fi]) | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/cs.po ^ |
@@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: sitecopy 0.11.4\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2002-04-09 11:12+0100\n" "Last-Translator: Petr Prazak <prazak@grisoft.cz>\n" "Language-Team: cz\n" @@ -25,115 +25,133 @@ "Stavová øádka byla: %s" # src/console_fe.c:961 -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, fuzzy, c-format msgid "Could not authenticate to server: %s" msgstr "Nelze se pøipojit k serveru" # src/console_fe.c:961 -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, fuzzy, c-format msgid "Could not authenticate to proxy server: %s" msgstr "Nelze se pøipojit k proxy serveru" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 #, fuzzy msgid "GSSAPI authentication error: " msgstr "Je vy¾adována autentizace na %s `%s':\n" -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "Nelze zpracovat velikost bloku" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +msgid "legacy Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:979 +#, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:993 #, fuzzy msgid "could not parse domain in Digest challenge" msgstr "Nelze zpracovat velikost bloku" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 #, fuzzy msgid "could not parse challenge" msgstr "Nelze zpracovat velikost bloku" @@ -176,57 +194,57 @@ msgid "Could not initialize zlib" msgstr "Nelze otevøít soubor: " -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/de.po ^ |
@@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: sitecopy 0.11.3\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2002-01-13 13:37+0100\n" "Last-Translator: Thomas Schultz <tststs@gmx.de>\n" "Language-Team: de\n" @@ -23,114 +23,132 @@ "Ungültige HTTP Status-Zeile im Status-Element in Zeile %d der Antwort:\n" "Status-Zeile war: %s" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, fuzzy, c-format msgid "Could not authenticate to server: %s" msgstr "Verbindungsaufbau zum Server gescheitert." -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, fuzzy, c-format msgid "Could not authenticate to proxy server: %s" msgstr "Verbindungsaufbau zum Proxy-Server gescheitert." -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 #, fuzzy msgid "GSSAPI authentication error: " msgstr "Anmeldung wird benötigt auf %s `%s':\n" -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "Parser-Fehler bei Ermittlung der Blockgröße" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +msgid "legacy Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:979 +#, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:993 #, fuzzy msgid "could not parse domain in Digest challenge" msgstr "Parser-Fehler bei Ermittlung der Blockgröße" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 #, fuzzy msgid "could not parse challenge" msgstr "Parser-Fehler bei Ermittlung der Blockgröße" @@ -170,55 +188,55 @@ msgid "Could not initialize zlib" msgstr "Konnte Datei nicht öffnen: " -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 +#: src/ne_gnutls.c:952 src/ne_openssl.c:483 | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/fr.po ^ |
@@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: sitecopy 0.9.3\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2000-01-31 00:00+0100\n" "Last-Translator: Sylvain Glaize <mokona@puupuu.org>\n" "Language-Team: fr\n" @@ -22,113 +22,131 @@ "Status line was: %s" msgstr "" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, fuzzy, c-format msgid "Could not authenticate to server: %s" msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n" -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, fuzzy, c-format msgid "Could not authenticate to proxy server: %s" msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 msgid "GSSAPI authentication error: " msgstr "" -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +msgid "legacy Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:979 +#, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:993 #, fuzzy msgid "could not parse domain in Digest challenge" msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 #, fuzzy msgid "could not parse challenge" msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n" @@ -168,55 +186,55 @@ msgid "Could not initialize zlib" msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n" -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 +#: src/ne_gnutls.c:952 src/ne_openssl.c:483 #, c-format | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/ja.po ^ |
@@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: sitecopy 0.10.14\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2001-01-16 07:32+0900\n" "Last-Translator: Nobuyuki Tsuchimura <tutimura@nn.iij4u.or.jp>\n" "Language-Team: ja\n" @@ -22,114 +22,132 @@ "Status line was: %s" msgstr "" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, fuzzy, c-format msgid "Could not authenticate to server: %s" msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤ËÀܳ¤Ç¤¤Þ¤»¤ó" -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, fuzzy, c-format msgid "Could not authenticate to proxy server: %s" msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤ËÀܳ¤Ç¤¤Þ¤»¤ó" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 #, fuzzy msgid "GSSAPI authentication error: " msgstr "%s ¤Ø¤Îǧ¾Ú¤¬ %s ¤ÇɬÍפǤ¹ '%s':\n" -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "chunk ¤ÎÂ礤µ¤ò²òÀϤǤ¤Þ¤»¤ó" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +msgid "legacy Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:979 +#, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:993 #, fuzzy msgid "could not parse domain in Digest challenge" msgstr "chunk ¤ÎÂ礤µ¤ò²òÀϤǤ¤Þ¤»¤ó" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 #, fuzzy msgid "could not parse challenge" msgstr "chunk ¤ÎÂ礤µ¤ò²òÀϤǤ¤Þ¤»¤ó" @@ -169,55 +187,55 @@ msgid "Could not initialize zlib" msgstr "¥Õ¥¡¥¤¥ë¤¬½ñ¤±¤Þ¤»¤ó: " -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 +#: src/ne_gnutls.c:952 src/ne_openssl.c:483 | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/neon.pot ^ |
@@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -24,112 +24,129 @@ "Status line was: %s" msgstr "" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, c-format msgid "Could not authenticate to server: %s" msgstr "" -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, c-format msgid "Could not authenticate to proxy server: %s" msgstr "" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 msgid "GSSAPI authentication error: " msgstr "" -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +msgid "legacy Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:979 +#, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:993 msgid "could not parse domain in Digest challenge" msgstr "" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 msgid "could not parse challenge" msgstr "" @@ -166,55 +183,55 @@ msgid "Could not initialize zlib" msgstr "" -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 +#: src/ne_gnutls.c:952 src/ne_openssl.c:483 #, c-format msgid "Server certificate was missing commonName attribute in subject name" msgstr "" | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/nn.po ^ |
@@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: sitecopy 0.11.4\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2002-11-07 18:11+0100\n" "Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n" "Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\n" @@ -24,114 +24,132 @@ "Ugyldig HTTP-statuslinje i statuselement på linje %d av svaret:\n" "Statuslinja var: %s" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, fuzzy, c-format msgid "Could not authenticate to server: %s" msgstr "Klarte ikkje kopla til tenaren." -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, fuzzy, c-format msgid "Could not authenticate to proxy server: %s" msgstr "Klarte ikkje kopla til mellomtenar" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 #, fuzzy msgid "GSSAPI authentication error: " msgstr "Krev autentisering på %s «%s»:\n" -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, fuzzy, c-format msgid "Negotiate response verification failure: %s" msgstr "Tenarsertifikatet er utgått på dato." -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "Klarte ikkje tolka storleik på oppdelt svar" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +msgid "legacy Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:979 +#, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:993 #, fuzzy msgid "could not parse domain in Digest challenge" msgstr "Klarte ikkje tolka storleik på oppdelt svar" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 #, fuzzy msgid "could not parse challenge" msgstr "Klarte ikkje tolka storleik på oppdelt svar" @@ -171,55 +189,55 @@ msgid "Could not initialize zlib" msgstr "Klarte ikkje opna fil: " -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 +#: src/ne_gnutls.c:952 src/ne_openssl.c:483 | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/pl.po ^ |
@@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Neon 0.30.0\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2009-09-04 02:00+0200\n" "Last-Translator: Arfrever Frehtes Taifersar Arahesis <Arfrever.FTA@gmail." "com>\n" @@ -27,123 +27,142 @@ "Niewłaściwa linia statusu HTTP w elemencie statusu w linii %d odpowiedzi:\n" "Linia statusu była: %s" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, c-format msgid "Could not authenticate to server: %s" msgstr "Nie można autentykować się do serwera: %s" -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, c-format msgid "Could not authenticate to proxy server: %s" msgstr "Nie można autentykować się do serwera proxy: %s" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "odrzucone wezwanie %s" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "brakująca domena w wezwaniu Basic" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "niewłaściwy żeton Negotiate" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 msgid "GSSAPI authentication error: " msgstr "Błąd autentykacji GSSAPI: " -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "Porażka GSSAPI (kod %u)" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "ignorowanie pustej kontynuacji Negotiate" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" "weryfikacja odpowiedzi Negotiate nie udała się: niewłaściwy żeton nagłówka " "odpowiedzi" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "porażka weryfikacji odpowiedzi Negotiate: %s" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, fuzzy, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" "weryfikacja odpowiedzi Negotiate nie udała się: niewłaściwy żeton nagłówka " "odpowiedzi" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "nie można parsować domeny w wezwaniu Digest" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "nieznany algorytm w wezwaniu Digest" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "niekompatybilny algorytm w wezwaniu Digest" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "brakujący parametr w wezwaniu Digest" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "początkowe wezwanie Digest było nieaktualne" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "nieaktualne wezwanie Digest z nowym algorytmem lub domeną" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +#, fuzzy +msgid "legacy Digest challenge not supported" +msgstr "początkowe wezwanie Digest było nieaktualne" + +#: src/ne_auth.c:979 +#, fuzzy, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "nieznany algorytm w wezwaniu Digest" + +#: src/ne_auth.c:993 msgid "could not parse domain in Digest challenge" msgstr "nie można parsować domeny w wezwaniu Digest" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "Porażka wzajemnego uwierzytelniania Digest: brakujące parametry" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" "Porażka wzajemnego uwierzytelniania Digest: niezgodność posłańca klienta" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" "Porażka wzajemnego uwierzytelniania Digest: nie można parsować licznika " "posłańca" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" "Porażka wzajemnego uwierzytelniania Digest: niezgodność licznika posłańca " "(%u nie %u)" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" "Porażka wzajemnego uwierzytelniania Digest: niezgodność request-digest " "mismatch" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "wezwanie %s zignorowane" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 msgid "could not parse challenge" msgstr "nie można parsować wezwania" @@ -180,55 +199,55 @@ msgid "Could not initialize zlib" msgstr "Nie można zainicjalizować zlib" -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "[niedrukowalne:#%lu]" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "[niedrukowalne]" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/ru.po ^ |
@@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: sitecopy 0.11.5\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2002-11-11 14:28+0000\n" "Last-Translator: Michael Sobolev <neon@webdav.org>\n" "Language-Team: ru\n" @@ -22,113 +22,131 @@ "Status line was: %s" msgstr "" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, fuzzy, c-format msgid "Could not authenticate to server: %s" msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n" -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, fuzzy, c-format msgid "Could not authenticate to proxy server: %s" msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 msgid "GSSAPI authentication error: " msgstr "" -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +msgid "legacy Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:979 +#, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:993 #, fuzzy msgid "could not parse domain in Digest challenge" msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 #, fuzzy msgid "could not parse challenge" msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n" @@ -168,55 +186,55 @@ msgid "Could not initialize zlib" msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n" -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 +#: src/ne_gnutls.c:952 src/ne_openssl.c:483 #, c-format | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/tr.po ^ |
@@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: sitecopy-0.10.10\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2001-01-03 HO:MI+ZONE\n" "Last-Translator: A. Sinan Unur <sinan@unur.com>\n" "Language-Team: tr\n" @@ -25,113 +25,131 @@ "Invalid HTTP status line in status element at line %d of response:\n" "Status line was: %s" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, fuzzy, c-format msgid "Could not authenticate to server: %s" msgstr "Sunucuyla baðlantý kurulamadý" -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, fuzzy, c-format msgid "Could not authenticate to proxy server: %s" msgstr "Ara sunucuyla baðlantý kurulamadý" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 msgid "GSSAPI authentication error: " msgstr "" -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "Parça boyutu anlaþýlamadý" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +msgid "legacy Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:979 +#, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "" + +#: src/ne_auth.c:993 #, fuzzy msgid "could not parse domain in Digest challenge" msgstr "Parça boyutu anlaþýlamadý" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 #, fuzzy msgid "could not parse challenge" msgstr "Parça boyutu anlaþýlamadý" @@ -171,55 +189,55 @@ msgid "Could not initialize zlib" msgstr "Dosyaya yazým yapýlamadý: " -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 +#: src/ne_gnutls.c:952 src/ne_openssl.c:483 #, c-format | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/po/zh_CN.po ^ |
@@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: neon 0.29.x\n" "Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n" -"POT-Creation-Date: 2020-02-25 08:20+0000\n" +"POT-Creation-Date: 2021-09-20 10:49+0100\n" "PO-Revision-Date: 2008-03-03 11:20+0800\n" "Last-Translator: Dongsheng Song <dongsheng.song@gmail.com>\n" "Language-Team: neon@webdav.org\n" @@ -27,112 +27,131 @@ "响应信息中 %d 行的状态元素中发现非法 HTTP 状态行:\n" "状态行是: %s" -#: src/ne_auth.c:139 +#: src/ne_auth.c:165 #, c-format msgid "Could not authenticate to server: %s" msgstr "不能认证到服务器: %s" -#: src/ne_auth.c:144 +#: src/ne_auth.c:170 #, c-format msgid "Could not authenticate to proxy server: %s" msgstr "不能认证到代理服务器: %s" -#: src/ne_auth.c:384 +#: src/ne_auth.c:428 #, c-format msgid "rejected %s challenge" msgstr "被拒绝的 %s 挑战" -#: src/ne_auth.c:400 +#: src/ne_auth.c:469 msgid "missing realm in Basic challenge" msgstr "在基本挑战中丢失了领域" -#: src/ne_auth.c:495 +#: src/ne_auth.c:483 +msgid "cannot handle Basic challenge for username containing colon" +msgstr "" + +#: src/ne_auth.c:588 msgid "invalid Negotiate token" msgstr "非法磋商令牌" -#: src/ne_auth.c:518 +#: src/ne_auth.c:611 msgid "GSSAPI authentication error: " msgstr "GSSAPI 认证错误: " -#: src/ne_auth.c:531 +#: src/ne_auth.c:624 #, c-format msgid "GSSAPI failure (code %u)" msgstr "GSSAPI 失败(代码 %u)" -#: src/ne_auth.c:566 +#: src/ne_auth.c:659 msgid "ignoring empty Negotiate continuation" msgstr "忽略后续的空磋商" -#: src/ne_auth.c:581 +#: src/ne_auth.c:674 #, c-format msgid "Negotiate response verification failed: invalid response header token" msgstr "校验协商响应失败:非法响应头令牌" -#: src/ne_auth.c:603 +#: src/ne_auth.c:696 #, c-format msgid "Negotiate response verification failure: %s" msgstr "磋商响应校验失败: %s" -#: src/ne_auth.c:667 +#: src/ne_auth.c:760 #, fuzzy, c-format msgid "SSPI response verification failed: invalid response header token" msgstr "校验协商响应失败:非法响应头令牌" -#: src/ne_auth.c:800 +#: src/ne_auth.c:918 +#, fuzzy +msgid "could not handle non-ASCII username in Digest challenge" +msgstr "在摘要挑战中的不能解析域" + +#: src/ne_auth.c:947 msgid "unknown algorithm in Digest challenge" msgstr "在摘要挑战中的算法不可识别" -#: src/ne_auth.c:804 +#: src/ne_auth.c:951 msgid "incompatible algorithm in Digest challenge" msgstr "在摘要挑战中的算法不兼容" -#: src/ne_auth.c:808 +#: src/ne_auth.c:955 msgid "missing parameter in Digest challenge" msgstr "在摘要挑战中的参数丢失" -#: src/ne_auth.c:812 +#: src/ne_auth.c:959 msgid "initial Digest challenge was stale" msgstr "陈旧的初始化摘要挑战" -#: src/ne_auth.c:819 +#: src/ne_auth.c:966 msgid "stale Digest challenge with new algorithm or realm" msgstr "陈旧的摘要挑战用于新算法或新领域" -#: src/ne_auth.c:831 +#: src/ne_auth.c:971 +#, fuzzy +msgid "legacy Digest challenge not supported" +msgstr "陈旧的初始化摘要挑战" + +#: src/ne_auth.c:979 +#, fuzzy, c-format +msgid "%s algorithm in Digest challenge not supported" +msgstr "在摘要挑战中的算法不可识别" + +#: src/ne_auth.c:993 msgid "could not parse domain in Digest challenge" msgstr "在摘要挑战中的不能解析域" -#: src/ne_auth.c:1140 +#: src/ne_auth.c:1272 #, c-format msgid "Digest mutual authentication failure: missing parameters" msgstr "摘要互相认证失败:参数遗漏" -#: src/ne_auth.c:1145 +#: src/ne_auth.c:1277 #, c-format msgid "Digest mutual authentication failure: client nonce mismatch" msgstr "摘要互相认证失败:客户现时不匹配" -#: src/ne_auth.c:1155 +#: src/ne_auth.c:1287 #, c-format msgid "Digest mutual authentication failure: could not parse nonce count" msgstr "摘要互相认证失败:不能解析现时计数" -#: src/ne_auth.c:1160 +#: src/ne_auth.c:1292 #, c-format msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)" msgstr "摘要互相认证失败:现时计算不匹配 (应该是 %u,不是 %u)" -#: src/ne_auth.c:1203 +#: src/ne_auth.c:1319 #, c-format msgid "Digest mutual authentication failure: request-digest mismatch" msgstr "摘要互相认证失败:请求摘要不匹配" -#: src/ne_auth.c:1334 +#: src/ne_auth.c:1457 #, c-format msgid "ignored %s challenge" msgstr "被忽略的 %s 挑战" -#: src/ne_auth.c:1413 +#: src/ne_auth.c:1562 msgid "could not parse challenge" msgstr "不能解析挑战" @@ -169,55 +188,55 @@ msgid "Could not initialize zlib" msgstr "初始化 zlib 失败" -#: src/ne_gnutls.c:183 +#: src/ne_gnutls.c:184 #, c-format msgid "[unprintable:#%lu]" msgstr "[非打印字符:#%lu]" -#: src/ne_gnutls.c:212 +#: src/ne_gnutls.c:213 msgid "[unprintable]" msgstr "[非打印字符]" -#: src/ne_gnutls.c:659 +#: src/ne_gnutls.c:660 #, c-format msgid "Failed to import private key: %s" msgstr "" -#: src/ne_gnutls.c:903 +#: src/ne_gnutls.c:904 msgid "signed using insecure algorithm" msgstr "" -#: src/ne_gnutls.c:906 +#: src/ne_gnutls.c:907 #, c-format msgid "unrecognized errors (%u)" msgstr "" -#: src/ne_gnutls.c:951 src/ne_openssl.c:481 +#: src/ne_gnutls.c:952 src/ne_openssl.c:483 #, c-format | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/memleak.h ^ |
@@ -1,6 +1,6 @@ /* Memory leak wrappers - Copyright (C) 2003, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2003-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_207.c ^ |
@@ -1,6 +1,6 @@ /* WebDAV 207 multi-status response handling - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_207.h ^ |
@@ -1,6 +1,6 @@ /* WebDAV 207 multi-status response handling - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_acl.h ^ |
@@ -1,6 +1,6 @@ /* Access control - Copyright (C) 2001-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2001-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_acl3744.c ^ |
@@ -1,6 +1,6 @@ /* Access control - Copyright (C) 2001-2006, 2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2001-2021, Joe Orton <joe@manyfish.co.uk> Copyright (C) 2001, Arun Garg <arung@pspl.co.in> Copyright (C) 2007 Henrik Holst <henrik.holst2@gmail.com> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_acl3744.h ^ |
@@ -1,6 +1,6 @@ /* Access control - Copyright (C) 2001-2007, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2001-2021, Joe Orton <joe@manyfish.co.uk> Copyright (C) 2001, Arun Garg <arung@pspl.co.in> Copyright (C) 2007 Henrik Holst <henrik.holst2@gmail.com> | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_alloc.c ^ |
@@ -1,6 +1,6 @@ /* Replacement memory allocation handling etc. - Copyright (C) 1999-2005, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_alloc.h ^ |
@@ -1,6 +1,6 @@ /* Replacement memory allocation handling etc. - Copyright (C) 1999-2005, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -43,8 +43,8 @@ * neon will abort(); calling an OOM callback beforehand if one is * registered. The C library will only ever return NULL if the * operating system does not use optimistic memory allocation. */ -void *ne_malloc(size_t size) ne_attribute_alloc_size(1); -void *ne_calloc(size_t size) ne_attribute_alloc_size(1); +void *ne_malloc(size_t size) ne_attribute_alloc_size(1) ne_attribute_malloc; +void *ne_calloc(size_t size) ne_attribute_alloc_size(1) ne_attribute_malloc; void *ne_realloc(void *ptr, size_t s) ne_attribute_alloc_size(2); char *ne_strdup(const char *s) ne_attribute_malloc; char *ne_strndup(const char *s, size_t n) ne_attribute_malloc; | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_auth.c ^ |
@@ -1,6 +1,6 @@ /* HTTP Authentication routines - Copyright (C) 1999-2011, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -90,11 +90,34 @@ #define HOOK_PROXY_ID "http://webdav.org/neon/hooks/proxy-auth" typedef enum { - auth_alg_md5, + auth_alg_md5 = 0, auth_alg_md5_sess, + auth_alg_sha256, + auth_alg_sha256_sess, + auth_alg_sha512_256, + auth_alg_sha512_256_sess, auth_alg_unknown } auth_algorithm; +static const unsigned int alg_to_hash[] = { + NE_HASH_MD5, + NE_HASH_MD5, + NE_HASH_SHA256, + NE_HASH_SHA256, + NE_HASH_SHA512_256, + NE_HASH_SHA512_256, + 0 +}; +static const char *const alg_to_name[] = { + "MD5", + "MD5-sess", + "SHA-256", + "SHA-256-sess", + "SHA-512-256", + "SHA-512-256-sess", + "(unknown)", +}; + /* Selected method of qop which the client is using */ typedef enum { auth_qop_none, @@ -106,7 +129,8 @@ struct auth_handler { unsigned protomask; - ne_auth_creds creds; + ne_auth_creds old_creds; + ne_auth_provide new_creds; void *userdata; int attempt; /* number of invocations of this callback for * current request. */ @@ -122,6 +146,7 @@ unsigned int stale; /* if stale=true */ unsigned int got_qop; /* we were given a qop directive */ unsigned int qop_auth; /* "auth" token in qop attrib */ + enum { userhash_none=0, userhash_true=1, userhash_false=2} userhash; auth_algorithm alg; struct auth_challenge *next; }; @@ -130,20 +155,24 @@ const char *id, *req_hdr, *resp_hdr, *resp_info_hdr; int status_code; /* Response status-code to trap. */ int fail_code; /* NE_* request to fail with. */ + unsigned protomask; /* protocol mask */ const char *error_noauth; /* Error message template use when * giving up authentication attempts. */ } ah_server_class = { HOOK_SERVER_ID, "Authorization", "WWW-Authenticate", "Authentication-Info", - 401, NE_AUTH, + 401, NE_AUTH, 0, N_("Could not authenticate to server: %s") }, ah_proxy_class = { HOOK_PROXY_ID, "Proxy-Authorization", "Proxy-Authenticate", "Proxy-Authentication-Info", - 407, NE_PROXYAUTH, + 407, NE_PROXYAUTH, NE_AUTH_PROXY, N_("Could not authenticate to proxy server: %s") }; +/* Internal buffer size, which must be >= NE_ABUFSIZ. */ +#define ABUFSIZE (NE_ABUFSIZ * 2) + /* Authentication session state. */ typedef struct { ne_session *sess; @@ -166,7 +195,7 @@ /*** Session details ***/ /* The username and password we are using to authenticate with */ - char username[NE_ABUFSIZ]; + char username[ABUFSIZE]; /* This used for Basic auth */ char *basic; @@ -194,15 +223,15 @@ char *opaque; char **domains; /* list of paths given as domain. */ size_t ndomains; /* size of domains array */ + char *userhash; + char *username_star; auth_qop qop; auth_algorithm alg; unsigned int nonce_count; - /* The ASCII representation of the session's H(A1) value */ - char h_a1[33]; - - /* Temporary store for half of the Request-Digest - * (an optimisation - used in the response-digest calculation) */ - struct ne_md5_ctx *stored_rdig; + /* The hex representation of the H(A1) value */ + char *h_a1; + /* Part of the RHS of the response digest. */ + char *response_rhs; } auth_session; struct auth_request { @@ -239,7 +268,8 @@ * On failure, challenge_error() should be used to append an error * message to the error buffer 'errmsg'. */ int (*challenge)(auth_session *sess, int attempt, - struct auth_challenge *chall, ne_buffer **errmsg); + struct auth_challenge *chall, + const char *uri, ne_buffer **errmsg); /* Return the string to send in the -Authenticate request header: * (ne_malloc-allocated, NUL-terminated string) */ @@ -260,6 +290,8 @@ static void challenge_error(ne_buffer **errmsg, const char *fmt, ...) ne_attribute((format(printf, 2, 3))); +static int inside_domain(auth_session *sess, const char *req_uri); + /* Free the domains array, precondition sess->ndomains > 0. */ static void free_domains(auth_session *sess) { @@ -277,12 +309,13 @@ if (sess->cnonce) ne_free(sess->cnonce); if (sess->opaque) ne_free(sess->opaque); if (sess->realm) ne_free(sess->realm); + if (sess->userhash) ne_free(sess->userhash); + if (sess->username_star) ne_free(sess->username_star); + if (sess->response_rhs) ne_free(sess->response_rhs); + if (sess->h_a1) ne_free(sess->h_a1); sess->realm = sess->basic = sess->cnonce = sess->nonce = - sess->opaque = NULL; - if (sess->stored_rdig) { - ne_md5_destroy_ctx(sess->stored_rdig); - sess->stored_rdig = NULL; - } + sess->opaque = sess->userhash = sess->response_rhs = + sess->h_a1 = sess->username_star = NULL; if (sess->ndomains) free_domains(sess); #ifdef HAVE_GSSAPI { @@ -314,11 +347,7 @@ /* Returns client nonce string. */ static char *get_cnonce(void) { - char ret[33]; - unsigned char data[256]; - struct ne_md5_ctx *hash; - - hash = ne_md5_create_ctx(); + unsigned char data[32]; #ifdef HAVE_GNUTLS if (1) { @@ -327,18 +356,22 @@ #else gnutls_rnd(GNUTLS_RND_NONCE, data, sizeof data); #endif - ne_md5_process_bytes(data, sizeof data, hash); + return ne_base64(data, sizeof data); } else #elif defined(HAVE_OPENSSL) if (RAND_status() == 1 && RAND_bytes(data, sizeof data) >= 0) { - ne_md5_process_bytes(data, sizeof data, hash); + return ne_base64(data, sizeof data); } else #endif /* HAVE_OPENSSL */ { /* Fallback sources of random data: all bad, but no good sources * are available. */ + struct ne_md5_ctx *hash; + char ret[33]; + + hash = ne_md5_create_ctx(); /* Uninitialized stack data; yes, happy valgrinders, this is * supposed to be here. */ @@ -362,38 +395,74 @@ #endif ne_md5_process_bytes(&pid, sizeof pid, hash); } | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_auth.h ^ |
@@ -1,6 +1,6 @@ /* HTTP authentication routines - Copyright (C) 1999-2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -33,8 +33,8 @@ /* The callback used to request the username and password in the given * realm. The username and password must be copied into the buffers * which are both of size NE_ABUFSIZ. The 'attempt' parameter is zero - * on the first call to the callback, and increases by one each time - * an attempt to authenticate fails. + * on the first call to the callback, and increases by one for each + * invocation of the callback during an attempt to authenticate. * * The callback must return zero to indicate that authentication * should be attempted with the username/password, or non-zero to @@ -70,8 +70,14 @@ * password, and certain aspects of the request, so prevents passive * attackers from obtaining the credentials; active attackers can * still modify most of the request/response if using an unsecured - * channel. */ -#define NE_AUTH_DIGEST (0x0002) + * channel. Supports algorithms from RFC 2617 and RFC 7616. */ +#define NE_AUTH_DIGEST (0x0080) + +/* NE_AUTH_LEGACY_DIGEST: Using this flag together with NE_AUTH_DIGEST + * enables support for the weaker, legacy version of the Digest + * algorithm specified in RFC 2069 (obsoleted by RFC 2617, which was + * published in June 1999). */ +#define NE_AUTH_LEGACY_DIGEST (0x0002) /* NE_AUTH_NEGOTIATE: Negotiate uses GSSAPI/SSPI, or NTLM, to * authenticate the user; an active attacker can modify any of the @@ -101,13 +107,22 @@ * this must not be used over an unsecured channel. */ #define NE_AUTH_GSSAPI_ONLY (0x0040) +/* 0x0080: legacy definition of NE_AUTH_DIGEST in 0.31 and earlier */ + /* The default set of supported protocols, as deemed appropriate for - * the given session scheme. */ + * the given session scheme. The interpretation of this flag may + * change across versions, for example with older, less secure + * protocols being removed from the default set. */ #define NE_AUTH_DEFAULT (0x1000) -/* All protocols supported by the library. */ +/* All protocols supported by the library. The interpretation of this + * flag may change across versions. */ #define NE_AUTH_ALL (0x2000) +/* If present in the protocol mask passed to ne_auth_provide, + * indicates that proxy authentication is requested. */ +#define NE_AUTH_PROXY (0x4000) + /* Add a callback to provide credentials for server and proxy * authentication using a particular auth protocol or set of * protocols. The protocol is supplied as a bitmask of NE_AUTH_* @@ -134,6 +149,43 @@ void ne_add_proxy_auth(ne_session *sess, unsigned protocol, ne_auth_creds creds, void *userdata); +/* Alternative credentials provider callback, invoked when credentials + * are required to authenticate the client to either a server or + * proxy. 'protocol' is the authentication protocol number + * (NE_AUTH_*) of the challenge, bitwise-ORed with NE_AUTH_PROXY when + * the auth challenge is made by an HTTP proxy. + * + * 'realm' is the realm name. The 'attempt' counter reflects the + * number of attempts to provide credentials to the server + * (i.e. retried requests sent with a challenge response), NOT the + * number of times the callback is invoked, unlike the ne_auth_creds + * callback. + * + * The callback must return zero to indicate that authentication + * should be attempted with the username/password, or non-zero to + * cancel the request. (if non-zero, username and password are + * ignored.) + * + * The username and password buffers have length 'buflen', which is + * guaranteed to be >= NE_ABUFSIZ. The username must be provided as a + * NUL-terminated UTF-8 encoding only. The password must be provided + * as a NUL-terminated string. Additional protocol-specific + * restrictions apply, e.g. username cannot contain a colon for Basic + * auth. + * + * IMPORTANT NOTE: The callback will be invoked repeatedly until + * either it returns non-zero, or authentication is successful. + * + * Hint: if you just wish to attempt authentication just once (even if + * the user gets the username/password wrong), have the callback + * function use 'attempt' value as the function return value. */ +typedef int (*ne_auth_provide)(void *userdata, int attempt, + unsigned protocol, const char *realm, + char *username, char *password, size_t buflen); + +void ne_add_auth(ne_session *sess, unsigned protocol, + ne_auth_provide creds, void *userdata); + /* Clear any cached authentication credentials for the given * session. */ void ne_forget_auth(ne_session *sess); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_basic.c ^ |
@@ -1,6 +1,6 @@ /* Basic HTTP and WebDAV methods - Copyright (C) 1999-2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_basic.h ^ |
@@ -1,6 +1,6 @@ /* HTTP/1.1 methods - Copyright (C) 1999-2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_compress.c ^ |
@@ -1,6 +1,6 @@ /* Handling of compressed HTTP responses - Copyright (C) 2001-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2001-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -349,7 +349,7 @@ } NE_DEBUG(NE_DBG_HTTP, - "compresss: skipped %" NE_FMT_SIZE_T " header bytes.\n", + "compress: skipped %" NE_FMT_SIZE_T " header bytes.\n", zbuf - buf); /* found end of string. */ len -= (1 + zbuf - buf); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_compress.h ^ |
@@ -1,6 +1,6 @@ /* Compressed HTTP response handling - Copyright (C) 2001-2004, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2001-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_dates.c ^ |
@@ -1,6 +1,6 @@ /* Date manipulation routines - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> Copyright (C) 2004 Jiang Lei <tristone@deluxe.ocn.ne.jp> This library is free software; you can redistribute it and/or @@ -124,34 +124,33 @@ int off_hour, off_min; double sec; off_t fix; - int n; time_t result; /* it goes: ISO8601: 2001-01-01T12:30:00+03:30 */ - if ((n = sscanf(date, ISO8601_FORMAT_P, - &gmt.tm_year, &gmt.tm_mon, &gmt.tm_mday, - &gmt.tm_hour, &gmt.tm_min, &sec, - &off_hour, &off_min)) == 8) { - gmt.tm_sec = (int)sec; - fix = - off_hour * 3600 - off_min * 60; + if (sscanf(date, ISO8601_FORMAT_P, + &gmt.tm_year, &gmt.tm_mon, &gmt.tm_mday, + &gmt.tm_hour, &gmt.tm_min, &sec, + &off_hour, &off_min) == 8) { + gmt.tm_sec = (int)sec; + fix = - off_hour * 3600 - off_min * 60; } /* it goes: ISO8601: 2001-01-01T12:30:00-03:30 */ - else if ((n = sscanf(date, ISO8601_FORMAT_M, - &gmt.tm_year, &gmt.tm_mon, &gmt.tm_mday, - &gmt.tm_hour, &gmt.tm_min, &sec, - &off_hour, &off_min)) == 8) { - gmt.tm_sec = (int)sec; - fix = off_hour * 3600 + off_min * 60; + else if (sscanf(date, ISO8601_FORMAT_M, + &gmt.tm_year, &gmt.tm_mon, &gmt.tm_mday, + &gmt.tm_hour, &gmt.tm_min, &sec, + &off_hour, &off_min) == 8) { + gmt.tm_sec = (int)sec; + fix = off_hour * 3600 + off_min * 60; } /* it goes: ISO8601: 2001-01-01T12:30:00Z */ - else if ((n = sscanf(date, ISO8601_FORMAT_Z, - &gmt.tm_year, &gmt.tm_mon, &gmt.tm_mday, - &gmt.tm_hour, &gmt.tm_min, &sec)) == 6) { - gmt.tm_sec = (int)sec; - fix = 0; + else if (sscanf(date, ISO8601_FORMAT_Z, + &gmt.tm_year, &gmt.tm_mon, &gmt.tm_mday, + &gmt.tm_hour, &gmt.tm_min, &sec) == 6) { + gmt.tm_sec = (int)sec; + fix = 0; } else { - return (time_t)-1; + return (time_t)-1; } gmt.tm_year -= 1900; | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_dates.h ^ |
@@ -1,6 +1,6 @@ /* Date manipulation routines - Copyright (C) 1999-2002, 2005, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_defs.h ^ |
@@ -1,6 +1,6 @@ /* Standard definitions for neon headers - Copyright (C) 2003-2008, 2010, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2003-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_gnutls.c ^ |
@@ -1,6 +1,6 @@ /* neon SSL/TLS support using GNU TLS - Copyright (C) 2002-2011, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2002-2021, Joe Orton <joe@manyfish.co.uk> Copyright (C) 2004, Aleix Conchillo Flaque <aleix@member.fsf.org> This library is free software; you can redistribute it and/or @@ -33,6 +33,7 @@ #include <errno.h> #include <gnutls/gnutls.h> +#include <gnutls/crypto.h> #include <gnutls/pkcs12.h> #ifdef NE_HAVE_TS_SSL @@ -1462,6 +1463,41 @@ return ret; } +static gnutls_digest_algorithm_t hash_to_alg(unsigned int flags) +{ + switch (flags & NE_HASH_ALGMASK) { + case NE_HASH_MD5: return GNUTLS_DIG_MD5; break; + case NE_HASH_SHA256: return GNUTLS_DIG_SHA256; break; + case NE_HASH_SHA512: return GNUTLS_DIG_SHA512; break; + default: break; + } + return GNUTLS_DIG_UNKNOWN; +} + +char *ne_ssl_cert_hdigest(const ne_ssl_certificate *cert, unsigned int flags) +{ + gnutls_digest_algorithm_t alg = hash_to_alg(flags); + unsigned char *dig; + size_t len; + char *rv; + + if (alg == GNUTLS_DIG_UNKNOWN) return NULL; + + if (gnutls_x509_crt_get_fingerprint(cert->subject, alg, NULL, &len) != GNUTLS_E_SHORT_MEMORY_BUFFER) { + return NULL; + } + + dig = ne_malloc(len); + if (gnutls_x509_crt_get_fingerprint(cert->subject, alg, dig, &len) < 0) { + ne_free(dig); + return NULL; + } + + rv = ne__strhash2hex(dig, len, flags); + ne_free(dig); + return rv; +} + int ne_ssl_cert_digest(const ne_ssl_certificate *cert, char *digest) { char sha1[20], *p; @@ -1505,3 +1541,30 @@ gnutls_global_deinit(); #endif } + +char *ne_vstrhash(unsigned int flags, va_list ap) +{ + gnutls_digest_algorithm_t alg = hash_to_alg(flags); + gnutls_hash_hd_t hd; + unsigned char *out; + const char *arg; + unsigned len; + char *rv; + + if (alg == GNUTLS_DIG_UNKNOWN) + return NULL; + + if (gnutls_hash_init(&hd, alg) < 0) + return NULL; + + while ((arg = va_arg(ap, const char *)) != NULL) + gnutls_hash(hd, arg, strlen(arg)); + + len = gnutls_hash_get_len(alg); + out = ne_malloc(len); + gnutls_hash_deinit(hd, out); + + rv = ne__strhash2hex(out, len, flags); + ne_free(out); + return rv; +} | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_i18n.c ^ |
@@ -1,6 +1,6 @@ /* Internationalization of neon - Copyright (C) 1999-2005, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_i18n.h ^ |
@@ -1,6 +1,6 @@ /* Internationalization of neon - Copyright (C) 2005-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2005-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_internal.h ^ |
@@ -1,6 +1,6 @@ /* Global interfaces private to neon. - Copyright (C) 2005-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2005-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -83,4 +83,16 @@ #endif #endif /* NE_LFS */ +#define NE_HASH_ALGMASK (0x000f) + +/* Return malloc-allocated ASCII hexadecimal representation of + * input. */ +NE_PRIVATE char *ne__strhash2hex(const unsigned char *digest, size_t len, unsigned int flags); + +#ifdef HAVE_EXPLICIT_BZERO +#define ne__strzero(s, n) explicit_bzero(s, n) +#else +#define ne__strzero(s, n) memset(s, 0, n) +#endif + #endif /* NE_INTERNAL_H */ | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_locks.c ^ |
@@ -1,6 +1,6 @@ /* WebDAV Class 2 locking operations - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_locks.h ^ |
@@ -1,6 +1,6 @@ /* WebDAV Class 2 locking operations - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_md5.h ^ |
@@ -1,6 +1,6 @@ /* Declaration of functions and data types used for MD5 sum computing library functions. - Copyright (C) 2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2021, Joe Orton <joe@manyfish.co.uk> Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_oldacl.c ^ |
@@ -1,6 +1,6 @@ /* Access control - Copyright (C) 2001-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2001-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_openssl.c ^ |
@@ -1,6 +1,6 @@ /* neon SSL/TLS support using OpenSSL - Copyright (C) 2002-2011, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2002-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -1114,10 +1114,40 @@ return ret; } +static const EVP_MD *hash_to_md(unsigned int flags) +{ + switch (flags & NE_HASH_ALGMASK) { + case NE_HASH_MD5: return EVP_md5(); + case NE_HASH_SHA256: return EVP_sha256(); +#ifdef HAVE_OPENSSL11 + case NE_HASH_SHA512: return EVP_sha512(); + case NE_HASH_SHA512_256: return EVP_sha512_256(); +#endif + default: break; + } + return NULL; +} + #if SHA_DIGEST_LENGTH != 20 # error SHA digest length is not 20 bytes #endif +char *ne_ssl_cert_hdigest(const ne_ssl_certificate *cert, unsigned int flags) +{ + const EVP_MD *md = hash_to_md(flags); + unsigned char dig[EVP_MAX_MD_SIZE]; + unsigned int len; + + if (!md) return NULL; + + if (!X509_digest(cert->subject, md, dig, &len)) { + ERR_clear_error(); + return NULL; + } + + return ne__strhash2hex(dig, len, flags); +} + int ne_ssl_cert_digest(const ne_ssl_certificate *cert, char *digest) { unsigned char sha1[EVP_MAX_MD_SIZE]; @@ -1139,6 +1169,31 @@ return 0; } +char *ne_vstrhash(unsigned int flags, va_list ap) +{ + EVP_MD_CTX *ctx; + const EVP_MD *md = hash_to_md(flags); + unsigned char v[EVP_MAX_MD_SIZE]; + unsigned int vlen; + const char *arg; + + ctx = EVP_MD_CTX_new(); + if (!ctx) return NULL; + + if (EVP_DigestInit(ctx, md) != 1) { + EVP_MD_CTX_free(ctx); + return NULL; + } + + while ((arg = va_arg(ap, const char *)) != NULL) + EVP_DigestUpdate(ctx, arg, strlen(arg)); + + EVP_DigestFinal_ex(ctx, v, &vlen); + EVP_MD_CTX_free(ctx); + + return ne__strhash2hex(v, vlen, flags); +} + #if defined(NE_HAVE_TS_SSL) && OPENSSL_VERSION_NUMBER < 0x10100000L /* From OpenSSL 1.1.0 locking callbacks are no longer needed. */ #define WITH_OPENSSL_LOCKING (1) | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_pkcs11.c ^ |
@@ -1,6 +1,6 @@ /* neon PKCS#11 support - Copyright (C) 2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -444,9 +444,7 @@ rv = pakchois_login(pks, CKU_USER, (unsigned char *)pin, strlen(pin)); - /* Try to scrub the pin off the stack. Clever compilers will - * probably optimize this away, oh well. */ - memset(pin, 0, sizeof pin); + ne__strzero(pin, sizeof pin); } while (rv == CKR_PIN_INCORRECT); NE_DEBUG(NE_DBG_SSL, "pk11: Login result = %lu\n", rv); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_pkcs11.h ^ |
@@ -1,6 +1,6 @@ /* PKCS#11 support for neon - Copyright (C) 2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2008-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_private.h ^ |
@@ -1,6 +1,6 @@ /* HTTP Request Handling - Copyright (C) 1999-2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_privssl.h ^ |
@@ -1,6 +1,6 @@ /* SSL interface definitions internal to neon. - Copyright (C) 2003-2005, 2008, 2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2003-2021, Joe Orton <joe@manyfish.co.uk> Copyright (C) 2004, Aleix Conchillo Flaque <aleix@member.fsf.org> This library is free software; you can redistribute it and/or | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_props.c ^ |
@@ -1,6 +1,6 @@ /* WebDAV property manipulation - Copyright (C) 2000-2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2000-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_props.h ^ |
@@ -1,6 +1,6 @@ /* WebDAV Properties manipulation - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_redirect.c ^ |
@@ -1,6 +1,6 @@ /* HTTP-redirect support - Copyright (C) 1999-2007, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_redirect.h ^ |
@@ -1,6 +1,6 @@ /* HTTP-redirect support - Copyright (C) 1999-2002, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_request.c ^ |
@@ -1,6 +1,6 @@ /* HTTP request/response handling - Copyright (C) 1999-2010, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -72,6 +72,8 @@ struct field *next; }; +/* Maximum number of interim responses. */ +#define MAX_INTERIM_RESPONSES (128) /* Maximum number of header fields per response: */ #define MAX_HEADER_FIELDS (100) /* Size of hash table; 43 is the smallest prime for which the common @@ -87,7 +89,7 @@ #define HH_HV_TRANSFER_ENCODING (0x07) struct ne_request_s { - char *method, *uri; /* method and Request-URI */ + char *method, *target; /* method and request-target */ ne_buffer *headers; /* request headers */ @@ -526,17 +528,18 @@ /* Only use an absoluteURI here when we might be using an HTTP * proxy, and SSL is in use: some servers can't parse them. */ if (sess->any_proxy_http && !req->session->use_ssl && path[0] == '/') - req->uri = ne_concat(req->session->scheme, "://", - req->session->server.hostport, path, NULL); + req->target = ne_concat(req->session->scheme, "://", + req->session->server.hostport, + path, NULL); else - req->uri = ne_strdup(path); + req->target = ne_strdup(path); { struct hook *hk; for (hk = sess->create_req_hooks; hk != NULL; hk = hk->next) { ne_create_request_fn fn = (ne_create_request_fn)hk->fn; - fn(req, hk->userdata, req->method, req->uri); + fn(req, hk->userdata, req->method, req->target); } } @@ -724,7 +727,7 @@ struct body_reader *rdr, *next_rdr; struct hook *hk, *next_hk; - ne_free(req->uri); + ne_free(req->target); ne_free(req->method); for (rdr = req->body_readers; rdr != NULL; rdr = next_rdr) { @@ -885,7 +888,8 @@ ne_buffer *buf = ne_buffer_create(); /* Add Request-Line and headers: */ - ne_buffer_concat(buf, req->method, " ", req->uri, " HTTP/1.1" EOL, NULL); + ne_buffer_concat(buf, req->method, " ", req->target, " HTTP/1.1" EOL, + NULL); /* Add custom headers: */ ne_buffer_append(buf, req->headers->data, ne_buffer_size(req->headers)); @@ -1013,6 +1017,7 @@ ne_status *const status = &req->status; int sentbody = 0; /* zero until body has been sent. */ int ret, retry; /* retry non-zero whilst the request should be retried */ + unsigned count; ssize_t sret; /* Send the Request-Line and headers */ @@ -1041,11 +1046,13 @@ NE_DEBUG(NE_DBG_HTTP, "Request sent; retry is %d.\n", retry); - /* Loop eating interim 1xx responses (RFC2616 says these MAY be - * sent by the server, even if 100-continue is not used). */ - while ((ret = read_status_line(req, status, retry)) == NE_OK - && status->klass == 1) { - NE_DEBUG(NE_DBG_HTTP, "Interim %d response.\n", status->code); + /* Loop eating interim 1xx responses; RFC 7231§6.2 says clients + * MUST be able to parse unsolicited interim responses. */ + for (count = 0; count < MAX_INTERIM_RESPONSES + && (ret = read_status_line(req, status, retry)) == NE_OK + && status->klass == 1; count++) { + NE_DEBUG(NE_DBG_HTTP, "[req] Interim %d response %d.\n", + status->code, count); retry = 0; /* successful read() => never retry now. */ /* Discard headers with the interim response. */ if ((ret = discard_headers(req)) != NE_OK) break; @@ -1058,6 +1065,10 @@ } } + if (count == MAX_INTERIM_RESPONSES) { + return aborted(req, _("Too many interim responses"), 0); + } + return ret; } @@ -1112,8 +1123,8 @@ /* assert(buf[0] == ch), which implies len(buf) > 0. * Otherwise the TCP stack is lying, but we'll be paranoid. - * This might be a \t, so replace it with a space to be - * friendly to applications (2616 says we MAY do this). */ + * This might be a \t, so replace it with a space for ease of + * parsing; this is permitted by RFC 7230§3.5. */ if (n) buf[0] = ' '; /* ready for the next header. */ @@ -1323,23 +1334,22 @@ } /* Decide which method determines the response message-length per - * 2616§4.4 (multipart/byteranges is not supported): */ + * RFC 7230§3.3.3, method cases follow: */ #ifdef NE_HAVE_SSL - /* Special case for CONNECT handling: the response has no body, - * and the connection can persist. */ + /* Case (2) is special-cased first for CONNECT: the response has + * no body, and the connection can persist. */ if (req->session->in_connect && st->klass == 2) { req->resp.mode = R_NO_BODY; req->can_persist = 1; } else #endif - /* HEAD requests and 204, 304 responses have no response body, - * regardless of what headers are present. */ + /* Case (1), HEAD requests and 204, 304 responses have no response + * body, regardless of what headers are present. */ if (req->method_is_head || st->code == 204 || st->code == 304) { req->resp.mode = R_NO_BODY; } - /* Broken intermediaries exist which use "transfer-encoding: identity" - * to mean "no transfer-coding". So that case must be ignored. */ + /* Case (3), chunked transer-encoding.. */ else if ((value = get_response_header_hv(req, HH_HV_TRANSFER_ENCODING, "transfer-encoding")) != NULL && ne_strcasecmp(value, "identity") != 0) { @@ -1351,7 +1361,8 @@ else { return aborted(req, _("Unknown transfer-coding in response"), 0); } - } + } + /* Case (4) and (5), content-length delimited. */ else if ((value = get_response_header_hv(req, HH_HV_CONTENT_LENGTH, "content-length")) != NULL) { char *endptr = NULL; @@ -1360,11 +1371,14 @@ if (*value && len != NE_OFFT_MAX && len >= 0 && endptr && *endptr == '\0') { req->resp.mode = R_CLENGTH; req->resp.body.clen.total = req->resp.body.clen.remain = len; - } else { - /* fail for an invalid content-length header. */ + } + else { + /* Per case (4), an invalid C-L must be treated as an error. */ return aborted(req, _("Invalid Content-Length in response"), 0); } - } else { + } + /* Case (7), response delimited by EOF. */ + else { req->resp.mode = R_TILLEOF; /* otherwise: read-till-eof mode */ } | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_request.h ^ |
@@ -1,6 +1,6 @@ /* HTTP Request Handling - Copyright (C) 1999-2006, 2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -238,12 +238,11 @@ typedef void (*ne_free_hooks)(void *cookie); -/* Hook called when a request is created; passed the request method, - * and the string used as the Request-URI (note that this may be a - * absolute URI if a proxy is in use, an absolute path, a "*", etc). - * A create_request hook is called exactly once per request. */ +/* Hook called when a request is created; passed the method and + * request-target as used in the request-line (RFC7230§5.3). The + * create_request hook is called exactly once per request. */ typedef void (*ne_create_request_fn)(ne_request *req, void *userdata, - const char *method, const char *requri); + const char *method, const char *target); void ne_hook_create_request(ne_session *sess, ne_create_request_fn fn, void *userdata); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_session.c ^ |
@@ -1,6 +1,6 @@ /* HTTP session handling - Copyright (C) 1999-2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_session.h ^ |
@@ -1,6 +1,6 @@ /* HTTP session handling - Copyright (C) 1999-2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -309,10 +309,10 @@ /* Sets the user-agent string. neon/VERSION will be appended, to make * the full header "User-Agent: product neon/VERSION". * If this function is not called, the User-Agent header is not sent. - * The product string must follow the RFC2616 format, i.e. + * The product string must follow the RFC 7231§5.5.3 format, i.e. * product = token ["/" product-version] * product-version = token - * where token is any alpha-numeric-y string [a-zA-Z0-9]* */ + * where token is an alphanumeric string. */ void ne_set_useragent(ne_session *sess, const char *product); /* Returns non-zero if next-hop server does not claim compliance to | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_socket.c ^ |
@@ -1,6 +1,6 @@ /* Socket handling routines - Copyright (C) 1998-2011, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1998-2021, Joe Orton <joe@manyfish.co.uk> Copyright (C) 2004 Aleix Conchillo Flaque <aleix@member.fsf.org> This library is free software; you can redistribute it and/or @@ -179,9 +179,6 @@ /* Socket read timeout */ #define SOCKET_READ_TIMEOUT 120 -/* Internal read retry value */ -#define NE_SOCK_RETRY (-6) - /* Critical I/O functions on a socket: useful abstraction for easily * handling SSL I/O alongside raw socket I/O. */ struct iofns { @@ -536,6 +533,12 @@ #define MAP_ERR(e) (NE_ISCLOSED(e) ? NE_SOCK_CLOSED : \ (NE_ISRESET(e) ? NE_SOCK_RESET : NE_SOCK_ERROR)) +#ifdef MSG_NOSIGNAL +#define SEND_FLAGS MSG_NOSIGNAL +#else +#define SEND_FLAGS (0) +#endif + static ssize_t write_raw(ne_socket *sock, const char *data, size_t length) { ssize_t ret; @@ -547,7 +550,7 @@ #endif do { - ret = send(sock->fd, data, length, 0); + ret = send(sock->fd, data, length, SEND_FLAGS); } while (ret == -1 && NE_ISINTR(ne_errno)); if (ret < 0) { @@ -576,6 +579,17 @@ ret = total; ne_free(wasvector); +#elif defined(MSG_NOSIGNAL) && defined(HAVE_SENDMSG) + struct msghdr m; + + memset(&m, 0, sizeof m); + m.msg_iov = (struct iovec *)vector; + m.msg_iovlen = count; + + do { + ret = sendmsg(sock->fd, &m, MSG_NOSIGNAL); + } while (ret == -1 && NE_ISINTR(ne_errno)); + #else const struct iovec *vec = (const struct iovec *) vector; @@ -657,7 +671,8 @@ unsigned long err; if (errnum == SSL_ERROR_ZERO_RETURN) { - set_error(sock, _("Connection closed")); + set_error(sock, _("Connection closed")); + NE_DEBUG(NE_DBG_SSL, "ssl: Got TLS closure.\n"); return NE_SOCK_CLOSED; } else if (errnum == SSL_ERROR_WANT_READ) { @@ -667,6 +682,25 @@ /* for all other errors, look at the OpenSSL error stack */ err = ERR_get_error(); + NE_DEBUG(NE_DBG_SSL, "ssl: Got OpenSSL error stack %lu\n", err); + + if (ERR_GET_LIB(err) == ERR_LIB_SSL) { + int reason = ERR_GET_REASON(err); + +#ifdef SSL_R_UNEXPECTED_EOF_WHILE_READING + /* OpenSSL 3 signals truncation this way. */ + if (reason == SSL_R_UNEXPECTED_EOF_WHILE_READING) { + set_error(sock, _("Secure connection truncated")); + return NE_SOCK_TRUNC; + } + else +#endif + if (reason == SSL_R_PROTOCOL_IS_SHUTDOWN) { + set_error(sock, _("Secure connection reset")); + return NE_SOCK_RESET; + } + } + if (err == 0) { /* Empty error stack, presume this is a system call error: */ if (sret == 0) { @@ -783,6 +817,10 @@ ret = NE_SOCK_TRUNC; set_error(sock, _("Secure connection truncated")); break; + case GNUTLS_E_INVALID_SESSION: + ret = NE_SOCK_RESET; + set_error(sock, ("SSL socket terminated")); + break; case GNUTLS_E_PUSH_ERROR: ret = NE_SOCK_RESET; set_error(sock, ("SSL socket write failed")); @@ -1971,31 +2009,103 @@ va_end(params); } +int ne_sock_shutdown(ne_socket *sock, unsigned int flags) +{ + int ret; + + if (!flags) { + set_error(sock, _("Missing flags for socket shutdown")); + return NE_SOCK_ERROR; + } + +#if defined(HAVE_OPENSSL) + if (sock->ssl) { + int state = SSL_get_shutdown(sock->ssl); + + NE_DEBUG(NE_DBG_SSL, "ssl: Shutdown state: %ssent | %sreceived.\n", + (state & SSL_SENT_SHUTDOWN) ? "" : "not ", + (state & SSL_RECEIVED_SHUTDOWN) ? "" : "not "); + + if ((flags == NE_SOCK_BOTH || flags == NE_SOCK_SEND) + && (state & SSL_SENT_SHUTDOWN) == 0) { + NE_DEBUG(NE_DBG_SSL, "ssl: Sending closure.\n"); + ret = SSL_shutdown(sock->ssl); + + if (ret == 0) { + set_error(sock, _("Incomplete TLS closure")); + return NE_SOCK_RETRY; + } + else if (ret != 1) { + return error_ossl(sock, ret); + } + } + + if (flags == NE_SOCK_RECV || flags == NE_SOCK_BOTH) { + /* Returns whether the receive side is shutdown or not yet. */ + if ((state & SSL_RECEIVED_SHUTDOWN) == 0) { + set_error(sock, _("Incomplete TLS closure")); + return NE_SOCK_RETRY; + } + + /* For recv-only shutdown, must not complete TCP-level + * shutdown until the TLS shutdown is complete. */ + if (flags == NE_SOCK_RECV) { + return 0; + } + } + } +#elif defined(HAVE_GNUTLS) + if (sock->ssl) { + if (flags == NE_SOCK_RECV) { + /* unclear how to handle */ + set_error(sock, _("Incomplete TLS closure")); + return NE_SOCK_RETRY; + } + + ret = gnutls_bye(sock->ssl, + flags == NE_SOCK_SEND ? GNUTLS_SHUT_WR : GNUTLS_SHUT_RDWR); + if (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN) { + return NE_SOCK_RETRY; + } + } +#endif + +#ifdef _WIN32 + int how = flags == NE_SOCK_RECV ? SD_RECEIVE : (flags == NE_SOCK_SEND ? SD_SEND : SD_BOTH); +#else + int how = flags == NE_SOCK_RECV ? SHUT_RD : (flags == NE_SOCK_SEND ? SHUT_WR : SHUT_RDWR); +#endif + ret = shutdown(sock->fd, how); + if (ret < 0) { + int errnum = ne_errno; + set_strerror(sock, errnum); + return MAP_ERR(errnum); + } + + return ret; +} + int ne_sock_close(ne_socket *sock) { int ret; - /* Per API description - for an SSL connection, simply send the - * close_notify but do not wait for the peer's response. */ + if (sock->fd != -1) { + /* Ignore errors. */ + (void) ne_sock_shutdown(sock, NE_SOCK_SEND); + } + #if defined(HAVE_OPENSSL) if (sock->ssl) { - SSL_shutdown(sock->ssl); SSL_free(sock->ssl); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_socket.h ^ |
@@ -1,6 +1,6 @@ /* socket handling interface - Copyright (C) 1999-2010, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -42,7 +42,8 @@ #define NE_SOCK_RESET (-4) /* Secure connection was closed without proper SSL shutdown. */ #define NE_SOCK_TRUNC (-5) -/* Reserved value - (-6) */ +/* Retry operation later. */ +#define NE_SOCK_RETRY (-6) /* ne_socket represents a TCP socket. */ typedef struct ne_socket_s ne_socket; @@ -227,10 +228,31 @@ * must be destroyed by caller using ne_iaddr_free. */ ne_inet_addr *ne_sock_peer(ne_socket *sock, unsigned int *port); -/* Close the socket and destroy the socket object. If SSL is in use - * for the socket, a closure alert is sent to initiate a clean - * shutdown, but this function does not wait for the peer's response. - * Returns zero on success, or non-zero on failure. */ +/* Flags for ne_sock_shutdown(): */ +#define NE_SOCK_RECV (1) +#define NE_SOCK_SEND (2) +#define NE_SOCK_BOTH (3) + +/* Shut down the socket in one or both directions, without destroying + * the socket object. Flags must be one of NE_SOCK_RECV/SEND/BOTH. + * For a non-TLS socket, performs the directional shutdown according + * to flags. + * For a TLS socket: + * - if flags are NE_SOCK_SEND or NE_SOCK_BOTH, sends the TLS + * close_notify. Returns NE_SOCK_RETRY if the TLS connection has + * not been closed by the peer. + * - if flags are NE_SOCK_RECV, returns NE_SOCK_RETRY if the + * TLS close_notify has not been closed by the peer. + * In NE_SOCK_SEND or NE_SOCK_BOTH is specified, and the bidirectional + * TLS shutdown has completed, the TCP shutdown will also be completed + * as for a non-TLS socket. +*/ +int ne_sock_shutdown(ne_socket *sock, unsigned int flags); + +/* Close the socket if it is open, and destroy the socket object. If + * SSL is in use for the socket, a closure alert is sent to initiate a + * clean shutdown, but this function does not wait for the peer's + * response. Returns zero on success, or non-zero on failure. */ int ne_sock_close(ne_socket *sock); /* Return current error string for socket. */ | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_socks.c ^ |
@@ -1,6 +1,6 @@ /* SOCKS proxy support for neon - Copyright (C) 2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_ssl.h ^ |
@@ -1,6 +1,6 @@ /* SSL/TLS abstraction layer for neon - Copyright (C) 2003-2006, 2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2003-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -93,6 +93,12 @@ * NE_SSL_DIGESTLEN bytes in length. */ int ne_ssl_cert_digest(const ne_ssl_certificate *cert, char *digest); +/* Calculate the certificate digest ("fingerprint") and format it as a + * NUL-terminated hex string using the hash algorithm and formatting + * flags exactly as if flags was passed to ne_strhash(). Returns NULL + * on error. */ +char *ne_ssl_cert_hdigest(const ne_ssl_certificate *cert, unsigned int flags); + /* Copy the validity times for the certificate 'cert' into 'from' and * 'until' (either may be NULL). If the time cannot be represented by * a time_t value, then (time_t)-1 will be written. */ | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_sspi.c ^ |
@@ -427,7 +427,7 @@ } /* - * Destroyes the supplied context. + * Destroys the supplied context. */ int ne_sspi_destroy_context(void *context) { | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_string.c ^ |
@@ -1,6 +1,6 @@ /* String utility functions - Copyright (C) 1999-2007, 2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> strcasecmp/strncasecmp implementations are: Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -35,9 +35,16 @@ #endif #include <stdio.h> +#include <assert.h> #include "ne_alloc.h" #include "ne_string.h" +#include "ne_internal.h" + +#ifndef NE_HAVE_SSL +#include "ne_md5.h" +#define NEED_VSTRHASH +#endif char *ne_token(char **str, char separator) { @@ -274,7 +281,7 @@ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }; -static const char hex_chars[16] = "0123456789ABCDEF"; +static const char hex_chars[16] = "0123456789abcdef"; /* Return the expected number of bytes needed to append the string * beginning at byte 's', where 'send' points to the last byte after @@ -337,7 +344,7 @@ char *ne_strnqdup(const unsigned char *data, size_t len) { const unsigned char *dend = data + len; - char *dest = malloc(qappend_count(data, dend) + 1); + char *dest = ne_malloc(qappend_count(data, dend) + 1); quoted_append(dest, data, dend); @@ -614,3 +621,141 @@ return c1 - c2; } + +char *ne_strhash(unsigned int flags, ...) +{ + va_list ap; + char *rv; + + va_start(ap, flags); + rv = ne_vstrhash(flags, ap); + va_end(ap); + + return rv; +} + +#ifdef NEED_VSTRHASH +char *ne_vstrhash(unsigned int flags, va_list ap) +{ + const char *arg; + struct ne_md5_ctx *ctx; + unsigned int resbuf[4]; + + if ((flags & NE_HASH_ALGMASK) != NE_HASH_MD5) return NULL; + + ctx = ne_md5_create_ctx(); + if (!ctx) return NULL; + + while ((arg = va_arg(ap, const char *)) != NULL) + ne_md5_process_bytes(arg, strlen(arg), ctx); + + ne_md5_finish_ctx(ctx, resbuf); + ne_md5_destroy_ctx(ctx); + + return ne__strhash2hex((void *)&resbuf, sizeof resbuf, flags); +} +#endif + +#define HEX2ASC(a) (hex_chars[((unsigned char)(a)) & 0xf]) + +char *ne__strhash2hex(const unsigned char *digest, size_t len, + unsigned int flags) +{ + unsigned char sep = '\0'; + size_t step = 2; + char *rv, *p; + size_t n; + + assert(len > 0); + + if ((flags & NE_HASH_COLON)) { + step = 3; + sep = ':'; + } + else if ((flags & NE_HASH_SPACE)) { + step = 3; + sep = ' '; + } + + p = rv = ne_malloc(len * step + 1); + + for (n = 0; n < len; n++) { + *p++ = HEX2ASC(digest[n] >> 4); + *p++ = HEX2ASC(digest[n] & 0x0f); + if (sep) *p++ = sep; + } + + if (sep) p--; + + *p = '\0'; + return rv; +} + +/* Determines whether a character is valid in a regular parameter (NQ) + * not (QT). Per https://tools.ietf.org/html/rfc5987#section-3.2.1 + * every character in attr-char is NQ, everything else is QT. */ +#define QT 3 +#define NQ 1 +static const unsigned char ext_notation[256] = { +/* 0xXX x0 x2 x4 x6 x8 xA xC xE */ +/* 0x */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* 1x */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* 2x */ QT, NQ, QT, NQ, NQ, QT, NQ, QT, QT, QT, QT, NQ, QT, NQ, NQ, QT, +/* 3x */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* 4x */ QT, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, +/* 5x */ NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, QT, QT, QT, NQ, NQ, +/* 6x */ NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, +/* 7x */ NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, NQ, QT, NQ, QT, NQ, QT, +/* 8x */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* 9x */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* Ax */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* Bx */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* Cx */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* Dx */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* Ex */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, +/* Fx */ QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT, QT +}; +#undef QT +#undef NQ + +char *ne_strparam(const char *charset, const char *lang, + const unsigned char *value) +{ + const unsigned char *p; + size_t count = 0; + char *rv, *rp; + + /* Determine length required for the value. */ + for (p = value; *p; p++) + count += ext_notation[*p]; + + /* If length == input length, no encoding is required, return + * NULL. */ + if (count == strlen((const char *)value)) return NULL; + + /* +3 accounts for '' and trailing NUL */ + rv = ne_malloc(strlen(charset) + (lang ? strlen(lang) : 0) + count + 3); + memcpy(rv, charset, strlen(charset)); + rp = rv + strlen(charset); + *rp++ = '\''; + if (lang) { + memcpy(rp, lang, strlen(lang)); + rp += strlen(lang); + } + *rp++ = '\''; + + for (p = value; *p; p++) { + if (ext_notation[*p] == 1) { + *rp++ = *p; + } + else { + *rp++ = '%'; + *rp++ = HEX2ASC(*p >> 4); + *rp++ = HEX2ASC(*p & 0x0f); + } + } + + *rp = '\0'; + + return rv; +} | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_string.h ^ |
@@ -1,6 +1,6 @@ /* String utility functions - Copyright (C) 1999-2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -46,11 +46,13 @@ /* Cleanse 'str' of non-printable (e.g. control) characters. 'str' is * modified in-place, and returned. */ -char *ne_strclean(char *str); +char *ne_strclean(char *str) + ne_attribute((nonnull)); /* Encode 'len' bytes of 'text' to base64. Returns malloc-allocated * NUL-terminated buffer which the caller must free(). */ -char *ne_base64(const unsigned char *text, size_t len); +char *ne_base64(const unsigned char *text, size_t len) + ne_attribute_malloc; /* Decode NUL-terminated base64-encoded string 'data', placing * malloc-allocated raw decoder output in '*out'. Returns length, or @@ -142,13 +144,38 @@ /* Return a malloc-allocated copy of 'data', of length 'len', with all * non-ASCII bytes, and ASCII control characters escaped. (Note that * the escaping includes the NUL byte). */ -char *ne_strnqdup(const unsigned char *data, size_t len); +char *ne_strnqdup(const unsigned char *data, size_t len) + ne_attribute_malloc; /* Return malloc-allocated concatenation of all NUL-terminated string * arguments, up to a terminating NULL pointer. */ char *ne_concat(const char *str, ...) ne_attribute_sentinel; +/* Hash algorithms: */ +#define NE_HASH_MD5 (0x0001) /* MD5 */ +#define NE_HASH_SHA256 (0x0002) /* SHA-256 (SHA-2) */ +#define NE_HASH_SHA512 (0x0003) /* SHA-512 (SHA-2) */ +#define NE_HASH_SHA512_256 (0x0004) /* SHA-512/256 (SHA-2) */ + +/* Optional hash output formatting options: */ +#define NE_HASH_COLON (0x1000) /* Colon-separated pairs */ +#define NE_HASH_SPACE (0x2000) /* Space-separated pairs */ + +/* Calculate hash over concatenation of NUL-terminated const char * + * string arguments, up to a terminating NULL pointer, and return as a + * malloc-allocated ASCII hex string. 'flags' comprises exactly one + * of the algorithms indicated by the NE_HASH_* values above, which + * may optionally be combined with the formatting options. Returns + * NULL if the hash type is not supported or an internal error + * occurs. */ +char *ne_strhash(unsigned int flags, ...) + ne_attribute_sentinel ne_attribute_malloc; +/* Equivalent of ne_strhash(), taking va_list argument; the behaviour + * is otherwise identical. */ +char *ne_vstrhash(unsigned int flags, va_list ap) + ne_attribute_malloc; + /* Wrapper for snprintf: always NUL-terminates returned buffer, and * returns strlen(str). */ size_t ne_snprintf(char *str, size_t size, const char *fmt, ...) @@ -184,6 +211,15 @@ * ASCII hexadecimal equivalent character, in the range '0..9,'a..f' */ #define NE_HEX2ASC(x) ((char) ((x) > 9 ? ((x) - 10 + 'a') : ((x) + '0'))) +/* Encodes a extended parameter value for HTTP headers, as defined in + * RFC 5987. Returns a malloc-allocated string if the parameter + * 'value' needs to be encoded as an extended parameter, or NULL if it + * can be used as a regular parameter. The charset must be either + * "UTF-8" or "ISO-8859-1", but the language value can be NULL. */ +char *ne_strparam(const char *charset, const char *lang, + const unsigned char *value) + ne_attribute((nonnull (1, 3))) ne_attribute_malloc; + NE_END_DECLS #endif /* NE_STRING_H */ | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_stubssl.c ^ |
@@ -1,6 +1,6 @@ /* Stubs for SSL support when no SSL library has been configured - Copyright (C) 2002-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2002-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -107,6 +107,11 @@ return -1; } +char *ne_ssl_cert_hdigest(const ne_ssl_certificate *cert, unsigned int flags) +{ + return NULL; +} + void ne_ssl_cert_validity_time(const ne_ssl_certificate *cert, time_t *from, time_t *until) {} | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_uri.c ^ |
@@ -1,6 +1,6 @@ /* URI manipulation routines. - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -140,7 +140,7 @@ unsigned int ne_uri_defaultport(const char *scheme) { - /* RFC2616/3.2.3 says use case-insensitive comparisons here. */ + /* Scheme matching is case-insensitive per RFC 3986§3.1 */ if (ne_strcasecmp(scheme, "http") == 0) return 80; else if (ne_strcasecmp(scheme, "https") == 0) | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_uri.h ^ |
@@ -1,6 +1,6 @@ /* URI manipulation routines. - Copyright (C) 1999-2008, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_utils.c ^ |
@@ -1,6 +1,6 @@ /* HTTP utility functions - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_utils.h ^ |
@@ -1,6 +1,6 @@ /* HTTP utility functions - Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_xml.c ^ |
@@ -1,6 +1,6 @@ /* Wrapper interface to XML parser - Copyright (C) 1999-2007, 2009, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -471,7 +471,7 @@ p->current = p->root = ne_calloc(sizeof *p->root); p->root->default_ns = ""; p->root->state = 0; - strcpy(p->error, _("Unknown error")); + ne_strnzcpy(p->error, _("Unknown error"), sizeof p->error); #ifdef HAVE_EXPAT p->parser = XML_ParserCreate(NULL); if (p->parser == NULL) { | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_xml.h ^ |
@@ -1,6 +1,6 @@ /* neon XML parser interface - Copyright (C) 1999-2007, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_xmlreq.c ^ |
@@ -1,6 +1,6 @@ /* XML/HTTP response handling - Copyright (C) 2004-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2004-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/ne_xmlreq.h ^ |
@@ -1,6 +1,6 @@ /* XML/HTTP response handling - Copyright (C) 2004-2006, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 2004-2021, Joe Orton <joe@manyfish.co.uk> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/src/neon.vers ^ |
@@ -25,3 +25,12 @@ ne_path_escapef; ne_207_set_flags; }; + +NEON_0_32 { + ne_strhash; + ne_vstrhash; + ne_strparam; + ne_add_auth; + ne_ssl_cert_hdigest; + ne_sock_shutdown; +}; | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/.gitignore ^ |
@@ -59,4 +59,4 @@ /ca3 /foobar.txt /server.key -/ +/hello.txt | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/auth.c ^ |
@@ -29,18 +29,23 @@ #include <unistd.h> #endif +#include "ne_md5.h" +#include "ne_string.h" #include "ne_request.h" #include "ne_auth.h" #include "ne_basic.h" -#include "ne_md5.h" #include "tests.h" #include "child.h" #include "utils.h" static const char username[] = "Aladdin", password[] = "open sesame"; +static const char *alt_username, *alt_username_star; + static int auth_failed; +static int has_sha256 = 0, has_sha512_256 = 0; + #define BASIC_WALLY "Basic realm=WallyWorld" #define CHAL_WALLY "WWW-Authenticate: " BASIC_WALLY @@ -53,11 +58,24 @@ NE_DEBUG(NE_DBG_HTTP, "Got wrong realm '%s'!\n", realm); return -1; } - strcpy(un, username); + strcpy(un, userdata ? userdata : username); strcpy(pw, password); return tries; } +static int auth_provide_cb(void *userdata, int attempt, + unsigned protocol, const char *realm, + char *un, char *pw, size_t buflen) +{ + if (strcmp(realm, "WallyWorld")) { + NE_DEBUG(NE_DBG_HTTP, "Got wrong realm '%s'!\n", realm); + return -1; + } + strcpy(un, alt_username); + strcpy(pw, password); + return attempt; +} + static void auth_hdr(char *value) { #define B "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" @@ -112,6 +130,21 @@ return 0; } +static int init(void) +{ + char *p; + + p = ne_strhash(NE_HASH_SHA256, "", NULL); + has_sha256 = p != NULL; + if (p) ne_free(p); + + p = ne_strhash(NE_HASH_SHA512_256, "", NULL); + has_sha512_256 = p != NULL; + if (p) ne_free(p); + + return lookup_localhost(); +} + /* Test that various Basic auth challenges are correctly handled. */ static int basic(void) { @@ -372,13 +405,20 @@ digest_hdr = ne_strdup(header); } +#define PARM_PROXY (0x0001) +#define PARM_NEXTNONCE (0x0002) +#define PARM_RFC2617 (0x0004) +#define PARM_AINFO (0x0008) +#define PARM_USERHASH (0x0010) /* userhash=true */ +#define PARM_UHFALSE (0x0020) /* userhash=false */ +#define PARM_ALTUSER (0x0040) +#define PARM_LEGACY (0x0080) +#define PARM_LEGACY_ONLY (0x0100) + struct digest_parms { const char *realm, *nonce, *opaque, *domain; - int rfc2617; - int send_ainfo; - enum { ALG_MD5 = 0, ALG_MD5_SESS = 1, ALG_SHA256 = 2 } alg; - int proxy; - int send_nextnonce; + enum { ALG_MD5 = 0, ALG_MD5_SESS, ALG_SHA256, ALG_SHA256_SESS, ALG_SHA512_256, ALG_SHA512_256_SESS } alg; + unsigned int flags; int num_requests; int stale; enum digest_failure { @@ -396,85 +436,105 @@ fail_ai_omit_cnonce, fail_ai_omit_digest, fail_ai_omit_nc, - fail_outside_domain + fail_outside_domain, + fail_2069_weak } failure; }; struct digest_state { - const char *realm, *nonce, *uri, *username, *password, *algorithm, *qop, + const char *realm, *nonce, *uri, *username, *username_star, *password, *algorithm, *qop, *method, *opaque; + char userhash[64]; char *cnonce, *digest, *ncval; long nc; + int count; + int uhash_bool; }; +static char *hash(struct digest_parms *p, ...) + ne_attribute_sentinel; + +static char *hash(struct digest_parms *p, ...) +{ + va_list ap; + unsigned int flags; + char *h; + + switch (p->alg) { + case ALG_SHA512_256_SESS: + case ALG_SHA512_256: + flags = NE_HASH_SHA512_256; + break; + case ALG_SHA256_SESS: + case ALG_SHA256: + flags = NE_HASH_SHA256; + break; + default: + flags = NE_HASH_MD5; + break; + } + + va_start(ap, p); + h = ne_vstrhash(flags, ap); + va_end(ap); + + if (h == NULL) abort(); + + return h; +} + /* Write the request-digest into 'digest' (or response-digest if * auth_info is non-zero) for given digest auth state and * parameters. */ -static void make_digest(struct digest_state *state, struct digest_parms *parms, - int auth_info, char digest[33]) +static char *make_digest(struct digest_state *state, struct digest_parms *parms, + int auth_info) { - struct ne_md5_ctx *ctx; - char h_a1[33], h_a2[33]; + char *h_a1, *h_a2, *rv; + + h_a1 = hash(parms, state->username, ":", state->realm, ":", + state->password, NULL); + + if (parms->alg == ALG_MD5_SESS || parms->alg == ALG_SHA256_SESS || parms->alg == ALG_SHA512_256_SESS) { + char *sess_h_a1; + + sess_h_a1 = hash(parms, h_a1, ":", state->nonce, ":", state->cnonce, NULL); + ne_free(h_a1); + h_a1 = sess_h_a1; + } + + h_a2 = hash(parms, !auth_info ? state->method : "", ":", state->uri, NULL); - /* H(A1) */ - ctx = ne_md5_create_ctx(); - if (!ctx) return; - ne_md5_process_bytes(state->username, strlen(state->username), ctx); - ne_md5_process_bytes(":", 1, ctx); - ne_md5_process_bytes(state->realm, strlen(state->realm), ctx); - ne_md5_process_bytes(":", 1, ctx); - ne_md5_process_bytes(state->password, strlen(state->password), ctx); - ne_md5_finish_ascii(ctx, h_a1); - - if (parms->alg == ALG_MD5_SESS) { - ne_md5_reset_ctx(ctx); - ne_md5_process_bytes(h_a1, 32, ctx); - ne_md5_process_bytes(":", 1, ctx); - ne_md5_process_bytes(state->nonce, strlen(state->nonce), ctx); - ne_md5_process_bytes(":", 1, ctx); - ne_md5_process_bytes(state->cnonce, strlen(state->cnonce), ctx); - ne_md5_finish_ascii(ctx, h_a1); - } - - /* H(A2) */ - ne_md5_reset_ctx(ctx); - if (!auth_info) | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/basic.c ^ |
@@ -144,6 +144,7 @@ ret = ne_get_range(sess, "/foo", &range, fd); close(fd); + ne_close_connection(sess); CALL(await_server()); if (fail) { @@ -242,9 +243,7 @@ ONV(c.dav_executable != caps[n].exec, ("class2 was %d not %d", c.dav_executable, caps[n].exec)); - CALL(await_server()); - - ne_session_destroy(sess); + CALL(destroy_and_wait(sess)); } return OK; @@ -265,10 +264,7 @@ ONREQ(ne_get(sess, "/getit", fd)); close(fd); - ne_session_destroy(sess); - CALL(await_server()); - - return OK; + return destroy_and_wait(sess); } #define CLASS_12 (NE_CAP_DAV_CLASS1 | NE_CAP_DAV_CLASS2) @@ -309,9 +305,7 @@ ("capabilities for 'DAV: %s' were 0x%x, expected 0x%x", ts[n].hdrs, caps, ts[n].caps)); - CALL(await_server()); - - ne_session_destroy(sess); + CALL(destroy_and_wait(sess)); } return OK; | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/common/child.c ^ |
@@ -148,14 +148,26 @@ /* close 'sock', performing lingering close to avoid premature RST. */ static int close_socket(ne_socket *sock) { -#ifdef HAVE_SHUTDOWN + int ret; char buf[20]; - int fd = ne_sock_fd(sock); - - shutdown(fd, 0); + + ret = ne_sock_shutdown(sock, NE_SOCK_SEND); + if (ret == 0) { + NE_DEBUG(NE_DBG_SOCKET, "ssl: Socket cleanly closed.\n"); + } + else { + NE_DEBUG(NE_DBG_SOCKET, "sock: Socket closed uncleanly: %s\n", + ne_sock_error(sock)); + } + + NE_DEBUG(NE_DBG_SSL, "sock: Lingering close...\n"); + ne_sock_read_timeout(sock, 5); while (ne_sock_read(sock, buf, sizeof buf) > 0); -#endif - return ne_sock_close(sock); + + NE_DEBUG(NE_DBG_SSL, "sock: Closing socket.\n"); + ret = ne_sock_close(sock); + NE_DEBUG(NE_DBG_SSL, "sock: Socket closed (%d).\n", ret); + return ret; } /* This runs as the child process. */ @@ -345,6 +357,11 @@ return OK; } +int destroy_and_wait(ne_session *sess) +{ + ne_session_destroy(sess); + return await_server(); +} int await_server(void) { @@ -417,6 +434,23 @@ return OK; } +int error_response(ne_socket *sock, int ret) +{ + char resp[1024]; + + ne_snprintf(resp, sizeof resp, + "HTTP/1.1 500 Server Test Failed\r\n" + "X-Neon-Context: %s\r\n" + "Content-Length: 0\r\n" + "Connection: close\r\n" + "\r\n", + test_context); + SEND_STRING(sock, resp); + + return ret; +} + + int discard_body(ne_socket *sock) { while (clength > 0) { | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/common/child.h ^ |
@@ -28,6 +28,7 @@ #endif #include "ne_socket.h" +#include "ne_session.h" /* Test which does DNS lookup on "localhost": this must be the first * named test. */ @@ -54,7 +55,7 @@ /* Like spawn_server; if bind_local is non-zero, binds server to * localhost, otherwise, binds server to real local hostname. (must - * have called lookup_localhost or lookup_hostname as approprate + * have called lookup_localhost or lookup_hostname as appropriate * beforehand). */ int spawn_server_addr(int bind_local, int port, server_fn fn, void *userdata); @@ -71,6 +72,9 @@ /* Blocks until child process exits, and gives return code of 'fn'. */ int await_server(void); +/* Destroys session 'sess' and then is equivalent to await_server. */ +int destroy_and_wait(ne_session *sess); + /* Kills child process. */ int reap_server(void); @@ -89,6 +93,14 @@ /* Utility macro: send given string down socket. */ #define SEND_STRING(sock, str) server_send((sock), (str), strlen((str))) +/* If test result 'err' is not OK, return an HTTP 500 error response + * including the test context in a response header. */ +#define ONERR(sock, err) do { int ret_ = (err); if (ret_) return error_response(sock, ret_); } while (0) + +/* Send an HTTP error response including the test context in a + * response header. */ +int error_response(ne_socket *sock, int ret); + /* Tries to ensure that the socket will be closed using RST rather * than FIN. */ int reset_socket(ne_socket *sock); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/common/tests.c ^ |
@@ -110,7 +110,7 @@ NE_DBG_LOCKS | NE_DBG_XMLPARSE | NE_DBG_XML | NE_DBG_SSL | \ NE_DBG_HTTPPLAIN) -#define W(m) do { if (write(0, m, strlen(m)) < 0) exit(99); } while(0) +#define W(m) do { if (write(0, m, strlen(m)) < 0) _exit(99); } while(0) #define W_RED(m) do { if (use_colour) W("\033[41;37;01m"); \ W(m); if (use_colour) W("\033[00m\n"); } while (0); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/compress.c ^ |
@@ -289,12 +289,9 @@ ONN("got bad response body", failed != f_complete); - CALL(await_server()); - ne_request_destroy(req); - ne_session_destroy(sess); - return OK; + return destroy_and_wait(sess); } #define SSTRING(x) { x, sizeof(x) - 1 } | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/lock.c ^ |
@@ -580,12 +580,10 @@ "</parse this, my friend>\n")); ret = ne_lock_discover(sess, "/foo", dummy_discover, NULL); - CALL(await_server()); ONN("discovery okay for response with invalid XML!?", ret != NE_ERROR); - ne_session_destroy(sess); - return OK; + return destroy_and_wait(sess); } static int no_creds(void *ud, const char *realm, int attempt, @@ -626,10 +624,7 @@ ret, ne_get_error(sess))); ne_lock_destroy(lock); - CALL(await_server()); - ne_session_destroy(sess); - - return OK; + return destroy_and_wait(sess); } /* Regression test for neon 0.25.0 regression in ne_lock() error | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/props.c ^ |
@@ -52,8 +52,8 @@ "HTTP/1.1 200 Goferit\r\n" "Connection: close\r\n\r\n")); ONREQ(ne_proppatch(sess, "/fish", ops)); - ne_session_destroy(sess); - return await_server(); + + return destroy_and_wait(sess); } #define RESP207 "HTTP/1.0 207 Stuff\r\n" "Server: foo\r\n\r\n" | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/request.c ^ |
@@ -67,8 +67,7 @@ static int finish_request(void) { ne_request_destroy(def_req); - ne_session_destroy(def_sess); - return await_server(); + return destroy_and_wait(def_sess); } #define RESP200 "HTTP/1.1 200 OK\r\n" "Server: neon-test-server\r\n" @@ -128,6 +127,7 @@ req = ne_request_create(sess, "FOO", "/bar"); ONREQ(ne_request_dispatch(req)); + ne_close_connection(sess); CALL(await_server()); gotval = ne_get_response_header(req, name); @@ -153,11 +153,11 @@ CALL(session_server(&sess, fn, userdata)); CALL(run_request(sess, 200, construct_get, buf)); + ne_session_destroy(sess); CALL(await_server()); ONN("response body match", strcmp(buf->data, expect)); - ne_session_destroy(sess); ne_buffer_destroy(buf); return OK; @@ -193,11 +193,9 @@ ONV(any_request(sess, "/second"), ("second request on connection failed: %s",ne_get_error(sess))); - ON(await_server()); - ne_request_destroy(req); - ne_session_destroy(sess); - return OK; + + return destroy_and_wait(sess); } static int reason_phrase(void) @@ -207,6 +205,7 @@ CALL(make_session(&sess, single_serve_string, RESP200 "Connection: close\r\n\r\n")); ONREQ(any_request(sess, "/foo")); + ne_close_connection(sess); CALL(await_server()); ONV(strcmp(ne_get_error(sess), "200 OK"), @@ -434,13 +433,12 @@ /* Run it again. */ ne_buffer_clear(buf); CALL(run_request(sess, 200, construct_get, buf)); - + ne_session_destroy(sess); ON(await_server()); ONV(strcmp(buf->data, body), ("response #2 mismatch: [%s] not [%s]", buf->data, body)); - ne_session_destroy(sess); ne_buffer_destroy(buf); return OK; @@ -842,10 +840,8 @@ ONCMP("hello fair world", value, "response header", "X-Foo"); ne_request_destroy(req); - ne_session_destroy(sess); - CALL(await_server()); - return OK; + return destroy_and_wait(sess); } static int iterate_none(void) @@ -862,11 +858,9 @@ ONN("iterator was not NULL for no headers", ne_response_header_iterate(req, NULL, NULL, NULL) != NULL); - CALL(await_server()); ne_request_destroy(req); - ne_session_destroy(sess); - return OK; + return destroy_and_wait(sess); } #define MANY_HEADERS (90) @@ -921,10 +915,8 @@ ne_buffer_destroy(buf); ne_request_destroy(req); - ne_session_destroy(sess); - CALL(await_server()); - - return OK; + + return destroy_and_wait(sess); } @@ -1012,9 +1004,8 @@ ne_set_request_body_buffer(req, body, sizeof(body)); ONREQ(ne_request_dispatch(req)); ne_request_destroy(req); - ne_session_destroy(sess); - CALL(await_server()); - return OK; + + return destroy_and_wait(sess); } /* regression test for enabling 100-continue without sending a body. */ @@ -1029,9 +1020,8 @@ ne_set_request_flag(req, NE_REQFLAG_EXPECT100, 1); ONREQ(ne_request_dispatch(req)); ne_request_destroy(req); - ne_session_destroy(sess); - return await_server(); + return destroy_and_wait(sess); } struct body { @@ -1117,11 +1107,9 @@ } ONREQ(ne_request_dispatch(req)); - - CALL(await_server()); - ne_request_destroy(req); - ne_session_destroy(sess); + + CALL(destroy_and_wait(sess)); } } @@ -1462,13 +1450,10 @@ RESP200 "Content-Length: 0\r\n\r\n")); ret = any_request(sess, "/foo"); - ne_session_destroy(sess); ONN("origin server name resolved when proxy used", ret == NE_LOOKUP); - CALL(await_server()); - - return OK; + return destroy_and_wait(sess); } /* If the chunk size is entirely invalid, the request should be @@ -1496,7 +1481,7 @@ * contains an invalid chunk size. */ ONN("invalid chunk size was accepted?", any_request(sess, "/foo") != NE_ERROR); - + ne_close_connection(sess); CALL(await_server()); /* second request should fail since server has gone away. */ @@ -1536,7 +1521,7 @@ ONREQ(any_request(sess, "/first")); ONN("second request should fail", any_request(sess, "/second") == NE_OK); - + ne_close_connection(sess); CALL(await_server()); /* A third attempt to connect to the server should fail to @@ -1561,7 +1546,7 @@ ret = any_request(sess, "/fail"); ONV(ret != NE_ERROR, ("request failed with %d not NE_ERROR", ret)); - + ne_close_connection(sess); ONV(strstr(ne_get_error(sess), "Could not parse response status line") == NULL, ("session error was `%s'", ne_get_error(sess))); @@ -1758,10 +1743,8 @@ ONREQ(ne_request_dispatch(req)); ne_request_destroy(req); - ne_session_destroy(sess); - CALL(await_server()); - return OK; + return destroy_and_wait(sess); } static int abortive_reader(void *userdata, const char *buf, size_t len) @@ -1798,9 +1781,8 @@ /* test that the connection was closed. */ ONN("connection not closed after aborted response", | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/socket.c ^ |
@@ -100,6 +100,15 @@ return FAIL; } +static int close_and_wait(ne_socket *sock) +{ + int ret = ne_sock_close(sock); + + ONV(ret, ("failed closing socket: %d", ret)); + + return await_server(); +} + #ifdef SOCKET_SSL static int init_ssl(void) @@ -431,8 +440,8 @@ ne_socket *sock; CALL(begin(&sock, serve_close, NULL)); - ne_sock_close(sock); - return await_server(); + + return close_and_wait(sock); } /* Connect to an address crafted using ne_iaddr_make rather than from @@ -448,11 +457,9 @@ CALL(new_spawn_server(1, serve_close, NULL, &port)); ONN("could not connect", ne_sock_connect(sock, ia, port)); - ne_sock_close(sock); - CALL(await_server()); - ne_iaddr_free(ia); - return OK; + + return close_and_wait(sock); } static int addr_peer(void) @@ -506,6 +513,8 @@ { if (eof) CALL(expect_close(sock)); + else + ne_sock_shutdown(sock, NE_SOCK_SEND); CALL(good_close(sock)); return await_server(); } @@ -529,6 +538,14 @@ return await_server(); } +/* Test that just does an open then a close. */ +static int open_close(void) +{ + ONN("close of newly opened socket failed", ne_sock_close(ne_sock_create())); + + return OK; +} + /* Test that just does a connect then a close (but gets the close via * ne_sock_peek). */ static int peek_close(void) @@ -566,7 +583,8 @@ { ssize_t ret = ne_sock_read(sock, buffer, len); ONV((ssize_t)len != ret, - ("read got %" NE_FMT_SSIZE_T " bytes not %" NE_FMT_SIZE_T, ret, len)); + ("read got %" NE_FMT_SSIZE_T " bytes (%s) not %" NE_FMT_SIZE_T, + ret, ne_sock_error(sock), len)); ONV(memcmp(str, buffer, len), ("read mismatch: `%.*s' not `%.*s'", (int)len, buffer, (int)len, str)); @@ -1002,7 +1020,11 @@ NE_DEBUG(NE_DBG_SOCKET, "Wrote line.\n"); } - ONN("readline failed", ret != NE_SOCK_CLOSED); + ONV(ret != NE_SOCK_CLOSED, ("unexpected readline failure: %s", + ne_sock_error(sock))); + + NE_DEBUG(NE_DBG_SOCKET, "ssl: Readline got closure\n"); + return 0; } @@ -1025,14 +1047,50 @@ } #ifdef SOCKET_SSL -/* harder to simulate closure cases for an SSL connection, since it - * may be doing multiple read()s or write()s per ne_sock_* call. */ +static int serve_wait_close(ne_socket *sock, void *ud) +{ + ONV(ne_sock_read(sock, buffer, 1) != NE_SOCK_CLOSED, + ("failed waiting for TLS closure: %s", ne_sock_error(sock))); + + return 0; +} + +static int ssl_shutdown(void) +{ + ne_socket *sock; + int ret; + + CALL(begin(&sock, serve_wait_close, NULL)); + + ONV(ne_sock_shutdown(sock, NE_SOCK_RECV) != NE_SOCK_RETRY, + ("TLS socket closed too early")); + + ret = ne_sock_shutdown(sock, NE_SOCK_SEND); + if (ret == NE_SOCK_RETRY) { + /* Wait for closure. */ + ret = ne_sock_read(sock, buffer, 0); + ONV(ret != NE_SOCK_CLOSED, + ("read for closure didn't get closure: %d/%s", + ret, ne_sock_error(sock))); + } + else { + ONV(ret, ("socket shutdown unexpected state: %d/%s", + ret, ne_sock_error(sock))); + } + + CALL(await_server()); + ne_sock_close(sock); + + return OK; +} + static int ssl_closure(void) { ne_socket *sock; ssize_t ret; CALL(begin(&sock, serve_close, NULL)); CALL(full_write(sock, "a", 1)); + ne_sock_shutdown(sock, NE_SOCK_SEND); CALL(await_server()); do { ret = ne_sock_fullwrite(sock, "a", 1); @@ -1074,7 +1132,10 @@ /* use W Richard Stevens' SO_LINGER trick to elicit a TCP RST */ static int serve_reset(ne_socket *sock, void *ud) { - minisleep(); + ONV(ne_sock_read(sock, buffer, 1) != 1, + ("socket read error `%s'", ne_sock_error(sock))); + ONV(buffer[0] != 'R', + ("got unexpected byte %c from client", buffer[0])); reset_socket(sock); exit(0); return 0; @@ -1085,7 +1146,7 @@ ne_socket *sock; int ret; CALL(begin(&sock, serve_reset, NULL)); - CALL(full_write(sock, "a", 1)); + CALL(full_write(sock, "R", 1)); CALL(await_server()); ret = ne_sock_fullwrite(sock, "a", 1); if (ret == 0) { @@ -1106,7 +1167,7 @@ ne_socket *sock; ssize_t ret; CALL(begin(&sock, serve_reset, NULL)); - CALL(full_write(sock, "a", 1)); + CALL(full_write(sock, "R", 1)); CALL(await_server()); ret = ne_sock_read(sock, buffer, 1); if (ret == NE_SOCK_CLOSED) { @@ -1163,6 +1224,32 @@ TO_FINISH; } +#ifndef SOCKET_SSL +/* Waits for EOF from read-side and then sends "abcd". */ +static int serve_shutdown(ne_socket *sock, void *userdata) +{ + ONV(ne_sock_read(sock, buffer, 1) != NE_SOCK_CLOSED, + ("expected to get closure")); + CALL(full_write(sock, "abcd", 4)); + return 0; +} + +static int bidi(void) +{ + ne_socket *sock; + + CALL(begin(&sock, serve_shutdown, NULL)); + + CALL(expect_block_timeout(sock, 1, "read should timeout before closure")); + + ONV(ne_sock_shutdown(sock, NE_SOCK_SEND) != 0, + ("shutdown failed: `%s'", ne_sock_error(sock))); + FULLREAD("abcd"); + + return finish(sock, 1); +} +#endif | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/ssl.c ^ |
@@ -66,7 +66,12 @@ static char *nul_cn_fn; static int check_dname(const ne_ssl_dname *dn, const char *expected, - const char *which); + const char *which) + ne_attribute((nonnull)); + +static int check_cert_dnames(const ne_ssl_certificate *cert, + const char *subject, const char *issuer) + ne_attribute((nonnull (2))); /* Arguments for running the SSL server */ struct ssl_server_args { @@ -217,6 +222,18 @@ fn, userdata); } +/* Runs SSL server which will accept 'count' connections, running + * ssl_server as callback with given 'args'. */ +static int multi_ssl_session(int count, ne_session **sess, + struct ssl_server_args *args) +{ + return fakeproxied_multi_session_server(count, sess, "https", + "localhost", + 7777, + ssl_server, args); +} + + static int load_and_trust_cert(ne_session *sess, const char *ca_cert) { ne_ssl_certificate *ca = ne_ssl_cert_read(ca_cert); @@ -231,7 +248,6 @@ ne_ssl_verify_fn verify_fn, void *verify_ud) { ne_session *sess; - int ret; CALL(make_ssl_session(&sess, hostname, ssl_server, args)); @@ -239,10 +255,9 @@ if (verify_fn) ne_ssl_set_verify(sess, verify_fn, verify_ud); - ret = any_2xx_request(sess, "/foo"); - CALL(await_server()); - ne_session_destroy(sess); - return ret; + CALL(any_2xx_request(sess, "/foo")); + + return destroy_and_wait(sess); } /* Run a request in the given session. */ @@ -250,8 +265,6 @@ char *ca_cert, ne_ssl_verify_fn verify_fn, void *verify_ud) { - int ret; - if (ca_cert) { CALL(load_and_trust_cert(sess, ca_cert)); } @@ -261,13 +274,9 @@ if (verify_fn) ne_ssl_set_verify(sess, verify_fn, verify_ud); - ret = any_request(sess, "/foo"); + ONREQ(any_request(sess, "/foo")); - CALL(await_server()); - - ONREQ(ret); - - return OK; + return await_server(); } static int init(void) @@ -529,12 +538,9 @@ CALL(make_ssl_session(&sess, NULL, just_serve_string, "Hello, world.\n")); ret = any_request(sess, "/bar"); - CALL(await_server()); - ONN("request did not fail", ret != NE_ERROR); - ne_session_destroy(sess); - return OK; + return destroy_and_wait(sess); } static int wildcard_match(void) @@ -616,7 +622,7 @@ NE_DEBUG(NE_DBG_SSL, "Got dname `%s', expecting `%s'\n", dname, expected); - ONV(strcmp(dname, expected), + ONV(!dname || strcmp(dname, expected), ("certificate %s dname was `%s' not `%s'", which, dname, expected)); ne_free(dname); @@ -735,19 +741,20 @@ return OK; } +/* Checks that the verify callback is only called on the first + * connection to the SSL server, and not on subsequent connections. */ static int cache_verify(void) { - ne_session *sess = DEFSESS; + ne_session *sess; int count = 0; struct ssl_server_args args = {SERVER_CERT, 0}; - - /* force verify cert. */ - CALL(any_ssl_request(sess, ssl_server, &args, NULL, count_vfy, - &count)); - - CALL(spawn_server(7777, ssl_server, &args)); - ONREQ(any_request(sess, "/foo2")); - CALL(await_server()); + + CALL(multi_ssl_session(2, &sess, &args)); + + ne_ssl_set_verify(sess, count_vfy, &count); + + ONREQ(any_request(sess, "/foo-alpha")); + ONREQ(any_request(sess, "/foo-beta")); ONV(count != 1, ("verify callback result not cached: called %d times", count)); @@ -882,7 +889,7 @@ #define SRCDIR(s) ne_concat(srcdir, "/" s, NULL) -#ifndef HAVE_GNUTLS +#if 0 static int fail_nul_cn(void) { char *key = SRCDIR("nulsrv.key"), *ca = SRCDIR("nulca.pem"); @@ -1025,9 +1032,8 @@ ONREQ(any_request(sess, "/req1")); ONREQ(any_request(sess, "/req2")); - ne_session_destroy(sess); - return await_server(); + return destroy_and_wait(sess); } #endif @@ -1194,16 +1200,16 @@ * cert was requested. */ static int no_client_cert(void) { - ne_session *sess = DEFSESS; + ne_session *sess; struct ssl_server_args args = {SERVER_CERT, NULL}; int ret; args.require_cc = 1; args.fail_silently = 1; - ne_ssl_trust_cert(sess, def_ca_cert); + CALL(make_ssl_session(&sess, NULL, ssl_server, &args)); - CALL(spawn_server(7777, ssl_server, &args)); + ne_ssl_trust_cert(sess, def_ca_cert); ret = any_request(sess, "/failme"); @@ -1338,11 +1344,9 @@ /* run two requests over the tunnel. */ ret = any_2xx_request(sess, "/foobar"); if (!ret) ret = any_2xx_request(sess, "/foobar2"); - CALL(await_server()); CALL(ret); - ne_session_destroy(sess); - return 0; + return destroy_and_wait(sess); } /* Regression test to check that server credentials aren't sent to the @@ -1350,7 +1354,7 @@ static int auth_tunnel_creds(void) { ne_session *sess = ne_session_create("https", "localhost", 443); - int ret, code = 401; + int code = 401; struct ssl_server_args args = {SERVER_CERT, 0}; ne_session_proxy(sess, "localhost", 7777); @@ -1363,12 +1367,9 @@ "Server: Python\r\n" "Content-Length: 0\r\n" "\r\n"; CALL(spawn_server(7777, serve_tunnel, &args)); - ret = any_2xx_request(sess, "/foobar"); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/string-tests.c ^ |
@@ -36,7 +36,7 @@ #include "tests.h" #undef ONCMP -#define ONCMP(a,b) ONV(strcmp(a, b), \ +#define ONCMP(a,b) ONV(!a || strcmp(a, b), \ ("result was [%s] not [%s]", a, b)) static int simple(void) { @@ -497,7 +497,7 @@ ret = ne_snprintf(buf, ts[n].pass, "%s", ts[n].in); - ONCMP(buf, ts[n].out); + ONCMP(ts[n].out, buf); ONV(ret != ts[n].ret, ("got return value %" NE_FMT_SIZE_T " not %" NE_FMT_SIZE_T, ret, ts[n].ret)); @@ -622,6 +622,7 @@ { "b", 2, "b\\x00" }, { "alpha\0alpha", 11, "alpha\\x00alpha" }, { "a\tb", 3, "a\\x09b" }, + { "foo\x7f" "bar", 7, "foo\\x7fbar" }, { NULL } }; unsigned n; @@ -650,6 +651,136 @@ return OK; } +static char *test_vstrhash(unsigned int flags, ...) +{ + va_list ap; + char *rv; + + va_start(ap, flags); + rv = ne_vstrhash(flags, ap); + va_end(ap); + + return rv; +} + +#define TEST1 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +#define TEST1_SHA "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1" + +#define ONVEC(args, expect) \ + do { char *h = ne_strhash args; ONCMP(h, expect); ne_free(h); } while (0) + +static int strhash(void) +{ + ONN("zero flags must return NULL", ne_strhash(0, "", NULL) != NULL); + ONN("zero flags must return NULL for vstrhash", test_vstrhash(0, "", NULL) != NULL); + + ONN("no alg flags must return NULL", ne_strhash(NE_HASH_COLON, "", NULL) != NULL); + ONN("no alg flags must return NULL", ne_strhash(NE_HASH_SPACE, "", NULL) != NULL); + + ONVEC((NE_HASH_MD5, "", NULL), "d41d8cd98f00b204e9800998ecf8427e"); + ONVEC((NE_HASH_MD5, "foo", "ba", "r", NULL), "3858f62230ac3c915f300c664312c63f"); + ONVEC((NE_HASH_MD5|NE_HASH_SPACE, "foo", "ba", "r", NULL), "38 58 f6 22 30 ac 3c 91 5f 30 0c 66 43 12 c6 3f"); + + return OK; +} + +static int strhash_sha_256(void) +{ + char *p = ne_strhash(NE_HASH_SHA256, "", NULL); + if (p == NULL) { + t_context("SHA-2-256 not supported"); + return SKIP; + } + ne_free(p); + + ONVEC((NE_HASH_SHA256, TEST1, NULL), TEST1_SHA); + ONVEC((NE_HASH_SHA256, "foobar", "foo", "bar", "f", "oobar", NULL), + "d173c93898d3ca8455a4526e0af2a1aee9b91c8ec19adac16e6e8be2da09436c"); + + return OK; +} + +/* NIST examples from https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documents/examples/SHA512.pdf */ +#define TEST1_512 "abc" +#define TEST1_512_MDC "dd:af:35:a1:93:61:7a:ba:cc:41:73:49:ae:20:41:31:12:e6:fa:4e:89:a9:7e:a2:0a:9e:ee:e6:4b:55:d3:9a:21:92:99:2a:27:4f:c1:a8:36:ba:3c:23:a3:fe:eb:bd:45:4d:44:23:64:3c:e8:0e:2a:9a:c9:4f:a5:4c:a4:9f" +#define TEST2_512_1 "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrl" +#define TEST2_512_2 "mnopqrsmnopqrstnopqrstu" +#define TEST2_512_MD "8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909" + + +/* NIST examples from https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documents/examples/SHA512_256.pdf */ +#define TEST1_512_256 "abc" +#define TEST1_512_256_MD "53048e2681941ef99b2e29b76b4c7dabe4c2d0c634fc6d46e0e2f13107e7af23" +#define TEST2_512_256_1 "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijkl" +#define TEST2_512_256_2 "mnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" +#define TEST2_512_256_MD "3928e184fb8690f840da3988121d31be65cb9d3ef83ee6146feac861e19b563a" +#define TEST2_512_256_MDC "39:28:e1:84:fb:86:90:f8:40:da:39:88:12:1d:31:be:65:cb:9d:3e:f8:3e:e6:14:6f:ea:c8:61:e1:9b:56:3a" + +static int strhash_sha_512(void) +{ + char *p = ne_strhash(NE_HASH_SHA512, "", NULL); + + if (p == NULL) { + t_context("SHA-2-512 not supported"); + return SKIP; + } + ne_free(p); + + ONVEC((NE_HASH_SHA512|NE_HASH_COLON, TEST1_512, NULL), TEST1_512_MDC); + ONVEC((NE_HASH_SHA512, TEST2_512_1, TEST2_512_2, NULL), TEST2_512_MD); + + return OK; +} + +static int strhash_sha_512_256(void) +{ + char *p = ne_strhash(NE_HASH_SHA512_256, "", NULL); + + if (p == NULL) { + t_context("SHA-2-512/256 not supported"); + return SKIP; + } + ne_free(p); + + ONVEC((NE_HASH_SHA512_256, TEST1_512_256, NULL), TEST1_512_256_MD); + ONVEC((NE_HASH_SHA512_256, TEST2_512_256_1, TEST2_512_256_2, NULL), TEST2_512_256_MD); + ONVEC((NE_HASH_SHA512_256|NE_HASH_COLON, TEST2_512_256_1, TEST2_512_256_2, NULL), + TEST2_512_256_MDC); + + return OK; +} + +static int strparam(void) +{ + static const struct { + const char *charset, *lang; + const char *value; + const char *expect; + } ts[] = { + { "UTF-8", NULL, "foobar", NULL }, + { "UTF-8", NULL, "foo@bar", "UTF-8''foo%40bar" }, + { "UTF-8", NULL, "foo bar", "UTF-8''foo%20bar" }, + { "iso-8859-1", "en", "\xA3 rates", "iso-8859-1'en'%a3%20rates" }, + { "UTF-8", NULL, "£ and € rates", "UTF-8''%c2%a3%20and%20%e2%82%ac%20rates" }, + { NULL } + }; + unsigned n; + + for (n = 0; ts[n].charset; n++) { + char *act = ne_strparam(ts[n].charset, ts[n].lang, (const unsigned char *)ts[n].value); + + if (ts[n].expect == NULL) { + ONV(act != NULL, ("expected NULL output for '%s'", ts[n].value)); + } + else { + ONCMP(act, ts[n].expect); + ne_free(act); + } + } + + return OK; +} + ne_test tests[] = { T(simple), T(buf_concat), @@ -678,6 +809,11 @@ T(casencmp), T(buf_print), T(qappend), + T(strhash), + T(strhash_sha_256), + T(strhash_sha_512), + T(strhash_sha_512_256), + T(strparam), T(NULL) }; | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/stubs.c ^ |
@@ -123,6 +123,7 @@ ne_ssl_cert_issuer(cert))); ONN("this code shouldn't run", ne_ssl_cert_identity(issuer) != NULL); ONN("this code shouldn't run", ne_ssl_cert_export(cert) != NULL); + ONN("this code shouldn't run", ne_ssl_cert_hdigest(cert, NE_HASH_MD5) != NULL); } ONN("this code shouldn't run", ne_ssl_cert_import("foo") != NULL); | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/utils.c ^ |
@@ -34,7 +34,7 @@ #include "tests.h" #include "utils.h" -static int serve_response(ne_socket *s, const char *response) +int serve_response(ne_socket *s, const char *response) { CALL(discard_request(s)); CALL(discard_body(s)); @@ -104,9 +104,18 @@ ne_request *req = ne_request_create(sess, "GET", uri); int ret = ne_request_dispatch(req); int klass = ne_get_status(req)->klass; + const char *context = ne_get_response_header(req, "X-Neon-Context"); + if (ret != NE_OK || klass != 2) { + if (context) + t_context("request failed, server error: %s", context); + else + t_context("request failed: %s", ne_get_error(sess)); + ret = FAIL; + } + else { + ret = OK; + } ne_request_destroy(req); - ONV(ret != NE_OK || klass != 2, - ("request failed: %s", ne_get_error(sess))); return ret; } @@ -221,11 +230,20 @@ const char *host, unsigned int fakeport, server_fn fn, void *userdata) { + return fakeproxied_multi_session_server(1, sess, scheme, host, fakeport, + fn, userdata); +} + +int fakeproxied_multi_session_server(int count, + ne_session **sess, const char *scheme, + const char *host, unsigned int fakeport, + server_fn fn, void *userdata) +{ unsigned int port; ne_inet_addr *addr; const ne_inet_addr *alist[1]; - CALL(new_spawn_server2(1, fn, userdata, &addr, &port)); + CALL(new_spawn_server2(count, fn, userdata, &addr, &port)); alist[0] = addr; | ||
[-] [+] | Changed | neon-0.32.1.tar.gz/test/utils.h ^ |
@@ -29,6 +29,8 @@ int single_serve_string(ne_socket *s, void *userdata); +int serve_response(ne_socket *s, const char *response); + struct many_serve_args { int count; const char *str; @@ -138,6 +140,13 @@ const char *host, unsigned int fakeport, server_fn fn, void *userdata); +/* As per fakeproxied_session_server, but also takes an iteration + * count. */ +int fakeproxied_multi_session_server(int count, + ne_session **sess, const char *scheme, + const char *host, unsigned int fakeport, + server_fn fn, void *userdata); + /* Read contents of file 'filename' into buffer 'buf'. */ int file_to_buffer(const char *filename, ne_buffer *buf); |