# PaCkAgE DaTaStReAm neon 1 4506 # end of header 0707010005ff92000081a40000000000000000000000014cbd2ddd0000010d000000b500010002ffffffffffffffff0000000d00000000neon/pkginfoPKG=neon NAME=neon 0.29.4 i86pc Solaris 10 VERSION=0.29.4 PSTAMP=11th October 2010 VENDOR=The WebDAV Project EMAIL=http://www.webdav.org/neon DESC=neon HTTP and WebDAV client library ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 0707010005ff91000081a40000000000000000000000014cbd2dde0000454a000000b500010002ffffffffffffffff0000000c00000000neon/pkgmap: 1 4506 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/neon-config 0755 root root 2050 27326 1287466446 1 d none /usr/local/include 0755 root root 1 d none /usr/local/include/neon 0755 root root 1 f none /usr/local/include/neon/ne_207.h 0644 root root 4418 36713 1287466445 1 f none /usr/local/include/neon/ne_acl.h 0644 root root 1455 52952 1287466445 1 f none /usr/local/include/neon/ne_acl3744.h 0644 root root 2735 19094 1287466445 1 f none /usr/local/include/neon/ne_alloc.h 0644 root root 1880 28884 1287466445 1 f none /usr/local/include/neon/ne_auth.h 0644 root root 5617 25875 1287466445 1 f none /usr/local/include/neon/ne_basic.h 0644 root root 6148 45315 1287466445 1 f none /usr/local/include/neon/ne_compress.h 0644 root root 1746 18274 1287466445 1 f none /usr/local/include/neon/ne_dates.h 0644 root root 1646 4791 1287466445 1 f none /usr/local/include/neon/ne_defs.h 0644 root root 1944 29898 1287466445 1 f none /usr/local/include/neon/ne_i18n.h 0644 root root 2008 39818 1287466445 1 f none /usr/local/include/neon/ne_locks.h 0644 root root 6325 20559 1287466445 1 f none /usr/local/include/neon/ne_md5.h 0644 root root 3920 4880 1287466445 1 f none /usr/local/include/neon/ne_pkcs11.h 0644 root root 4812 54700 1287466445 1 f none /usr/local/include/neon/ne_props.h 0644 root root 10005 20040 1287466445 1 f none /usr/local/include/neon/ne_redirect.h 0644 root root 1515 62708 1287466445 1 f none /usr/local/include/neon/ne_request.h 0644 root root 14411 53392 1287466445 1 f none /usr/local/include/neon/ne_session.h 0644 root root 14933 25826 1287466445 1 f none /usr/local/include/neon/ne_socket.h 0644 root root 12132 54375 1287466445 1 f none /usr/local/include/neon/ne_ssl.h 0644 root root 8175 54546 1287466445 1 f none /usr/local/include/neon/ne_string.h 0644 root root 7484 41940 1287466445 1 f none /usr/local/include/neon/ne_uri.h 0644 root root 3905 4249 1287466445 1 f none /usr/local/include/neon/ne_utils.h 0644 root root 4102 8013 1287466445 1 f none /usr/local/include/neon/ne_xml.h 0644 root root 6806 49304 1287466445 1 f none /usr/local/include/neon/ne_xmlreq.h 0644 root root 1973 36605 1287466445 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libneon.a 0644 root root 626908 60308 1287466445 1 f none /usr/local/lib/libneon.la 0755 root root 1132 34195 1287466445 1 s none /usr/local/lib/libneon.so=libneon.so.27.2.4 1 s none /usr/local/lib/libneon.so.27=libneon.so.27.2.4 1 f none /usr/local/lib/libneon.so.27.2.4 0755 root root 547704 48506 1287466445 1 d none /usr/local/lib/pkgconfig 0755 root root 1 f none /usr/local/lib/pkgconfig/neon.pc 0644 root root 487 42795 1287466446 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/doc 0755 root root 1 d none /usr/local/share/doc/neon-0.29.4 0755 root root 1 d none /usr/local/share/doc/neon-0.29.4/html 0755 root root 1 f none /usr/local/share/doc/neon-0.29.4/html/api.html 0644 root root 2553 26430 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/biblio.html 0644 root root 5015 45393 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/compliance.html 0644 root root 5427 13907 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/features.html 0644 root root 4698 31608 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/index.html 0644 root root 10881 175 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/intro.html 0644 root root 3547 49000 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/ref.html 0644 root root 7416 27825 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refalloc.html 0644 root root 4989 50967 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refauth.html 0644 root root 6019 12157 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbuf.html 0644 root root 3586 56699 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufapp.html 0644 root root 5135 62023 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufcr.html 0644 root root 3371 35735 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufdest.html 0644 root root 4096 34899 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufutil.html 0644 root root 3956 24820 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refcert.html 0644 root root 5991 9324 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refclicert.html 0644 root root 8023 57774 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refconfig.html 0644 root root 5207 62800 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/referr.html 0644 root root 4408 62321 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/reffeat.html 0644 root root 4134 34780 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refgetst.html 0644 root root 3461 44246 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refi18n.html 0644 root root 3886 13776 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refiaddr.html 0644 root root 6422 37591 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refneon.html 0644 root root 12772 5486 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refopts.html 0644 root root 6394 46597 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refreq.html 0644 root root 8741 63651 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqbody.html 0644 root root 4429 414 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqflags.html 0644 root root 4464 64747 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqhdr.html 0644 root root 3847 14833 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refresolve.html 0644 root root 7513 4422 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refresphdr.html 0644 root root 5318 11601 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsess.html 0644 root root 7286 65049 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsessflags.html 0644 root root 5264 321 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refshave.html 0644 root root 2935 61018 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsockinit.html 0644 root root 6809 7650 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslca.html 0644 root root 4034 31943 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslcert2.html 0644 root root 3120 14676 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslcertio.html 0644 root root 5660 44263 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refssldname.html 0644 root root 3923 19162 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslvfy.html 0644 root root 7289 54873 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refstatus.html 0644 root root 4183 39449 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/reftok.html 0644 root root 4074 32902 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refvers.html 0644 root root 3426 38873 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refxml.html 0644 root root 3090 8982 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/security.html 0644 root root 7105 39440 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/using.html 0644 root root 4878 32156 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/xml.html 0644 root root 11371 14842 1287466446 1 d none /usr/local/share/locale 0755 root root 1 d none /usr/local/share/locale/cs 0755 root root 1 d none /usr/local/share/locale/cs/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/cs/LC_MESSAGES/neon.mo 0644 root root 1566 54425 1287466446 1 d none /usr/local/share/locale/de 0755 root root 1 d none /usr/local/share/locale/de/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/de/LC_MESSAGES/neon.mo 0644 root root 1712 61730 1287466446 1 d none /usr/local/share/locale/fr 0755 root root 1 d none /usr/local/share/locale/fr/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/fr/LC_MESSAGES/neon.mo 0644 root root 387 27923 1287466446 1 d none /usr/local/share/locale/ja 0755 root root 1 d none /usr/local/share/locale/ja/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/ja/LC_MESSAGES/neon.mo 0644 root root 877 10954 1287466446 1 d none /usr/local/share/locale/nn 0755 root root 1 d none /usr/local/share/locale/nn/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/nn/LC_MESSAGES/neon.mo 0644 root root 1626 54775 1287466446 1 d none /usr/local/share/locale/pl 0755 root root 1 d none /usr/local/share/locale/pl/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/pl/LC_MESSAGES/neon.mo 0644 root root 13423 44568 1287466446 1 d none /usr/local/share/locale/ru 0755 root root 1 d none /usr/local/share/locale/ru/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/ru/LC_MESSAGES/neon.mo 0644 root root 383 27737 1287466446 1 d none /usr/local/share/locale/tr 0755 root root 1 d none /usr/local/share/locale/tr/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/tr/LC_MESSAGES/neon.mo 0644 root root 1523 50329 1287466446 1 d none /usr/local/share/locale/zh_CN 0755 root root 1 d none /usr/local/share/locale/zh_CN/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/zh_CN/LC_MESSAGES/neon.mo 0644 root root 8552 58746 1287466446 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/neon-config.1 0644 root root 3049 47366 1287466446 1 d none /usr/local/share/man/man3 0755 root root 1 f none /usr/local/share/man/man3/ne_add_request_header.3 0644 root root 1833 10031 1287466446 1 f none /usr/local/share/man/man3/ne_addr_destroy.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_addr_error.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_addr_first.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_addr_next.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_addr_resolve.3 0644 root root 4048 4412 1287466446 1 f none /usr/local/share/man/man3/ne_addr_result.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_buffer.3 0644 root root 1914 19451 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_altered.3 0644 root root 27 2379 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_append.3 0644 root root 2583 7817 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_clear.3 0644 root root 1876 14348 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_concat.3 0644 root root 28 2492 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_create.3 0644 root root 1600 54678 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_destroy.3 0644 root root 2083 30703 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_finish.3 0644 root root 29 2638 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_grow.3 0644 root root 27 2379 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_ncreate.3 0644 root root 28 2488 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_zappend.3 0644 root root 28 2492 1287466446 1 f none /usr/local/share/man/man3/ne_calloc.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_close_connection.3 0644 root root 29 2626 1287466446 1 f none /usr/local/share/man/man3/ne_forget_auth.3 0644 root root 30 2750 1287466446 1 f none /usr/local/share/man/man3/ne_get_error.3 0644 root root 2504 2401 1287466446 1 f none /usr/local/share/man/man3/ne_get_request_flag.3 0644 root root 31 2840 1287466446 1 f none /usr/local/share/man/man3/ne_get_response_header.3 0644 root root 2983 46320 1287466446 1 f none /usr/local/share/man/man3/ne_get_scheme.3 0644 root root 28 2532 1287466446 1 f none /usr/local/share/man/man3/ne_get_server_hostport.3 0644 root root 28 2532 1287466446 1 f none /usr/local/share/man/man3/ne_get_session_flag.3 0644 root root 31 2835 1287466446 1 f none /usr/local/share/man/man3/ne_get_status.3 0644 root root 1921 17844 1287466446 1 f none /usr/local/share/man/man3/ne_has_support.3 0644 root root 1909 14106 1287466446 1 f none /usr/local/share/man/man3/ne_i18n_init.3 0644 root root 2351 53915 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_cmp.3 0644 root root 25 2156 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_free.3 0644 root root 25 2156 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_make.3 0644 root root 3410 11349 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_print.3 0644 root root 25 2156 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_typeof.3 0644 root root 25 2156 1287466446 1 f none /usr/local/share/man/man3/ne_malloc.3 0644 root root 2235 43781 1287466446 1 f none /usr/local/share/man/man3/ne_oom_callback.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_print_request_header.3 0644 root root 33 3012 1287466446 1 f none /usr/local/share/man/man3/ne_qtoken.3 0644 root root 20 1676 1287466446 1 f none /usr/local/share/man/man3/ne_realloc.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_request_create.3 0644 root root 4851 19100 1287466446 1 f none /usr/local/share/man/man3/ne_request_destroy.3 0644 root root 29 2631 1287466446 1 f none /usr/local/share/man/man3/ne_request_dispatch.3 0644 root root 29 2631 1287466446 1 f none /usr/local/share/man/man3/ne_response_header_iterate.3 0644 root root 34 3137 1287466446 1 f none /usr/local/share/man/man3/ne_session_create.3 0644 root root 3943 3703 1287466446 1 f none /usr/local/share/man/man3/ne_session_destroy.3 0644 root root 29 2626 1287466446 1 f none /usr/local/share/man/man3/ne_session_proxy.3 0644 root root 29 2626 1287466446 1 f none /usr/local/share/man/man3/ne_set_connect_timeout.3 0644 root root 28 2532 1287466446 1 f none /usr/local/share/man/man3/ne_set_error.3 0644 root root 24 2100 1287466446 1 f none /usr/local/share/man/man3/ne_set_proxy_auth.3 0644 root root 30 2750 1287466446 1 f none /usr/local/share/man/man3/ne_set_read_timeout.3 0644 root root 28 2532 1287466446 1 f none /usr/local/share/man/man3/ne_set_request_body_buffer.3 0644 root root 2302 53550 1287466446 1 f none /usr/local/share/man/man3/ne_set_request_body_fd.3 0644 root root 38 3589 1287466446 1 f none /usr/local/share/man/man3/ne_set_request_body_fd64.3 0644 root root 38 3589 1287466446 1 f none /usr/local/share/man/man3/ne_set_request_flag.3 0644 root root 2240 45461 1287466446 1 f none /usr/local/share/man/man3/ne_set_server_auth.3 0644 root root 3416 14728 1287466446 1 f none /usr/local/share/man/man3/ne_set_session_flag.3 0644 root root 2628 10588 1287466446 1 f none /usr/local/share/man/man3/ne_set_useragent.3 0644 root root 3464 23866 1287466446 1 f none /usr/local/share/man/man3/ne_shave.3 0644 root root 1472 40664 1287466446 1 f none /usr/local/share/man/man3/ne_sock_exit.3 0644 root root 24 2094 1287466446 1 f none /usr/local/share/man/man3/ne_sock_init.3 0644 root root 4202 27286 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_cmp.3 0644 root root 1546 51066 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_export.3 0644 root root 28 2501 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_free.3 0644 root root 27 2409 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_identity.3 0644 root root 3333 14673 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_import.3 0644 root root 28 2501 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_issuer.3 0644 root root 32 2963 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_read.3 0644 root root 2998 52231 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_signedby.3 0644 root root 32 2963 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_subject.3 0644 root root 32 2963 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_write.3 0644 root root 28 2501 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_decrypt.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_encrypted.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_free.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_name.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_owner.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_read.3 0644 root root 4660 4117 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_dname_cmp.3 0644 root root 33 2992 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_readable_dname.3 0644 root root 1872 13146 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_set_verify.3 0644 root root 4499 42551 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_trust_cert.3 0644 root root 2164 39497 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_trust_default_ca.3 0644 root root 29 2667 1287466446 1 f none /usr/local/share/man/man3/ne_status.3 0644 root root 2073 28593 1287466446 1 f none /usr/local/share/man/man3/ne_strdup.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_strndup.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_token.3 0644 root root 2190 39337 1287466446 1 f none /usr/local/share/man/man3/ne_version_match.3 0644 root root 1821 7016 1287466446 1 f none /usr/local/share/man/man3/ne_version_string.3 0644 root root 28 2525 1287466446 1 f none /usr/local/share/man/man3/ne_xml_create.3 0644 root root 1446 40548 1287466446 1 f none /usr/local/share/man/man3/ne_xml_destroy.3 0644 root root 25 2191 1287466446 1 f none /usr/local/share/man/man3/neon.3 0644 root root 8421 7896 1287466446 1 i checkinstall 790 2504 1287466459 1 i pkginfo 269 20401 1287466461 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!0707010005ff92000081a40000000000000000000000014cbd2ddd0000010d000000b500010002ffffffffffffffff0000000800000000pkginfoPKG=neon NAME=neon 0.29.4 i86pc Solaris 10 VERSION=0.29.4 PSTAMP=11th October 2010 VENDOR=The WebDAV Project EMAIL=http://www.webdav.org/neon DESC=neon HTTP and WebDAV client library ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 0707010005ff91000081a40000000000000000000000014cbd2dde0000454a000000b500010002ffffffffffffffff0000000700000000pkgmap: 1 4506 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/neon-config 0755 root root 2050 27326 1287466446 1 d none /usr/local/include 0755 root root 1 d none /usr/local/include/neon 0755 root root 1 f none /usr/local/include/neon/ne_207.h 0644 root root 4418 36713 1287466445 1 f none /usr/local/include/neon/ne_acl.h 0644 root root 1455 52952 1287466445 1 f none /usr/local/include/neon/ne_acl3744.h 0644 root root 2735 19094 1287466445 1 f none /usr/local/include/neon/ne_alloc.h 0644 root root 1880 28884 1287466445 1 f none /usr/local/include/neon/ne_auth.h 0644 root root 5617 25875 1287466445 1 f none /usr/local/include/neon/ne_basic.h 0644 root root 6148 45315 1287466445 1 f none /usr/local/include/neon/ne_compress.h 0644 root root 1746 18274 1287466445 1 f none /usr/local/include/neon/ne_dates.h 0644 root root 1646 4791 1287466445 1 f none /usr/local/include/neon/ne_defs.h 0644 root root 1944 29898 1287466445 1 f none /usr/local/include/neon/ne_i18n.h 0644 root root 2008 39818 1287466445 1 f none /usr/local/include/neon/ne_locks.h 0644 root root 6325 20559 1287466445 1 f none /usr/local/include/neon/ne_md5.h 0644 root root 3920 4880 1287466445 1 f none /usr/local/include/neon/ne_pkcs11.h 0644 root root 4812 54700 1287466445 1 f none /usr/local/include/neon/ne_props.h 0644 root root 10005 20040 1287466445 1 f none /usr/local/include/neon/ne_redirect.h 0644 root root 1515 62708 1287466445 1 f none /usr/local/include/neon/ne_request.h 0644 root root 14411 53392 1287466445 1 f none /usr/local/include/neon/ne_session.h 0644 root root 14933 25826 1287466445 1 f none /usr/local/include/neon/ne_socket.h 0644 root root 12132 54375 1287466445 1 f none /usr/local/include/neon/ne_ssl.h 0644 root root 8175 54546 1287466445 1 f none /usr/local/include/neon/ne_string.h 0644 root root 7484 41940 1287466445 1 f none /usr/local/include/neon/ne_uri.h 0644 root root 3905 4249 1287466445 1 f none /usr/local/include/neon/ne_utils.h 0644 root root 4102 8013 1287466445 1 f none /usr/local/include/neon/ne_xml.h 0644 root root 6806 49304 1287466445 1 f none /usr/local/include/neon/ne_xmlreq.h 0644 root root 1973 36605 1287466445 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libneon.a 0644 root root 626908 60308 1287466445 1 f none /usr/local/lib/libneon.la 0755 root root 1132 34195 1287466445 1 s none /usr/local/lib/libneon.so=libneon.so.27.2.4 1 s none /usr/local/lib/libneon.so.27=libneon.so.27.2.4 1 f none /usr/local/lib/libneon.so.27.2.4 0755 root root 547704 48506 1287466445 1 d none /usr/local/lib/pkgconfig 0755 root root 1 f none /usr/local/lib/pkgconfig/neon.pc 0644 root root 487 42795 1287466446 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/doc 0755 root root 1 d none /usr/local/share/doc/neon-0.29.4 0755 root root 1 d none /usr/local/share/doc/neon-0.29.4/html 0755 root root 1 f none /usr/local/share/doc/neon-0.29.4/html/api.html 0644 root root 2553 26430 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/biblio.html 0644 root root 5015 45393 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/compliance.html 0644 root root 5427 13907 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/features.html 0644 root root 4698 31608 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/index.html 0644 root root 10881 175 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/intro.html 0644 root root 3547 49000 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/ref.html 0644 root root 7416 27825 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refalloc.html 0644 root root 4989 50967 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refauth.html 0644 root root 6019 12157 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbuf.html 0644 root root 3586 56699 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufapp.html 0644 root root 5135 62023 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufcr.html 0644 root root 3371 35735 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufdest.html 0644 root root 4096 34899 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufutil.html 0644 root root 3956 24820 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refcert.html 0644 root root 5991 9324 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refclicert.html 0644 root root 8023 57774 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refconfig.html 0644 root root 5207 62800 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/referr.html 0644 root root 4408 62321 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/reffeat.html 0644 root root 4134 34780 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refgetst.html 0644 root root 3461 44246 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refi18n.html 0644 root root 3886 13776 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refiaddr.html 0644 root root 6422 37591 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refneon.html 0644 root root 12772 5486 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refopts.html 0644 root root 6394 46597 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refreq.html 0644 root root 8741 63651 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqbody.html 0644 root root 4429 414 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqflags.html 0644 root root 4464 64747 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqhdr.html 0644 root root 3847 14833 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refresolve.html 0644 root root 7513 4422 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refresphdr.html 0644 root root 5318 11601 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsess.html 0644 root root 7286 65049 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsessflags.html 0644 root root 5264 321 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refshave.html 0644 root root 2935 61018 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsockinit.html 0644 root root 6809 7650 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslca.html 0644 root root 4034 31943 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslcert2.html 0644 root root 3120 14676 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslcertio.html 0644 root root 5660 44263 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refssldname.html 0644 root root 3923 19162 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslvfy.html 0644 root root 7289 54873 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refstatus.html 0644 root root 4183 39449 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/reftok.html 0644 root root 4074 32902 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refvers.html 0644 root root 3426 38873 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/refxml.html 0644 root root 3090 8982 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/security.html 0644 root root 7105 39440 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/using.html 0644 root root 4878 32156 1287466446 1 f none /usr/local/share/doc/neon-0.29.4/html/xml.html 0644 root root 11371 14842 1287466446 1 d none /usr/local/share/locale 0755 root root 1 d none /usr/local/share/locale/cs 0755 root root 1 d none /usr/local/share/locale/cs/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/cs/LC_MESSAGES/neon.mo 0644 root root 1566 54425 1287466446 1 d none /usr/local/share/locale/de 0755 root root 1 d none /usr/local/share/locale/de/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/de/LC_MESSAGES/neon.mo 0644 root root 1712 61730 1287466446 1 d none /usr/local/share/locale/fr 0755 root root 1 d none /usr/local/share/locale/fr/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/fr/LC_MESSAGES/neon.mo 0644 root root 387 27923 1287466446 1 d none /usr/local/share/locale/ja 0755 root root 1 d none /usr/local/share/locale/ja/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/ja/LC_MESSAGES/neon.mo 0644 root root 877 10954 1287466446 1 d none /usr/local/share/locale/nn 0755 root root 1 d none /usr/local/share/locale/nn/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/nn/LC_MESSAGES/neon.mo 0644 root root 1626 54775 1287466446 1 d none /usr/local/share/locale/pl 0755 root root 1 d none /usr/local/share/locale/pl/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/pl/LC_MESSAGES/neon.mo 0644 root root 13423 44568 1287466446 1 d none /usr/local/share/locale/ru 0755 root root 1 d none /usr/local/share/locale/ru/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/ru/LC_MESSAGES/neon.mo 0644 root root 383 27737 1287466446 1 d none /usr/local/share/locale/tr 0755 root root 1 d none /usr/local/share/locale/tr/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/tr/LC_MESSAGES/neon.mo 0644 root root 1523 50329 1287466446 1 d none /usr/local/share/locale/zh_CN 0755 root root 1 d none /usr/local/share/locale/zh_CN/LC_MESSAGES 0755 root root 1 f none /usr/local/share/locale/zh_CN/LC_MESSAGES/neon.mo 0644 root root 8552 58746 1287466446 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/neon-config.1 0644 root root 3049 47366 1287466446 1 d none /usr/local/share/man/man3 0755 root root 1 f none /usr/local/share/man/man3/ne_add_request_header.3 0644 root root 1833 10031 1287466446 1 f none /usr/local/share/man/man3/ne_addr_destroy.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_addr_error.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_addr_first.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_addr_next.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_addr_resolve.3 0644 root root 4048 4412 1287466446 1 f none /usr/local/share/man/man3/ne_addr_result.3 0644 root root 27 2405 1287466446 1 f none /usr/local/share/man/man3/ne_buffer.3 0644 root root 1914 19451 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_altered.3 0644 root root 27 2379 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_append.3 0644 root root 2583 7817 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_clear.3 0644 root root 1876 14348 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_concat.3 0644 root root 28 2492 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_create.3 0644 root root 1600 54678 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_destroy.3 0644 root root 2083 30703 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_finish.3 0644 root root 29 2638 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_grow.3 0644 root root 27 2379 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_ncreate.3 0644 root root 28 2488 1287466446 1 f none /usr/local/share/man/man3/ne_buffer_zappend.3 0644 root root 28 2492 1287466446 1 f none /usr/local/share/man/man3/ne_calloc.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_close_connection.3 0644 root root 29 2626 1287466446 1 f none /usr/local/share/man/man3/ne_forget_auth.3 0644 root root 30 2750 1287466446 1 f none /usr/local/share/man/man3/ne_get_error.3 0644 root root 2504 2401 1287466446 1 f none /usr/local/share/man/man3/ne_get_request_flag.3 0644 root root 31 2840 1287466446 1 f none /usr/local/share/man/man3/ne_get_response_header.3 0644 root root 2983 46320 1287466446 1 f none /usr/local/share/man/man3/ne_get_scheme.3 0644 root root 28 2532 1287466446 1 f none /usr/local/share/man/man3/ne_get_server_hostport.3 0644 root root 28 2532 1287466446 1 f none /usr/local/share/man/man3/ne_get_session_flag.3 0644 root root 31 2835 1287466446 1 f none /usr/local/share/man/man3/ne_get_status.3 0644 root root 1921 17844 1287466446 1 f none /usr/local/share/man/man3/ne_has_support.3 0644 root root 1909 14106 1287466446 1 f none /usr/local/share/man/man3/ne_i18n_init.3 0644 root root 2351 53915 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_cmp.3 0644 root root 25 2156 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_free.3 0644 root root 25 2156 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_make.3 0644 root root 3410 11349 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_print.3 0644 root root 25 2156 1287466446 1 f none /usr/local/share/man/man3/ne_iaddr_typeof.3 0644 root root 25 2156 1287466446 1 f none /usr/local/share/man/man3/ne_malloc.3 0644 root root 2235 43781 1287466446 1 f none /usr/local/share/man/man3/ne_oom_callback.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_print_request_header.3 0644 root root 33 3012 1287466446 1 f none /usr/local/share/man/man3/ne_qtoken.3 0644 root root 20 1676 1287466446 1 f none /usr/local/share/man/man3/ne_realloc.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_request_create.3 0644 root root 4851 19100 1287466446 1 f none /usr/local/share/man/man3/ne_request_destroy.3 0644 root root 29 2631 1287466446 1 f none /usr/local/share/man/man3/ne_request_dispatch.3 0644 root root 29 2631 1287466446 1 f none /usr/local/share/man/man3/ne_response_header_iterate.3 0644 root root 34 3137 1287466446 1 f none /usr/local/share/man/man3/ne_session_create.3 0644 root root 3943 3703 1287466446 1 f none /usr/local/share/man/man3/ne_session_destroy.3 0644 root root 29 2626 1287466446 1 f none /usr/local/share/man/man3/ne_session_proxy.3 0644 root root 29 2626 1287466446 1 f none /usr/local/share/man/man3/ne_set_connect_timeout.3 0644 root root 28 2532 1287466446 1 f none /usr/local/share/man/man3/ne_set_error.3 0644 root root 24 2100 1287466446 1 f none /usr/local/share/man/man3/ne_set_proxy_auth.3 0644 root root 30 2750 1287466446 1 f none /usr/local/share/man/man3/ne_set_read_timeout.3 0644 root root 28 2532 1287466446 1 f none /usr/local/share/man/man3/ne_set_request_body_buffer.3 0644 root root 2302 53550 1287466446 1 f none /usr/local/share/man/man3/ne_set_request_body_fd.3 0644 root root 38 3589 1287466446 1 f none /usr/local/share/man/man3/ne_set_request_body_fd64.3 0644 root root 38 3589 1287466446 1 f none /usr/local/share/man/man3/ne_set_request_flag.3 0644 root root 2240 45461 1287466446 1 f none /usr/local/share/man/man3/ne_set_server_auth.3 0644 root root 3416 14728 1287466446 1 f none /usr/local/share/man/man3/ne_set_session_flag.3 0644 root root 2628 10588 1287466446 1 f none /usr/local/share/man/man3/ne_set_useragent.3 0644 root root 3464 23866 1287466446 1 f none /usr/local/share/man/man3/ne_shave.3 0644 root root 1472 40664 1287466446 1 f none /usr/local/share/man/man3/ne_sock_exit.3 0644 root root 24 2094 1287466446 1 f none /usr/local/share/man/man3/ne_sock_init.3 0644 root root 4202 27286 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_cmp.3 0644 root root 1546 51066 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_export.3 0644 root root 28 2501 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_free.3 0644 root root 27 2409 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_identity.3 0644 root root 3333 14673 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_import.3 0644 root root 28 2501 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_issuer.3 0644 root root 32 2963 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_read.3 0644 root root 2998 52231 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_signedby.3 0644 root root 32 2963 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_subject.3 0644 root root 32 2963 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_cert_write.3 0644 root root 28 2501 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_decrypt.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_encrypted.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_free.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_name.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_owner.3 0644 root root 31 2813 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_clicert_read.3 0644 root root 4660 4117 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_dname_cmp.3 0644 root root 33 2992 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_readable_dname.3 0644 root root 1872 13146 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_set_verify.3 0644 root root 4499 42551 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_trust_cert.3 0644 root root 2164 39497 1287466446 1 f none /usr/local/share/man/man3/ne_ssl_trust_default_ca.3 0644 root root 29 2667 1287466446 1 f none /usr/local/share/man/man3/ne_status.3 0644 root root 2073 28593 1287466446 1 f none /usr/local/share/man/man3/ne_strdup.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_strndup.3 0644 root root 21 1763 1287466446 1 f none /usr/local/share/man/man3/ne_token.3 0644 root root 2190 39337 1287466446 1 f none /usr/local/share/man/man3/ne_version_match.3 0644 root root 1821 7016 1287466446 1 f none /usr/local/share/man/man3/ne_version_string.3 0644 root root 28 2525 1287466446 1 f none /usr/local/share/man/man3/ne_xml_create.3 0644 root root 1446 40548 1287466446 1 f none /usr/local/share/man/man3/ne_xml_destroy.3 0644 root root 25 2191 1287466446 1 f none /usr/local/share/man/man3/neon.3 0644 root root 8421 7896 1287466446 1 i checkinstall 790 2504 1287466459 1 i pkginfo 269 20401 1287466461 0707010005f065000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000000800000000install0707010005f066000081ed0000000000000000000000014cbd2ddb00000316000000b500010002ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.10" expected_platform="i386" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi #if [ ${bits} != ${expected_bits} ]; then # echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" # echo "\tYour machine is running a ${bits} bit O.S. currently\n" # echo "\tAborting installation.\n\n\n" # exit 1 #fi exit 0 0707010005ff93000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000000500000000root0707010005ff94000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000000900000000root/usr0707010005ff95000041ed0000000000000000000000064cbd2dde00000000000000b500010002ffffffffffffffff0000000f00000000root/usr/local0707010005ffb8000041ed0000000000000000000000054cbd2dde00000000000000b500010002ffffffffffffffff0000001500000000root/usr/local/share0707010005ffb9000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001900000000root/usr/local/share/doc0707010005ffba000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000002500000000root/usr/local/share/doc/neon-0.29.40707010005ffbb000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/doc/neon-0.29.4/html0707010005ffc9000081a40000000000000000000000014cbd2dce00000f74000000b500010002ffffffffffffffff0000003a00000000root/usr/local/share/doc/neon-0.29.4/html/refbufutil.htmlne_buffer_clear

Name

ne_buffer_clear, ne_buffer_grow, ne_buffer_altered — clear, grow, or mark as altered a string buffer

Synopsis

#include <ne_string.h>
void ne_buffer_clear(ne_buffer *buf);
 
void ne_buffer_altered(ne_buffer *buf);
 
void ne_buffer_grow(ne_buffer *buf,
 size_t size);
 

Description

The ne_buffer_clear function sets the string stored in buf to be the empty string ("").

The ne_buffer_altered function must be used after the string stored in the buffer buf is modified by directly rather than using ne_buffer_append, ne_buffer_zappend or ne_buffer_concat.

The ne_buffer_grow function ensures that at least size bytes are allocated for the string; this can be used if a large amount of data is going to be appended to the buffer and may result in more efficient memory allocation.

0707010005ffc2000081a40000000000000000000000014cbd2dce00001cf8000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/doc/neon-0.29.4/html/ref.htmlneon API reference

neon API reference


Table of Contents

neon — HTTP and WebDAV client library
neon-config — script providing information about installed copy of neon library
ne_addr_resolve — functions to resolve hostnames to addresses
ne_buffer — string buffer handling
ne_buffer_append — append data to a string buffer
ne_buffer_clear — clear, grow, or mark as altered a string buffer
ne_buffer_create — create a string buffer
ne_buffer_destroy — destroy a buffer object
ne_get_error — error handling for HTTP sessions
ne_get_status — retrieve HTTP response status for request
ne_has_support — determine feature support status
ne_i18n_init — functions to initialize internationalization support
ne_iaddr_make — functions to manipulate and compare network addresses
ne_malloc — memory allocation wrappers
ne_session_create — set up HTTP sessions
ne_set_session_flag — set and retrieve session flags
ne_request_create — low-level HTTP request handling
ne_add_request_header — add headers to a request
ne_get_response_header — functions to access response headers
ne_set_useragent — common properties for HTTP sessions
ne_set_request_flag — set and retrieve per-request flags
ne_set_request_body_buffer — include a message body with a request
ne_set_server_auth — register authentication callbacks
ne_shave — trim whitespace from a string
ne_sock_init — perform library initialization
ne_ssl_cert_identity — functions to access certificate properties
ne_ssl_cert_cmp — functions to operate on certificate objects
ne_ssl_cert_read — functions to read or write certificates to and from files or strings
ne_ssl_dname — SSL distinguished name handling
ne_ssl_trust_cert — functions to indicate that certificates are trusted
ne_ssl_set_verify — register an SSL certificate verification callback
ne_ssl_client_cert — SSL client certificate handling
ne_status — HTTP status structure
ne_token — string tokenizers
ne_version_match — library versioning
ne_xml_create — create and destroy an XML parser
0707010005ffd2000081a40000000000000000000000014cbd2dce000031e4000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/doc/neon-0.29.4/html/refneon.htmlneon

Name

neon — HTTP and WebDAV client library

Description

neon is an HTTP and WebDAV client library. The major abstractions exposed are the HTTP session, created by ne_session_create; and the HTTP request, created by ne_request_create. HTTP authentication is handled transparently for server and proxy servers, see ne_set_server_auth; complete SSL/TLS support is also included, see ne_ssl_set_verify.

Conventions

Some conventions are used throughout the neon API, to provide a consistent and simple interface; these are documented below.

Thread-safeness and global initialization

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 getaddrinfo interface, which neon supports; some others implement gethostbyname using thread-local storage.

To allow thread-safe use of SSL in the OpenSSL and GnuTLS libraries neon must be configured using the --enable-threadsafe-ssl; if this is done, locking callbacks will be registered by ne_sock_init; note that care must be exercised if neon is used in conjunction with another library which uses OpenSSL or GnuTLS.

Some platforms and libraries used by neon require global initialization before use; notably:

  • The SIGPIPE signal disposition must be set to ignored or otherwise handled to avoid process termination when writing to a socket which has been shutdown by the peer.
  • OpenSSL and GnuTLS require global initialization to load shared lookup tables.
  • The Win32 socket library requires initialization before use.

The ne_sock_init function should be called before any other use of neon to perform any necessary initialization needed for the particular platform. Applications wishing to perform all the necessary process-global initialization steps themselves may omit to call ne_sock_init (and ne_sock_exit); neon neither checks whether these functions are called nor calls them itself.

For some applications and configurations it may be necessary to call ne_i18n_init to initialize the support for internationalization in neon.

Asynchronous signal safety

No function in neon is defined to be async-signal safe - 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.

Functions using global state

Any function in neon may modify the errno global variable as a side-effect. Except where explicitly documented, the value of errno is unspecified after any neon function call.

Other than in the use of errno, the only functions which use or modify process-global state in neon are as follows:

Namespaces

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 namespace prefix. An application which ensures it uses no names with these prefixes is then guaranteed to avoid such collisions.

The neon library reserves the use of the namespace prefixes ne_ and NE_. The libraries used by neon may also reserve certain namespaces; collisions between these libraries and a neon-based application will not be detected at compile time, since the underlying library interfaces are not exposed through the neon header files. Such collisions can only be detected at link time, when the linker attempts to resolve symbols. The following list documents some of the namespaces claimed by libraries used by neon; this list may be incomplete.

SSL, ssl, TLS, tls, ERR_, BIO_, d2i_, i2d_, ASN1_

Some of the many prefixes used by the OpenSSL library; little attempt has been made to keep exported symbols within any particular prefixes for this library.

gnutls_, gcry_, gpg_

Namespaces used by the GnuTLS library (and dependencies thereof)

XML_, Xml[A-Z]

Namespaces used by the expat library.

xml[A-Z], html[A-Z], docb[A-Z]

Namespaces used by the libxml2 library; a relatively small number of symbols are used without these prefixes.

inflate, deflate, crc32, compress, uncompres, adler32, zlib

Namespaces used by the zlib library; a relatively small number of symbols are used without these prefixes.

krb5, gss, GSS, asn1, decode_krb5, encode_krb5, profile, mit

Some of the prefixes used by the MIT GSSAPI library and dependencies thereof; a number of symbols lie outside these prefixes.

pakchois_

Namespace used by the pakchois library.

px_

Namespace used by the libproxy library.

Argument validation

neon does not attempt to validate that the parameters passed to functions conform to the API (for instance, checking that pointer arguments are not NULL). Any use of the neon API which is not documented to produce a certain behaviour results is said to produce undefined behaviour; it is likely that neon will segfault under these conditions.

URI paths, WebDAV metadata

The path strings passed to any function must be URI-encoded 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.

User interaction

As a pure library interface, neon will never produce output on stdout or stderr; all user interaction is the responsibilty of the application.

Memory handling

neon does not attempt to cope gracefully with an out-of-memory situation; instead, by default, the abort function is called to immediately terminate the process. An application may register a custom function which will be called before abort in such a situation; see ne_oom_callback.

Callbacks and userdata

Whenever a callback is registered, a userdata pointer is also used to allow the application to associate a context with the callback. The userdata is of type void *, allowing any pointer to be used.

Large File Support

Since version 0.27.0, neon transparently uses the "LFS transitional" interfaces in places where file-backed file descriptors are manipulated. This means files larger than 2GiB can be handled on platforms with a native 32-bit off_t type, where LFS support is available.

Some interfaces use the ne_off_t type, which is defined to be either off_t or off64_t according to whether LFS support is detected at build time. neon does not use or require the -D_FILE_OFFSET_BITS=64 macro definition.

See also

ne_session_create, ne_oom_callback

0707010005ffde000081a40000000000000000000000014cbd2dce00000fc2000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/refsslca.htmlne_ssl_trust_cert

Name

ne_ssl_trust_cert, ne_ssl_trust_default_ca — functions to indicate that certificates are trusted

Synopsis

#include <ne_session.h>
void ne_ssl_trust_cert(ne_session *session,
 const ne_ssl_certificate *cert);
 
void ne_ssl_trust_default_ca(ne_session *session);
 

Description

To indicate that a given certificate is trusted by the user, the certificate object can be passed to ne_ssl_trust_cert. The certificate object is duplicated internally and can subsequently be destroyed.

The SSL library in use by neon may include a default set of CA certificates; calling the ne_ssl_trust_default_ca function will indicate that these CAs are trusted by the user.

Examples

Load the CA certificate stored in /path/to/cacert.pem:

ne_session *sess = ne_session_create(...);
ne_ssl_certificate *cert = ne_ssl_cert_read("/path/to/cacert.pem");

if (cert) {
   ne_ssl_trust_cert(sess, cert);
   ne_ssl_cert_free(cert);
} else {
   printf("Could not load CA cert: %s\n", ne_get_error(sess));
}

See also

ne_ssl_cert_read, ne_ssl_cert_import, ne_ssl_cert_free

0707010005ffbd000081a40000000000000000000000014cbd2dce00001397000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/doc/neon-0.29.4/html/biblio.htmlBibliography

Bibliography

[SSL-and-TLS] SSL and TLS: Designing and Building Secure Systems. Eric Rescorla. 0-201-62598-3. Addison-Wesley. March 2001.

[REC-XML-names] World Wide Web Consortium. Namespaces in XML. January 1999.

[RFC2616] Hypertext Transfer Protocol—HTTP/1.1. Roy Fielding, Jim Gettys, Jeff Mogul, Henrik Frystyk, Larry Masinter, Paul Leach, and Tim Berners-Lee. IETF. June 1999.

[RFC2518] HTTP Extensions for Distributed Authoring—WEBDAV. Yaron Goland, Jim Whitehead, Asad Faizi, Steve Carter, and Del Jensen. IETF. February 1999.

[RFC3280] Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile. Russel Housley, Warwick Ford, Tim Polk, and David Solo. IETF. April 2002.

0707010005ffd3000081a40000000000000000000000014cbd2dce000018fa000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/doc/neon-0.29.4/html/refopts.htmlne_set_useragent

Name

ne_set_useragent, ne_set_read_timeout, ne_set_connect_timeout, ne_get_scheme, ne_get_server_hostport — common properties for HTTP sessions

Synopsis

#include <ne_session.h>
void ne_set_useragent(ne_session *session,
 const char *product);
 
void ne_set_read_timeout(ne_session *session,
 int timeout);
 
void ne_set_connect_timeout(ne_session *session,
 int timeout);
 
const char *ne_get_scheme(ne_sesssion *session);
 
const char *ne_get_server_hostport(ne_sesssion *session);
 

Description

The User-Agent request header is used to identify the software which generated the request for statistical or debugging purposes. neon does not send a User-Agent header unless a call is made to the ne_set_useragent. ne_set_useragent must be passed a product string conforming to RFC2616's product token grammar; of the form "Product/Version".

When neon reads from a socket, by default the read operation will time out after 60 seconds, and the request will fail giving an NE_TIMEOUT error. To configure this timeout interval, call ne_set_read_timeout giving the desired number of seconds as the timeout parameter.

When a connection is being established to a server, normally only the system's TCP timeout handling will apply. To configure a specific (and probably shorter) timeout, the ne_set_connect_timeout can be used, giving the desired number of seconds as the timeout parameter. If 0 is passed, then the default behaviour of using the system TCP timeout will be used.

The scheme used to initially create the session will be returned by ne_get_scheme.

The hostport pair with which the session is associated will be returned by the ne_get_server_hostport; for example www.example.com:8080. Note that the :port will be omitted if the default port for the scheme is used.

Examples

Set a user-agent string:

ne_session *sess = ne_session_create(...);
ne_set_useragent(sess, "MyApplication/2.1");

Set a 30 second read timeout:

ne_session *sess = ne_session_create(...);
ne_set_read_timeout(sess, 30);

See also

ne_session_create, ne_set_session_flag.

0707010005ffc8000081a40000000000000000000000014cbd2dce00001000000000b500010002ffffffffffffffff0000003a00000000root/usr/local/share/doc/neon-0.29.4/html/refbufdest.htmlne_buffer_destroy

Name

ne_buffer_destroy, ne_buffer_finish — destroy a buffer object

Synopsis

#include <ne_string.h>
void ne_buffer_destroy(ne_buffer *buf);
 
char *ne_buffer_finish(ne_buffer *buf);
 

Description

ne_buffer_destroy frees all memory associated with the buffer. ne_buffer_finish frees the buffer structure, but not the actual string stored in the buffer, which is returned and must be free()d by the caller.

Any use of the buffer object after calling either of these functions gives undefined behaviour.

Return value

ne_buffer_finish returns the malloc-allocated string stored in the buffer.

Examples

An example use of ne_buffer_finish; the duplicate function returns a string made up of n copies of str:

static char *duplicate(int n, const char *str)
{
  ne_buffer *buf = ne_buffer_create();
  while (n--) {
    ne_buffer_zappend(buf, str);
  }
  return ne_buffer_finish(buf);
}

See also

ne_buffer, ne_buffer_create, ne_buffer_zappend

0707010005ffd9000081a40000000000000000000000014cbd2dce000014c6000000b500010002ffffffffffffffff0000003a00000000root/usr/local/share/doc/neon-0.29.4/html/refresphdr.htmlne_get_response_header

Name

ne_get_response_header, ne_response_header_iterate — functions to access response headers

Synopsis

#include <ne_request.h>
const char *ne_get_response_header(ne_request *request,
 const char *name);
 
void *ne_response_header_iterate(ne_request *request,
 void *cursor,
 const char **name,
 const char **value);
 

Description

To retrieve the value of a response header field, the ne_get_response_header function can be used, and is given the name of the header to return.

To iterate over all the response headers returned, the ne_response_header_iterate function can be used. This function takes a cursor parameter which should be NULL to retrieve the first header. The function stores the name and value of the next header header in the name and value parameters, and returns a new cursor pointer which can be passed to ne_response_header_iterate to retrieve the next header.

Return value

ne_get_response_header returns a string, or NULL 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 ne_begin_request, or else, until the request object is destroyed.

Likewise, the cursor, names, and values returned by ne_response_header_iterate are only valid until the next call to ne_begin_request or until the request object is destroyed.

Examples

The following code will output the value of the Last-Modified header for a resource:

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");
    if (mtime) {
        printf("/foo.txt has last-modified value %s\n", mtime);
    }
}
ne_request_destroy(req);

See also

ne_request_create, ne_request_destroy.

0707010005ffd7000081a40000000000000000000000014cbd2dce00000f07000000b500010002ffffffffffffffff0000003900000000root/usr/local/share/doc/neon-0.29.4/html/refreqhdr.htmlne_add_request_header

Name

ne_add_request_header, ne_print_request_header — add headers to a request

Synopsis

#include <ne_request.h>
void ne_add_request_header(ne_request *request,
 const char *name,
 const char *value);
 
void ne_print_request_header(ne_request *request,
 const char *name,
 const char *format,
 ...);
 

Description

The functions ne_add_request_header and ne_print_request_header can be used to add headers to a request, before it is sent.

ne_add_request_header simply adds a header of given name, with given value.

ne_print_request_header adds a header of given name, taking the value from the printf-like format string parameter and subsequent variable-length argument list.

See also

ne_request_create

0707010005ffc0000081a40000000000000000000000014cbd2dce00002a81000000b500010002ffffffffffffffff0000003500000000root/usr/local/share/doc/neon-0.29.4/html/index.htmlneon HTTP/WebDAV client library

neon HTTP/WebDAV client library

This document is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This document is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

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.


Table of Contents

1. Introduction
Feature list
How to use neon from your application
Standards compliance
RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV
RFC 2616, Hypertext Transfer Protocol—HTTP/1.1
RFC 2617, HTTP Authentication: Basic and Digest Access Authentication
Namespaces in XML
HTTP Client Security
CPU or memory consumption attacks
SSL/TLS connection security
Control character insertion in error messages
Attacks against authentication credentials
2. The neon C language interface
Parsing XML
Introduction to SAX
Stacked SAX handlers
Maintaining state
XML namespaces
I. neon API reference
neon — HTTP and WebDAV client library
neon-config — script providing information about installed copy of neon library
ne_addr_resolve — functions to resolve hostnames to addresses
ne_buffer — string buffer handling
ne_buffer_append — append data to a string buffer
ne_buffer_clear — clear, grow, or mark as altered a string buffer
ne_buffer_create — create a string buffer
ne_buffer_destroy — destroy a buffer object
ne_get_error — error handling for HTTP sessions
ne_get_status — retrieve HTTP response status for request
ne_has_support — determine feature support status
ne_i18n_init — functions to initialize internationalization support
ne_iaddr_make — functions to manipulate and compare network addresses
ne_malloc — memory allocation wrappers
ne_session_create — set up HTTP sessions
ne_set_session_flag — set and retrieve session flags
ne_request_create — low-level HTTP request handling
ne_add_request_header — add headers to a request
ne_get_response_header — functions to access response headers
ne_set_useragent — common properties for HTTP sessions
ne_set_request_flag — set and retrieve per-request flags
ne_set_request_body_buffer — include a message body with a request
ne_set_server_auth — register authentication callbacks
ne_shave — trim whitespace from a string
ne_sock_init — perform library initialization
ne_ssl_cert_identity — functions to access certificate properties
ne_ssl_cert_cmp — functions to operate on certificate objects
ne_ssl_cert_read — functions to read or write certificates to and from files or strings
ne_ssl_dname — SSL distinguished name handling
ne_ssl_trust_cert — functions to indicate that certificates are trusted
ne_ssl_set_verify — register an SSL certificate verification callback
ne_ssl_client_cert — SSL client certificate handling
ne_status — HTTP status structure
ne_token — string tokenizers
ne_version_match — library versioning
ne_xml_create — create and destroy an XML parser
Bibliography

List of Examples

2.1. An example XML document
0707010005ffe7000081a40000000000000000000000014cbd2dce00001bc1000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/security.htmlHTTP Client Security

HTTP Client Security

neon is intended to be secure against a specific threat model: use of a malicious HTTP server. Under this threat model, a range of attacks are possible against a client when the user (or 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.

CPU or memory consumption attacks

neon uses fixed resource limits to prevent the following attacks:

  • memory/CPU consumption attack using an unbounded number of response header fields

  • memory consumption attack using an unbounded length of individual response header lines (or continuation headers)

  • memory consumption attack against the PROPFIND code using an unbounded number of properties (propstat elements) per resource

  • memory consumption attack against the PROPFIND code using an unbounded CDATA element in a "flat property" value

Memory consumption attacks against applications based on neon by use of unbounded response length are also possible, but must be mitigated at application level. Memory consumption in neon itself is fixed and is not proportional to the response size.

Test cases for all the above attacks are present in the neon test suite.

SSL/TLS connection security

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, and is implemented by neon in the following manner:

  • the hostname argument passed to ne_session_create is the expected identity of the server

  • the subjectAltName extension of the certificate is used for comparision against the expected identity, in preference to the Subject name's commonName attribute.

  • the dNSName, iPAddress, and uniformResourceIdentifier classes of GeneralName are supported in subjectAltName comparison.

  • if no subjectAltName is present in the certificate, the most specific commonName attribute in the Subject name is used for comparison instead.

In the case where a server certificate is presented that does not match the expected identity (or is otherwise not trusted), neon will fail the request by default. This behaviour can be overridden by the use of a callback installed using ne_ssl_set_verify, which allows the application to present the certificate details to a user for manual/off-line verification, if possible.

Test cases for the correctness of the implementation of the identity verification algorithm are present in the neon test suite.

Control character insertion in error messages

Where error messages (as returned by (ne_get_error) 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).

Attacks against authentication credentials

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 allowing the application (and hence, user) to specify that only a specific set of authentication protocols is permitted.

neon supports the Digest and Negotiate authentication schemes, which both allow authentication of users without passing credentials in cleartext over the wire. The "domain" parameter is supported in Digest, allowing the server to restrict an authentication session to a particular set of URIs.

0707010005ffe1000081a40000000000000000000000014cbd2dce00000f53000000b500010002ffffffffffffffff0000003b00000000root/usr/local/share/doc/neon-0.29.4/html/refssldname.htmlne_ssl_dname

Name

ne_ssl_readable_dname, ne_ssl_dname_cmp — SSL distinguished name handling

Synopsis

#include <ne_ssl.h>
const char *ne_ssl_readable_dname(const ne_ssl_dname *dname);
 
int ne_ssl_dname_cmp(const ne_ssl_dname *dn1,
 const ne_ssl_dname *dn2);
 

Description

The ne_ssl_readable_dname function creates a single-line, human-readable string out of an ne_ssl_dname object. The returned string is malloc()-allocated, and must be free()d by the caller.

The ne_ssl_dname_cmp function compares two distinguished names, and returns zero if they are equal, or non-zero otherwise.

Return value

ne_ssl_readable_dname returns a malloc-allocated string, and never NULL.

Examples

See ne_ssl_cert_subject for an example use of ne_ssl_readable_dname.

See also

ne_ssl_cert_subject

0707010005ffd5000081a40000000000000000000000014cbd2dce0000114d000000b500010002ffffffffffffffff0000003a00000000root/usr/local/share/doc/neon-0.29.4/html/refreqbody.htmlne_set_request_body_buffer

Name

ne_set_request_body_buffer, ne_set_request_body_fd, ne_set_request_body_fd64 — include a message body with a request

Synopsis

#include <ne_request.h>
void ne_set_request_body_buffer(ne_request *req,
 const char *buf,
 size_t count);
 
int ne_set_request_body_fd(ne_request *req,
 int fd,
 off_t begin,
 off_t length);
 

Description

The ne_set_request_body_buffer function specifies that a message body should be included with the body, which is stored in the count bytes buffer buf.

The ne_set_request_body_fd function can be used to include a message body with a request which is read from a file descriptor. The body is read from the file descriptor fd, which must be a associated with a seekable file (not a pipe, socket, or FIFO). count bytes are read, beginning at offset begin (hence, passing begin as zero means the body is read from the beginning of the file).

For all the above functions, the source of the request body must survive until the request has been dispatched; neither the memory buffer passed to ne_set_request_body_buffer nor the file descriptor passed to ne_set_request_body_fd are copied internally.

See also

ne_request_create

0707010005ffd6000081a40000000000000000000000014cbd2dce00001170000000b500010002ffffffffffffffff0000003b00000000root/usr/local/share/doc/neon-0.29.4/html/refreqflags.htmlne_set_request_flag

Name

ne_set_request_flag, ne_get_request_flag — set and retrieve per-request flags

Synopsis

#include <ne_request.h>
void ne_set_request_flag(ne_request *req,
 ne_request_flag flag,
 int value);
 
int ne_get_request_flag(ne_request *req,
 ne_request_flag flag);
 

Description

The ne_set_request_flag function enables or disables a per-request flag. Passing a non-zero value argument enables the flag, and zero disables it.

The following flags are defined:

NE_REQFLAG_EXPECT100

enable this flag to use the "Expect: 100-continue" feature of HTTP/1.1, which allows the server to process request headers without reading the entire request body. This saves time and bandwidth if the server gives an authentication challenge (requiring the request to be resent), but has interoperability problems with some older servers.

NE_REQFLAG_IDEMPOTENT

disable this flag if the request uses a non-idempotent method such as POST

Return value

The ne_get_request_flag 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.

See also

ne_request_create.

0707010005ffcd000081a40000000000000000000000014cbd2dce00001138000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/doc/neon-0.29.4/html/referr.htmlne_get_error

Name

ne_get_error, ne_set_error — error handling for HTTP sessions

Synopsis

#include <ne_session.h>
const char *ne_get_error(ne_sesssion *session);
 
void ne_set_error(ne_sesssion *session,
 const char *format,
 ...);
 

Description

The session error string is used to store any human-readable error information associated with any errors which occur whilst using the HTTP session.

The ne_get_error function returns the current session error string. This string persists only until it is changed by a subsequent operation on the session. If localisation was enabled at build time, and if necessary enabled at run-time if necessary using ne_i18n_init, the returned string may have been translated into the user's current locale.

The ne_set_error function can be used to set a new session error string, using a printf-style format string interface.

Return value

ne_set_error returns a constant NUL-terminated string. In the default English locale, the returned string will not have a terminating . period character.

Examples

Retrieve the current error string:

ne_session *sess = ne_session_create(...);
...
printf("Error was: %s\n", ne_get_error(sess));

Set a new error string:

ne_session *sess = ne_session_create(...);
...
ne_set_error(sess, "Response missing header %s", "somestring");
0707010005ffbf000081a40000000000000000000000014cbd2dce0000125a000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/features.htmlFeature list

Feature list

The major features of the neon library are as follows:

0707010005ffca000081a40000000000000000000000014cbd2dce00001767000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/doc/neon-0.29.4/html/refcert.htmlne_ssl_cert_identity

Name

ne_ssl_cert_identity, ne_ssl_cert_signedby, ne_ssl_cert_issuer, ne_ssl_cert_subject — functions to access certificate properties

Synopsis

#include <ne_ssl.h>
const char *ne_ssl_cert_identity(const ne_ssl_certificate *cert);
 
const ne_ssl_certificate *ne_ssl_cert_signedby(const ne_ssl_certificate *cert);
 
const ne_ssl_dname *ne_ssl_cert_subject(const ne_ssl_certificate *cert);
 
const ne_ssl_dname *ne_ssl_cert_issuer(const ne_ssl_certificate *cert);
 

Description

The function ne_ssl_cert_identity retrieves the identity 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 common name attribute of the distinguished name of the certificate subject.

The functions ne_ssl_cert_subject and ne_ssl_cert_issuer can be used to access the objects representing the distinguished name of the subject and of the issuer of a certificate, respectively.

If a certificate object is part of a certificate chain, then ne_ssl_cert_signedby 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 NULL.

Return value

ne_ssl_cert_issuer and ne_ssl_cert_subject are guaranteed to never return NULL. ne_ssl_cert_identity may return NULL if the certificate has no specific identity. ne_ssl_cert_signedby may return NULL as covered above.

Examples

The following function could be used to display information about a given certificate:

void dump_cert(const ne_ssl_certificate *cert) {
  const char *id = ne_ssl_cert_identity(cert);
  char *dn;

  if (id) 
    printf("Certificate was issued for '%s'.\n", id);

  dn = ne_ssl_readable_dname(ne_ssl_cert_subject(cert));
  printf("Subject: %s\n", dn);
  free(dn);

  dn = ne_ssl_readable_dname(ne_ssl_cert_issuer(cert));
  printf("Issuer: %s\n", dn);
  free(dn);
}

See also

ne_ssl_cert_cmp, ne_ssl_readable_dname

0707010005ffc5000081a40000000000000000000000014cbd2dce00000e02000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/doc/neon-0.29.4/html/refbuf.htmlne_buffer

Name

ne_buffer — string buffer handling

Synopsis

#include <ne_string.h>

typedef struct {
    char *data;
    size_t used;
    size_t length;
} ne_buffer;

Description

The ne_buffer type represents an expandable memory buffer for holding NUL-terminated strings. The data field points to the beginnning of the string, the length of which is given by the used field. The current size of memory allocated is given by the length field. It is not recommended that the fields of a buffer are manipulated directly. The data pointer may change when the buffer is modified.

A buffer is created using ne_buffer_create or ne_buffer_ncreate, and destroyed using ne_buffer_destroy or ne_buffer_finish. The functions ne_buffer_append, ne_buffer_zappend and ne_buffer_concat are used to append data to a buffer.

If the string referenced by the data pointer is modified directly (rather than using one of the functions listed above), ne_buffer_altered must be called.

0707010005ffc1000081a40000000000000000000000014cbd2dce00000ddb000000b500010002ffffffffffffffff0000003500000000root/usr/local/share/doc/neon-0.29.4/html/intro.htmlChapter 1. Introduction

Chapter 1. Introduction

Table of Contents

Feature list
How to use neon from your application
Standards compliance
RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV
RFC 2616, Hypertext Transfer Protocol—HTTP/1.1
RFC 2617, HTTP Authentication: Basic and Digest Access Authentication
Namespaces in XML
HTTP Client Security
CPU or memory consumption attacks
SSL/TLS connection security
Control character insertion in error messages
Attacks against authentication credentials

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.

neon aims to provide a modern, flexible, and simple API in the C programming language for implementing HTTP and WebDAV support. The WebDAV functionality is entirely separate from the basic HTTP functionality; neon can be used simply as an HTTP client library, ignoring the WebDAV support if desired.

0707010005ffcc000081a40000000000000000000000014cbd2dce00001457000000b500010002ffffffffffffffff0000003900000000root/usr/local/share/doc/neon-0.29.4/html/refconfig.htmlneon-config

Name

neon-config — script providing information about installed copy of neon library

Synopsis

neon-config [--prefix] [[--cflags] | [--libs] | [--la-file] | [--support feature] | [--help] | [--version]]

Description

The neon-config script provides information about an installed copy of the neon library. The --cflags and --libs options instruct how to compile and link an application against the library; the --version and --support options can help determine whether the library meets the applications requirements.

Options

--cflags

Print the flags which should be passed to the C compiler when compiling object files, when the object files use neon header files.

--libs

Print the flags which should be passed to the linker when linking an application which uses the neon library

--la-file

Print the location of the libtool library script, libneon.la, which can be used to link against neon by applications using libtool.

--version

Print the version of the library

--prefix dir

If dir is given; relocate output of --cflags and --libs as if neon was installed in given prefix directory. Otherwise, print the installation prefix of the library.

--support feature

The script exits with success if feature is supported by the library.

--help

Print help message; includes list of known features and whether they are supported or not.

Example

Below is a Makefile fragment which could be used to build an application against an installed neon library, when the neon-config script can be found in $PATH.

CFLAGS = `neon-config --cflags`
LIBS = `neon-config --libs`
OBJECTS = myapp.o
TARGET = myapp

$(TARGET): $(OBJECTS)
	$(CC) $(LDFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)

myapp.o: myapp.c
	$(CC) $(CFLAGS) -c myapp.c -o myapp.o
0707010005ffbe000081a40000000000000000000000014cbd2dce00001533000000b500010002ffffffffffffffff0000003a00000000root/usr/local/share/doc/neon-0.29.4/html/compliance.htmlStandards compliance

Standards compliance

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.

RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV

neon is deliberately not compliant with section 23.4.2, and treats property names as a (namespace-URI, name) pair. This is generally considered to be correct behaviour by the WebDAV working group, and is likely to formally adopted in a future revision of the specification.

RFC 2616, Hypertext Transfer Protocol—HTTP/1.1

There is some confusion in this specification about the use of the identity transfer-coding. neon ignores the Transfer-Encoding response header if it contains only the (now deprecated) identity token, and will determine the response message length as if the header was not present. neon will give an error if a response includes a Transfer-Encoding header with a value other than identity or chunked.

RFC 2617, HTTP Authentication: Basic and Digest Access Authentication

neon is not strictly compliant with the quoting rules given in the grammar for the Authorization header. The grammar requires that the qop and algorithm parameters are not quoted, however one widely deployed server implementation (Microsoft® IIS 5) rejects the request if these parameters are not quoted. neon sends these parameters with quotes—this is not known to cause any problems with other server implementations.

Namespaces in XML

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 [REC-XML-names]. Specifically: the restrictions on the first character of the NCName rule are not all implemented; neon will allow any CombiningChar, Extender and some characters from the Digit class in this position.

0707010005ffcb000081a40000000000000000000000014cbd2dce00001f57000000b500010002ffffffffffffffff0000003a00000000root/usr/local/share/doc/neon-0.29.4/html/refclicert.htmlne_ssl_client_cert

Name

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

Synopsis

#include <ne_ssl.h>
ne_ssl_client_cert *ne_ssl_clicert_read(const char *filename);
 
const char *ne_ssl_clicert_name(const ne_ssl_client_cert *ccert);
 
int ne_ssl_clicert_encrypted(const ne_ssl_client_cert *ccert);
 
int ne_ssl_clicert_decrypt(ne_ssl_client_cert *ccert,
 const char *password);
 
const ne_ssl_certificate *ne_ssl_clicert_owner(const ne_ssl_client_cert *ccert);
 
void ne_ssl_clicert_free(ne_ssl_client_cert *ccert);
 

Description

The ne_ssl_clicert_read function reads a client certificate from a PKCS#12-formatted file, and returns an ne_ssl_client_cert object. If the client certificate is encrypted, it must be decrypted before it is used. An ne_ssl_client_cert object holds a client certificate and the associated private key, not just a certificate; the term "client certificate" will used to refer to this pair.

A client certificate can be in one of two states: encrypted or decrypted. The ne_ssl_clicert_encrypted function will return non-zero if the client certificate is in the encrypted state. A client certificate object returned by ne_ssl_clicert_read may be initially in either state, depending on whether the file was encrypted or not.

ne_ssl_clicert_decrypt can be used to decrypt a client certificate using the appropriate password. This function must only be called if the object is in the encrypted state; if decryption fails, the certificate state does not change, so decryption can be attempted more than once using different passwords.

A client certificate can be given a "friendly name" when it is created; ne_ssl_clicert_name will return this name (or NULL if no friendly name was specified). ne_ssl_clicert_name can be used when the client certificate is in either the encrypted or decrypted state, and will return the same string for the lifetime of the object.

The function ne_ssl_clicert_owner returns the certificate part of the client certificate; it must only be called if the client certificate is in the decrypted state.

When the client certificate is no longer needed, the ne_ssl_clicert_free function should be used to destroy the object.

Return value

ne_ssl_clicert_read returns a client certificate object, or NULL if the file could not be read. ne_ssl_clicert_encrypted returns zero if the object is in the decrypted state, or non-zero if it is in the encrypted state. ne_ssl_clicert_name returns a NUL-terminated friendly name string, or NULL. ne_ssl_clicert_owner returns a certificate object.

Examples

The following code reads a client certificate and decrypts it if necessary, then loads it into an HTTP session.

ne_ssl_client_cert *ccert;

ccert = ne_ssl_clicert_read("/path/to/client.p12");

if (ccert == NULL) {
   /* handle error... */
} else if (ne_ssl_clicert_encrypted(ccert)) {
   char *password = prompt_for_password();

   if (ne_ssl_clicert_decrypt(ccert, password)) {
      /* could not decrypt! handle error... */
   }
}

ne_ssl_set_clicert(sess, ccert);

See also

ne_ssl_cert_read

0707010005ffdf000081a40000000000000000000000014cbd2dce00000c30000000b500010002ffffffffffffffff0000003b00000000root/usr/local/share/doc/neon-0.29.4/html/refsslcert2.htmlne_ssl_cert_cmp

Name

ne_ssl_cert_cmp, ne_ssl_cert_free — functions to operate on certificate objects

Synopsis

#include <ne_header.h>
int ne_ssl_cert_cmp(const ne_ssl_certificate *c1,
 const ne_ssl_certificate *c2);
 
void ne_ssl_cert_free(ne_ssl_certificate *cert);
 

Description

The ne_ssl_cert_cmp function can be used to compare two certificate objects; it returns zero if they refer to the same certificate, and non-zero otherwise.

The ne_ssl_cert_free function can be used to destroy a certificate object when it is no longer needed.

0707010005ffe6000081a40000000000000000000000014cbd2dce00000c12000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/doc/neon-0.29.4/html/refxml.htmlne_xml_create

Name

ne_xml_create, ne_xml_destroy — create and destroy an XML parser

Synopsis

#include <ne_xml.h>
ne_xml_parser *ne_xml_create(void); 
 
void ne_xml_destroy(ne_xml_parser *parser);
 

Description

The ne_xml_create function creates an XML parser object, which can be used for parsing XML documents using stacked SAX handlers.

Return value

ne_xml_create returns a pointer to an XML parser object, and never NULL

See also

XXX

0707010005ffe3000081a40000000000000000000000014cbd2dce00001057000000b500010002ffffffffffffffff0000003900000000root/usr/local/share/doc/neon-0.29.4/html/refstatus.htmlne_status

Name

ne_status — HTTP status structure

Synopsis

#include <ne_utils.h>

typedef struct {
    int major_version, minor_version;
    int code, klass;
    const char *reason_phrase;
} ne_status;

Description

An ne_status type represents an HTTP response status; used in response messages giving a result of request. The major_version and minor_version fields give the HTTP version supported by the server issuing the response. The code field gives the status code of the result (lying between 100 and 999 inclusive), and the klass field gives the class[2], which is equal to the most significant digit of the status.

There are five classes of HTTP status code defined by RFC2616:

1xx

Informational response.

2xx

Success: the operation was successful

3xx

Redirection

4xx

Client error: the request made was incorrect in some manner.

5xx

Server error

See also

ne_get_status.



[2] the field is named klass not class so that the header can be used from a C++ program, in which class is a reserved word)

0707010005ffc7000081a40000000000000000000000014cbd2dce00000d2b000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/refbufcr.htmlne_buffer_create

Name

ne_buffer_create, ne_buffer_ncreate — create a string buffer

Synopsis

#include <ne_alloc.h>
ne_buffer *ne_buffer_create(void); 
 
ne_buffer *ne_buffer_ncreate(size_t size);
 

Description

ne_buffer_create creates a new buffer object, with an implementation-defined initial size. ne_buffer_ncreate creates an ne_buffer where the minimum initial size is given in the size parameter. The buffer created will contain the empty string ("").

Return value

Both functions return a pointer to a new buffer object, and never NULL.

See also

ne_buffer

0707010005ffd4000081a40000000000000000000000014cbd2dce00002225000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/doc/neon-0.29.4/html/refreq.htmlne_request_create

Name

ne_request_create, ne_request_dispatch, ne_request_destroy — low-level HTTP request handling

Synopsis

#include <ne_request.h>
ne_request *ne_request_create(ne_session *session,
 const char *method,
 const char *path);
 
int ne_request_dispatch(ne_request *req);
 
void ne_request_destroy(ne_request *req);
 

Description

An HTTP request, represented by the ne_request type, specifies that some operation is to be performed on some resource. The ne_request_create function creates a request object, specifying the operation in the method parameter. The location of the resource is determined by the server in use for the session given by the sess parameter, combined with the path parameter.

The path string used must conform to the abs_path definition given in RFC2396, with an optional "?query" part, and must be URI-escaped by the caller (for instance, using ne_path_escape). If the string comes from an untrusted source, failure to perform URI-escaping results in a security vulnerability.

To dispatch a request, and process the response, the ne_request_dispatch function can be used. An alternative is to use the (more complex, but more flexible) combination of the ne_begin_request, ne_end_request, and ne_read_response_block functions; see ne_begin_request.

To add extra headers in the request, the functions ne_add_request_header and ne_print_request_header can be used. To include a message body with the request, one of the functions ne_set_request_body_buffer, ne_set_request_body_fd, or ne_set_request_body_provider can be used.

The return value of ne_request_dispatch indicates merely whether the request was sent and the response read successfully. To discover the result of the operation, ne_get_status, along with any processing of the response headers and message body.

A request can only be dispatched once: calling ne_request_dispatch more than once on a single ne_request object produces undefined behaviour. Once all processing associated with the request object is complete, use the ne_request_destroy function to destroy the resources associated with it. Any subsequent use of the request object produces undefined behaviour.

If a request is being using a non-idempotent method such as POST, the NE_REQFLAG_IDEMPOTENT flag should be disabled; see ne_set_request_flag.

Return value

The ne_request_create function returns a pointer to a request object (and never NULL).

The ne_request_dispatch function returns zero if the request was dispatched successfully, and a non-zero error code otherwise.

Errors

NE_ERROR

Request failed (see session error string)

NE_LOOKUP

The DNS lookup for the server (or proxy server) failed.

NE_AUTH

Authentication failed on the server.

NE_PROXYAUTH

Authentication failed on the proxy server.

NE_CONNECT

A connection to the server could not be established.

NE_TIMEOUT

A timeout occurred while waiting for the server to respond.

Example

An example of applying a MKCOL operation to the resource at the location http://www.example.com/foo/bar/:

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);

See also

ne_get_error, ne_set_error, ne_get_status, ne_add_request_header, ne_set_request_body_buffer, ne_set_request_flag.

0707010005ffdc000081a40000000000000000000000014cbd2dce00000b77000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/refshave.htmlne_shave

Name

ne_shave — trim whitespace from a string

Synopsis

#include <ne_string.h>
char *ne_shave(char *str,
 const char *whitespace);
 

Description

ne_shave returns a portion of str with any leading or trailing characters in the whitespace array removed. str may be modified. Note that the return value may not be equal to str.

Examples

The following code segment will output "fish":

char s[] = ".!.fish!.!";
puts(ne_shave(s, ".!"));
0707010005ffe8000081a40000000000000000000000014cbd2dce0000130e000000b500010002ffffffffffffffff0000003500000000root/usr/local/share/doc/neon-0.29.4/html/using.htmlHow to use neon from your application

How to use neon from your application

This section describes how to add neon support to an application. If you just want to quickly try out neon, use the neon-config script.

The neon source code is designed to be easily embedded into an application source tree. neon has no dependencies on libraries other than an SSL toolkit and XML parser, though the source tree can be configured to have no support for SSL or XML if desired. To configure the neon source code some GNU autoconf macros are supplied, which can be used in a number of ways, as follows:

A full fragment might be:

NEON_BUNDLED(libneon, [
  NEON_NORMAL_BUILD
  NEON_XML_PARSER
  SUBDIRS="libneon $SUBDIRS"
])

This means the bundled neon source directory (called 'libneon') is used if no neon is found on the system, and the standard XML parser search is used.

0707010005ffe5000081a40000000000000000000000014cbd2dce00000d62000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/doc/neon-0.29.4/html/refvers.htmlne_version_match

Name

ne_version_match, ne_version_string — library versioning

Synopsis

#include <ne_utils.h>
int ne_version_match(int major,
 int minor);
 
const char *ne_version_string(void); 
 

Description

The ne_version_match function returns non-zero if the library version is not of major version major, or the minor version is less than minor. For neon versions 0.x, every minor version is assumed to be incompatible with every other minor version.

The ne_version_string function returns a string giving the library version.

Examples

To require neon 1.x, version 1.2 or later:

if (ne_version_match(1, 2)) {
    printf("Library version out of date: 1.2 required, found %s.",
           ne_version_string());
    exit(1);
}
0707010005ffe0000081a40000000000000000000000014cbd2dce0000161c000000b500010002ffffffffffffffff0000003c00000000root/usr/local/share/doc/neon-0.29.4/html/refsslcertio.htmlne_ssl_cert_read

Name

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

Synopsis

#include <ne_ssl.h>
ne_ssl_certificate *ne_ssl_cert_read(const char *filename);
 
int ne_ssl_cert_write(const ne_ssl_certificate *cert,
 const char *filename);
 
ne_ssl_certificate *ne_ssl_cert_import(const char *data);
 
char *ne_ssl_cert_export(const ne_ssl_certificate *cert);
 

Description

The ne_ssl_cert_write function writes a certificate to a file using the PEM encoding. The ne_ssl_cert_export function returns a base64-encoded NUL-terminated string representing the certificate. This string is malloc-allocated and should be destroyed using free by the caller.

The ne_ssl_cert_read function reads a certificate from a PEM-encoded file, and returns a certificate object. The ne_ssl_cert_import function returns a certificate object from a base64-encoded string, data, as returned by ne_ssl_cert_export. The certificate object returned by these functions should be destroyed using ne_ssl_cert_free after use.

Return value

ne_ssl_cert_read returns NULL if a certificate could not be read from the file. ne_ssl_cert_write returns non-zero if the certificate could not be written to the file. ne_ssl_cert_export always returns a NUL-terminated string, and never NULL. ne_ssl_cert_import returns NULL if the string was not a valid base64-encoded certificate.

Encoding Formats

The string produced by ne_ssl_cert_export is the base64 encoding of the DER representation of the certificate. The file written by ne_ssl_cert_write uses the PEM format: this is the base64 encoding of the DER representation with newlines every 64 characters, and start and end marker lines.

0707010005ffc4000081a40000000000000000000000014cbd2dce00001783000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/doc/neon-0.29.4/html/refauth.htmlne_set_server_auth

Name

ne_set_server_auth, ne_set_proxy_auth, ne_forget_auth — register authentication callbacks

Synopsis

#include <ne_auth.h>
typedef int (*ne_auth_creds)(void *userdata,
 const char *realm,
 int attempt,
 char *username,
 char *password);
 
void ne_set_server_auth(ne_session *session,
 ne_auth_creds callback,
 void *userdata);
 
void ne_set_proxy_auth(ne_session *session,
 ne_auth_creds callback,
 void *userdata);
 
void ne_forget_auth(ne_session *session);
 

Description

The ne_auth_creds function type defines a callback which is invoked when a server or proxy server requires user authentication for a particular request. The realm string is supplied by the server. The attempt is a counter giving the number of times the request has been retried with different authentication credentials. The first time the callback is invoked for a particular request, attempt will be zero.

To retry the request using new authentication credentials, the callback should return zero, and the username and password buffers must contain NUL-terminated strings. The NE_ABUFSIZ constant gives the size of these buffers.

Tip

If you only wish to allow the user one attempt to enter credentials, use the value of the attempt parameter as the return value of the callback.

To abort the request, the callback should return a non-zero value; in which case the contents of the username and password buffers are ignored.

The ne_forget_auth function can be used to discard the cached authentication credentials.

Examples

/* Function which prompts for a line of user input: */
extern char *prompt_for(const char *prompt);

static int
my_auth(void *userdata, const char *realm, int attempts,
        char *username, char *password)
{
   strncpy(username, prompt_for("Username: "), NE_ABUFSIZ);
   strncpy(password, prompt_for("Password: "), NE_ABUFSIZ);
   return attempts;
}

int main(...)
{
   ne_session *sess = ne_session_create(...);

   ne_set_server_auth(sess, my_auth, NULL);

   /* ... */
}
0707010005ffe4000081a40000000000000000000000014cbd2dce00000fea000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/doc/neon-0.29.4/html/reftok.htmlne_token

Name

ne_token, ne_qtoken — string tokenizers

Synopsis

#include <ne_string.h>
char *ne_token(char **str,
 char sep);
 
char *ne_qtoken(char **str,
 char sep,
 const char *quotes);
 

Description

ne_token and ne_qtoken tokenize the string at the location stored in the pointer str. Each time the function is called, it returns the next token, and modifies the str pointer to point to the remainer of the string, or NULL if there are no more tokens in the string. A token is delimited by the separator character sep; if ne_qtoken is used any quoted segments of the string are skipped when searching for a separator. A quoted segment is enclosed in a pair of one of the characters given in the quotes string.

The string being tokenized is modified each time the tokenizing function is called; replacing the next separator character with a NUL terminator.

Examples

The following function prints out each token in a comma-separated string list, which is modified in-place:

static void splitter(char *list)
{
  do {
    printf("Token: %s\n", ne_token(&list, ','));
  while (list);
}
0707010005ffc3000081a40000000000000000000000014cbd2dce0000137d000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/refalloc.htmlne_malloc

Name

ne_malloc, ne_calloc, ne_realloc, ne_strdup, ne_strndup, ne_oom_callback — memory allocation wrappers

Synopsis

#include <ne_alloc.h>
void *ne_malloc(size_t size);
 
void *ne_calloc(size_t size);
 
void *ne_realloc(void *size,
 size_t len);
 
char *ne_strdup(const char *s);
 
char *ne_strndup(const char *s,
 size_t size);
 
void ne_oom_callback(void (*callback)(void));
 

Description

The functions ne_malloc, ne_calloc, ne_realloc, ne_strdup and ne_strdnup provide wrappers for the equivalent functions in the standard C library. The wrappers provide the extra guarantee that if the C library equivalent returns NULL when no memory is available, an optional callback will be called, and the library will then call abort().

ne_oom_callback registers a callback which will be invoked if an out of memory error is detected.

Notes

If the operating system uses optimistic memory allocation, the C library memory allocation routines will not return NULL, so it is not possible to gracefully handle memory allocation failures.

0707010005ffd1000081a40000000000000000000000014cbd2dce00001916000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/refiaddr.htmlne_iaddr_make

Name

ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_print, ne_iaddr_typeof, ne_iaddr_free — functions to manipulate and compare network addresses

Synopsis

#include <ne_socket.h>

typedef enum {
    ne_iaddr_ipv4 = 0,
    ne_iaddr_ipv6
} ne_iaddr_type;
ne_inet_addr *ne_iaddr_make(ne_iaddr_type type,
 const unsigned char *raw);
 
int ne_iaddr_cmp(const ne_inet_addr *ia1,
 const ne_inet_addr *ia2);
 
char *ne_iaddr_print(const ne_inet_addr *ia,
 char *buffer,
 size_t bufsiz);
 
ne_iaddr_type ne_iaddr_typeof(const ne_inet_addr *ia);
 
void ne_iaddr_free(const ne_inet_addr *ia);
 

Description

ne_iaddr_make creates an ne_inet_addr object from a raw binary network address; for instance the four bytes 0x7f 0x00 0x00 0x01 represent the IPv4 address 127.0.0.1. The object returned is suitable for passing to ne_sock_connect. A binary IPv4 address contains four bytes; a binary IPv6 address contains sixteen bytes; addresses passed must be in network byte order.

ne_iaddr_cmp can be used to compare two network addresses; returning zero only if they are identical. The addresses need not be of the same address type; if the addresses are not of the same type, the return value is guaranteed to be non-zero.

ne_iaddr_print can be used to print the human-readable string representation of a network address into a buffer, for instance the string "127.0.0.1".

ne_iaddr_typeof returns the type of the given network address.

ne_iaddr_free releases the memory associated with a network address object.

Return value

ne_iaddr_make returns NULL if the address type passed is not supported (for instance on a platform which does not support IPv6).

ne_iaddr_print returns the buffer pointer, and never NULL.

Examples

The following example connects a socket to port 80 at the address 127.0.0.1.

unsigned char addr[] = "\0x7f\0x00\0x00\0x01";
ne_inet_addr *ia;

ia = ne_iaddr_make(ne_iaddr_ipv4, addr);
if (ia != NULL) {
    ne_socket *sock = ne_sock_connect(ia, 80);
    ne_iaddr_free(ia);
    /* ... */
} else {
    /* ... */
}

See also

ne_addr_resolve

0707010005ffc6000081a40000000000000000000000014cbd2dce0000140f000000b500010002ffffffffffffffff0000003900000000root/usr/local/share/doc/neon-0.29.4/html/refbufapp.htmlne_buffer_append

Name

ne_buffer_append, ne_buffer_zappend, ne_buffer_concat — append data to a string buffer

Synopsis

#include <ne_string.h>
void ne_buffer_append(ne_buffer *buf,
 const char *string,
 size_t len);
 
void ne_buffer_zappend(ne_buffer *buf,
 const char *string);
 
void ne_buffer_concat(ne_buffer *buf,
 const char *str,
 ...);
 

Description

The ne_buffer_append and ne_buffer_zappend functions append a string to the end of a buffer; extending the buffer as necessary. The len passed to ne_buffer_append specifies the length of the string to append; there must be no NUL terminator in the first len bytes of the string. ne_buffer_zappend must be passed a NUL-terminated string.

The ne_buffer_concat function takes a variable-length argument list following str; each argument must be a char * pointer to a NUL-terminated string. A NULL pointer must be given as the last argument to mark the end of the list. The strings (including str) are appended to the buffer in the order given. None of the strings passed to ne_buffer_concat are modified.

Examples

The following code will output "Hello, world. And goodbye.".

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);

See also

ne_buffer, ne_buffer_create, ne_buffer_destroy

0707010005ffe9000081a40000000000000000000000014cbd2dce00002c6b000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/doc/neon-0.29.4/html/xml.htmlParsing XML

Parsing XML

The neon XML interface is exposed by the ne_xml.h header file. This interface gives a wrapper around the standard SAX API used by XML parsers, with an additional abstraction, stacked SAX handlers, and also giving consistent XML Namespace support.

Introduction to SAX

A SAX-based parser works by emitting a sequence of events to reflect the tokens being parsed from the XML document. For example, parsing the following document fragment:

<hello>world</hello>

results in the following events:

  1. start-element "hello"
  2. character-data "world"
  3. end-element "hello"

This example demonstrates the three event types used used in the subset of SAX exposed by the neon XML interface: start-element, character-data and end-element. In a C API, an event is implemented as a function callback; three callback types are used in neon, one for each type of event.

Stacked SAX handlers

WebDAV property values are represented as fragments of XML, transmitted as parts of larger XML documents over HTTP (notably in the body of the response to a PROPFIND request). When neon parses such documents, the SAX events generated for these property value fragments may need to be handled by the application, since neon has no knowledge of the structure of properties used by the application.

To solve this problem[1] the neon XML interface introduces the concept of a SAX handler. A SAX handler comprises a start-element, character-data and end-element callback; the start-element callback being defined such that each handler may accept or decline the start-element event. Handlers are composed into a handler stack before parsing a document. When a new start-element event is generated by the XML parser, neon invokes each start-element callback in the handler stack in turn until one accepts the event. The handler which accepts the event will then be subsequently be passed character-data events if the element contains character data, followed by an end-element event when the element is closed. If no handler in the stack accepts a start-element event, the branch of the tree is ignored.

To illustrate, given a handler A, which accepts the cat and age elements, and a handler B, which accepts the name element, the following document:

Example 2.1. An example XML document

<cat>
  <age>3</age>    
  <name>Bob</name>
</cat>


would be parsed as follows:

  1. A start-element "cat" → accept
  2. A start-element "age" → accept
  3. A character-data "3"
  4. A end-element "age"
  5. A start-element "name" → decline
  6. B start-element "name" → accept
  7. B character-data "Bob"
  8. B end-element "name"
  9. A end-element "cat"

The search for a handler which will accept a start-element event begins at the handler of the parent element and continues toward the top of the stack. For the root element, it begins at the base of the stack. In the above example, handler A is at the base, and handler B at the top; if the name element had any children, only B's start-element would be invoked to accept them.

Maintaining state

To facilitate communication between independent handlers, a state integer is associated with each element being parsed. This integer is returned by start-element callback and is passed to the subsequent character-data and end-element callbacks associated with the element. The state integer of the parent element is also passed to each start-element callback, the value zero used for the root element (which by definition has no parent).

To further extend Example 2.1, “An example XML document”: if handler A defines that the state of the root element cat will be 42, the event trace would be as follows:

  1. A start-element (parent = 0, "cat") → accept, state = 42
  2. A start-element (parent = 42, "age") → accept, state = 50
  3. A character-data (state = 50, "3")
  4. A end-element (state = 50, "age")
  5. A start-element (parent = 42, "name") → decline
  6. B start-element (parent = 42, "name") → accept, state = 99
  7. B character-data (state = 99, "Bob")
  8. B end-element (state = 99, "name")
  9. A end-element (state = 42, "cat")

To avoid collisions between state integers used by different handlers, the interface definition of any handler includes the range of integers it will use.

XML namespaces

To support XML namespaces, every element name is represented as a (namespace, name) pair. The start-element and end-element callbacks are passed namespace and name strings accordingly. If an element in the XML document has no declared namespace, the namespace given will be the empty string, "".



[1] This problem only needs solving because the SAX interface is so inflexible when implemented as C function callbacks; a better approach would be to use an XML parser interface which is not based on callbacks.

0707010005ffdb000081a40000000000000000000000014cbd2dce00001490000000b500010002ffffffffffffffff0000003c00000000root/usr/local/share/doc/neon-0.29.4/html/refsessflags.htmlne_set_session_flag

Name

ne_set_session_flag, ne_get_session_flag — set and retrieve session flags

Synopsis

#include <ne_request.h>
void ne_set_session_flag(ne_session *sess,
 ne_session_flag flag,
 int value);
 
int ne_get_session_flag(ne_session *sess,
 ne_session_flag flag);
 

Description

The ne_set_session_flag function enables or disables a session flag. Passing a non-zero value argument enables the flag, and zero disables it.

The following flags are defined:

NE_SESSFLAG_PERSIST

disable this flag to prevent use of persistent connections

NE_SESSFLAG_ICYPROTO

enable this flag to enable support for non-HTTP ShoutCast-style "ICY" responses

NE_SESSFLAG_SSLv2

disable this flag to disable support for the SSLv2 protocol

NE_SESSFLAG_RFC4918

enable this flag to enable support for RFC4918-only WebDAV features; losing backwards-compatibility with RFC2518 servers

NE_SESSFLAG_CONNAUTH

enable this flag if an RFC-violating connection-based HTTP authentication scheme is in use

NE_SESSFLAG_TLS_SNI

disable this flag if a server is used which does not correctly support the TLS SNI extension

NE_SESSFLAG_EXPECT100

enable this flag to enable the request flag NE_REQFLAG_EXPECT100 for new requests

Return value

The ne_get_session_flag 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.

See also

ne_session_create, ne_set_request_flag.

0707010005ffdd000081a40000000000000000000000014cbd2dce00001a99000000b500010002ffffffffffffffff0000003b00000000root/usr/local/share/doc/neon-0.29.4/html/refsockinit.htmlne_sock_init

Name

ne_sock_init, ne_sock_exit — perform library initialization

Synopsis

#include <ne_socket.h>
int ne_sock_init(void); 
 
void ne_sock_exit(void); 
 

Description

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 ne_sock_init function must be called before any other library functions are used.

Once all use of neon is complete, ne_sock_exit can be called to perform de-initialization of socket or SSL libraries, if necessary. Uses of ne_sock_init and ne_sock_exit are "reference counted"; if N calls to ne_sock_init are made, only the Nth call to ne_sock_exit will have effect.

ne_sock_init will set the disposition of the SIGPIPE signal to ignored. No change is made to the SIGPIPE disposition by ne_sock_exit.

Both the SSL libraries supported by neon — OpenSSL and GnuTLS — require callbacks to be registered to allow thread-safe use of SSL. These callbacks are stored as global variables and so their state persists for as long as the library in question is loaded into the process. If multiple users of the SSL library exist within the process, this can be problematic, particularly if one is dynamically loaded (and may subsequently be unloaded).

If neon is configured using the --enable-threadsafe-ssl flag, thread-safe SSL support will be enabled automatically, as covered in the following section. Otherwise, it is not safe to use neon with SSL in a multi-threaded process. The ne_has_support function can be used to determine whether neon is built to enable thread-safety support in the SSL library.

Thread-safe SSL with OpenSSL

neon follows two simple rules when dealing with the OpenSSL locking callbacks:

  • ne_sock_init will set thread-safety locking callbacks if and only if no locking callbacks are already registered.
  • ne_sock_exit will unset the thread-safety locking callbacks if and only if the locking callbacks registered are those registered by ne_sock_init.

Applications and libraries should be able to co-operate to ensure that SSL use is always thread-safe if similar rules are always followed.

Thread-safe SSL with GnuTLS

The cryptography library used by GnuTLS, libgcrypt, only supports an initialization operation to register thread-safety callbacks. ne_sock_init will register the thread-safe locking callbacks on first use; ne_sock_exit cannot unregister them. If multiple users of GnuTLS are present within the process, it is 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).

Return value

ne_sock_init returns zero on success, or non-zero on error. If an error occurs, no further use of the neon library should be attempted.

See also

neon, ne_has_support

0707010005ffcf000081a40000000000000000000000014cbd2dce00000d85000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/refgetst.htmlne_get_status

Name

ne_get_status — retrieve HTTP response status for request

Synopsis

#include <ne_request.h>
const ne_status *ne_get_status(const ne_request *request);
 

Description

The ne_get_status function returns a pointer to the HTTP status object giving the result of a request. The object returned only becomes valid once the request has been successfully dispatched (the return value of ne_request_dispatch or ne_begin_request was zero). The object remains valid until the associated request object is destroyed.

See also

ne_status, ne_request_create

Example

Display the response status code of applying the HEAD method to some resource.

ne_request *req = ne_request_create(sess, "HEAD", "/foo/bar");
if (ne_request_dispatch(req))
   /* handle errors... */
else
   printf("Response status code was %d\n", ne_get_status(req)->code);
ne_request_destroy(req);
0707010005ffe2000081a40000000000000000000000014cbd2dce00001c79000000b500010002ffffffffffffffff0000003900000000root/usr/local/share/doc/neon-0.29.4/html/refsslvfy.htmlne_ssl_set_verify

Name

ne_ssl_set_verify — register an SSL certificate verification callback

Synopsis

#include <ne_session.h>
typedef int ne_ssl_verify_fn(void *userdata,
 int failures,
 const ne_ssl_certificate *cert);
 
void ne_ssl_set_verify(ne_session *session,
 ne_ssl_verify_fn verify_fn,
 void *userdata);
 

Description

To enable manual SSL certificate verification, a callback can be registered using ne_ssl_set_verify. If such a callback is not registered, when a connection is established to an SSL server which does not present a certificate signed by a trusted CA (see ne_ssl_trust_cert), or if the certificate presented is invalid in some way, the connection will fail.

When the callback is invoked, the failures parameter gives a bitmask indicating in what way the automatic certificate verification failed. The value is equal to the bit-wise OR of one or more of the following constants (and is guaranteed to be non-zero):

NE_SSL_NOTYETVALID

The certificate is not yet valid.

NE_SSL_EXPIRED

The certificate has expired.

NE_SSL_IDMISMATCH

The hostname used for the session does not match the hostname to which the certificate was issued.

NE_SSL_UNTRUSTED

The Certificate Authority which signed the certificate is not trusted.

Note that if either of the NE_SSL_IDMISMATCH or NE_SSL_UNTRUSTED failures is given, the connection may have been intercepted by a third party, and must not be presumed to be secure.

The cert parameter passed to the callback represents the certificate which was presented by the server. If the server presented a chain of certificates, the chain can be accessed using ne_ssl_cert_signedby. The cert object given is not valid after the callback returns.

Return value

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).

Examples

The following code implements an example verification callback, using the dump_cert function from ne_ssl_cert_subject to display certification information. Notice that the hostname of the server used for the session is passed as the userdata parameter to the callback.

static int
my_verify(void *userdata, int failures, const ne_ssl_certificate *cert)
{
  const char *hostname = userdata;

  dump_cert(cert);

  puts("Certificate verification failed - the connection may have been "
       "intercepted by a third party!");

  if (failures & NE_SSL_IDMISMATCH) { 
    const char *id = ne_ssl_cert_identity(cert);
    if (id) 
      printf("Server certificate was issued to '%s' not '%s'.\n",
             id, hostname);
    else
      printf("The certificate was not issued for '%s'\n", hostname);
  }

  if (failures & NE_SSL_UNTRUSTED)
    puts("The certificate is not signed by a trusted Certificate Authority.");

  /* ... check for validity failures ... */

  if (prompt_user())
    return 1; /* fail verification */
  else
    return 0; /* trust the certificate anyway */
}

int
main(...)
{
  ne_session *sess = ne_session_create("https", "some.host.name", 443);
  ne_ssl_set_verify(sess, my_verify, "some.host.name");
  ...
}

See also

ne_ssl_trust_cert, ne_ssl_readable_dname, ne_ssl_cert_subject

0707010005ffbc000081a40000000000000000000000014cbd2dce000009f9000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/doc/neon-0.29.4/html/api.htmlChapter 2. The neon C language interface

Chapter 2. The neon C language interface

Table of Contents

Parsing XML
Introduction to SAX
Stacked SAX handlers
Maintaining state
XML namespaces

The documentation for the neon interface is split between this chapter, which gives a broad introduction to the abstractions exposed by the library, and neon API reference, which gives a function-by-function breakdown of the interface.

0707010005ffce000081a40000000000000000000000014cbd2dce00001026000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/doc/neon-0.29.4/html/reffeat.htmlne_has_support

Name

ne_has_support — determine feature support status

Synopsis

#include <ne_utils.h>
int ne_has_support(int feature);
 

Description

The ne_has_support function can be used to determine whether a particular optional feature, given by the feature code feature, is supported. The following feature codes are available:

NE_FEATURE_SSL

Indicates support for SSL/TLS

NE_FEATURE_ZLIB

Indicates support for compressed responses

NE_FEATURE_IPV6

Indicates support for IPv6

NE_FEATURE_LFS

Indicates support for large files

NE_FEATURE_SOCKS

Indicates support for SOCKSv5

NE_FEATURE_TS_SSL

Indicates support for thread-safe SSL initialization — see ne_sock_init

Return value

ne_has_support returns non-zero if the given feature is supported, or zero otherwise.

See also

ne_version_match, ne_sock_init

0707010005ffda000081a40000000000000000000000014cbd2dce00001c76000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/doc/neon-0.29.4/html/refsess.htmlne_session_create

Name

ne_session_create, ne_close_connection, ne_session_proxy, ne_session_destroy — set up HTTP sessions

Synopsis

#include <ne_session.h>
ne_session *ne_session_create(const char *scheme,
 const char *hostname,
 unsigned int port);
 
void ne_session_proxy(ne_session *session,
 const char *hostname,
 unsigned int port);
 
void ne_close_connection(ne_session *session);
 
void ne_session_destroy(ne_session *session);
 

Description

An ne_session object represents an HTTP session - a logical grouping of a sequence of HTTP requests made to a certain server. Any requests made using the session can use a persistent connection, share cached authentication credentials and any other common attributes.

A new HTTP session is created using ne_session_create, giving the hostname and port of the server to use, along with the scheme used to contact the server (usually "http"). Before the first use of ne_session_create in a process, ne_sock_init must have been called to perform any global initialization needed by any libraries used by neon.

To enable SSL/TLS for the session, pass the string "https" as the scheme parameter, and either register a certificate verification function (see ne_ssl_set_verify) or trust the appropriate certificate (see ne_ssl_trust_cert, ne_ssl_trust_default_ca).

If an HTTP proxy server should be used for the session, ne_session_proxy must be called giving the hostname and port on which to contact the proxy.

Further per-session options may be changed using the ne_set_request_flag interface.

If it is known that the session will not be used for a significant period of time, ne_close_connection can be called to close the connection, if one remains open. Use of this function is entirely optional, but it must not be called if there is a request active using the session.

Once a session has been completed, ne_session_destroy must be called to destroy the resources associated with the session. Any subsequent use of the session pointer produces undefined behaviour.

Notes

The hostname passed to ne_session_create is resolved when the first request using the session is dispatched; a DNS resolution failure can only be detected at that time (using the NE_LOOKUP error code); see ne_request_dispatch for details.

Return Values

ne_session_create will return a pointer to a new session object (and never NULL).

Examples

Create and destroy a session:

ne_session *sess;
sess = ne_session_create("http", "host.example.com", 80);
/* ... use sess ... */
ne_session_destroy(sess);

See Also

ne_ssl_set_verify, ne_ssl_trust_cert, ne_sock_init, ne_set_session_flag

0707010005ffd8000081a40000000000000000000000014cbd2dce00001d59000000b500010002ffffffffffffffff0000003a00000000root/usr/local/share/doc/neon-0.29.4/html/refresolve.htmlne_addr_resolve

Name

ne_addr_resolve, ne_addr_result, ne_addr_first, ne_addr_next, ne_addr_error, ne_addr_destroy — functions to resolve hostnames to addresses

Synopsis

#include <ne_socket.h>
ne_sock_addr *ne_addr_resolve(const char *hostname,
 int flags);
 
int ne_addr_result(const ne_sock_addr *addr);
 
const ne_inet_addr *ne_addr_first(ne_sock_addr *addr);
 
const ne_inet_addr *ne_addr_next(ne_sock_addr *addr);
 
char *ne_addr_error(const ne_sock_addr *addr,
 char *buffer,
 size_t bufsiz);
 
void ne_addr_destroy(ne_sock_addr *addr);
 

Description

The ne_addr_resolve function resolves the given hostname, returning an ne_sock_addr object representing the address (or addresses) associated with the hostname. The flags parameter is currently unused, and must be passed as 0.

The hostname passed to ne_addr_resolve can be a DNS hostname (e.g. "www.example.com") or an IPv4 dotted quad (e.g. "192.0.34.72"); or, on systems which support IPv6, an IPv6 hex address, which may be enclosed in brackets, e.g. "[::1]".

To determine whether the hostname was successfully resolved, the ne_addr_result function is used, which returns non-zero if an error occurred. If an error did occur, the ne_addr_error function can be used, which will copy the error string into a given buffer (of size bufsiz).

The functions ne_addr_first and ne_addr_next are used to retrieve the Internet addresses associated with an address object which has been successfully resolved. ne_addr_first returns the first address; ne_addr_next returns the next address after the most recent call to ne_addr_next or ne_addr_first, or NULL if there are no more addresses. The ne_inet_addr pointer returned by these functions can be passed to ne_sock_connect to connect a socket.

After the address object has been used, it should be destroyed using ne_addr_destroy.

Return value

ne_addr_resolve returns a pointer to an address object, and never NULL. ne_addr_error returns the buffer parameter .

Examples

The code below prints out the set of addresses associated with the hostname www.google.com.

ne_sock_addr *addr;
char buf[256];

addr = ne_addr_resolve("www.google.com", 0);
if (ne_addr_result(addr)) {
    printf("Could not resolve www.google.com: %s\n",
           ne_addr_error(addr, buf, sizeof buf));
} else {
    const ne_inet_addr *ia;
    printf("www.google.com:");
    for (ia = ne_addr_first(addr); ia != NULL; ia = ne_addr_next(addr)) {
        printf(" %s", ne_iaddr_print(ia, buf, sizeof buf));
    }
    putchar('\n');
}
ne_addr_destroy(addr);

See also

ne_iaddr_print

0707010005ffd0000081a40000000000000000000000014cbd2dce00000f2e000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/doc/neon-0.29.4/html/refi18n.htmlne_i18n_init

Name

ne_i18n_init — functions to initialize internationalization support

Synopsis

#include <ne_i18n.h>
void ne_i18n_init(const char *encoding);
 

Description

The ne_i18n_init function can be used to enable support for translated messages in the neon library. The encoding parameter, if non-NULL, specifies the character encoding required for generated translated string. If it is NULL, the appropriate character encoding for the process locale will be used.

This call is only strictly necessary if either:

  1. neon has been installed into a different prefix than the gettext implementation on which it depends for i18n purposes, or
  2. the caller requires that translated messages are in a particular character encoding.

If ne_i18n_init is never called, the message catalogs will not be found if case (a) applies (and so English error messages will be used), and will use the default character encoding specified by the process locale. The library will otherwise operate correctly.

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 ne_i18n_init with a different encoding parameter.

See also

ne_sock_init

0707010005f006000041ed0000000000000000000000044cbd2dde00000000000000b500010002ffffffffffffffff0000001900000000root/usr/local/share/man0707010005f007000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man10707010005f008000081a40000000000000000000000014cbd2dce00000be9000000b500010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man1/neon-config.1'\" t .\" Title: neon-config .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NEON\-CONFIG" "1" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" neon-config \- script providing information about installed copy of neon library .SH "SYNOPSIS" .HP \w'\fBneon\-config\fR\ 'u \fBneon\-config\fR [\fB\-\-prefix\fR] [[\fB\-\-cflags\fR] | [\fB\-\-libs\fR] | [\fB\-\-la\-file\fR] | [\fB\-\-support\fR\ \fIfeature\fR] | [\fB\-\-help\fR] | [\fB\-\-version\fR]] .SH "DESCRIPTION" .PP The \fBneon\-config\fR script provides information about an installed copy of the neon library\&. The \fB\-\-cflags\fR and \fB\-\-libs\fR options instruct how to compile and link an application against the library; the \fB\-\-version\fR and \fB\-\-support\fR options can help determine whether the library meets the applications requirements\&. .SH "OPTIONS" .PP \fB\-\-cflags\fR .RS 4 Print the flags which should be passed to the C compiler when compiling object files, when the object files use neon header files\&. .RE .PP \fB\-\-libs\fR .RS 4 Print the flags which should be passed to the linker when linking an application which uses the neon library .RE .PP \fB\-\-la\-file\fR .RS 4 Print the location of the libtool library script, libneon\&.la, which can be used to link against neon by applications using libtool\&. .RE .PP \fB\-\-version\fR .RS 4 Print the version of the library .RE .PP \fB\-\-prefix\fR \fIdir\fR .RS 4 If \fIdir\fR is given; relocate output of \fB\-\-cflags\fR and \fB\-\-libs\fR as if neon was installed in given prefix directory\&. Otherwise, print the installation prefix of the library\&. .RE .PP \fB\-\-support\fR \fIfeature\fR .RS 4 The script exits with success if \fIfeature\fR is supported by the library\&. .RE .PP \fB\-\-help\fR .RS 4 Print help message; includes list of known features and whether they are supported or not\&. .RE .SH "EXAMPLE" .PP Below is a Makefile fragment which could be used to build an application against an installed neon library, when the \fBneon\-config\fR script can be found in \fB$PATH\fR\&. .sp .if n \{\ .RS 4 .\} .nf CFLAGS = `neon\-config \-\-cflags` LIBS = `neon\-config \-\-libs` OBJECTS = myapp\&.o TARGET = myapp $(TARGET): $(OBJECTS) $(CC) $(LDFLAGS) \-o $(TARGET) $(OBJECTS) $(LIBS) myapp\&.o: myapp\&.c $(CC) $(CFLAGS) \-c myapp\&.c \-o myapp\&.o .fi .if n \{\ .RE .\} .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f009000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man30707010005f043000081a40000000000000000000000014cbd2dce00000d88000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_set_useragent.3'\" t .\" Title: ne_set_useragent .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SET_USERAGENT" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_set_useragent, ne_set_read_timeout, ne_set_connect_timeout, ne_get_scheme, ne_get_server_hostport \- common properties for HTTP sessions .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_set_useragent('u .BI "void ne_set_useragent(ne_session\ *" "session" ", const\ char\ *" "product" ");" .HP \w'void\ ne_set_read_timeout('u .BI "void ne_set_read_timeout(ne_session\ *" "session" ", int\ " "timeout" ");" .HP \w'void\ ne_set_connect_timeout('u .BI "void ne_set_connect_timeout(ne_session\ *" "session" ", int\ " "timeout" ");" .HP \w'const\ char\ *ne_get_scheme('u .BI "const char *ne_get_scheme(ne_sesssion\ *" "session" ");" .HP \w'const\ char\ *ne_get_server_hostport('u .BI "const char *ne_get_server_hostport(ne_sesssion\ *" "session" ");" .SH "DESCRIPTION" .PP The User\-Agent request header is used to identify the software which generated the request for statistical or debugging purposes\&. neon does not send a User\-Agent header unless a call is made to the \fBne_set_useragent\fR\&. \fBne_set_useragent\fR must be passed a product string conforming to RFC2616\'s product token grammar; of the form "Product/Version"\&. .PP When neon reads from a socket, by default the read operation will time out after 60 seconds, and the request will fail giving an \fBNE_TIMEOUT\fR error\&. To configure this timeout interval, call \fBne_set_read_timeout\fR giving the desired number of seconds as the \fItimeout\fR parameter\&. .PP When a connection is being established to a server, normally only the system\'s TCP timeout handling will apply\&. To configure a specific (and probably shorter) timeout, the \fBne_set_connect_timeout\fR can be used, giving the desired number of seconds as the \fItimeout\fR parameter\&. If 0 is passed, then the default behaviour of using the system TCP timeout will be used\&. .PP The scheme used to initially create the session will be returned by \fBne_get_scheme\fR\&. .PP The hostport pair with which the session is associated will be returned by the \fBne_get_server_hostport\fR; for example www\&.example\&.com:8080\&. Note that the :port will be omitted if the default port for the scheme is used\&. .SH "EXAMPLES" .PP Set a user\-agent string: .sp .if n \{\ .RS 4 .\} .nf ne_session *sess = ne_session_create(\&.\&.\&.); ne_set_useragent(sess, "MyApplication/2\&.1"); .fi .if n \{\ .RE .\} .PP Set a 30 second read timeout: .sp .if n \{\ .RS 4 .\} .nf ne_session *sess = ne_session_create(\&.\&.\&.); ne_set_read_timeout(sess, 30); .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_session_create, ne_set_session_flag\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f00c000081a40000000000000000000000014cbd2dce0000001b000000b500010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_addr_error.3.so man3/ne_addr_resolve.3 0707010005f017000081a40000000000000000000000014cbd2dce00000823000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_buffer_destroy.3'\" t .\" Title: ne_buffer_destroy .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_BUFFER_DESTROY" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_buffer_destroy, ne_buffer_finish \- destroy a buffer object .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_buffer_destroy('u .BI "void ne_buffer_destroy(ne_buffer\ *" "buf" ");" .HP \w'char\ *ne_buffer_finish('u .BI "char *ne_buffer_finish(ne_buffer\ *" "buf" ");" .SH "DESCRIPTION" .PP \fBne_buffer_destroy\fR frees all memory associated with the buffer\&. \fBne_buffer_finish\fR frees the buffer structure, but not the actual string stored in the buffer, which is returned and must be \fBfree\fR()d by the caller\&. .PP Any use of the buffer object after calling either of these functions gives undefined behaviour\&. .SH "RETURN VALUE" .PP \fBne_buffer_finish\fR returns the \fBmalloc\fR\-allocated string stored in the buffer\&. .SH "EXAMPLES" .PP An example use of \fBne_buffer_finish\fR; the \fBduplicate\fR function returns a string made up of \fIn\fR copies of \fIstr\fR: .sp .if n \{\ .RS 4 .\} .nf static char *duplicate(int n, const char *str) { ne_buffer *buf = ne_buffer_create(); while (n\-\-) { ne_buffer_zappend(buf, str); } return ne_buffer_finish(buf); } .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_buffer, ne_buffer_create, ne_buffer_zappend .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f04f000081a40000000000000000000000014cbd2dce00000020000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_ssl_cert_subject.3.so man3/ne_ssl_cert_identity.3 0707010005f00a000081a40000000000000000000000014cbd2dce00000729000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/man/man3/ne_add_request_header.3'\" t .\" Title: ne_add_request_header .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_ADD_REQUEST_HEADE" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_add_request_header, ne_print_request_header \- add headers to a request .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_add_request_header('u .BI "void ne_add_request_header(ne_request\ *" "request" ", const\ char\ *" "name" ", const\ char\ *" "value" ");" .HP \w'void\ ne_print_request_header('u .BI "void ne_print_request_header(ne_request\ *" "request" ", const\ char\ *" "name" ", const\ char\ *" "format" ", \&.\&.\&.);" .SH "DESCRIPTION" .PP The functions \fBne_add_request_header\fR and \fBne_print_request_header\fR can be used to add headers to a request, before it is sent\&. .PP \fBne_add_request_header\fR simply adds a header of given \fIname\fR, with given \fIvalue\fR\&. .PP \fBne_print_request_header\fR adds a header of given \fIname\fR, taking the value from the \fBprintf\fR\-like \fIformat\fR string parameter and subsequent variable\-length argument list\&. .SH "SEE ALSO" .PP ne_request_create .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f015000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_buffer_concat.3.so man3/ne_buffer_append.3 0707010005f055000081a40000000000000000000000014cbd2dce0000001f000000b500010002ffffffffffffffff0000003500000000root/usr/local/share/man/man3/ne_ssl_clicert_owner.3.so man3/ne_ssl_clicert_read.3 0707010005f04c000081a40000000000000000000000014cbd2dce00000020000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_ssl_cert_issuer.3.so man3/ne_ssl_cert_identity.3 0707010005f03d000081a40000000000000000000000014cbd2dce000008fe000000b500010002ffffffffffffffff0000003b00000000root/usr/local/share/man/man3/ne_set_request_body_buffer.3'\" t .\" Title: ne_set_request_body_buffer .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SET_REQUEST_BODY_" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_set_request_body_buffer, ne_set_request_body_fd, ne_set_request_body_fd64 \- include a message body with a request .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_set_request_body_buffer('u .BI "void ne_set_request_body_buffer(ne_request\ *" "req" ", const\ char\ *" "buf" ", size_t\ " "count" ");" .HP \w'int\ ne_set_request_body_fd('u .BI "int ne_set_request_body_fd(ne_request\ *" "req" ", int\ " "fd" ", off_t\ " "begin" ", off_t\ " "length" ");" .SH "DESCRIPTION" .PP The \fBne_set_request_body_buffer\fR function specifies that a message body should be included with the body, which is stored in the \fIcount\fR bytes buffer \fIbuf\fR\&. .PP The \fBne_set_request_body_fd\fR function can be used to include a message body with a request which is read from a file descriptor\&. The body is read from the file descriptor \fIfd\fR, which must be a associated with a seekable file (not a pipe, socket, or FIFO)\&. \fIcount\fR bytes are read, beginning at offset \fIbegin\fR (hence, passing \fIbegin\fR as zero means the body is read from the beginning of the file)\&. .PP For all the above functions, the source of the request body must survive until the request has been dispatched; neither the memory buffer passed to \fBne_set_request_body_buffer\fR nor the file descriptor passed to \fBne_set_request_body_fd\fR are copied internally\&. .SH "SEE ALSO" .PP ne_request_create .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f064000081a40000000000000000000000014cbd2dce000020e5000000b500010002ffffffffffffffff0000002500000000root/usr/local/share/man/man3/neon.3'\" t .\" Title: neon .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NEON" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" neon \- HTTP and WebDAV client library .SH "DESCRIPTION" .PP neon is an HTTP and WebDAV client library\&. The major abstractions exposed are the HTTP \fIsession\fR, created by ne_session_create; and the HTTP \fIrequest\fR, created by ne_request_create\&. HTTP authentication is handled transparently for server and proxy servers, see ne_set_server_auth; complete SSL/TLS support is also included, see ne_ssl_set_verify\&. .SH "CONVENTIONS" .PP Some conventions are used throughout the neon API, to provide a consistent and simple interface; these are documented below\&. .SS "Thread\-safeness and global initialization" .PP 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 \fBgetaddrinfo\fR interface, which neon supports; some others implement \fBgethostbyname\fR using thread\-local storage\&. .PP To allow thread\-safe use of SSL in the OpenSSL and GnuTLS libraries neon must be configured using the \-\-enable\-threadsafe\-ssl; if this is done, locking callbacks will be registered by ne_sock_init; note that care must be exercised if neon is used in conjunction with another library which uses OpenSSL or GnuTLS\&. .PP Some platforms and libraries used by neon require global initialization before use; notably: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} The SIGPIPE signal disposition must be set to \fIignored\fR or otherwise handled to avoid process termination when writing to a socket which has been shutdown by the peer\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} OpenSSL and GnuTLS require global initialization to load shared lookup tables\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} The Win32 socket library requires initialization before use\&. .RE .sp .RE The ne_sock_init function should be called before any other use of neon to perform any necessary initialization needed for the particular platform\&. Applications wishing to perform all the necessary process\-global initialization steps themselves may omit to call ne_sock_init (and ne_sock_exit); neon neither checks whether these functions are called nor calls them itself\&. .PP For some applications and configurations it may be necessary to call ne_i18n_init to initialize the support for internationalization in neon\&. .SS "Asynchronous signal safety" .PP No function in neon is defined to be \(lqasync\-signal safe\(rq \- 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\&. .SS "Functions using global state" .PP Any function in neon may modify the errno global variable as a side\-effect\&. Except where explicitly documented, the value of errno is unspecified after any neon function call\&. .PP Other than in the use of errno, the only functions which use or modify process\-global state in neon are as follows: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ne_sock_init, ne_i18n_init, and ne_sock_exit, as described above .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBne_debug_init\fR and \fBne_debug\fR, if enabled at compile time; for debugging output .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ne_oom_callback for installing a process\-global callback to be invoked on \fBmalloc\fR failure .RE .SS "Namespaces" .PP 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 \fInamespace prefix\fR\&. An application which ensures it uses no names with these prefixes is then guaranteed to avoid such collisions\&. .PP The neon library reserves the use of the namespace prefixes ne_ and NE_\&. The libraries used by neon may also reserve certain namespaces; collisions between these libraries and a neon\-based application will not be detected at compile time, since the underlying library interfaces are not exposed through the neon header files\&. Such collisions can only be detected at link time, when the linker attempts to resolve symbols\&. The following list documents some of the namespaces claimed by libraries used by neon; this list may be incomplete\&. .PP SSL, ssl, TLS, tls, ERR_, BIO_, d2i_, i2d_, ASN1_ .RS 4 Some of the many prefixes used by the OpenSSL library; little attempt has been made to keep exported symbols within any particular prefixes for this library\&. .RE .PP gnutls_, gcry_, gpg_ .RS 4 Namespaces used by the GnuTLS library (and dependencies thereof) .RE .PP XML_, Xml[A\-Z] .RS 4 Namespaces used by the expat library\&. .RE .PP xml[A\-Z], html[A\-Z], docb[A\-Z] .RS 4 Namespaces used by the libxml2 library; a relatively small number of symbols are used without these prefixes\&. .RE .PP inflate, deflate, crc32, compress, uncompres, adler32, zlib .RS 4 Namespaces used by the zlib library; a relatively small number of symbols are used without these prefixes\&. .RE .PP krb5, gss, GSS, asn1, decode_krb5, encode_krb5, profile, mit .RS 4 Some of the prefixes used by the MIT GSSAPI library and dependencies thereof; a number of symbols lie outside these prefixes\&. .RE .PP pakchois_ .RS 4 Namespace used by the pakchois library\&. .RE .PP px_ .RS 4 Namespace used by the libproxy library\&. .RE .SS "Argument validation" .PP neon does not attempt to validate that the parameters passed to functions conform to the API (for instance, checking that pointer arguments are not NULL)\&. Any use of the neon API which is not documented to produce a certain behaviour results is said to produce \fIundefined behaviour\fR; it is likely that neon will segfault under these conditions\&. .SS "URI paths, WebDAV metadata" .PP The path strings passed to any function must be \fIURI\-encoded\fR 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\&. .SS "User interaction" .PP As a pure library interface, neon will never produce output on \fBstdout\fR or \fBstderr\fR; all user interaction is the responsibilty of the application\&. .SS "Memory handling" .PP neon does not attempt to cope gracefully with an out\-of\-memory situation; instead, by default, the \fBabort\fR function is called to immediately terminate the process\&. An application may register a custom function which will be called before \fBabort\fR in such a situation; see ne_oom_callback\&. .SS "Callbacks and userdata" .PP Whenever a callback is registered, a userdata pointer is also used to allow the application to associate a context with the callback\&. The userdata is of type \fBvoid *\fR, allowing any pointer to be used\&. .SS "Large File Support" .PP Since version 0\&.27\&.0, neon transparently uses the "LFS transitional" interfaces in places where file\-backed file descriptors are manipulated\&. This means files larger than 2GiB can be handled on platforms with a native 32\-bit off_t type, where LFS support is available\&. .PP Some interfaces use the ne_off_t type, which is defined to be either off_t or off64_t according to whether LFS support is detected at build time\&. neon does not use or require the \-D_FILE_OFFSET_BITS=64 macro definition\&. .SH "SEE ALSO" .PP ne_session_create(3), ne_oom_callback .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f062000081a40000000000000000000000014cbd2dce000005a6000000b500010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_xml_create.3'\" t .\" Title: ne_xml_create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_XML_CREATE" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_xml_create, ne_xml_destroy \- create and destroy an XML parser .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'ne_xml_parser\ *ne_xml_create('u .BI "ne_xml_parser *ne_xml_create(void);" .HP \w'void\ ne_xml_destroy('u .BI "void ne_xml_destroy(ne_xml_parser\ *" "parser" ");" .SH "DESCRIPTION" .PP The \fBne_xml_create\fR function creates an XML parser object, which can be used for parsing XML documents using stacked SAX handlers\&. .SH "RETURN VALUE" .PP \fBne_xml_create\fR returns a pointer to an XML parser object, and never NULL .SH "SEE ALSO" .PP XXX .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f024000081a40000000000000000000000014cbd2dce0000001f000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_get_session_flag.3.so man3/ne_set_session_flag.3 0707010005f052000081a40000000000000000000000014cbd2dce0000001f000000b500010002ffffffffffffffff0000003900000000root/usr/local/share/man/man3/ne_ssl_clicert_encrypted.3.so man3/ne_ssl_clicert_read.3 0707010005f040000081a40000000000000000000000014cbd2dce000008c0000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_set_request_flag.3'\" t .\" Title: ne_set_request_flag .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SET_REQUEST_FLAG" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_set_request_flag, ne_get_request_flag \- set and retrieve per\-request flags .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_set_request_flag('u .BI "void ne_set_request_flag(ne_request\ *" "req" ", ne_request_flag\ " "flag" ", int\ " "value" ");" .HP \w'int\ ne_get_request_flag('u .BI "int ne_get_request_flag(ne_request\ *" "req" ", ne_request_flag\ " "flag" ");" .SH "DESCRIPTION" .PP The \fBne_set_request_flag\fR function enables or disables a per\-request flag\&. Passing a non\-zero \fIvalue\fR argument enables the flag, and zero disables it\&. .PP The following flags are defined: .PP \fBNE_REQFLAG_EXPECT100\fR .RS 4 enable this flag to use the "Expect: 100\-continue" feature of HTTP/1\&.1, which allows the server to process request headers without reading the entire request body\&. This saves time and bandwidth if the server gives an authentication challenge (requiring the request to be resent), but has interoperability problems with some older servers\&. .RE .PP \fBNE_REQFLAG_IDEMPOTENT\fR .RS 4 disable this flag if the request uses a non\-idempotent method such as POST .RE .SH "RETURN VALUE" .PP The \fBne_get_request_flag\fR 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\&. .SH "SEE ALSO" .PP ne_request_create\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f00b000081a40000000000000000000000014cbd2dce0000001b000000b500010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_addr_destroy.3.so man3/ne_addr_resolve.3 0707010005f011000081a40000000000000000000000014cbd2dce0000077a000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_buffer.3'\" t .\" Title: ne_buffer .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_BUFFER" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_buffer \- string buffer handling .SH "SYNOPSIS" .sp .ft B .nf #include typedef struct { char *data; size_t used; size_t length; } ne_buffer; .fi .ft .SH "DESCRIPTION" .PP The \fBne_buffer\fR 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 \fIused\fR field\&. The current size of memory allocated is given by the \fIlength\fR field\&. It is not recommended that the fields of a buffer are manipulated directly\&. The \fIdata\fR pointer may change when the buffer is modified\&. .PP A buffer is created using ne_buffer_create or ne_buffer_ncreate, and destroyed using ne_buffer_destroy or ne_buffer_finish\&. The functions ne_buffer_append, ne_buffer_zappend and ne_buffer_concat are used to append data to a buffer\&. .PP If the string referenced by the \fIdata\fR pointer is modified directly (rather than using one of the functions listed above), \fBne_buffer_altered\fR must be called\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f01b000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_buffer_zappend.3.so man3/ne_buffer_append.3 0707010005f02d000081a40000000000000000000000014cbd2dce000008bb000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_malloc.3'\" t .\" Title: ne_malloc .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_MALLOC" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_malloc, ne_calloc, ne_realloc, ne_strdup, ne_strndup, ne_oom_callback \- memory allocation wrappers .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ *ne_malloc('u .BI "void *ne_malloc(size_t\ " "size" ");" .HP \w'void\ *ne_calloc('u .BI "void *ne_calloc(size_t\ " "size" ");" .HP \w'void\ *ne_realloc('u .BI "void *ne_realloc(void\ *" "size" ", size_t\ " "len" ");" .HP \w'char\ *ne_strdup('u .BI "char *ne_strdup(const\ char\ *" "s" ");" .HP \w'char\ *ne_strndup('u .BI "char *ne_strndup(const\ char\ *" "s" ", size_t\ " "size" ");" .HP \w'void\ ne_oom_callback('u .BI "void ne_oom_callback(void\ (*" "callback" ")(void));" .SH "DESCRIPTION" .PP The functions \fBne_malloc\fR, \fBne_calloc\fR, \fBne_realloc\fR, \fBne_strdup\fR and \fBne_strdnup\fR provide wrappers for the equivalent functions in the standard C library\&. The wrappers provide the extra guarantee that if the C library equivalent returns NULL when no memory is available, an optional callback will be called, and the library will then call \fBabort\fR()\&. .PP \fBne_oom_callback\fR registers a callback which will be invoked if an out of memory error is detected\&. .SH "NOTES" .PP If the operating system uses optimistic memory allocation, the C library memory allocation routines will not return NULL, so it is not possible to gracefully handle memory allocation failures\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f034000081a40000000000000000000000014cbd2dce0000001d000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_request_dispatch.3.so man3/ne_request_create.3 0707010005f00e000081a40000000000000000000000014cbd2dce0000001b000000b500010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_addr_next.3.so man3/ne_addr_resolve.3 0707010005f01f000081a40000000000000000000000014cbd2dce000009c8000000b500010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_get_error.3'\" t .\" Title: ne_get_error .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_GET_ERROR" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_get_error, ne_set_error \- error handling for HTTP sessions .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'const\ char\ *ne_get_error('u .BI "const char *ne_get_error(ne_sesssion\ *" "session" ");" .HP \w'void\ ne_set_error('u .BI "void ne_set_error(ne_sesssion\ *" "session" ", const\ char\ *" "format" ", \&.\&.\&.);" .SH "DESCRIPTION" .PP The session error string is used to store any human\-readable error information associated with any errors which occur whilst using the HTTP session\&. .PP The \fBne_get_error\fR function returns the current session error string\&. This string persists only until it is changed by a subsequent operation on the session\&. If localisation was enabled at build time, and if necessary enabled at run\-time if necessary using ne_i18n_init, the returned string may have been translated into the user\'s current locale\&. .PP The \fBne_set_error\fR function can be used to set a new session error string, using a \fBprintf\fR\-style format string interface\&. .SH "RETURN VALUE" .PP \fBne_set_error\fR returns a constant NUL\-terminated string\&. In the default English locale, the returned string will \fInot\fR have a terminating \(lq\&.\(rq period character\&. .SH "EXAMPLES" .PP Retrieve the current error string: .sp .if n \{\ .RS 4 .\} .nf ne_session *sess = ne_session_create(\&.\&.\&.); \&.\&.\&. printf("Error was: %s\en", ne_get_error(sess)); .fi .if n \{\ .RE .\} .PP Set a new error string: .sp .if n \{\ .RS 4 .\} .nf ne_session *sess = ne_session_create(\&.\&.\&.); \&.\&.\&. ne_set_error(sess, "Response missing header %s", "somestring"); .fi .if n \{\ .RE .\} .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f058000081a40000000000000000000000014cbd2dce00000750000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/man/man3/ne_ssl_readable_dname.3'\" t .\" Title: ne_ssl_dname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SSL_DNAME" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_ssl_readable_dname, ne_ssl_dname_cmp \- SSL distinguished name handling .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'const\ char\ *ne_ssl_readable_dname('u .BI "const char *ne_ssl_readable_dname(const\ ne_ssl_dname\ *" "dname" ");" .HP \w'int\ ne_ssl_dname_cmp('u .BI "int ne_ssl_dname_cmp(const\ ne_ssl_dname\ *" "dn1" ", const\ ne_ssl_dname\ *" "dn2" ");" .SH "DESCRIPTION" .PP The \fBne_ssl_readable_dname\fR function creates a single\-line, human\-readable string out of an \fBne_ssl_dname\fR object\&. The returned string is \fBmalloc\fR()\-allocated, and must be \fBfree\fR()d by the caller\&. .PP The \fBne_ssl_dname_cmp\fR function compares two distinguished names, and returns zero if they are equal, or non\-zero otherwise\&. .SH "RETURN VALUE" .PP \fBne_ssl_readable_dname\fR returns a \fBmalloc\fR\-allocated string, and never NULL\&. .SH "EXAMPLES" .PP See ne_ssl_cert_subject for an example use of \fBne_ssl_readable_dname\fR\&. .SH "SEE ALSO" .PP ne_ssl_cert_subject .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f05f000081a40000000000000000000000014cbd2dce0000088e000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/man/man3/ne_token.3'\" t .\" Title: ne_token .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_TOKEN" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_token, ne_qtoken \- string tokenizers .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'char\ *ne_token('u .BI "char *ne_token(char\ **" "str" ", char\ " "sep" ");" .HP \w'char\ *ne_qtoken('u .BI "char *ne_qtoken(char\ **" "str" ", char\ " "sep" ", const\ char\ *" "quotes" ");" .SH "DESCRIPTION" .PP \fBne_token\fR and \fBne_qtoken\fR tokenize the string at the location stored in the pointer \fIstr\fR\&. Each time the function is called, it returns the next token, and modifies the \fIstr\fR pointer to point to the remainer of the string, or NULL if there are no more tokens in the string\&. A token is delimited by the separator character \fIsep\fR; if \fBne_qtoken\fR is used any quoted segments of the string are skipped when searching for a separator\&. A quoted segment is enclosed in a pair of one of the characters given in the \fIquotes\fR string\&. .PP The string being tokenized is modified each time the tokenizing function is called; replacing the next separator character with a NUL terminator\&. .SH "EXAMPLES" .PP The following function prints out each token in a comma\-separated string \fIlist\fR, which is modified in\-place: .sp .if n \{\ .RS 4 .\} .nf static void splitter(char *list) { do { printf("Token: %s\en", ne_token(&list, \',\')); while (list); } .fi .if n \{\ .RE .\} .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f038000081a40000000000000000000000014cbd2dce0000001d000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_session_proxy.3.so man3/ne_session_create.3 0707010005f01a000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_buffer_ncreate.3.so man3/ne_buffer_create.3 0707010005f054000081a40000000000000000000000014cbd2dce0000001f000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_ssl_clicert_name.3.so man3/ne_ssl_clicert_read.3 0707010005f016000081a40000000000000000000000014cbd2dce00000640000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_buffer_create.3'\" t .\" Title: ne_buffer_create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_BUFFER_CREATE" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_buffer_create, ne_buffer_ncreate \- create a string buffer .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'ne_buffer\ *ne_buffer_create('u .BI "ne_buffer *ne_buffer_create(void);" .HP \w'ne_buffer\ *ne_buffer_ncreate('u .BI "ne_buffer *ne_buffer_ncreate(size_t\ " "size" ");" .SH "DESCRIPTION" .PP \fBne_buffer_create\fR creates a new buffer object, with an implementation\-defined initial size\&. \fBne_buffer_ncreate\fR creates an \fBne_buffer\fR where the minimum initial size is given in the \fIsize\fR parameter\&. The buffer created will contain the empty string ("")\&. .SH "RETURN VALUE" .PP Both functions return a pointer to a new buffer object, and never NULL\&. .SH "SEE ALSO" .PP ne_buffer .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f013000081a40000000000000000000000014cbd2dce00000a17000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_buffer_append.3'\" t .\" Title: ne_buffer_append .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_BUFFER_APPEND" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_buffer_append, ne_buffer_zappend, ne_buffer_concat \- append data to a string buffer .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_buffer_append('u .BI "void ne_buffer_append(ne_buffer\ *" "buf" ", const\ char\ *" "string" ", size_t\ " "len" ");" .HP \w'void\ ne_buffer_zappend('u .BI "void ne_buffer_zappend(ne_buffer\ *" "buf" ", const\ char\ *" "string" ");" .HP \w'void\ ne_buffer_concat('u .BI "void ne_buffer_concat(ne_buffer\ *" "buf" ", const\ char\ *" "str" ", \&.\&.\&.);" .SH "DESCRIPTION" .PP The \fBne_buffer_append\fR and \fBne_buffer_zappend\fR functions append a string to the end of a buffer; extending the buffer as necessary\&. The \fIlen\fR passed to \fBne_buffer_append\fR specifies the length of the string to append; there must be no NUL terminator in the first \fIlen\fR bytes of the string\&. \fBne_buffer_zappend\fR must be passed a NUL\-terminated string\&. .PP The \fBne_buffer_concat\fR function takes a variable\-length argument list following \fIstr\fR; each argument must be a \fBchar *\fR pointer to a NUL\-terminated string\&. A NULL pointer must be given as the last argument to mark the end of the list\&. The strings (including \fIstr\fR) are appended to the buffer in the order given\&. None of the strings passed to \fBne_buffer_concat\fR are modified\&. .SH "EXAMPLES" .PP The following code will output "Hello, world\&. And goodbye\&."\&. .sp .if n \{\ .RS 4 .\} .nf ne_buffer *buf = ne_buffer_create(); ne_buffer_zappend(buf, "Hello"); ne_buffer_concat(buf, ", world\&. ", "And ", "goodbye\&.", NULL); puts(buf\->data); ne_buffer_destroy(buf); .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_buffer, ne_buffer_create, ne_buffer_destroy .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f035000081a40000000000000000000000014cbd2dce00000022000000b500010002ffffffffffffffff0000003b00000000root/usr/local/share/man/man3/ne_response_header_iterate.3.so man3/ne_get_response_header.3 0707010005f012000081a40000000000000000000000014cbd2dce0000001b000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_buffer_altered.3.so man3/ne_buffer_clear.3 0707010005f025000081a40000000000000000000000014cbd2dce00000781000000b500010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_get_status.3'\" t .\" Title: ne_get_status .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_GET_STATUS" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_get_status \- retrieve HTTP response status for request .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'const\ ne_status\ *ne_get_status('u .BI "const ne_status *ne_get_status(const\ ne_request\ *" "request" ");" .SH "DESCRIPTION" .PP The \fBne_get_status\fR function returns a pointer to the HTTP status object giving the result of a request\&. The object returned only becomes valid once the request has been \fIsuccessfully\fR dispatched (the return value of \fBne_request_dispatch\fR or \fBne_begin_request\fR was zero)\&. The object remains valid until the associated request object is destroyed\&. .SH "SEE ALSO" .PP ne_status, ne_request_create .SH "EXAMPLE" .PP Display the response status code of applying the HEAD method to some resource\&. .sp .if n \{\ .RS 4 .\} .nf ne_request *req = ne_request_create(sess, "HEAD", "/foo/bar"); if (ne_request_dispatch(req)) /* handle errors\&.\&.\&. */ else printf("Response status code was %d\en", ne_get_status(req)\->code); ne_request_destroy(req); .fi .if n \{\ .RE .\} .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f01e000081a40000000000000000000000014cbd2dce0000001e000000b500010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_forget_auth.3.so man3/ne_set_server_auth.3 0707010005f048000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_ssl_cert_export.3.so man3/ne_ssl_cert_read.3 0707010005f03f000081a40000000000000000000000014cbd2dce00000026000000b500010002ffffffffffffffff0000003900000000root/usr/local/share/man/man3/ne_set_request_body_fd64.3.so man3/ne_set_request_body_buffer.3 0707010005f049000081a40000000000000000000000014cbd2dce0000001b000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_ssl_cert_free.3.so man3/ne_ssl_cert_cmp.3 0707010005f027000081a40000000000000000000000014cbd2dce0000092f000000b500010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_i18n_init.3'\" t .\" Title: ne_i18n_init .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_I18N_INIT" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_i18n_init \- functions to initialize internationalization support .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_i18n_init('u .BI "void ne_i18n_init(const\ char\ *" "encoding" ");" .SH "DESCRIPTION" .PP The \fBne_i18n_init\fR function can be used to enable support for translated messages in the neon library\&. The \fIencoding\fR parameter, if non\-NULL, specifies the character encoding required for generated translated string\&. If it is NULL, the appropriate character encoding for the process locale will be used\&. .PP This call is only strictly necessary if either: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} neon has been installed into a different prefix than the gettext implementation on which it depends for i18n purposes, or .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} the caller requires that translated messages are in a particular character encoding\&. .RE .PP If \fBne_i18n_init\fR is never called, the message catalogs will not be found if case (a) applies (and so English error messages will be used), and will use the default character encoding specified by the process locale\&. The library will otherwise operate correctly\&. .PP 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 \fBne_i18n_init\fR with a different encoding parameter\&. .SH "SEE ALSO" .PP ne_sock_init .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f00f000081a40000000000000000000000014cbd2dce00000fd0000000b500010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_addr_resolve.3'\" t .\" Title: ne_addr_resolve .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_ADDR_RESOLVE" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_addr_resolve, ne_addr_result, ne_addr_first, ne_addr_next, ne_addr_error, ne_addr_destroy \- functions to resolve hostnames to addresses .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'ne_sock_addr\ *ne_addr_resolve('u .BI "ne_sock_addr *ne_addr_resolve(const\ char\ *" "hostname" ", int\ " "flags" ");" .HP \w'int\ ne_addr_result('u .BI "int ne_addr_result(const\ ne_sock_addr\ *" "addr" ");" .HP \w'const\ ne_inet_addr\ *ne_addr_first('u .BI "const ne_inet_addr *ne_addr_first(ne_sock_addr\ *" "addr" ");" .HP \w'const\ ne_inet_addr\ *ne_addr_next('u .BI "const ne_inet_addr *ne_addr_next(ne_sock_addr\ *" "addr" ");" .HP \w'char\ *ne_addr_error('u .BI "char *ne_addr_error(const\ ne_sock_addr\ *" "addr" ", char\ *" "buffer" ", size_t\ " "bufsiz" ");" .HP \w'void\ ne_addr_destroy('u .BI "void ne_addr_destroy(ne_sock_addr\ *" "addr" ");" .SH "DESCRIPTION" .PP The \fBne_addr_resolve\fR function resolves the given \fIhostname\fR, returning an \fBne_sock_addr\fR object representing the address (or addresses) associated with the hostname\&. The \fIflags\fR parameter is currently unused, and must be passed as 0\&. .PP The \fIhostname\fR passed to \fBne_addr_resolve\fR can be a DNS hostname (e\&.g\&. "www\&.example\&.com") or an IPv4 dotted quad (e\&.g\&. "192\&.0\&.34\&.72"); or, on systems which support IPv6, an IPv6 hex address, which may be enclosed in brackets, e\&.g\&. "[::1]"\&. .PP To determine whether the hostname was successfully resolved, the \fBne_addr_result\fR function is used, which returns non\-zero if an error occurred\&. If an error did occur, the \fBne_addr_error\fR function can be used, which will copy the error string into a given \fIbuffer\fR (of size \fIbufsiz\fR)\&. .PP The functions \fBne_addr_first\fR and \fBne_addr_next\fR are used to retrieve the Internet addresses associated with an address object which has been successfully resolved\&. \fBne_addr_first\fR returns the first address; \fBne_addr_next\fR returns the next address after the most recent call to \fBne_addr_next\fR or \fBne_addr_first\fR, or NULL if there are no more addresses\&. The \fBne_inet_addr\fR pointer returned by these functions can be passed to \fBne_sock_connect\fR to connect a socket\&. .PP After the address object has been used, it should be destroyed using \fBne_addr_destroy\fR\&. .SH "RETURN VALUE" .PP \fBne_addr_resolve\fR returns a pointer to an address object, and never NULL\&. \fBne_addr_error\fR returns the \fIbuffer\fR parameter \&. .SH "EXAMPLES" .PP The code below prints out the set of addresses associated with the hostname www\&.google\&.com\&. .sp .if n \{\ .RS 4 .\} .nf ne_sock_addr *addr; char buf[256]; addr = ne_addr_resolve("www\&.google\&.com", 0); if (ne_addr_result(addr)) { printf("Could not resolve www\&.google\&.com: %s\en", ne_addr_error(addr, buf, sizeof buf)); } else { const ne_inet_addr *ia; printf("www\&.google\&.com:"); for (ia = ne_addr_first(addr); ia != NULL; ia = ne_addr_next(addr)) { printf(" %s", ne_iaddr_print(ia, buf, sizeof buf)); } putchar(\'\en\'); } ne_addr_destroy(addr); .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_iaddr_print .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f033000081a40000000000000000000000014cbd2dce0000001d000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_request_destroy.3.so man3/ne_request_create.3 0707010005f014000081a40000000000000000000000014cbd2dce00000754000000b500010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_buffer_clear.3'\" t .\" Title: ne_buffer_clear .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_BUFFER_CLEAR" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_buffer_clear, ne_buffer_grow, ne_buffer_altered \- clear, grow, or mark as altered a string buffer .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_buffer_clear('u .BI "void ne_buffer_clear(ne_buffer\ *" "buf" ");" .HP \w'void\ ne_buffer_altered('u .BI "void ne_buffer_altered(ne_buffer\ *" "buf" ");" .HP \w'void\ ne_buffer_grow('u .BI "void ne_buffer_grow(ne_buffer\ *" "buf" ", size_t\ " "size" ");" .SH "DESCRIPTION" .PP The \fBne_buffer_clear\fR function sets the string stored in \fIbuf\fR to be the empty string ("")\&. .PP The \fBne_buffer_altered\fR function must be used after the string stored in the buffer \fIbuf\fR is modified by directly rather than using ne_buffer_append, ne_buffer_zappend or ne_buffer_concat\&. .PP The \fBne_buffer_grow\fR function ensures that at least \fIsize\fR bytes are allocated for the string; this can be used if a large amount of data is going to be appended to the buffer and may result in more efficient memory allocation\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f056000081a40000000000000000000000014cbd2dce00001234000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_ssl_clicert_read.3'\" t .\" Title: ne_ssl_client_cert .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SSL_CLIENT_CERT" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" 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 .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'ne_ssl_client_cert\ *ne_ssl_clicert_read('u .BI "ne_ssl_client_cert *ne_ssl_clicert_read(const\ char\ *" "filename" ");" .HP \w'const\ char\ *ne_ssl_clicert_name('u .BI "const char *ne_ssl_clicert_name(const\ ne_ssl_client_cert\ *" "ccert" ");" .HP \w'int\ ne_ssl_clicert_encrypted('u .BI "int ne_ssl_clicert_encrypted(const\ ne_ssl_client_cert\ *" "ccert" ");" .HP \w'int\ ne_ssl_clicert_decrypt('u .BI "int ne_ssl_clicert_decrypt(ne_ssl_client_cert\ *" "ccert" ", const\ char\ *" "password" ");" .HP \w'const\ ne_ssl_certificate\ *ne_ssl_clicert_owner('u .BI "const ne_ssl_certificate *ne_ssl_clicert_owner(const\ ne_ssl_client_cert\ *" "ccert" ");" .HP \w'void\ ne_ssl_clicert_free('u .BI "void ne_ssl_clicert_free(ne_ssl_client_cert\ *" "ccert" ");" .SH "DESCRIPTION" .PP The \fBne_ssl_clicert_read\fR function reads a client certificate from a PKCS#12\-formatted file, and returns an \fBne_ssl_client_cert\fR object\&. If the client certificate is encrypted, it must be decrypted before it is used\&. An \fBne_ssl_client_cert\fR object holds a client certificate and the associated private key, not just a certificate; the term "client certificate" will used to refer to this pair\&. .PP A client certificate can be in one of two states: \fIencrypted\fR or \fIdecrypted\fR\&. The \fBne_ssl_clicert_encrypted\fR function will return non\-zero if the client certificate is in the \fIencrypted\fR state\&. A client certificate object returned by \fBne_ssl_clicert_read\fR may be initially in either state, depending on whether the file was encrypted or not\&. .PP \fBne_ssl_clicert_decrypt\fR can be used to decrypt a client certificate using the appropriate password\&. This function must only be called if the object is in the \fIencrypted\fR state; if decryption fails, the certificate state does not change, so decryption can be attempted more than once using different passwords\&. .PP A client certificate can be given a "friendly name" when it is created; \fBne_ssl_clicert_name\fR will return this name (or NULL if no friendly name was specified)\&. \fBne_ssl_clicert_name\fR can be used when the client certificate is in either the encrypted or decrypted state, and will return the same string for the lifetime of the object\&. .PP The function \fBne_ssl_clicert_owner\fR returns the certificate part of the client certificate; it must only be called if the client certificate is in the \fIdecrypted\fR state\&. .PP When the client certificate is no longer needed, the \fBne_ssl_clicert_free\fR function should be used to destroy the object\&. .SH "RETURN VALUE" .PP \fBne_ssl_clicert_read\fR returns a client certificate object, or NULL if the file could not be read\&. \fBne_ssl_clicert_encrypted\fR returns zero if the object is in the decrypted state, or non\-zero if it is in the encrypted state\&. \fBne_ssl_clicert_name\fR returns a NUL\-terminated friendly name string, or NULL\&. \fBne_ssl_clicert_owner\fR returns a certificate object\&. .SH "EXAMPLES" .PP The following code reads a client certificate and decrypts it if necessary, then loads it into an HTTP session\&. .sp .if n \{\ .RS 4 .\} .nf ne_ssl_client_cert *ccert; ccert = ne_ssl_clicert_read("/path/to/client\&.p12"); if (ccert == NULL) { /* handle error\&.\&.\&. */ } else if (ne_ssl_clicert_encrypted(ccert)) { char *password = prompt_for_password(); if (ne_ssl_clicert_decrypt(ccert, password)) { /* could not decrypt! handle error\&.\&.\&. */ } } ne_ssl_set_clicert(sess, ccert); .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_ssl_cert_read .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f022000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_get_scheme.3.so man3/ne_set_useragent.3 0707010005f046000081a40000000000000000000000014cbd2dce0000106a000000b500010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_sock_init.3'\" t .\" Title: ne_sock_init .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SOCK_INIT" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_sock_init, ne_sock_exit \- perform library initialization .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'int\ ne_sock_init('u .BI "int ne_sock_init(void);" .HP \w'void\ ne_sock_exit('u .BI "void ne_sock_exit(void);" .SH "DESCRIPTION" .PP 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 \fBne_sock_init\fR function must be called before any other library functions are used\&. .PP Once all use of neon is complete, \fBne_sock_exit\fR can be called to perform de\-initialization of socket or SSL libraries, if necessary\&. Uses of \fBne_sock_init\fR and \fBne_sock_exit\fR are "reference counted"; if N calls to \fBne_sock_init\fR are made, only the Nth call to \fBne_sock_exit\fR will have effect\&. .PP \fBne_sock_init\fR will set the disposition of the SIGPIPE signal to \fIignored\fR\&. No change is made to the SIGPIPE disposition by \fBne_sock_exit\fR\&. .PP Both the SSL libraries supported by neon \(em OpenSSL and GnuTLS \(em require callbacks to be registered to allow thread\-safe use of SSL\&. These callbacks are stored as global variables and so their state persists for as long as the library in question is loaded into the process\&. If multiple users of the SSL library exist within the process, this can be problematic, particularly if one is dynamically loaded (and may subsequently be unloaded)\&. .PP If neon is configured using the \-\-enable\-threadsafe\-ssl flag, thread\-safe SSL support will be enabled automatically, as covered in the following section\&. Otherwise, it is not safe to use neon with SSL in a multi\-threaded process\&. The ne_has_support function can be used to determine whether neon is built to enable thread\-safety support in the SSL library\&. .SS "Thread\-safe SSL with OpenSSL" .PP neon follows two simple rules when dealing with the OpenSSL locking callbacks: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBne_sock_init\fR will set thread\-safety locking callbacks if and only if no locking callbacks are already registered\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBne_sock_exit\fR will unset the thread\-safety locking callbacks if and only if the locking callbacks registered are those registered by \fBne_sock_init\fR\&. .RE .sp .RE Applications and libraries should be able to co\-operate to ensure that SSL use is always thread\-safe if similar rules are always followed\&. .SS "Thread\-safe SSL with GnuTLS" .PP The cryptography library used by GnuTLS, libgcrypt, only supports an initialization operation to register thread\-safety callbacks\&. \fBne_sock_init\fR will register the thread\-safe locking callbacks on first use; \fBne_sock_exit\fR cannot unregister them\&. If multiple users of GnuTLS are present within the process, it is 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)\&. .SH "RETURN VALUE" .PP \fBne_sock_init\fR returns zero on success, or non\-zero on error\&. If an error occurs, no further use of the neon library should be attempted\&. .SH "SEE ALSO" .PP neon(3), ne_has_support(3) .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f039000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_set_connect_timeout.3.so man3/ne_set_useragent.3 0707010005f032000081a40000000000000000000000014cbd2dce000012f3000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_request_create.3'\" t .\" Title: ne_request_create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_REQUEST_CREATE" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_request_create, ne_request_dispatch, ne_request_destroy \- low\-level HTTP request handling .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'ne_request\ *ne_request_create('u .BI "ne_request *ne_request_create(ne_session\ *" "session" ", const\ char\ *" "method" ", const\ char\ *" "path" ");" .HP \w'int\ ne_request_dispatch('u .BI "int ne_request_dispatch(ne_request\ *" "req" ");" .HP \w'void\ ne_request_destroy('u .BI "void ne_request_destroy(ne_request\ *" "req" ");" .SH "DESCRIPTION" .PP An HTTP request, represented by the \fBne_request\fR type, specifies that some operation is to be performed on some resource\&. The \fBne_request_create\fR function creates a request object, specifying the operation in the \fImethod\fR parameter\&. The location of the resource is determined by the server in use for the session given by the \fIsess\fR parameter, combined with the \fIpath\fR parameter\&. .PP The \fIpath\fR string used must conform to the abs_path definition given in RFC2396, with an optional "?query" part, and must be URI\-escaped by the caller (for instance, using \fBne_path_escape\fR)\&. If the string comes from an untrusted source, failure to perform URI\-escaping results in a security vulnerability\&. .PP To dispatch a request, and process the response, the \fBne_request_dispatch\fR function can be used\&. An alternative is to use the (more complex, but more flexible) combination of the \fBne_begin_request\fR, \fBne_end_request\fR, and \fBne_read_response_block\fR functions; see \fBne_begin_request\fR\&. .PP To add extra headers in the request, the functions ne_add_request_header and ne_print_request_header can be used\&. To include a message body with the request, one of the functions \fBne_set_request_body_buffer\fR, ne_set_request_body_fd, or \fBne_set_request_body_provider\fR can be used\&. .PP The return value of \fBne_request_dispatch\fR indicates merely whether the request was sent and the response read successfully\&. To discover the result of the operation, ne_get_status, along with any processing of the response headers and message body\&. .PP A request can only be dispatched once: calling \fBne_request_dispatch\fR more than once on a single \fBne_request\fR object produces undefined behaviour\&. Once all processing associated with the request object is complete, use the \fBne_request_destroy\fR function to destroy the resources associated with it\&. Any subsequent use of the request object produces undefined behaviour\&. .PP If a request is being using a non\-idempotent method such as POST, the NE_REQFLAG_IDEMPOTENT flag should be disabled; see ne_set_request_flag\&. .SH "RETURN VALUE" .PP The \fBne_request_create\fR function returns a pointer to a request object (and never NULL)\&. .PP The \fBne_request_dispatch\fR function returns zero if the request was dispatched successfully, and a non\-zero error code otherwise\&. .SH "ERRORS" .PP \fBNE_ERROR\fR .RS 4 Request failed (see session error string) .RE .PP \fBNE_LOOKUP\fR .RS 4 The DNS lookup for the server (or proxy server) failed\&. .RE .PP \fBNE_AUTH\fR .RS 4 Authentication failed on the server\&. .RE .PP \fBNE_PROXYAUTH\fR .RS 4 Authentication failed on the proxy server\&. .RE .PP \fBNE_CONNECT\fR .RS 4 A connection to the server could not be established\&. .RE .PP \fBNE_TIMEOUT\fR .RS 4 A timeout occurred while waiting for the server to respond\&. .RE .SH "EXAMPLE" .PP An example of applying a MKCOL operation to the resource at the location http://www\&.example\&.com/foo/bar/: .sp .if n \{\ .RS 4 .\} .nf 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\en", ne_get_error(sess)); } ne_request_destroy(req); .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_get_error, ne_set_error, ne_get_status, ne_add_request_header, ne_set_request_body_buffer, ne_set_request_flag\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f023000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_get_server_hostport.3.so man3/ne_set_useragent.3 0707010005f061000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_version_string.3.so man3/ne_version_match.3 0707010005f050000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_ssl_cert_write.3.so man3/ne_ssl_cert_read.3 0707010005f03a000081a40000000000000000000000014cbd2dce00000018000000b500010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_set_error.3.so man3/ne_get_error.3 0707010005f051000081a40000000000000000000000014cbd2dce0000001f000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_ssl_clicert_decrypt.3.so man3/ne_ssl_clicert_read.3 0707010005f02e000081a40000000000000000000000014cbd2dce00000015000000b500010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_oom_callback.3.so man3/ne_malloc.3 0707010005f018000081a40000000000000000000000014cbd2dce0000001d000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_buffer_finish.3.so man3/ne_buffer_destroy.3 0707010005f029000081a40000000000000000000000014cbd2dce00000019000000b500010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_iaddr_free.3.so man3/ne_iaddr_make.3 0707010005f026000081a40000000000000000000000014cbd2dce00000775000000b500010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_has_support.3'\" t .\" Title: ne_has_support .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_HAS_SUPPORT" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_has_support \- determine feature support status .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'int\ ne_has_support('u .BI "int ne_has_support(int\ " "feature" ");" .SH "DESCRIPTION" .PP The \fBne_has_support\fR function can be used to determine whether a particular optional feature, given by the feature code \fIfeature\fR, is supported\&. The following feature codes are available: .PP \fBNE_FEATURE_SSL\fR .RS 4 Indicates support for SSL/TLS .RE .PP \fBNE_FEATURE_ZLIB\fR .RS 4 Indicates support for compressed responses .RE .PP \fBNE_FEATURE_IPV6\fR .RS 4 Indicates support for IPv6 .RE .PP \fBNE_FEATURE_LFS\fR .RS 4 Indicates support for large files .RE .PP \fBNE_FEATURE_SOCKS\fR .RS 4 Indicates support for SOCKSv5 .RE .PP \fBNE_FEATURE_TS_SSL\fR .RS 4 Indicates support for thread\-safe SSL initialization \(em see ne_sock_init .RE .SH "RETURN VALUE" .PP \fBne_has_support\fR returns non\-zero if the given feature is supported, or zero otherwise\&. .SH "SEE ALSO" .PP ne_version_match(3), ne_sock_init(3) .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f02b000081a40000000000000000000000014cbd2dce00000019000000b500010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_iaddr_print.3.so man3/ne_iaddr_make.3 0707010005f030000081a40000000000000000000000014cbd2dce00000014000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_qtoken.3.so man3/ne_token.3 0707010005f02f000081a40000000000000000000000014cbd2dce00000021000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/man/man3/ne_print_request_header.3.so man3/ne_add_request_header.3 0707010005f010000081a40000000000000000000000014cbd2dce0000001b000000b500010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_addr_result.3.so man3/ne_addr_resolve.3 0707010005f04e000081a40000000000000000000000014cbd2dce00000020000000b500010002ffffffffffffffff0000003500000000root/usr/local/share/man/man3/ne_ssl_cert_signedby.3.so man3/ne_ssl_cert_identity.3 0707010005f028000081a40000000000000000000000014cbd2dce00000019000000b500010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_iaddr_cmp.3.so man3/ne_iaddr_make.3 0707010005f05d000081a40000000000000000000000014cbd2dce00000015000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_strdup.3.so man3/ne_malloc.3 0707010005f05e000081a40000000000000000000000014cbd2dce00000015000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man3/ne_strndup.3.so man3/ne_malloc.3 0707010005f03c000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_set_read_timeout.3.so man3/ne_set_useragent.3 0707010005f05c000081a40000000000000000000000014cbd2dce00000819000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_status.3'\" t .\" Title: ne_status .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_STATUS" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_status \- HTTP status structure .SH "SYNOPSIS" .sp .ft B .nf #include typedef struct { int major_version, minor_version; int code, klass; const char *reason_phrase; } ne_status; .fi .ft .SH "DESCRIPTION" .PP An \fBne_status\fR type represents an HTTP response status; used in response messages giving a result of request\&. The \fImajor_version\fR and \fIminor_version\fR fields give the HTTP version supported by the server issuing the response\&. The \fIcode\fR field gives the status code of the result (lying between 100 and 999 inclusive), and the \fIklass\fR field gives the class\&\s-2\u[1]\d\s+2, which is equal to the most significant digit of the status\&. .PP There are five classes of HTTP status code defined by RFC2616: .PP 1xx .RS 4 Informational response\&. .RE .PP 2xx .RS 4 Success: the operation was successful .RE .PP 3xx .RS 4 Redirection .RE .PP 4xx .RS 4 Client error: the request made was incorrect in some manner\&. .RE .PP 5xx .RS 4 Server error .RE .SH "SEE ALSO" .PP ne_get_status\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br .SH "NOTES" .IP " 1." 4 the field is named \(lqklass\(rq not \(lqclass\(rq so that the header can be used from a C++ program, in which \(lqclass\(rq is a reserved word) 0707010005f045000081a40000000000000000000000014cbd2dce00000018000000b500010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_sock_exit.3.so man3/ne_sock_init.3 0707010005f057000081a40000000000000000000000014cbd2dce00000021000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_ssl_dname_cmp.3.so man3/ne_ssl_readable_dname.3 0707010005f020000081a40000000000000000000000014cbd2dce0000001f000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_get_request_flag.3.so man3/ne_set_request_flag.3 0707010005f04b000081a40000000000000000000000014cbd2dce0000001c000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_ssl_cert_import.3.so man3/ne_ssl_cert_read.3 0707010005f042000081a40000000000000000000000014cbd2dce00000a44000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_set_session_flag.3'\" t .\" Title: ne_set_session_flag .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SET_SESSION_FLAG" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_set_session_flag, ne_get_session_flag \- set and retrieve session flags .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_set_session_flag('u .BI "void ne_set_session_flag(ne_session\ *" "sess" ", ne_session_flag\ " "flag" ", int\ " "value" ");" .HP \w'int\ ne_get_session_flag('u .BI "int ne_get_session_flag(ne_session\ *" "sess" ", ne_session_flag\ " "flag" ");" .SH "DESCRIPTION" .PP The \fBne_set_session_flag\fR function enables or disables a session flag\&. Passing a non\-zero \fIvalue\fR argument enables the flag, and zero disables it\&. .PP The following flags are defined: .PP \fBNE_SESSFLAG_PERSIST\fR .RS 4 disable this flag to prevent use of persistent connections .RE .PP \fBNE_SESSFLAG_ICYPROTO\fR .RS 4 enable this flag to enable support for non\-HTTP ShoutCast\-style "ICY" responses .RE .PP \fBNE_SESSFLAG_SSLv2\fR .RS 4 disable this flag to disable support for the SSLv2 protocol .RE .PP \fBNE_SESSFLAG_RFC4918\fR .RS 4 enable this flag to enable support for RFC4918\-only WebDAV features; losing backwards\-compatibility with RFC2518 servers .RE .PP \fBNE_SESSFLAG_CONNAUTH\fR .RS 4 enable this flag if an RFC\-violating connection\-based HTTP authentication scheme is in use .RE .PP \fBNE_SESSFLAG_TLS_SNI\fR .RS 4 disable this flag if a server is used which does not correctly support the TLS SNI extension .RE .PP \fBNE_SESSFLAG_EXPECT100\fR .RS 4 enable this flag to enable the request flag \fBNE_REQFLAG_EXPECT100\fR for new requests .RE .SH "RETURN VALUE" .PP The \fBne_get_session_flag\fR 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\&. .SH "SEE ALSO" .PP ne_session_create, ne_set_request_flag\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f060000081a40000000000000000000000014cbd2dce0000071d000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_version_match.3'\" t .\" Title: ne_version_match .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_VERSION_MATCH" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_version_match, ne_version_string \- library versioning .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'int\ ne_version_match('u .BI "int ne_version_match(int\ " "major" ", int\ " "minor" ");" .HP \w'const\ char\ *ne_version_string('u .BI "const char *ne_version_string(void);" .SH "DESCRIPTION" .PP The \fBne_version_match\fR function returns non\-zero if the library version is not of major version \fImajor\fR, or the minor version is less than \fIminor\fR\&. For neon versions 0\&.x, every minor version is assumed to be incompatible with every other minor version\&. .PP The \fBne_version_string\fR function returns a string giving the library version\&. .SH "EXAMPLES" .PP To require neon 1\&.x, version 1\&.2 or later: .sp .if n \{\ .RS 4 .\} .nf if (ne_version_match(1, 2)) { printf("Library version out of date: 1\&.2 required, found %s\&.", ne_version_string()); exit(1); } .fi .if n \{\ .RE .\} .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f031000081a40000000000000000000000014cbd2dce00000015000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man3/ne_realloc.3.so man3/ne_malloc.3 0707010005f01c000081a40000000000000000000000014cbd2dce00000015000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_calloc.3.so man3/ne_malloc.3 0707010005f03b000081a40000000000000000000000014cbd2dce0000001e000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_set_proxy_auth.3.so man3/ne_set_server_auth.3 0707010005f019000081a40000000000000000000000014cbd2dce0000001b000000b500010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_buffer_grow.3.so man3/ne_buffer_clear.3 0707010005f047000081a40000000000000000000000014cbd2dce0000060a000000b500010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_ssl_cert_cmp.3'\" t .\" Title: ne_ssl_cert_cmp .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SSL_CERT_CMP" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_ssl_cert_cmp, ne_ssl_cert_free \- functions to operate on certificate objects .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'int\ ne_ssl_cert_cmp('u .BI "int ne_ssl_cert_cmp(const\ ne_ssl_certificate\ *" "c1" ", const\ ne_ssl_certificate\ *" "c2" ");" .HP \w'void\ ne_ssl_cert_free('u .BI "void ne_ssl_cert_free(ne_ssl_certificate\ *" "cert" ");" .SH "DESCRIPTION" .PP The \fBne_ssl_cert_cmp\fR function can be used to compare two certificate objects; it returns zero if they refer to the same certificate, and non\-zero otherwise\&. .PP The \fBne_ssl_cert_free\fR function can be used to destroy a certificate object when it is no longer needed\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f03e000081a40000000000000000000000014cbd2dce00000026000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_set_request_body_fd.3.so man3/ne_set_request_body_buffer.3 0707010005f044000081a40000000000000000000000014cbd2dce000005c0000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/man/man3/ne_shave.3'\" t .\" Title: ne_shave .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SHAVE" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_shave \- trim whitespace from a string .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'char\ *ne_shave('u .BI "char *ne_shave(char\ *" "str" ", const\ char\ *" "whitespace" ");" .SH "DESCRIPTION" .PP \fBne_shave\fR returns a portion of \fIstr\fR with any leading or trailing characters in the \fIwhitespace\fR array removed\&. \fIstr\fR may be modified\&. Note that the return value may not be equal to \fIstr\fR\&. .SH "EXAMPLES" .PP The following code segment will output "fish": .sp .if n \{\ .RS 4 .\} .nf char s[] = "\&.!\&.fish!\&.!"; puts(ne_shave(s, "\&.!")); .fi .if n \{\ .RE .\} .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f05b000081a40000000000000000000000014cbd2dce0000001d000000b500010002ffffffffffffffff0000003800000000root/usr/local/share/man/man3/ne_ssl_trust_default_ca.3.so man3/ne_ssl_trust_cert.3 0707010005f059000081a40000000000000000000000014cbd2dce00001193000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_ssl_set_verify.3'\" t .\" Title: ne_ssl_set_verify .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SSL_SET_VERIFY" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_ssl_set_verify \- register an SSL certificate verification callback .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'typedef\ int\ ne_ssl_verify_fn('u .BI "typedef int ne_ssl_verify_fn(void\ *" "userdata" ", int\ " "failures" ", const\ ne_ssl_certificate\ *" "cert" ");" .HP \w'void\ ne_ssl_set_verify('u .BI "void ne_ssl_set_verify(ne_session\ *" "session" ", ne_ssl_verify_fn\ " "verify_fn" ", void\ *" "userdata" ");" .SH "DESCRIPTION" .PP To enable manual SSL certificate verification, a callback can be registered using \fBne_ssl_set_verify\fR\&. If such a callback is not registered, when a connection is established to an SSL server which does not present a certificate signed by a trusted CA (see ne_ssl_trust_cert), or if the certificate presented is invalid in some way, the connection will fail\&. .PP When the callback is invoked, the \fIfailures\fR parameter gives a bitmask indicating in what way the automatic certificate verification failed\&. The value is equal to the bit\-wise OR of one or more of the following constants (and is guaranteed to be non\-zero): .PP \fBNE_SSL_NOTYETVALID\fR .RS 4 The certificate is not yet valid\&. .RE .PP \fBNE_SSL_EXPIRED\fR .RS 4 The certificate has expired\&. .RE .PP \fBNE_SSL_IDMISMATCH\fR .RS 4 The hostname used for the session does not match the hostname to which the certificate was issued\&. .RE .PP \fBNE_SSL_UNTRUSTED\fR .RS 4 The Certificate Authority which signed the certificate is not trusted\&. .RE .PP Note that if either of the \fBNE_SSL_IDMISMATCH\fR or \fBNE_SSL_UNTRUSTED\fR failures is given, the connection may have been intercepted by a third party, and must not be presumed to be \(lqsecure\(rq\&. .PP The \fIcert\fR parameter passed to the callback represents the certificate which was presented by the server\&. If the server presented a chain of certificates, the chain can be accessed using ne_ssl_cert_signedby\&. The \fIcert\fR object given is not valid after the callback returns\&. .SH "RETURN VALUE" .PP 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)\&. .SH "EXAMPLES" .PP The following code implements an example verification callback, using the \fBdump_cert\fR function from ne_ssl_cert_subject to display certification information\&. Notice that the hostname of the server used for the session is passed as the \fIuserdata\fR parameter to the callback\&. .sp .if n \{\ .RS 4 .\} .nf static int my_verify(void *userdata, int failures, const ne_ssl_certificate *cert) { const char *hostname = userdata; dump_cert(cert); puts("Certificate verification failed \- the connection may have been " "intercepted by a third party!"); if (failures & NE_SSL_IDMISMATCH) { const char *id = ne_ssl_cert_identity(cert); if (id) printf("Server certificate was issued to \'%s\' not \'%s\'\&.\en", id, hostname); else printf("The certificate was not issued for \'%s\'\en", hostname); } if (failures & NE_SSL_UNTRUSTED) puts("The certificate is not signed by a trusted Certificate Authority\&."); /* \&.\&.\&. check for validity failures \&.\&.\&. */ if (prompt_user()) return 1; /* fail verification */ else return 0; /* trust the certificate anyway */ } int main(\&.\&.\&.) { ne_session *sess = ne_session_create("https", "some\&.host\&.name", 443); ne_ssl_set_verify(sess, my_verify, "some\&.host\&.name"); \&.\&.\&. } .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_ssl_trust_cert, ne_ssl_readable_dname, ne_ssl_cert_subject .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f053000081a40000000000000000000000014cbd2dce0000001f000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_ssl_clicert_free.3.so man3/ne_ssl_clicert_read.3 0707010005f063000081a40000000000000000000000014cbd2dce00000019000000b500010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_xml_destroy.3.so man3/ne_xml_create.3 0707010005f02c000081a40000000000000000000000014cbd2dce00000019000000b500010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_iaddr_typeof.3.so man3/ne_iaddr_make.3 0707010005f021000081a40000000000000000000000014cbd2dce00000ba7000000b500010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_get_response_header.3'\" t .\" Title: ne_get_response_header .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_GET_RESPONSE_HEAD" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_get_response_header, ne_response_header_iterate \- functions to access response headers .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'const\ char\ *ne_get_response_header('u .BI "const char *ne_get_response_header(ne_request\ *" "request" ", const\ char\ *" "name" ");" .HP \w'void\ *ne_response_header_iterate('u .BI "void *ne_response_header_iterate(ne_request\ *" "request" ", void\ *" "cursor" ", const\ char\ **" "name" ", const\ char\ **" "value" ");" .SH "DESCRIPTION" .PP To retrieve the value of a response header field, the \fBne_get_response_header\fR function can be used, and is given the name of the header to return\&. .PP To iterate over all the response headers returned, the \fBne_response_header_iterate\fR function can be used\&. This function takes a \fIcursor\fR parameter which should be NULL to retrieve the first header\&. The function stores the name and value of the next header header in the \fIname\fR and \fIvalue\fR parameters, and returns a new cursor pointer which can be passed to \fBne_response_header_iterate\fR to retrieve the next header\&. .SH "RETURN VALUE" .PP \fBne_get_response_header\fR returns a string, or NULL 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 \fBne_begin_request\fR, or else, until the request object is destroyed\&. .PP Likewise, the cursor, names, and values returned by \fBne_response_header_iterate\fR are only valid until the next call to \fBne_begin_request\fR or until the request object is destroyed\&. .SH "EXAMPLES" .PP The following code will output the value of the Last\-Modified header for a resource: .sp .if n \{\ .RS 4 .\} .nf 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"); if (mtime) { printf("/foo\&.txt has last\-modified value %s\en", mtime); } } ne_request_destroy(req); .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_request_create, ne_request_destroy\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f05a000081a40000000000000000000000014cbd2dce00000874000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_ssl_trust_cert.3'\" t .\" Title: ne_ssl_trust_cert .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SSL_TRUST_CERT" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_ssl_trust_cert, ne_ssl_trust_default_ca \- functions to indicate that certificates are trusted .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'void\ ne_ssl_trust_cert('u .BI "void ne_ssl_trust_cert(ne_session\ *" "session" ", const\ ne_ssl_certificate\ *" "cert" ");" .HP \w'void\ ne_ssl_trust_default_ca('u .BI "void ne_ssl_trust_default_ca(ne_session\ *" "session" ");" .SH "DESCRIPTION" .PP To indicate that a given certificate is trusted by the user, the certificate object can be passed to \fBne_ssl_trust_cert\fR\&. The certificate object is duplicated internally and can subsequently be destroyed\&. .PP The SSL library in use by neon may include a default set of CA certificates; calling the \fBne_ssl_trust_default_ca\fR function will indicate that these CAs are trusted by the user\&. .SH "EXAMPLES" .PP Load the CA certificate stored in /path/to/cacert\&.pem: .sp .if n \{\ .RS 4 .\} .nf ne_session *sess = ne_session_create(\&.\&.\&.); ne_ssl_certificate *cert = ne_ssl_cert_read("/path/to/cacert\&.pem"); if (cert) { ne_ssl_trust_cert(sess, cert); ne_ssl_cert_free(cert); } else { printf("Could not load CA cert: %s\en", ne_get_error(sess)); } .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_ssl_cert_read, ne_ssl_cert_import, ne_ssl_cert_free .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f037000081a40000000000000000000000014cbd2dce0000001d000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_session_destroy.3.so man3/ne_session_create.3 0707010005f04a000081a40000000000000000000000014cbd2dce00000d05000000b500010002ffffffffffffffff0000003500000000root/usr/local/share/man/man3/ne_ssl_cert_identity.3'\" t .\" Title: ne_ssl_cert_identity .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SSL_CERT_IDENTITY" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_ssl_cert_identity, ne_ssl_cert_signedby, ne_ssl_cert_issuer, ne_ssl_cert_subject \- functions to access certificate properties .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'const\ char\ *ne_ssl_cert_identity('u .BI "const char *ne_ssl_cert_identity(const\ ne_ssl_certificate\ *" "cert" ");" .HP \w'const\ ne_ssl_certificate\ *ne_ssl_cert_signedby('u .BI "const ne_ssl_certificate *ne_ssl_cert_signedby(const\ ne_ssl_certificate\ *" "cert" ");" .HP \w'const\ ne_ssl_dname\ *ne_ssl_cert_subject('u .BI "const ne_ssl_dname *ne_ssl_cert_subject(const\ ne_ssl_certificate\ *" "cert" ");" .HP \w'const\ ne_ssl_dname\ *ne_ssl_cert_issuer('u .BI "const ne_ssl_dname *ne_ssl_cert_issuer(const\ ne_ssl_certificate\ *" "cert" ");" .SH "DESCRIPTION" .PP The function \fBne_ssl_cert_identity\fR retrieves the \(lqidentity\(rq 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 \fIcommon name\fR attribute of the distinguished name of the certificate subject\&. .PP The functions \fBne_ssl_cert_subject\fR and \fBne_ssl_cert_issuer\fR can be used to access the objects representing the distinguished name of the subject and of the issuer of a certificate, respectively\&. .PP If a certificate object is part of a certificate chain, then \fBne_ssl_cert_signedby\fR 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 NULL\&. .SH "RETURN VALUE" .PP \fBne_ssl_cert_issuer\fR and \fBne_ssl_cert_subject\fR are guaranteed to never return NULL\&. \fBne_ssl_cert_identity\fR may return NULL if the certificate has no specific \(lqidentity\(rq\&. \fBne_ssl_cert_signedby\fR may return NULL as covered above\&. .SH "EXAMPLES" .PP The following function could be used to display information about a given certificate: .sp .if n \{\ .RS 4 .\} .nf void dump_cert(const ne_ssl_certificate *cert) { const char *id = ne_ssl_cert_identity(cert); char *dn; if (id) printf("Certificate was issued for \'%s\'\&.\en", id); dn = ne_ssl_readable_dname(ne_ssl_cert_subject(cert)); printf("Subject: %s\en", dn); free(dn); dn = ne_ssl_readable_dname(ne_ssl_cert_issuer(cert)); printf("Issuer: %s\en", dn); free(dn); } .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_ssl_cert_cmp, ne_ssl_readable_dname .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f00d000081a40000000000000000000000014cbd2dce0000001b000000b500010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_addr_first.3.so man3/ne_addr_resolve.3 0707010005f041000081a40000000000000000000000014cbd2dce00000d58000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_set_server_auth.3'\" t .\" Title: ne_set_server_auth .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SET_SERVER_AUTH" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_set_server_auth, ne_set_proxy_auth, ne_forget_auth \- register authentication callbacks .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'typedef\ int\ (*ne_auth_creds)('u .BI "typedef int (*ne_auth_creds)(void\ *" "userdata" ", const\ char\ *" "realm" ", int\ " "attempt" ", char\ *" "username" ", char\ *" "password" ");" .HP \w'void\ ne_set_server_auth('u .BI "void ne_set_server_auth(ne_session\ *" "session" ", ne_auth_creds\ " "callback" ", void\ *" "userdata" ");" .HP \w'void\ ne_set_proxy_auth('u .BI "void ne_set_proxy_auth(ne_session\ *" "session" ", ne_auth_creds\ " "callback" ", void\ *" "userdata" ");" .HP \w'void\ ne_forget_auth('u .BI "void ne_forget_auth(ne_session\ *" "session" ");" .SH "DESCRIPTION" .PP The \fBne_auth_creds\fR function type defines a callback which is invoked when a server or proxy server requires user authentication for a particular request\&. The \fIrealm\fR string is supplied by the server\&. The \fIattempt\fR is a counter giving the number of times the request has been retried with different authentication credentials\&. The first time the callback is invoked for a particular request, \fIattempt\fR will be zero\&. .PP To retry the request using new authentication credentials, the callback should return zero, and the \fIusername\fR and \fIpassword\fR buffers must contain NUL\-terminated strings\&. The NE_ABUFSIZ constant gives the size of these buffers\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTip\fR .ps -1 .br .PP If you only wish to allow the user one attempt to enter credentials, use the value of the \fIattempt\fR parameter as the return value of the callback\&. .sp .5v .RE .PP To abort the request, the callback should return a non\-zero value; in which case the contents of the \fIusername\fR and \fIpassword\fR buffers are ignored\&. .PP The \fBne_forget_auth\fR function can be used to discard the cached authentication credentials\&. .SH "EXAMPLES" .sp .if n \{\ .RS 4 .\} .nf /* Function which prompts for a line of user input: */ extern char *prompt_for(const char *prompt); static int my_auth(void *userdata, const char *realm, int attempts, char *username, char *password) { strncpy(username, prompt_for("Username: "), NE_ABUFSIZ); strncpy(password, prompt_for("Password: "), NE_ABUFSIZ); return attempts; } int main(\&.\&.\&.) { ne_session *sess = ne_session_create(\&.\&.\&.); ne_set_server_auth(sess, my_auth, NULL); /* \&.\&.\&. */ } .fi .if n \{\ .RE .\} .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f01d000081a40000000000000000000000014cbd2dce0000001d000000b500010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_close_connection.3.so man3/ne_session_create.3 0707010005f02a000081a40000000000000000000000014cbd2dce00000d52000000b500010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_iaddr_make.3'\" t .\" Title: ne_iaddr_make .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_IADDR_MAKE" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_print, ne_iaddr_typeof, ne_iaddr_free \- functions to manipulate and compare network addresses .SH "SYNOPSIS" .sp .ft B .nf #include typedef enum { ne_iaddr_ipv4 = 0, ne_iaddr_ipv6 } ne_iaddr_type; .fi .ft .HP \w'ne_inet_addr\ *ne_iaddr_make('u .BI "ne_inet_addr *ne_iaddr_make(ne_iaddr_type\ " "type" ", const\ unsigned\ char\ *" "raw" ");" .HP \w'int\ ne_iaddr_cmp('u .BI "int ne_iaddr_cmp(const\ ne_inet_addr\ *" "ia1" ", const\ ne_inet_addr\ *" "ia2" ");" .HP \w'char\ *ne_iaddr_print('u .BI "char *ne_iaddr_print(const\ ne_inet_addr\ *" "ia" ", char\ *" "buffer" ", size_t\ " "bufsiz" ");" .HP \w'ne_iaddr_type\ ne_iaddr_typeof('u .BI "ne_iaddr_type ne_iaddr_typeof(const\ ne_inet_addr\ *" "ia" ");" .HP \w'void\ ne_iaddr_free('u .BI "void ne_iaddr_free(const\ ne_inet_addr\ *" "ia" ");" .SH "DESCRIPTION" .PP \fBne_iaddr_make\fR creates an \fBne_inet_addr\fR object from a raw binary network address; for instance the four bytes 0x7f 0x00 0x00 0x01 represent the IPv4 address 127\&.0\&.0\&.1\&. The object returned is suitable for passing to \fBne_sock_connect\fR\&. A binary IPv4 address contains four bytes; a binary IPv6 address contains sixteen bytes; addresses passed must be in network byte order\&. .PP \fBne_iaddr_cmp\fR can be used to compare two network addresses; returning zero only if they are identical\&. The addresses need not be of the same address type; if the addresses are not of the same type, the return value is guaranteed to be non\-zero\&. .PP \fBne_iaddr_print\fR can be used to print the human\-readable string representation of a network address into a buffer, for instance the string "127\&.0\&.0\&.1"\&. .PP \fBne_iaddr_typeof\fR returns the type of the given network address\&. .PP \fBne_iaddr_free\fR releases the memory associated with a network address object\&. .SH "RETURN VALUE" .PP \fBne_iaddr_make\fR returns NULL if the address type passed is not supported (for instance on a platform which does not support IPv6)\&. .PP \fBne_iaddr_print\fR returns the \fIbuffer\fR pointer, and never NULL\&. .SH "EXAMPLES" .PP The following example connects a socket to port 80 at the address 127\&.0\&.0\&.1\&. .sp .if n \{\ .RS 4 .\} .nf unsigned char addr[] = "\e0x7f\e0x00\e0x00\e0x01"; ne_inet_addr *ia; ia = ne_iaddr_make(ne_iaddr_ipv4, addr); if (ia != NULL) { ne_socket *sock = ne_sock_connect(ia, 80); ne_iaddr_free(ia); /* \&.\&.\&. */ } else { /* \&.\&.\&. */ } .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_addr_resolve .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f04d000081a40000000000000000000000014cbd2dce00000bb6000000b500010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_ssl_cert_read.3'\" t .\" Title: ne_ssl_cert_read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SSL_CERT_READ" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" 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 .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'ne_ssl_certificate\ *ne_ssl_cert_read('u .BI "ne_ssl_certificate *ne_ssl_cert_read(const\ char\ *" "filename" ");" .HP \w'int\ ne_ssl_cert_write('u .BI "int ne_ssl_cert_write(const\ ne_ssl_certificate\ *" "cert" ", const\ char\ *" "filename" ");" .HP \w'ne_ssl_certificate\ *ne_ssl_cert_import('u .BI "ne_ssl_certificate *ne_ssl_cert_import(const\ char\ *" "data" ");" .HP \w'char\ *ne_ssl_cert_export('u .BI "char *ne_ssl_cert_export(const\ ne_ssl_certificate\ *" "cert" ");" .SH "DESCRIPTION" .PP The \fBne_ssl_cert_write\fR function writes a certificate to a file using the PEM encoding\&. The \fBne_ssl_cert_export\fR function returns a base64\-encoded NUL\-terminated string representing the certificate\&. This string is malloc\-allocated and should be destroyed using \fBfree\fR by the caller\&. .PP The \fBne_ssl_cert_read\fR function reads a certificate from a PEM\-encoded file, and returns a certificate object\&. The \fBne_ssl_cert_import\fR function returns a certificate object from a base64\-encoded string, \fIdata\fR, as returned by \fBne_ssl_cert_export\fR\&. The certificate object returned by these functions should be destroyed using ne_ssl_cert_free after use\&. .SH "RETURN VALUE" .PP \fBne_ssl_cert_read\fR returns NULL if a certificate could not be read from the file\&. \fBne_ssl_cert_write\fR returns non\-zero if the certificate could not be written to the file\&. \fBne_ssl_cert_export\fR always returns a NUL\-terminated string, and never NULL\&. \fBne_ssl_cert_import\fR returns NULL if the string was not a valid base64\-encoded certificate\&. .SH "ENCODING FORMATS" .PP The string produced by \fBne_ssl_cert_export\fR is the base64 encoding of the DER representation of the certificate\&. The file written by \fBne_ssl_cert_write\fR uses the PEM format: this is the base64 encoding of the DER representation with newlines every 64 characters, and start and end marker lines\&. .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005f036000081a40000000000000000000000014cbd2dce00000f67000000b500010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_session_create.3'\" t .\" Title: ne_session_create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 1 October 2010 .\" Manual: neon API reference .\" Source: neon 0.29.4 .\" Language: English .\" .TH "NE_SESSION_CREATE" "3" "1 October 2010" "neon 0.29.4" "neon API reference" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ne_session_create, ne_close_connection, ne_session_proxy, ne_session_destroy \- set up HTTP sessions .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'ne_session\ *ne_session_create('u .BI "ne_session *ne_session_create(const\ char\ *" "scheme" ", const\ char\ *" "hostname" ", unsigned\ int\ " "port" ");" .HP \w'void\ ne_session_proxy('u .BI "void ne_session_proxy(ne_session\ *" "session" ", const\ char\ *" "hostname" ", unsigned\ int\ " "port" ");" .HP \w'void\ ne_close_connection('u .BI "void ne_close_connection(ne_session\ *" "session" ");" .HP \w'void\ ne_session_destroy('u .BI "void ne_session_destroy(ne_session\ *" "session" ");" .SH "DESCRIPTION" .PP An \fBne_session\fR object represents an HTTP session \- a logical grouping of a sequence of HTTP requests made to a certain server\&. Any requests made using the session can use a persistent connection, share cached authentication credentials and any other common attributes\&. .PP A new HTTP session is created using \fBne_session_create\fR, giving the \fIhostname\fR and \fIport\fR of the server to use, along with the \fIscheme\fR used to contact the server (usually "http")\&. Before the first use of \fBne_session_create\fR in a process, ne_sock_init must have been called to perform any global initialization needed by any libraries used by neon\&. .PP To enable SSL/TLS for the session, pass the string "https" as the \fIscheme\fR parameter, and either register a certificate verification function (see ne_ssl_set_verify) or trust the appropriate certificate (see ne_ssl_trust_cert, ne_ssl_trust_default_ca)\&. .PP If an HTTP proxy server should be used for the session, \fBne_session_proxy\fR must be called giving the hostname and port on which to contact the proxy\&. .PP Further per\-session options may be changed using the ne_set_request_flag interface\&. .PP If it is known that the session will not be used for a significant period of time, \fBne_close_connection\fR can be called to close the connection, if one remains open\&. Use of this function is entirely optional, but it must not be called if there is a request active using the session\&. .PP Once a session has been completed, \fBne_session_destroy\fR must be called to destroy the resources associated with the session\&. Any subsequent use of the session pointer produces undefined behaviour\&. .SH "NOTES" .PP The hostname passed to \fBne_session_create\fR is resolved when the first request using the session is dispatched; a DNS resolution failure can only be detected at that time (using the NE_LOOKUP error code); see ne_request_dispatch for details\&. .SH "RETURN VALUES" .PP \fBne_session_create\fR will return a pointer to a new session object (and never NULL)\&. .SH "EXAMPLES" .PP Create and destroy a session: .sp .if n \{\ .RS 4 .\} .nf ne_session *sess; sess = ne_session_create("http", "host\&.example\&.com", 80); /* \&.\&.\&. use sess \&.\&.\&. */ ne_session_destroy(sess); .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP ne_ssl_set_verify, ne_ssl_trust_cert, ne_sock_init, ne_set_session_flag .SH "AUTHOR" .PP \fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br 0707010005ffea000041ed00000000000000000000000b4cbd2dde00000000000000b500010002ffffffffffffffff0000001c00000000root/usr/local/share/locale07070100060000000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/tr0707010005f001000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/tr/LC_MESSAGES0707010005f002000081a40000000000000000000000014cbd2dce000005f3000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/locale/tr/LC_MESSAGES/neon.mo h!i+GcV G!Wy &DdVv   Could not connect to proxy serverCould not connect to serverCould not parse chunk sizeCould not read chunk sizeCould not read response bodyCould not read status lineCould not send requestCould not send request bodyCould not write to file: %sError reading response headersHost not foundInvalid HTTP status line in status element at line %d of response: Status line was: %sLine too longResponse header too longProject-Id-Version: sitecopy-0.10.10 Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2001-01-03 HO:MI+ZONE Last-Translator: A. Sinan Unur Language-Team: tr MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-9 Content-Transfer-Encoding: 8bit Ara sunucuyla balant kurulamadSunucuyla balant kurulamadPara boyutu anlalamadPara boyutu renilemediYant metni okunamadDurum satr okunamadstek gnderilemedistek metni gnderilemedi%s dosyasna yazm yaplamadYant balklar okunurken hataSunucu bulunamadInvalid HTTP status line in status element at line %d of response: Status line was: %sSatr ok uzunYant bal ok uzun0707010005f003000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000002200000000root/usr/local/share/locale/zh_CN0707010005f004000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002e00000000root/usr/local/share/locale/zh_CN/LC_MESSAGES0707010005f005000081a40000000000000000000000014cbd2dce00002168000000b500010002ffffffffffffffff0000003600000000root/usr/local/share/locale/zh_CN/LC_MESSAGES/neon.mo_  )3#]"&* $9 !^  8   ! . E _ (z $    ' F c #~ 4    ;& Ab 8 F =$ b     " V'Y E+8:-S(1'"@#W,{ & 3)(]C%+ #*N0m +/*It%*"%+ Qr2%UF["l  " -Ji6 1Ga}%3)]p03'K.0z"!WD& 0.J`|*$%!"9+\018M  0CRi{*$  $4 Y x  ! !  0!'@! 75>CY4GM" XZW H9236$-ON^<R? ]LF+\'1;UP(I[.A)EB:*0%D V8JKQ#&T,=@!/_S%s: %s (code %d)%s: connection timed out%s: connection was closed by proxy server%s: connection was closed by serverCertificate verification error: %sChunk delimiter was invalidClient certificate verification failedConnection closedConnection timed outCould not authenticate to proxy server: %sCould not authenticate to server: %sCould not connect to proxy serverCould not connect to serverCould not create SSL connection through proxy server: %sCould not create SSL structureCould not create socketCould not determine file size: %sCould not inflate dataCould not initialize zlibCould not parse chunk sizeCould not parse redirect destination URLCould not parse response status lineCould not parse response: %sCould not read chunk delimiterCould not read chunk sizeCould not read interim response headersCould not read response bodyCould not read status lineCould not resolve hostname `%s': %sCould not seek to offset %s of request body file: %sCould not send requestCould not send request bodyCould not write to file: %sDigest mutual authentication failure: client nonce mismatchDigest mutual authentication failure: could not parse nonce countDigest mutual authentication failure: missing parametersDigest mutual authentication failure: nonce count mismatch (%u not %u)Digest mutual authentication failure: request-digest mismatchError reading response headersGSSAPI authentication error: GSSAPI failure (code %u)Host not foundInvalid Byte Order MarkInvalid Content-Length in responseInvalid HTTP status line in status element at line %d of response: Status line was: %sLOCK response missing Lock-Token headerLine too longNegotiate response verification failed: invalid response header tokenNegotiate response verification failure: %sNo activelock for <%s> returned in LOCK refresh responseRange is not satisfiableResource does not support ranged GET requestsResponse did not include requested rangeResponse exceeded maximum number of header fieldsResponse exceeds maximum property countResponse header too longResponse missing activelock for %sSSL alert received: %sSSL disabled due to lack of entropySSL disabled due to library version mismatchSSL error code %d/%d/%luSSL error: %sSSL server did not present certificateSSL socket read failedSecure connection truncatedServer certificate changed: connection intercepted?Server certificate verification failed: Server certificate was missing commonName attribute in subject nameServer did not send certificate chainSocket descriptor number exceeds FD_SETSIZEUnknown errorUnknown transfer-coding in responseXML parse error at line %d: %sXML parse error at line %d: invalid element name[invalid date][unprintable:#%lu][unprintable]certificate has expiredcertificate is not yet validcertificate issued for a different hostnamecould not parse challengecould not parse domain in Digest challengeignored %s challengeignoring empty Negotiate continuationincompatible algorithm in Digest challengeinitial Digest challenge was staleinvalid Negotiate tokenissuer is not trustedmissing parameter in Digest challengemissing realm in Basic challengeoffset invalidrejected %s challengestale Digest challenge with new algorithm or realmunknown algorithm in Digest challengeProject-Id-Version: neon 0.29.x Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2008-03-03 11:20+0800 Last-Translator: Dongsheng Song Language-Team: neon@webdav.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %s: %s (代码 %d)%s: 连接超时%s: 连接被代理服务器关闭%s: 连接被服务器关闭证书校验失败:%s非法的分割符客户证书校验失败连接关闭连接超时不能认证到代理服务器: %s不能认证到服务器: %s不能连接到代理服务器不能连接到服务器不能通过代理服务器 “%s” 创建 SSL 连接不能创建 SSL 结构不能创建套接字不能确定的文件大小:%s解压数据失败初始化 zlib 失败不能解析块大小不能解析重定向 URL不能解析响应状态行不能解析响应:%s不能读块分割符不能读块大小不能读临时响应头不能读取响应主体不能读状态行不能解析主机名称 “%s”: %s在请求主体文件不能定位到偏移 %s: %s不能发送请求不能发送请求主体不能写入文件:%s摘要互相认证失败:客户现时不匹配摘要互相认证失败:不能解析现时计数摘要互相认证失败:参数遗漏摘要互相认证失败:现时计算不匹配 (应该是 %u,不是 %u)摘要互相认证失败:请求摘要不匹配读取响应头出错GSSAPI 认证错误: GSSAPI 失败(代码 %u)没有发现主机非法字节顺序标记(BOM)非法的 Content-Length 响应域响应信息中 %d 行的状态元素中发现非法 HTTP 状态行: 状态行是: %sLOCK 的响应遗漏了 Lock-Token 行行太长校验协商响应失败:非法响应头令牌磋商响应校验失败: %s刷新锁定 %s 的响应没有返回主动锁不能满足的范围资源不支持范围读取响应没有包含请求范围响应头的域数量超出了最大数量响应超过了属性的最大计数响应头太长锁定 %s 的响应遗漏了主动锁收到 SSL 警报: %s由于缺少熵,SSL 已经禁用由于库版本不匹配,SSL 已经禁用SSL 错误代码 %d/%d/%luSSL 错误:%sSSL 服务器不能呈现证书SSL 套接字读取失败安全连接切断服务器证书改变:是否被拦截攻击?服务器证书校验失败服务器证书在主题名称遗漏了属性 commonName服务器不能发送证书链套接字数量超过 FD_SETSIZE未知错误响应中的传输代码未知在 %d 行解析 XML 错误: %s在 %d 行解析 XML 错误:非法元素名称[非法日期][非打印字符:#%lu][非打印字符]证书已经过时证书还未生效此证书是为不同的主机名称颁发不能解析挑战在摘要挑战中的不能解析域被忽略的 %s 挑战忽略后续的空磋商在摘要挑战中的算法不兼容陈旧的初始化摘要挑战非法磋商令牌证书发行者不被信任在摘要挑战中的参数丢失在基本挑战中丢失了领域非法偏移被拒绝的 %s 挑战陈旧的摘要挑战用于新算法或新领域在摘要挑战中的算法不可识别0707010005fffd000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/ru0707010005fffe000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/ru/LC_MESSAGES0707010005ffff000081a40000000000000000000000014cbd2dce0000017f000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/locale/ru/LC_MESSAGES/neon.mo$,8E9Project-Id-Version: sitecopy 0.11.5 Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2002-11-11 14:28+0000 Last-Translator: Michael Sobolev Language-Team: ru MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit 0707010005fff4000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/ja0707010005fff5000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/ja/LC_MESSAGES0707010005fff6000081a40000000000000000000000014cbd2dce0000036d000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/locale/ja/LC_MESSAGES/neon.moT !,ISe""9TCould not connect to proxy serverCould not connect to serverCould not parse chunk sizeCould not read chunk sizeCould not read response bodyCould not write to file: %sProject-Id-Version: sitecopy 0.10.14 Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2001-01-16 07:32+0900 Last-Translator: Nobuyuki Tsuchimura Language-Team: ja MIME-Version: 1.0 Content-Type: text/plain; charset=EUC-JP Content-Transfer-Encoding: 8-bit ץС³ǤޤץС³Ǥޤchunk 礭ϤǤޤchunk 礭ɤޤresponse body ɤޤե뤬񤱤ޤ: %s0707010005ffee000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/de0707010005ffef000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/de/LC_MESSAGES0707010005fff0000081a40000000000000000000000014cbd2dce000006b0000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/locale/de/LC_MESSAGES/neon.mo h!i+GcV F/V)+($+*'V+~)5 [ z'   Could not connect to proxy serverCould not connect to serverCould not parse chunk sizeCould not read chunk sizeCould not read response bodyCould not read status lineCould not send requestCould not send request bodyCould not write to file: %sError reading response headersHost not foundInvalid HTTP status line in status element at line %d of response: Status line was: %sLine too longResponse header too longProject-Id-Version: sitecopy 0.11.3 Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2002-01-13 13:37+0100 Last-Translator: Thomas Schultz Language-Team: de MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Verbindungsaufbau zum Proxy-Server gescheitert.Verbindungsaufbau zum Server gescheitert.Parser-Fehler bei Ermittlung der BlockgreLesefehler bei Ermittlung der BlockgreKonnte Rumpf der Antwort nicht lesenKonnte Status-Zeile des Servers nicht lesenKonnte keine Anfrage (request) schickenKonnte den Rumpf der Anfrage nicht schickenKonnte nicht in diese Datei schreiben: %sFehler beim Lesen der Kopfzeilen (header) der AntwortHost nicht gefundenUngltige HTTP Status-Zeile im Status-Element in Zeile %d der Antwort: Status-Zeile war: %sZeile zu langKopfzeilen (header) der Antwort zu lang0707010005fff7000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/nn0707010005fff8000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/nn/LC_MESSAGES0707010005fff9000081a40000000000000000000000014cbd2dce0000065a000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/locale/nn/LC_MESSAGES/neon.mo h!i+GcV t",+ 7UuT7F   Could not connect to proxy serverCould not connect to serverCould not parse chunk sizeCould not read chunk sizeCould not read response bodyCould not read status lineCould not send requestCould not send request bodyCould not write to file: %sError reading response headersHost not foundInvalid HTTP status line in status element at line %d of response: Status line was: %sLine too longResponse header too longProject-Id-Version: sitecopy 0.11.4 Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2002-11-07 18:11+0100 Last-Translator: Karl Ove Hufthammer Language-Team: Norwegian Nynorsk MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Klarte ikkje kopla til mellomtenarKlarte ikkje kopla til tenaren.Klarte ikkje tolka storleik på oppdelt svarKlarte ikkje lesa storleik på oppdelt svarKlarte ikkje lesa svarKlarte ikkje lesa statuslinjaKlarte ikkje senda førespurnadKlarte ikkje senda førespurnadKlarte ikkje skriva til fil: %sFeil ved lesing av svarhovudFann ikkje vertUgyldig HTTP-statuslinje i statuselement på linje %d av svaret: Statuslinja var: %sFor lang linjeFor langt svarhovud0707010005fff1000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/fr0707010005fff2000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/fr/LC_MESSAGES0707010005fff3000081a40000000000000000000000014cbd2dce00000183000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/locale/fr/LC_MESSAGES/neon.mo$,8I9Project-Id-Version: sitecopy 0.9.3 Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2000-01-31 00:00+0100 Last-Translator: Sylvain Glaize Language-Team: fr MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit 0707010005ffeb000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/cs0707010005ffec000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/cs/LC_MESSAGES0707010005ffed000081a40000000000000000000000014cbd2dce0000061e000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/locale/cs/LC_MESSAGES/neon.mo h!i+GcV G!Wy;!WyX"   Could not connect to proxy serverCould not connect to serverCould not parse chunk sizeCould not read chunk sizeCould not read response bodyCould not read status lineCould not send requestCould not send request bodyCould not write to file: %sError reading response headersHost not foundInvalid HTTP status line in status element at line %d of response: Status line was: %sLine too longResponse header too longProject-Id-Version: sitecopy 0.11.4 Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2002-04-09 11:12+0100 Last-Translator: Petr Prazak Language-Team: cz MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-2 Content-Transfer-Encoding: 8bit Nelze se pipojit k proxy serveruNelze se pipojit k serveruNelze zpracovat velikost blokuNelze nast velikost blokuNelze nast tlo odpovdiNelze pest stavov dekNelze poslat poadavekNelze odeslat tlo poadavkuNelze zapsat do souboru: %sChyba pi ten hlaviek odpovdiPota nenalezenNeplatn dka HTTP stavu ve stavovm prvku na dku %d odpovdi: Stavov dka byla: %sdek je pli dlouhHlavika odpovdi je pli dlouh0707010005fffa000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/pl0707010005fffb000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/pl/LC_MESSAGES0707010005fffc000081a40000000000000000000000014cbd2dce0000346f000000b500010002ffffffffffffffff0000003300000000root/usr/local/share/locale/pl/LC_MESSAGES/neon.moL|H I Z )s #    " 4 &P w  * $  ! " 8> w  ! ; = Ja{($+'-Ut*'"6Y#t4 )@'\;A8FW=2A"YV| !'5 ]Ek+#8:-S(1'"@#W,{ : &#Ja3}(C%+Dp '% #07hw +G](v*%*8"c% $4Yt2%%71!Sq"(2( !@ 2b ,  , & !<2!"o!!(!<!B" X" d"&"0"-"# #>/#5n#*#&#+#5"$8X$)$&$($" %+.%>Z%*%)%(%&$5&0Z&&M&U&AN'Z'R'3>(r(((+(*(c)/v),)()1).*\@*-***I*(@+.i+,+<+8,!;,.],,',8,--J.-#y-'-+- -<.4O.B.*./."/?/-X/-//%/,/G0_0u0000 00$1'&1N1e1$11-111 2($2*M2-x222%2"3'3;3X34n3 303:3#04T4s_E:] (X"1`F|*f Z7njk.=25MC?qb8,c%U!tG^iRl ) +oL[#g ADv0~w$aS6eNrpd93Tm;/-IKuhOHJ>B} yx\W{@QzY<V4&P'%s: %s (code %d)%s: connection timed out%s: connection was closed by proxy server%s: connection was closed by server%s: unrecognized error (%u)%s: unrecognized failure (%u)Authentication failedCertificate verification error: %sChunk delimiter was invalidClient certificate verification failedConnection closedConnection timed outCould not authenticate to proxy server: %sCould not authenticate to server: %sCould not connectCould not connect to proxy serverCould not connect to serverCould not create SSL connection through proxy server: %sCould not create SSL structureCould not create socketCould not determine file size: %sCould not establish connection from SOCKS proxy (%s:%u): %sCould not find IPv4 address of hostname %s for SOCKS v4 proxyCould not inflate dataCould not initialize zlibCould not parse chunk sizeCould not parse redirect destination URLCould not parse response status lineCould not parse response: %sCould not read FQDN length in connect replyCould not read address in connect replyCould not read chunk delimiterCould not read chunk sizeCould not read connect replyCould not read initial response from proxyCould not read interim response headersCould not read login replyCould not read response bodyCould not read response from proxyCould not read status lineCould not resolve hostname `%s': %sCould not seek to offset %s of request body file: %sCould not send connect requestCould not send login messageCould not send message to proxyCould not send requestCould not send request bodyCould not verify server certificate: %sCould not write to file: %sDigest mutual authentication failure: client nonce mismatchDigest mutual authentication failure: could not parse nonce countDigest mutual authentication failure: missing parametersDigest mutual authentication failure: nonce count mismatch (%u not %u)Digest mutual authentication failure: request-digest mismatchError reading response headersGSSAPI authentication error: GSSAPI failure (code %u)Host not foundInvalid Byte Order MarkInvalid Content-Length in responseInvalid HTTP status line in status element at line %d of response: Status line was: %sInvalid version in connect replyInvalid version in login replyInvalid version in proxy responseLOCK response missing Lock-Token headerLine too longNegotiate response verification failed: invalid response header tokenNegotiate response verification failure: %sNo acceptable authentication methodNo activelock for <%s> returned in LOCK refresh responseRange is not satisfiableResource does not support ranged GET requestsResponse did not include requested rangeResponse exceeded maximum number of header fieldsResponse exceeds maximum property countResponse header too longResponse missing activelock for %sSSL alert received: %sSSL disabled due to lack of entropySSL disabled due to library version mismatchSSL error code %d/%d/%luSSL error: %sSSL handshake failed, client certificate was requested: %sSSL handshake failed: %sSSL server did not present certificateSSL socket read failedSecure connection truncatedServer certificate changed: connection intercepted?Server certificate verification failed: Server certificate was missing commonName attribute in subject nameServer did not send certificate chainSocket descriptor number exceeds FD_SETSIZESocket family not supportedTTL expiredUnexpected authentication method chosenUnknown address type in connect replyUnknown errorUnknown transfer-coding in responseXML parse error at line %d: %sXML parse error at line %d: invalid element name[invalid date][unprintable:#%lu][unprintable]address type not supportedbad certificate chaincertificate has been revokedcertificate has expiredcertificate is not yet validcertificate issued for a different hostnamecommand not supportedconnection not permittedcould not establish connection to identdcould not parse challengecould not parse domain in Digest challengefailurehost unreachableignored %s challengeignoring empty Negotiate continuationincompatible algorithm in Digest challengeinitial Digest challenge was staleinvalid Negotiate tokenissuer is not trustedmissing parameter in Digest challengemissing realm in Basic challengenetwork unreachableoffset invalidrejected %s challengerejected due to identd user mismatchrequest rejected or failedsigned using insecure algorithmstale Digest challenge with new algorithm or realmunknown algorithm in Digest challengeunrecognized errors (%u)Project-Id-Version: Neon 0.29.0 Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk POT-Creation-Date: 2010-10-01 13:30+0100 PO-Revision-Date: 2009-09-04 02:00+0200 Last-Translator: Arfrever Frehtes Taifersar Arahesis Language-Team: Polish Neon Translator Arfrever Frehtes Taifersar Arahesis MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %s: %s (kod %d)%s: czas połączenia się skończył%s: połączenie zostało zamknięte przez serwer proxy%s: połączenie zostało zamknięte przez serwer%s: nierozpoznany błąd (%u)%s: nierozpoznana porażka (%u)Błąd uwierzytelnianiaBłąd weryfikacji certyfikatu: %sOgranicznik kawałka był nieprawidłowyWeryfikacja certyfikatu klienta nie powiodła sięPołączenie zamknięteCzas połączenia się skończyłNie można autentykować się do serwera proxy: %sNie można autentykować się do serwera: %sNie można połączyć sięNie można połączyć się z serwerem proxyNie można połączyć się z serweremNie można utworzyć połączenia SSL przez serwer proxy: %sNie można utworzyć struktury SSLNie można utworzyć gniazdaNie można określić rozmiaru pliku: %sNie można nawiązać połączenia z proxy SOCKS (%s:%u): %sNie można znaleźć adresu IPv4 nazwy hosta %s dla proxy SOCKS v4Nie można Nie można zainicjalizować zlibNie można parsować rozmiaru kawałkaNie można parsować URL-u przeadresowanego celuNie można parsować linii statusu odpowiedziNie można parsować odpowiedzi: %sNie można odczytać długości FQDN w odpowiedzi połączeniaNie można odczytać adresu w odpowiedzi połączeniaNie można odczytać ogranicznika kawałkaNie można odczytać rozmiaru kawałkaNie można odczytac odpowiedzi połączeniaNie można odczytać początkowej odpowiedzi od proxyNie można odczytać nagłówków tymczasowej odpowiedziNie można odczytać odpowiedzi logowaniaNie można odczytać ciała odpowiedziNie można odczytać odpowiedzi od proxyNie można odczytać linii statusuNie można rozwiązać nazwy hosta `%s': %sNie można szukać przesunięcia %s pliku ciała żądania: %sNie można wysłać żądania połączeniaNie można wysłać wiadomości logowaniaNie można wysłać wiadomości do proxyNie można wysłać żądaniaNie można wysłać ciała żądaniaNie można zweryfikować certyfikatu serwera: %sNie można pisać do pliku: %sPorażka wzajemnego uwierzytelniania Digest: niezgodność posłańca klientaPorażka wzajemnego uwierzytelniania Digest: nie można parsować licznika posłańcaPorażka wzajemnego uwierzytelniania Digest: brakujące parametryPorażka wzajemnego uwierzytelniania Digest: niezgodność licznika posłańca (%u nie %u)Porażka wzajemnego uwierzytelniania Digest: niezgodność request-digest mismatchBłąd podczas odczytywania nagłówków odpowiedziBłąd autentykacji GSSAPI: Porażka GSSAPI (kod %u)Host nieznalezionyNieprawidłowy Znacznik Kolejności BajtówNieprawidłowe Content-Length w odpowiedziNiewłaściwa linia statusu HTTP w elemencie statusu w linii %d odpowiedzi: Linia statusu była: %sNieprawidłowa wersja w odpowiedzi połączeniaNieprawidłowa wersja w odpowiedzi logowaniaNieprawidłowa wersja w odpowiedzi proxyOdpowiedź LOCK nie zawiera nagłówka Lock-TokenLinia zbyt długaweryfikacja odpowiedzi Negotiate nie udała się: niewłaściwy żeton nagłówka odpowiedziporażka weryfikacji odpowiedzi Negotiate: %sBrak akceptowalnej metody uwierzytelnianiaNie zwrócono żadnej aktywnej blokady dla <%s> w odpowiedzi LOCK refreshZakres nie może być usatysfakcjonowanyZasób nie obsługuje zakresowych żądań GETOdpowiedź nie zawierała wymaganego zakresuOdpowiedź przekroczyła maksymalną liczbę pól nagłówkaOdpowiedź przekracza maksymalną liczbę właściwościNagłówek odpowiedzi zbyt długiOdpowiedź nie zawiera aktywnej blokady dla %sAlarm SSL otrzymany: %sSSL wyłączone z powodu braku entropiiSSL wyłączone z powodu niezgodności wersji bibliotekiKod błędu SSL %d/%d/%luBłąd SSL: %sUzgodnienie SSL nie udało się, certyfikat klienta został zażądany: %sUzgodnienie SSL nie udało się: %sSerwer SSL nie przedstawił certyfikatuOdczytywanie gniazda SSL nie powiodło sięBezpieczne połączenie obcięteCertyfikat serwera zmienił się: połączenie przechwycone?Weryfikacja certyfikatu serwera nie powiodła się: Certyfikat serwera nie posiada atrybutu commonName w nazwie tematuSerwer nie wysłał łańcucha certyfikatuNumer deskryptoru gniazda przekracza FD_SETSIZERodzina gniazda niewspieranaTTL utraciło ważnośćNieoczekiwana metoda uwierzytelniania wybranaNieznany typ adresu w odpowiedzi połączeniaNieznany błądNieznane transfer-coding w odpowiedziBłąd podczas parsowania XML w linii %d: %sBłąd podczas parsowania XML w linii %d: nieprawidłowa nazwa elementu[nieprawidłowa data][niedrukowalne:#%lu][niedrukowalne]typ adresu niewspieranyzły łańcuch certyfikatucertyfikat został unieważnionycertyfikat wygasłcertyfikat nie jest jeszcze poprawnycertyfikat wydany dla innej nazwy hostapolecenie niewspieranepołączenie niedozwoloneNie można połączyć się z identdnie można parsować wezwanianie można parsować domeny w wezwaniu Digestporażkahost nieosiągalnywezwanie %s zignorowaneignorowanie pustej kontynuacji Negotiateniekompatybilny algorytm w wezwaniu Digestpoczątkowe wezwanie Digest było nieaktualneniewłaściwy żeton Negotiatewydawca nie jest zaufanybrakujący parametr w wezwaniu Digestbrakująca domena w wezwaniu Basicsieć nieosiągalnanieprawidłowe przesunięcieodrzucone wezwanie %sodrzucone z powodu niezgodności użytkownika identdżądanie odrzucone lub nieudanepodpisane przy użyciu niebezpiecznego algorytmunieaktualne wezwanie Digest z nowym algorytmem lub domenąnieznany algorytm w wezwaniu Digestnierozpoznane błędy (%u)0707010005ff98000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001700000000root/usr/local/include0707010005ff99000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000001c00000000root/usr/local/include/neon0707010005ffa0000081a40000000000000000000000014cbd2dcd000006d2000000b500010002ffffffffffffffff0000002a00000000root/usr/local/include/neon/ne_compress.h/* Compressed HTTP response handling Copyright (C) 2001-2004, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_COMPRESS_H #define NE_COMPRESS_H #include "ne_request.h" NE_BEGIN_DECLS typedef struct ne_decompress_s ne_decompress; /* Call this to register a 'reader' callback which will be passed * blocks of response body (if the 'acceptance' callback is * successful). If the response body is returned compressed by the * server, this reader will receive UNCOMPRESSED blocks. * * Returns pointer to context object which must be passed to * ne_decompress_destroy after the request has been dispatched, to * free any internal state. If an error occurs during decompression, * the request will be aborted and session error string set. */ ne_decompress *ne_decompress_reader(ne_request *req, ne_accept_response accpt, ne_block_reader rdr, void *userdata); /* Destroys decompression state. */ void ne_decompress_destroy(ne_decompress *ctx); NE_END_DECLS #endif /* NE_COMPRESS_H */ 0707010005ffab000081a40000000000000000000000014cbd2dcd00002f64000000b500010002ffffffffffffffff0000002800000000root/usr/local/include/neon/ne_socket.h/* socket handling interface Copyright (C) 1999-2010, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_SOCKET_H #define NE_SOCKET_H #include #ifdef WIN32 #include /* for size_t */ #endif #include "ne_defs.h" #include "ne_ssl.h" /* for ne_ssl_context */ NE_BEGIN_DECLS #define NE_SOCK_ERROR (-1) /* Read/Write timed out */ #define NE_SOCK_TIMEOUT (-2) /* Socket was closed */ #define NE_SOCK_CLOSED (-3) /* Connection was reset (e.g. server crashed) */ #define NE_SOCK_RESET (-4) /* Secure connection was closed without proper SSL shutdown. */ #define NE_SOCK_TRUNC (-5) /* ne_socket represents a TCP socket. */ typedef struct ne_socket_s ne_socket; /* ne_sock_addr represents an address object. */ typedef struct ne_sock_addr_s ne_sock_addr; #ifndef NE_INET_ADDR_DEFINED typedef struct ne_inet_addr_s ne_inet_addr; #endif /* Perform process-global initialization of any libraries in use. * Returns non-zero on error. */ int ne_sock_init(void); /* Perform process-global shutdown of any libraries in use. This * function only has effect when it has been called an equal number of * times to ne_sock_init() for the process. */ void ne_sock_exit(void); /* Resolve the given hostname. 'flags' must be zero. Hex * string IPv6 addresses (e.g. `::1') may be enclosed in brackets * (e.g. `[::1]'). */ ne_sock_addr *ne_addr_resolve(const char *hostname, int flags); /* Returns zero if name resolution was successful, non-zero on * error. */ int ne_addr_result(const ne_sock_addr *addr); /* Returns the first network address associated with the 'addr' * object. Undefined behaviour if ne_addr_result returns non-zero for * 'addr'; otherwise, never returns NULL. */ const ne_inet_addr *ne_addr_first(ne_sock_addr *addr); /* Returns the next network address associated with the 'addr' object, * or NULL if there are no more. */ const ne_inet_addr *ne_addr_next(ne_sock_addr *addr); /* NB: the pointers returned by ne_addr_first and ne_addr_next are * valid until ne_addr_destroy is called for the corresponding * ne_sock_addr object. They must not be passed to ne_iaddr_free. */ /* If name resolution fails, copies the error string into 'buffer', * which is of size 'bufsiz'. 'buffer' is returned. */ char *ne_addr_error(const ne_sock_addr *addr, char *buffer, size_t bufsiz); /* Destroys an address object created by ne_addr_resolve. */ void ne_addr_destroy(ne_sock_addr *addr); /* Network address type; IPv4 or IPv6 */ typedef enum { ne_iaddr_ipv4 = 0, ne_iaddr_ipv6 } ne_iaddr_type; /* Create a network address object from raw byte representation (in * network byte order) of given type. 'raw' must be four bytes for an * IPv4 address, 16 bytes for an IPv6 address. May return NULL if * address type is not supported. */ ne_inet_addr *ne_iaddr_make(ne_iaddr_type type, const unsigned char *raw); /* Compare two network address objects i1 and i2; returns zero if they * are equivalent or non-zero otherwise. */ int ne_iaddr_cmp(const ne_inet_addr *i1, const ne_inet_addr *i2); /* Return the type of the given network address object. */ ne_iaddr_type ne_iaddr_typeof(const ne_inet_addr *ia); /* Print the string representation of network address 'ia' into the * buffer 'buffer', which is of length 'bufsiz'. Returns 'buffer'. */ char *ne_iaddr_print(const ne_inet_addr *ia, char *buffer, size_t bufsiz); /* Dump the raw byte representation (in network byte order) of address * 'ia' into the buffer 'buffer', which must be of a suitable length * (4 bytes for an IPv4 address, 16 bytes for an IPv6 address). * Returns 'buffer'. */ unsigned char *ne_iaddr_raw(const ne_inet_addr *ia, unsigned char *buffer); /* Perform the reverse name lookup on network address 'ia', placing * the returned name in the 'buf' buffer (of length 'bufsiz') if * successful. Returns zero on success, or non-zero on error. */ int ne_iaddr_reverse(const ne_inet_addr *ia, char *buf, size_t bufsiz); /* Convert network address string 'addr' (for example, "127.0.0.1") * into a network address object. Returns NULL on parse error. If * non-NULL, return value must be freed using ne_iaddr_free. */ ne_inet_addr *ne_iaddr_parse(const char *addr, ne_iaddr_type type); /* Destroy a network address object created using ne_iaddr_make or * ne_iaddr_parse. */ void ne_iaddr_free(ne_inet_addr *addr); /* Create a socket object; returns NULL on error. */ ne_socket *ne_sock_create(void); /* Specify an address to which the local end of the socket will be * bound during a subsequent ne_sock_connect() call. If the address * passed to ne_sock_connect() is of a different type (family) to * 'addr', 'addr' is ignored. Either 'addr' may be NULL, to use the * given port with unspecified address, or 'port' may be 0, to use the * given address with an unspecified port. * * (Note: This function is not equivalent to a BSD socket bind(), it * only takes effect during the _connect() call). */ void ne_sock_prebind(ne_socket *sock, const ne_inet_addr *addr, unsigned int port); /* Connect the socket to server at address 'addr' on port 'port'. * Returns zero on success, NE_SOCK_TIMEOUT if a timeout occurs when a * non-zero connect timeout is configured (and is supported), or * NE_SOCK_ERROR on failure. */ int ne_sock_connect(ne_socket *sock, const ne_inet_addr *addr, unsigned int port); /* Read up to 'count' bytes from socket into 'buffer'. Returns: * NE_SOCK_* on error, * >0 length of data read into buffer (may be less than 'count') */ ssize_t ne_sock_read(ne_socket *sock, char *buffer, size_t count); /* Read up to 'count' bytes into 'buffer', leaving the data available * in the socket buffer to be returned by a subsequent call to * ne_sock_read or ne_sock_peek. Returns: * NE_SOCK_* on error, * >0 length of data read into buffer. */ ssize_t ne_sock_peek(ne_socket *sock, char *buffer, size_t count); /* Block for up to 'n' seconds until data becomes available for reading * from the socket. Returns: * NE_SOCK_* on error, * NE_SOCK_TIMEOUT if no data arrives in 'n' seconds, * 0 if data arrived on the socket. */ int ne_sock_block(ne_socket *sock, int n); /* Write 'count' bytes of 'data' to the socket. Guarantees to either * write all the bytes or to fail. Returns 0 on success, or NE_SOCK_* * on error. */ int ne_sock_fullwrite(ne_socket *sock, const char *data, size_t count); /* I/O vector. */ struct ne_iovec { void *base; size_t len; }; /* Writes 'count' blocks described by 'vector' to the socket. * Guarantees to either write all the bytes or to fail. Count must be * greater than zero and smaller than the system-defined maximum * vector limit. Returns 0 on success, or NE_SOCK_* on error. */ int ne_sock_fullwritev(ne_socket *sock, const struct ne_iovec *vector, int count); /* Read an LF-terminated line into 'buffer', and NUL-terminate it. * At most 'len' bytes are read (including the NUL terminator). * Returns: * NE_SOCK_* on error, * >0 number of bytes read (including NUL terminator) */ ssize_t ne_sock_readline(ne_socket *sock, char *buffer, size_t len); /* Read exactly 'len' bytes into buffer, or fail; returns 0 on * success, NE_SOCK_* on error. */ ssize_t ne_sock_fullread(ne_socket *sock, char *buffer, size_t len); /* Accepts a connection from listening socket 'fd' and places the * socket in 'sock'. Returns zero on success or -1 on failure. */ int ne_sock_accept(ne_socket *sock, int fd); /* Returns the file descriptor used for socket 'sock'. */ int ne_sock_fd(const ne_socket *sock); /* Return address of peer, or NULL on error. The returned address * 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. */ int ne_sock_close(ne_socket *sock); /* Return current error string for socket. */ const char *ne_sock_error(const ne_socket *sock); /* Set the error string for the socket; takes printf-like format * string. */ void ne_sock_set_error(ne_socket *sock, const char *format, ...) ne_attribute((format (printf, 2, 3))); /* Set read timeout for socket, in seconds; must be a non-zero * positive integer. */ void ne_sock_read_timeout(ne_socket *sock, int timeout); /* Set connect timeout for socket, in seconds; must be a positive * integer. If a timeout of 'zero' is used then then no explicit * timeout handling will be used for ne_sock_connect(), and the * connect call will only timeout as dictated by the TCP stack. */ void ne_sock_connect_timeout(ne_socket *sock, int timeout); /* Negotiate an SSL connection on socket as an SSL server, using given * SSL context. */ int ne_sock_accept_ssl(ne_socket *sock, ne_ssl_context *ctx); /* Negotiate an SSL connection on socket as an SSL client, using given * SSL context. The 'userdata' parameter is associated with the * underlying SSL library's socket structure for use in callbacks. * Returns zero on success, or non-zero on error. */ int ne_sock_connect_ssl(ne_socket *sock, ne_ssl_context *ctx, void *userdata); /* Retrieve the session ID of the current SSL session. If 'buf' is * non-NULL, on success, copies at most *buflen bytes to 'buf' and * sets *buflen to the exact number of bytes copied. If 'buf' is * NULL, on success, sets *buflen to the length of the session ID. * Returns zero on success, non-zero on error. */ int ne_sock_sessid(ne_socket *sock, unsigned char *buf, size_t *buflen); /* Return human-readable name of SSL/TLS cipher used for connection, * or NULL if none. The format of this string is not intended to be * fixed or parseable, but is informational only. Return value is * NUL-terminated malloc-allocated string if not NULL, which must be * freed by the caller. */ char *ne_sock_cipher(ne_socket *sock); /* SOCKS proxy protocol version: */ enum ne_sock_sversion { NE_SOCK_SOCKSV4 = 0, NE_SOCK_SOCKSV4A, NE_SOCK_SOCKSV5 }; /* Given a socket 'sock' which is connected to a SOCKS proxy, initiate * a connection to a destination server using that proxy, specified * either by network address or hostname, at given port 'port'. * * If 'vers' is NE_SOCKS_V4, addr must be an IPv4 address; hostname * and password are ignored; username must be non-NULL. * * If 'vers' is NE_SOCKS_V4A, hostname must be non-NULL; addr is * ignored; password is ignored; username must be non-NULL. * * If 'vers' is NE_SOCKS_V5, addr may be NULL, in which case hostname * must be non-NULL. addr if non-NULL may be an IPv4 or IPv6 address; * username may be NULL, in which case password is ignored. If * username is non-NULL password must also be non-NULL. * * Returns 0 on success, or NE_SOCK_* on failure - in which case, the * socket error string is set. On failure, the socket must be closed * by the caller. */ int ne_sock_proxy(ne_socket *sock, enum ne_sock_sversion vers, const ne_inet_addr *addr, const char *hostname, unsigned int port, const char *username, const char *password); NE_END_DECLS #endif /* NE_SOCKET_H */ 0707010005ff9e000081a40000000000000000000000014cbd2dcd000015f1000000b500010002ffffffffffffffff0000002600000000root/usr/local/include/neon/ne_auth.h/* HTTP authentication routines Copyright (C) 1999-2009, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_AUTH_H #define NE_AUTH_H #include "ne_session.h" /* for ne_session */ NE_BEGIN_DECLS /* Size of username/password buffers passed to ne_auth_creds * callback. */ #define NE_ABUFSIZ (256) /* 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. * * 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.) * * 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_creds)(void *userdata, const char *realm, int attempt, char *username, char *password); /* Set callbacks to provide credentials for server and proxy * authentication, using the default set of authentication protocols. * userdata is passed as the first argument to the callback. */ void ne_set_server_auth(ne_session *sess, ne_auth_creds creds, void *userdata); void ne_set_proxy_auth(ne_session *sess, ne_auth_creds creds, void *userdata); /* As an alternative to using ne_set_server_auth and * ne_set_proxy_auth, the following interfaces may be used; these * allow control over which authentication protocol is used. */ /* NE_AUTH_BASIC: Basic authentication transmits the username and * password unprotected over the channel; this allows a passive attack * to steal the credentials if using an unsecured channel * (i.e. non-SSL). */ #define NE_AUTH_BASIC (0x0001) /* NE_AUTH_DIGEST: Digest authentication uses a hash of the username, * 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) /* NE_AUTH_NEGOTIATE: Negotiate uses GSSAPI/SSPI, or NTLM, to * authenticate the user; an active attacker can modify any of the * request/response at will, so this must not be used over an * unsecured channel. NE_AUTH_NEGOTIATE is currently equivalent to * use of (NE_AUTH_GSSAPI | NE_AUTH_NTLM). */ #define NE_AUTH_NEGOTIATE (0x0004) /* NE_AUTH_GSSAPI: Use GSSAPI or SSPI to authenticate the user; an * active attacker can modify any of the request/response at will, so * this must not be used over an unsecured channel. */ #define NE_AUTH_GSSAPI (0x0008) /* NE_AUTH_NTLM: Use NTLM to authenticate the user; an active attacker * can modify any of the request/response at will, so this must not be * used over an unsecured channel. */ #define NE_AUTH_NTLM (0x0010) /* The default set of supported protocols, as deemed appropriate for * the given session scheme. */ #define NE_AUTH_DEFAULT (0x1000) /* All protocols supported by the library. */ #define NE_AUTH_ALL (0x2000) /* 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_* * values. For NE_AUTH_NEGOTIATE, the creds and userdata arguments * are ignored and may be NULL. * * These functions may be called multiple times per session to * register callbacks for different protocols. If the server presents * more than one protocol in an auth challenge, the following * algorithm will be used to determine which callback is used: * * - iterate over the registered callbacks in the order registered * - for each each callback, iterate over the known set of protocols * in order of algorithm strength (strongest first). * - if the protocol mask for that callback matches the protocol, * attempt authentication using this protocol. * * Therefore, if multiple calls to ne_add_server_auth or * ne_add_proxy_auth are used for a given session, the caller must * ensure that the order in which those calls are made reflects the * precedence of protocols to be used. */ void ne_add_server_auth(ne_session *sess, unsigned protocol, ne_auth_creds creds, void *userdata); void ne_add_proxy_auth(ne_session *sess, unsigned protocol, ne_auth_creds creds, void *userdata); /* Clear any cached authentication credentials for the given * session. */ void ne_forget_auth(ne_session *sess); NE_END_DECLS #endif /* NE_AUTH_H */ 0707010005ff9a000081a40000000000000000000000014cbd2dcd00001142000000b500010002ffffffffffffffff0000002500000000root/usr/local/include/neon/ne_207.h/* WebDAV 207 multi-status response handling Copyright (C) 1999-2006, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_207_H #define NE_207_H #include "ne_xml.h" #include "ne_request.h" /* for ne_request */ #include "ne_uri.h" /* for ne_uri */ NE_BEGIN_DECLS /* The defined state integer for the '{DAV:}prop' element. */ #define NE_207_STATE_PROP (50) /* This interface reserves the state integers 'x' where 0 < x < 100 */ #define NE_207_STATE_TOP (100) /* Handling of 207 multistatus XML documents. A "multistatus" * document is made up of a set of responses, each concerned with a * particular resource. Each response may have an associated result * status and failure description. A response is made up of a set of * propstats, each of which again may have an associated result status * and failure description. */ /* Start and end response callbacks trigger at the start and end of * each "response" within the multistatus body. 'uri' gives the URI * of the resource which is subject of this response. The return * value of a 'start_response' callback is passed as the 'response' * parameter to the corresponding 'end_response' parameter. */ typedef void *ne_207_start_response(void *userdata, const ne_uri *uri); typedef void ne_207_end_response(void *userdata, void *response, const ne_status *status, const char *description); /* Similarly, start and end callbacks for each propstat within the * response. The return value of the 'start_response' callback for * the response in which this propstat is contains is passed as the * 'response' parameter. The return value of each 'start_propstat' is * passed as the 'propstat' parameter' to the corresponding * 'end_propstat' callback. If the start_propstat callback returns * NULL, parsing is aborted (the XML parser error must be set by the * callback). */ typedef void *ne_207_start_propstat(void *userdata, void *response); typedef void ne_207_end_propstat(void *userdata, void *propstat, const ne_status *status, const char *description); typedef struct ne_207_parser_s ne_207_parser; /* Create 207 parser an add the handlers the the given parser's * handler stack. URI references in the 207 response will be resolved * relative to the base URI 'base'. */ ne_207_parser *ne_207_create(ne_xml_parser *parser, const ne_uri *base, void *userdata); /* Register response handling callbacks. */ void ne_207_set_response_handlers(ne_207_parser *p, ne_207_start_response *start, ne_207_end_response *end); /* Register propstat handling callbacks. */ void ne_207_set_propstat_handlers(ne_207_parser *p, ne_207_start_propstat *start, ne_207_end_propstat *end); /* Destroy the parser */ void ne_207_destroy(ne_207_parser *p); /* An acceptance function which only accepts 207 responses */ int ne_accept_207(void *userdata, ne_request *req, const ne_status *status); void *ne_207_get_current_propstat(ne_207_parser *p); void *ne_207_get_current_response(ne_207_parser *p); /* Dispatch request 'req', returning: * NE_ERROR: for a dispatch error, or a non-2xx response, or a * 207 response which contained a non-2xx propstat * NE_OK: for a 2xx response or a 207 response which contained * only 2xx-class propstats. * The request object is destroyed in both cases. */ int ne_simple_request(ne_session *sess, ne_request *req); NE_END_DECLS #endif /* NE_207_H */ 0707010005ff9b000081a40000000000000000000000014cbd2dcd000005af000000b500010002ffffffffffffffff0000002500000000root/usr/local/include/neon/ne_acl.h/* Access control Copyright (C) 2001-2006, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* * DEPRECATED ACL Interface. See ne_acl3744.h for replacement API. */ #ifndef NE_ACL_H #define NE_ACL_H #include "ne_session.h" NE_BEGIN_DECLS typedef struct { enum { ne_acl_href, ne_acl_property, ne_acl_all } apply; enum { ne_acl_grant, ne_acl_deny } type; char *principal; int read; int read_acl; int write; int write_acl; int read_cuprivset; } ne_acl_entry; /* Set the ACL for the given resource to the list of ACL entries. */ int ne_acl_set(ne_session *sess, const char *uri, const ne_acl_entry entries[], int numentries); NE_END_DECLS #endif /* NE_ACL_H */ 0707010005ffb0000081a40000000000000000000000014cbd2dcd00001a96000000b500010002ffffffffffffffff0000002500000000root/usr/local/include/neon/ne_xml.h/* neon XML parser interface Copyright (C) 1999-2007, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_XML_H #define NE_XML_H #include /* for size_t */ #include "ne_defs.h" NE_BEGIN_DECLS /* The neon XML interface filters a streamed XML tree through a stack * of SAX "handlers". A handler is made up of three callbacks * (start-element, char-data, end-element). Each start-element event * is passed to each handler in the stack in turn until one until one * accepts the element. This handler then receives subsequent * char-data and end-element events for the element. * * For each new start-element event, the search up the handler stack * begins with the handler for the parent element (for the root * element, at the base of the stack). * * For each accepted element, a "state" integer is stored, which is * passed to the corresponding char-data and end-element callbacks for * the element. This integer is also passed to the start-element * callback of child elements so they can determine context. * * If no handler in the stack accepts a particular element, it (and * its children, if any) is ignored. */ #define NE_XML_DECLINE (0) #define NE_XML_ABORT (-1) /* A start-element callback for element with given namespace/name. * The callback may return: * <0 => abort the parse (NE_XML_ABORT) * 0 => decline this element (NE_XML_DECLINE) * >0 => accept this element; value is state for this element. * * The 'parent' integer is the state returned by the handler of the * parent element. The attributes array gives name/value pairs * in atts[n] and atts[n+1] from n=0 up to atts[n]==NULL. */ typedef int ne_xml_startelm_cb(void *userdata, int parent, const char *nspace, const char *name, const char **atts); /* state for the root element */ #define NE_XML_STATEROOT (0) /* Character data callback; may return non-zero to abort the parse. */ typedef int ne_xml_cdata_cb(void *userdata, int state, const char *cdata, size_t len); /* End element callback; may return non-zero to abort the parse. */ typedef int ne_xml_endelm_cb(void *userdata, int state, const char *nspace, const char *name); typedef struct ne_xml_parser_s ne_xml_parser; /* Create an XML parser. */ ne_xml_parser *ne_xml_create(void); /* Push a new handler on the stack of parser 'p'. 'cdata' and/or * 'endelm' may be NULL; startelm must be non-NULL. */ void ne_xml_push_handler(ne_xml_parser *p, ne_xml_startelm_cb *startelm, ne_xml_cdata_cb *cdata, ne_xml_endelm_cb *endelm, void *userdata); /* ne_xml_failed returns non-zero if there was an error during * parsing, or zero if the parse completed successfully. The return * value is equal to that of the last ne_xml_parse() call for this * parser object. */ int ne_xml_failed(ne_xml_parser *p); /* Set error string for parser. (The string may be truncated * internally). */ void ne_xml_set_error(ne_xml_parser *p, const char *msg); /* Return the error string (and never NULL). After ne_xml_failed * returns >0, this will describe the parse error. Otherwise it will * be a default error string. */ const char *ne_xml_get_error(ne_xml_parser *p); /* Parse the given block of input of length len. Parser must be * called with len=0 to signify the end of the document (for that * case, the block argument is ignored). Returns zero on success, or * non-zero on error: for an XML syntax error, a positive number is * returned; if parsing is aborted by a caller-supplied callback, that * callback's return value is returned. */ int ne_xml_parse(ne_xml_parser *p, const char *block, size_t len); /* As ne_xml_parse, casting (ne_xml_parser *)userdata internally. * (This function can be passed to ne_add_response_body_reader) */ int ne_xml_parse_v(void *userdata, const char *block, size_t len); /* Return current line of document during parsing or after parsing is * complete. */ int ne_xml_currentline(ne_xml_parser *p); /* From a start_element callback which was passed 'attrs' using given * parser, return attribute of given name and namespace. If nspace is * NULL, no namespace resolution is performed. Note that this call is * context-specific; if called outside a start_element callback, * behaviour is undefined. */ const char *ne_xml_get_attr(ne_xml_parser *parser, const char **attrs, const char *nspace, const char *name); /* From a start_element callback, resolve a given XML Namespace * prefix, if defined. Given a non-NULL prefix, returns the namespace * URI which corresponds to the prefix 'prefix' (of length 'length'), * or NULL if no such namespace prefix is defined. Given a NULL * prefix, returns the default namespace URI or the empty string if * none is defined. Note that this call is context-specific; if * called outside a start_element callback, behaviour is undefined. */ const char *ne_xml_resolve_nspace(ne_xml_parser *parser, const char *prefix, size_t length); /* Return the encoding of the document being parsed. May return NULL * if no encoding is defined or if the XML declaration has not yet * been parsed. */ const char *ne_xml_doc_encoding(const ne_xml_parser *p); /* Destroy the parser object. */ void ne_xml_destroy(ne_xml_parser *p); /* A utility interface for mapping {nspace, name} onto an integer. */ struct ne_xml_idmap { const char *nspace, *name; int id; }; /* Return the size of an idmap array */ #define NE_XML_MAPLEN(map) (sizeof(map) / sizeof(struct ne_xml_idmap)) /* Return the 'id' corresponding to {nspace, name}, or zero. */ int ne_xml_mapid(const struct ne_xml_idmap map[], size_t maplen, const char *nspace, const char *name); /* media type, appropriate for adding to a Content-Type header */ #define NE_XML_MEDIA_TYPE "application/xml" NE_END_DECLS #endif /* NE_XML_H */ 0707010005ffaa000081a40000000000000000000000014cbd2dcd00003a55000000b500010002ffffffffffffffff0000002900000000root/usr/local/include/neon/ne_session.h/* HTTP session handling Copyright (C) 1999-2009, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_SESSION_H #define NE_SESSION_H 1 #include #include "ne_ssl.h" #include "ne_uri.h" /* for ne_uri */ #include "ne_defs.h" #include "ne_socket.h" NE_BEGIN_DECLS typedef struct ne_session_s ne_session; /* Create a session to the given server, using the given scheme. If * "https" is passed as the scheme, SSL will be used to connect to the * server. */ ne_session *ne_session_create(const char *scheme, const char *hostname, unsigned int port); /* Finish an HTTP session */ void ne_session_destroy(ne_session *sess); /* Prematurely force the connection to be closed for the given * session. */ void ne_close_connection(ne_session *sess); /* Set the proxy server to be used for the session. This function * will override (remove) any proxy servers previously configured, and * must be called before any requests are created using this * session. */ void ne_session_proxy(ne_session *sess, const char *hostname, unsigned int port); /* Configure a SOCKS proxy server which will be used for the session. * The SOCKS protocol version 'vers' will be used to contact the * proxy at given 'hostname' and 'port'. * * If SOCKSv4 or v4a are used, username must be non-NULL. For v5, * username may be NULL, in which case, password is ignored. If * username is non-NULL, password must also be non-NULL. * * This function will override (remove) any proxy servers previously * configured, and must be called before any requests are created * using this session. */ void ne_session_socks_proxy(ne_session *sess, enum ne_sock_sversion vers, const char *hostname, unsigned int port, const char *username, const char *password); /* Configure use of proxy servers from any system-wide default sources * which are configured at build time. This function will override * (remove) any proxy servers previously configured, and must be * called before any requests are created using this session. The * 'flags' parameter must be zero. */ void ne_session_system_proxy(ne_session *sess, unsigned int flags); /* Defined session flags: */ typedef enum ne_session_flag_e { NE_SESSFLAG_PERSIST = 0, /* disable this flag to prevent use of * persistent connections. */ NE_SESSFLAG_ICYPROTO, /* enable this flag to enable support for * non-HTTP ShoutCast-style "ICY" responses. */ NE_SESSFLAG_SSLv2, /* disable this flag to disable support for * SSLv2, if supported by the SSL library. */ NE_SESSFLAG_RFC4918, /* enable this flag to enable support for * RFC4918-only WebDAV features; losing * backwards-compatibility with RFC2518 * servers. */ NE_SESSFLAG_CONNAUTH, /* enable this flag if an awful, broken, * RFC-violating, connection-based HTTP * authentication scheme is in use. */ NE_SESSFLAG_TLS_SNI, /* disable this flag to disable use of the * TLS Server Name Indication extension. */ NE_SESSFLAG_EXPECT100, /* enable this flag to enable the flag * NE_REQFLAG_EXPECT100 for new requests. */ NE_SESSFLAG_LAST /* enum sentinel value */ } ne_session_flag; /* Set a new value for a particular session flag. */ void ne_set_session_flag(ne_session *sess, ne_session_flag flag, int value); /* Return 0 if the given flag is not set, >0 it is set, or -1 if the * flag is not supported. */ int ne_get_session_flag(ne_session *sess, ne_session_flag flag); /* Bypass the normal name resolution; force the use of specific set of * addresses for this session, addrs[0]...addrs[n-1]. The 'addrs' * array and pointed-to objects must remain valid until the session is * destroyed. This function will override (remove) any proxy servers * previously configured, and must be called before any requests are * created using this session. */ void ne_set_addrlist(ne_session *sess, const ne_inet_addr **addrs, size_t n); /* Bind connections to the specified local address. If the address * determined for the remote host has a different family (type) to * 'addr', 'addr' will be ignored. The 'addr' object must remain * valid until the session is destroyed. */ void ne_set_localaddr(ne_session *sess, const ne_inet_addr *addr); /* DEPRECATED: Progress callback. */ typedef void (*ne_progress)(void *userdata, ne_off_t progress, ne_off_t total); /* DEPRECATED API: Set a progress callback for the session; this is * deprecated in favour of ne_set_notifier(). The progress callback * is invoked for after each block of the request and response body to * indicate request and response progress (there is no way to * distinguish between the two using this interface alone). * If progress is NULL, any existing callback is deregistered and will * no longer be invoked. * * NOTE: Use of this interface is mutually exclusive with the use of * ne_set_notifier(). A call to ne_set_progress() removes the * notifier callback, and vice versa. */ void ne_set_progress(ne_session *sess, ne_progress progress, void *userdata); /* Store an opaque context for the session, 'priv' is returned by a * call to ne_session_get_private with the same ID. */ void ne_set_session_private(ne_session *sess, const char *id, void *priv); void *ne_get_session_private(ne_session *sess, const char *id); /* Status event type. NOTE: More event types may be added in * subsequent releases, so callers must ignore unknown status types * for forwards-compatibility. */ typedef enum { ne_status_lookup = 0, /* looking up hostname */ ne_status_connecting, /* connecting to host */ ne_status_connected, /* connected to host */ ne_status_sending, /* sending a request body */ ne_status_recving, /* receiving a response body */ ne_status_disconnected /* disconnected from host */ } ne_session_status; /* Status event information union; the relevant structure within * corresponds to the event type. WARNING: the size of this union is * not limited by ABI constraint; it may be extended with additional * members of different size, or existing members may be extended. */ typedef union ne_session_status_info_u { struct /* ne_status_lookup */ { /* The hostname which is being resolved: */ const char *hostname; } lu; struct /* ne_status_connecting */ { /* The hostname and network address to which a connection * attempt is being made: */ const char *hostname; const ne_inet_addr *address; } ci; struct /* ne_status_connected, ne_status_disconnected */ { /* The hostname to which a connection has just been * established or closed: */ const char *hostname; } cd; struct /* ne_status_sending and ne_status_recving */ { /* Request/response body transfer progress; if total == -1, * the total size is unknown; otherwise, total gives the total * number of bytes which will be transferred. progress gives * the number of bytes transferred so far. */ ne_off_t progress, total; } sr; } ne_session_status_info; /* Callback invoked to notify a new session status event, given by the * 'status' argument. On invocation, the contents of exactly one of * the structures in the info union will be valid, as indicated * above. */ typedef void (*ne_notify_status)(void *userdata, ne_session_status status, const ne_session_status_info *info); /* Set a status notification callback for the session, to report * session status events. Only one notification callback per session * can be registered; the most recent of successive calls to this * function takes effect. If status is NULL, any existing callback * is deregistered and will no longer be invoked. * * NOTE: Use of this interface is mutually exclusive with the use of * ne_set_progress(). A call to ne_set_notifier() removes the * progress callback, and vice versa. */ void ne_set_notifier(ne_session *sess, ne_notify_status status, void *userdata); /* Certificate verification failures. */ /* NE_SSL_NOTYETVALID: the certificate is not yet valid. */ #define NE_SSL_NOTYETVALID (0x01) /* NE_SSL_EXPIRED: the certificate has expired. */ #define NE_SSL_EXPIRED (0x02) /* NE_SSL_IDMISMATCH: the hostname for which the certificate was * issued does not match the hostname of the server; this could mean * that the connection is being intercepted. */ #define NE_SSL_IDMISMATCH (0x04) /* NE_SSL_UNTRUSTED: the certificate authority which signed the server * certificate is not trusted: there is no indicatation the server is * who they claim to be: */ #define NE_SSL_UNTRUSTED (0x08) /* NE_SSL_BADCHAIN: the certificate chain contained a certificate * other than the server cert which failed verification for a reason * other than lack of trust; for example, due to a CA cert being * outside its validity period. */ #define NE_SSL_BADCHAIN (0x10) /* N.B.: 0x20 is reserved. */ /* NE_SSL_REVOKED: the server certificate has been revoked by the * issuing authority. */ #define NE_SSL_REVOKED (0x40) /* For purposes of forwards-compatibility, the bitmask of all * currently exposed failure bits is given as NE_SSL_FAILMASK. If the * expression (failures & ~NE_SSL_FAILMASK) is non-zero a failure type * is present which the application does not recognize but must treat * as a verification failure nonetheless. */ #define NE_SSL_FAILMASK (0x5f) /* A callback which is used when server certificate verification is * needed. The reasons for verification failure are given in the * 'failures' parameter, which is a binary OR of one or more of the * above NE_SSL_* values. failures is guaranteed to be non-zero. The * callback must return zero to accept the certificate: a non-zero * return value will fail the SSL negotiation. */ typedef int (*ne_ssl_verify_fn)(void *userdata, int failures, const ne_ssl_certificate *cert); /* Install a callback to handle server certificate verification. This * is required when the CA certificate is not known for the server * certificate, or the server cert has other verification problems. */ void ne_ssl_set_verify(ne_session *sess, ne_ssl_verify_fn fn, void *userdata); /* Use the given client certificate for the session. The client cert * MUST be in the decrypted state, otherwise behaviour is undefined. * The 'clicert' object is duplicated internally so can be destroyed * by the caller. */ void ne_ssl_set_clicert(ne_session *sess, const ne_ssl_client_cert *clicert); /* Indicate that the certificate 'cert' is trusted; the 'cert' object * is duplicated internally so can be destroyed by the caller. This * function has no effect for non-SSL sessions. */ void ne_ssl_trust_cert(ne_session *sess, const ne_ssl_certificate *cert); /* If the SSL library provided a default set of CA certificates, trust * this set of CAs. */ void ne_ssl_trust_default_ca(ne_session *sess); /* Callback used to load a client certificate on demand. If dncount * is > 0, the 'dnames' array dnames[0] through dnames[dncount-1] * gives the list of CA names which the server indicated were * acceptable. The callback should load an appropriate client * certificate and then pass it to 'ne_ssl_set_clicert'. */ typedef void (*ne_ssl_provide_fn)(void *userdata, ne_session *sess, const ne_ssl_dname *const *dnames, int dncount); /* Register a function to be called when the server requests a client * certificate. */ void ne_ssl_provide_clicert(ne_session *sess, ne_ssl_provide_fn fn, void *userdata); /* Set the timeout (in seconds) used when reading from a socket. The * timeout value must be greater than zero. */ void ne_set_read_timeout(ne_session *sess, int timeout); /* Set the timeout (in seconds) used when making a connection. The * timeout value must be greater than zero. */ void ne_set_connect_timeout(ne_session *sess, int timeout); /* 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. * product = token ["/" product-version] * product-version = token * where token is any alpha-numeric-y string [a-zA-Z0-9]* */ void ne_set_useragent(ne_session *sess, const char *product); /* Returns non-zero if next-hop server does not claim compliance to * HTTP/1.1 or later. */ int ne_version_pre_http11(ne_session *sess); /* Returns the 'hostport' URI segment for the end-server, e.g. * "my.server.com:8080". */ const char *ne_get_server_hostport(ne_session *sess); /* Returns the URL scheme being used for the current session, omitting * the trailing ':'; e.g. "http" or "https". */ const char *ne_get_scheme(ne_session *sess); /* Sets the host, scheme, and port fields of the given URI structure * to that of the configured server and scheme for the session; host * and scheme are malloc-allocated. No other fields in the URI * structure are changed. */ void ne_fill_server_uri(ne_session *sess, ne_uri *uri); /* If a proxy is configured, sets the host and port fields in the * given URI structure to that of the proxy. If multiple proxies are * configured, the active is used if any, otherwise the first. The * hostname is malloc-allocated. No other fields in the URI structure * are changed; if no proxy is configured or a non-HTTP proxy is in * use, no fields are changed. */ void ne_fill_proxy_uri(ne_session *sess, ne_uri *uri); /* Set the error string for the session; takes printf-like format * string. */ void ne_set_error(ne_session *sess, const char *format, ...) ne_attribute((format (printf, 2, 3))); /* Retrieve the error string for the session */ const char *ne_get_error(ne_session *sess); NE_END_DECLS #endif /* NE_SESSION_H */ 0707010005ffa7000081a40000000000000000000000014cbd2dcd00002715000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/neon/ne_props.h/* WebDAV Properties manipulation Copyright (C) 1999-2006, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_PROPS_H #define NE_PROPS_H #include "ne_request.h" #include "ne_207.h" NE_BEGIN_DECLS /* There are two interfaces for fetching properties. The first is * 'ne_simple_propfind', which is relatively simple, and easy to use, * but only lets you fetch FLAT properties, i.e. properties which are * just a string of bytes. The complex interface is 'ne_propfind_*', * which is complicated, and hard to use, but lets you parse * structured properties, i.e. properties which have XML content. */ /* The 'ne_simple_propfind' interface. *** * * ne_simple_propfind allows you to fetch a set of properties for a * single resource, or a tree of resources. You set the operation * going by passing these arguments: * * - the session which should be used. * - the URI and the depth of the operation (0, 1, infinite) * - the names of the properties which you want to fetch * - a results callback, and the userdata for the callback. * * For each resource found, the results callback is called, passing * you two things along with the userdata you passed in originally: * * - the URI of the resource (const ne_uri *uri) * - the properties results set (const ne_prop_result_set *results) * */ /* The name of a WebDAV property. 'nspace' may be NULL. */ typedef struct { const char *nspace, *name; } ne_propname; typedef struct ne_prop_result_set_s ne_prop_result_set; /* Get the value of a given property. Will return NULL if there was an * error fetching this property on this resource. Call * ne_propset_result to get the response-status if so. */ const char *ne_propset_value(const ne_prop_result_set *set, const ne_propname *propname); /* Returns the status structure for fetching the given property on * this resource. This function will return NULL if the server did not * return the property (which is a server error). */ const ne_status *ne_propset_status(const ne_prop_result_set *set, const ne_propname *propname); /* Returns the private pointer for the given propset. */ void *ne_propset_private(const ne_prop_result_set *set); /* Return language string of property (may be NULL). */ const char *ne_propset_lang(const ne_prop_result_set *set, const ne_propname *pname); /* ne_propset_iterate iterates over a properties result set, * calling the callback for each property in the set. userdata is * passed as the first argument to the callback. value may be NULL, * indicating an error occurred fetching this property: look at * status for the error in that case. * * If the iterator returns non-zero, ne_propset_iterate will return * immediately with that value. */ typedef int (*ne_propset_iterator)(void *userdata, const ne_propname *pname, const char *value, const ne_status *status); /* Iterate over all the properties in 'set', calling 'iterator' * for each, passing 'userdata' as the first argument to callback. * * Returns: * whatever value iterator returns. */ int ne_propset_iterate(const ne_prop_result_set *set, ne_propset_iterator iterator, void *userdata); /* Callback for handling the results of fetching properties for a * single resource (identified by URI 'uri'). The results are stored * in the result set 'results': use ne_propset_* to examine this * object. */ typedef void (*ne_props_result)(void *userdata, const ne_uri *uri, const ne_prop_result_set *results); /* Fetch properties for a resource (if depth == NE_DEPTH_ZERO), * or a tree of resources (if depth == NE_DEPTH_ONE or _INFINITE). * * Names of the properties required must be given in 'props', * or if props is NULL, *all* properties are fetched. * * 'results' is called for each resource in the response, userdata is * passed as the first argument to the callback. It is important to * note that the callback is called as the response is read off the * socket, so don't do anything silly in it (e.g. sleep(100), or call * any functions which use this session). * * Note that if 'depth' is NE_DEPTH_INFINITY, some servers may refuse * the request. * * Returns NE_*. */ int ne_simple_propfind(ne_session *sess, const char *path, int depth, const ne_propname *props, ne_props_result results, void *userdata); /* The properties of a resource can be manipulated using ne_proppatch. * A single proppatch request may include any number of individual * "set" and "remove" operations, and is defined to have * "all-or-nothing" semantics, so either all the operations succeed, * or none do. */ /* A proppatch operation may either set a property to have a new * value, in which case 'type' must be ne_propset, and 'value' must be * non-NULL; or it can remove a property; in which case 'type' must be * ne_propremove, and 'value' is ignored. In both cases, 'name' must * be set to the name of the property to alter. */ enum ne_proppatch_optype { ne_propset, ne_propremove }; typedef struct { const ne_propname *name; enum ne_proppatch_optype type; const char *value; } ne_proppatch_operation; /* Execute a set of property operations 'ops' on 'path'. 'ops' is an * array terminated by an operation with a NULL 'name' field. Returns * NE_*. */ int ne_proppatch(ne_session *sess, const char *path, const ne_proppatch_operation *ops); /* Retrieve property names for the resources at 'path'. 'results' * callback is called for each resource. Use 'ne_propset_iterate' on * the passed results object to retrieve the list of property names. * */ int ne_propnames(ne_session *sess, const char *path, int depth, ne_props_result results, void *userdata); /* The complex, you-do-all-the-work, property fetch interface: */ struct ne_propfind_handler_s; typedef struct ne_propfind_handler_s ne_propfind_handler; /* Retrieve the 'private' pointer for the current propset for the * given handler, as returned by the ne_props_create_complex callback * installed using 'ne_propfind_set_private'. If this callback was * not registered, this function will return NULL. */ void *ne_propfind_current_private(ne_propfind_handler *handler); /* Create a PROPFIND handler, for the given resource or set of * resources. * * Depth must be one of NE_DEPTH_*. */ ne_propfind_handler * ne_propfind_create(ne_session *sess, const char *path, int depth); /* Return the XML parser for the given handler (only need if you want * to handle complex properties). */ ne_xml_parser *ne_propfind_get_parser(ne_propfind_handler *handler); /* This interface reserves the state integer range 'x' where 0 < x * and x < NE_PROPS_STATE_TOP. */ #define NE_PROPS_STATE_TOP (NE_207_STATE_TOP + 100) /* Return the request object for the given handler. You MUST NOT use * ne_set_request_body_* on this request object. (this call is only * needed if for instance, you want to add extra headers to the * PROPFIND request). The result of using the request pointer after * ne_propfind_destroy(handler) has been called is undefined. */ ne_request *ne_propfind_get_request(ne_propfind_handler *handler); /* A "complex property" has a value which is structured XML. To handle * complex properties, you must set up and register an XML handler * which will understand the elements which make up such properties. * The handler must be registered with the parser returned by * 'ne_propfind_get_parser'. * * To store the parsed value of the property, a 'private' structure is * allocated in each propset (i.e. one per resource). When parsing the * property value elements, for each new resource encountered in the * response, the 'creator' callback is called to retrieve a 'private' * structure for this resource. When the private structure is no longer * needed, the 'destructor' callback is called to deallocate any * memory, if necessary. * * Whilst in XML element callbacks you will have registered to handle * complex properties, you can use the 'ne_propfind_current_private' * call to retrieve the pointer to this private structure. * * To retrieve this 'private' structure from the propset in the * results callback, simply call 'ne_propset_private'. * */ typedef void *(*ne_props_create_complex)(void *userdata, const ne_uri *uri); typedef void (*ne_props_destroy_complex)(void *userdata, void *complex); void ne_propfind_set_private(ne_propfind_handler *handler, ne_props_create_complex creator, ne_props_destroy_complex destructor, void *userdata); /* Fetch all properties. * * Returns NE_*. */ int ne_propfind_allprop(ne_propfind_handler *handler, ne_props_result result, void *userdata); /* Fetch all properties with names listed in array 'names', which is * terminated by a property with a NULL name field. For each resource * encountered, the result callback will be invoked, passing in * 'userdata' as the first argument. * * Returns NE_*. */ int ne_propfind_named(ne_propfind_handler *handler, const ne_propname *names, ne_props_result result, void *userdata); /* Destroy a propfind handler after use. */ void ne_propfind_destroy(ne_propfind_handler *handler); NE_END_DECLS #endif /* NE_PROPS_H */ 0707010005ffa5000081a40000000000000000000000014cbd2dcd00000f50000000b500010002ffffffffffffffff0000002500000000root/usr/local/include/neon/ne_md5.h/* Declaration of functions and data types used for MD5 sum computing library functions. Copyright (C) 2006, Joe Orton Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef NE_MD5_H #define NE_MD5_H 1 #include #include "ne_defs.h" NE_BEGIN_DECLS /* * The following three functions are build up the low level used in * the functions `md5_stream' and `md5_buffer'. */ struct ne_md5_ctx; /* Create structure containing state of computation. */ extern struct ne_md5_ctx *ne_md5_create_ctx(void); /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is necessary that LEN is a multiple of 64!!! */ extern void ne_md5_process_block(const void *buffer, size_t len, struct ne_md5_ctx *ctx); /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is NOT required that LEN is a multiple of 64. */ extern void ne_md5_process_bytes(const void *buffer, size_t len, struct ne_md5_ctx *ctx); /* Process the remaining bytes in the buffer and put result from CTX in first 16 bytes following RESBUF. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ extern void *ne_md5_finish_ctx(struct ne_md5_ctx *ctx, void *resbuf); /* Put result from CTX in first 16 bytes following RESBUF. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ extern void *ne_md5_read_ctx(const struct ne_md5_ctx *ctx, void *resbuf); /* Take a copy of the state structure. */ extern struct ne_md5_ctx *ne_md5_dup_ctx(struct ne_md5_ctx *ctx); /* Re-initialize the context structure. */ extern void ne_md5_reset_ctx(struct ne_md5_ctx *ctx); /* Destroy the context structure. */ extern void ne_md5_destroy_ctx(struct ne_md5_ctx *ctx); /* Compute MD5 message digest for bytes read from STREAM. The resulting message digest number will be written into the 16 bytes beginning at RESBLOCK. */ extern int ne_md5_stream(FILE *stream, void *resblock); /* Process the remaining bytes in the buffer and put ASCII representation of the resulting message digest from CTX in the first 33 bytes of BUFFER, including a trailing NUL terminator byte. Returns pointer to buffer. */ char *ne_md5_finish_ascii(struct ne_md5_ctx *ctx, char buffer[33]); /* MD5 ascii->binary conversion */ void ne_md5_to_ascii(const unsigned char md5_buf[16], char *buffer); void ne_ascii_to_md5(const char *buffer, unsigned char md5_buf[16]); NE_END_DECLS #endif /* NE_MD5_H */ 0707010005ffa8000081a40000000000000000000000014cbd2dcd000005eb000000b500010002ffffffffffffffff0000002a00000000root/usr/local/include/neon/ne_redirect.h/* HTTP-redirect support Copyright (C) 1999-2002, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_REDIRECT_H #define NE_REDIRECT_H #include "ne_request.h" NE_BEGIN_DECLS /* Register redirect handling for the session: if a valid redirect * (30x) response is given for any request in this session, the * request will fail with the NE_REDIRECT code, and the destination of * the redirect can be retrieved using ne_redirect_location(). */ void ne_redirect_register(ne_session *sess); /* Returns location of last redirect for the session. Returns NULL if * no redirect has been encountered for given session, or the last * redirect encountered could not be parsed. */ const ne_uri *ne_redirect_location(ne_session *sess); NE_END_DECLS #endif /* NE_REDIRECT_H */ 0707010005ffa2000081a40000000000000000000000014cbd2dcd00000798000000b500010002ffffffffffffffff0000002600000000root/usr/local/include/neon/ne_defs.h/* Standard definitions for neon headers Copyright (C) 2003-2008, 2010, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #undef NE_BEGIN_DECLS #undef NE_END_DECLS #ifdef __cplusplus # define NE_BEGIN_DECLS extern "C" { # define NE_END_DECLS } #else # define NE_BEGIN_DECLS /* empty */ # define NE_END_DECLS /* empty */ #endif #ifndef NE_DEFS_H #define NE_DEFS_H #include #ifdef NE_LFS typedef off64_t ne_off_t; #else typedef off_t ne_off_t; #endif /* define ssize_t for Win32 */ #if defined(WIN32) && !defined(ssize_t) #define ssize_t int #endif #ifdef __NETWARE__ #include /* for time_t */ #endif #ifdef __GNUC__ #if __GNUC__ >= 3 #ifndef NE_PRIVATE #define NE_PRIVATE __attribute__((visibility ("hidden"))) #endif #define ne_attribute_malloc __attribute__((malloc)) #else #define ne_attribute_malloc #endif #if __GNUC__ > 3 #define ne_attribute_sentinel __attribute__((sentinel)) #else #define ne_attribute_sentinel #endif #define ne_attribute(x) __attribute__(x) #else #define ne_attribute(x) #define ne_attribute_malloc #define ne_attribute_sentinel #endif #ifndef NE_PRIVATE #define NE_PRIVATE #endif #ifndef NE_BUFSIZ #define NE_BUFSIZ 8192 #endif #endif /* NE_DEFS_H */ 0707010005ffa9000081a40000000000000000000000014cbd2dcd0000384b000000b500010002ffffffffffffffff0000002900000000root/usr/local/include/neon/ne_request.h/* HTTP Request Handling Copyright (C) 1999-2006, 2008, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_REQUEST_H #define NE_REQUEST_H #include "ne_utils.h" /* For ne_status */ #include "ne_string.h" /* For ne_buffer */ #include "ne_session.h" NE_BEGIN_DECLS #define NE_OK (0) /* Success */ #define NE_ERROR (1) /* Generic error; use ne_get_error(session) for message */ #define NE_LOOKUP (2) /* Server or proxy hostname lookup failed */ #define NE_AUTH (3) /* User authentication failed on server */ #define NE_PROXYAUTH (4) /* User authentication failed on proxy */ #define NE_CONNECT (5) /* Could not connect to server */ #define NE_TIMEOUT (6) /* Connection timed out */ #define NE_FAILED (7) /* The precondition failed */ #define NE_RETRY (8) /* Retry request (ne_end_request ONLY) */ #define NE_REDIRECT (9) /* See ne_redirect.h */ /* Opaque object representing a single HTTP request. */ typedef struct ne_request_s ne_request; /***** Request Handling *****/ /* Create a request in session 'sess', with given method and path. * 'path' must conform to the 'abs_path' grammar in RFC2396, with an * optional "? query" part, and MUST be URI-escaped by the caller. */ ne_request *ne_request_create(ne_session *sess, const char *method, const char *path); /* The request body will be taken from 'size' bytes of 'buffer'. */ void ne_set_request_body_buffer(ne_request *req, const char *buffer, size_t size); /* The request body will be taken from 'length' bytes read from the * file descriptor 'fd', starting from file offset 'offset'. */ void ne_set_request_body_fd(ne_request *req, int fd, ne_off_t offset, ne_off_t length); /* "Pull"-based request body provider: a callback which is invoked to * provide blocks of request body on demand. * * Before each time the body is provided, the callback will be called * once with buflen == 0. The body may have to be provided >1 time * per request (for authentication retries etc.). * * For a call with buflen == 0, the callback must return zero on success * or non-zero on error; the session error string must be set on error. * For a call with buflen > 0, the callback must return: * <0 : error, abort request; session error string must be set. * 0 : ignore 'buffer' contents, end of body. * 0 < x <= buflen : buffer contains x bytes of body data. */ typedef ssize_t (*ne_provide_body)(void *userdata, char *buffer, size_t buflen); /* Install a callback which is invoked as needed to provide the * request body, a block at a time. The total size of the request * body is 'length'; the callback must ensure that it returns no more * than 'length' bytes in total. */ void ne_set_request_body_provider(ne_request *req, ne_off_t length, ne_provide_body provider, void *userdata); /* Handling response bodies; two callbacks must be provided: * * 1) 'acceptance' callback: determines whether you want to handle the * response body given the response-status information, e.g., if you * only want 2xx responses, say so here. * * 2) 'reader' callback: passed blocks of the response-body as they * arrive, if the acceptance callback returned non-zero. */ /* 'acceptance' callback type. Return non-zero to accept the response, * else zero to ignore it. */ typedef int (*ne_accept_response)(void *userdata, ne_request *req, const ne_status *st); /* An 'acceptance' callback which only accepts 2xx-class responses. * Ignores userdata. */ int ne_accept_2xx(void *userdata, ne_request *req, const ne_status *st); /* An acceptance callback which accepts all responses. Ignores * userdata. */ int ne_accept_always(void *userdata, ne_request *req, const ne_status *st); /* Callback for reading a block of data. Returns zero on success, or * non-zero on error. If returning an error, the response will be * aborted and the callback will not be invoked again. The request * dispatch (or ne_read_response_block call) will fail with NE_ERROR; * the session error string should have been set by the callback. */ typedef int (*ne_block_reader)(void *userdata, const char *buf, size_t len); /* Add a response reader for the given request, with the given * acceptance function. userdata is passed as the first argument to * the acceptance + reader callbacks. * * The acceptance callback is called once each time the request is * sent: it may be sent >1 time because of authentication retries etc. * For each time the acceptance callback is called, if it returns * non-zero, blocks of the response body will be passed to the reader * callback as the response is read. After all the response body has * been read, the callback will be called with a 'len' argument of * zero. */ void ne_add_response_body_reader(ne_request *req, ne_accept_response accpt, ne_block_reader reader, void *userdata); /* Retrieve the value of the response header field with given name; * returns NULL if no response header with given name was found. The * return value is valid only until the next call to either * ne_request_destroy or ne_begin_request for this request. */ const char *ne_get_response_header(ne_request *req, const char *name); /* Iterator interface for response headers: if passed a NULL cursor, * returns the first header; if passed a non-NULL cursor pointer, * returns the next header. The return value is a cursor pointer: if * it is non-NULL, *name and *value are set to the name and value of * the header field. If the return value is NULL, no more headers are * found, *name and *value are undefined. * * The order in which response headers is returned is undefined. Both * the cursor and name/value pointers are valid only until the next * call to either ne_request_destroy or ne_begin_request for this * request. */ void *ne_response_header_iterate(ne_request *req, void *cursor, const char **name, const char **value); /* Adds a header to the request with given name and value. */ void ne_add_request_header(ne_request *req, const char *name, const char *value); /* Adds a header to the request with given name, using printf-like * format arguments for the value. */ void ne_print_request_header(ne_request *req, const char *name, const char *format, ...) ne_attribute((format(printf, 3, 4))); /* ne_request_dispatch: Sends the given request, and reads the * response. Returns: * - NE_OK if the request was sent and response read successfully * - NE_AUTH, NE_PROXYAUTH for a server or proxy server authentication error * - NE_CONNECT if connection could not be established * - NE_TIMEOUT if an timeout occurred sending or reading from the server * - NE_ERROR for other fatal dispatch errors * On any error, the session error string is set. On success or * authentication error, the actual response-status can be retrieved using * ne_get_status(). */ int ne_request_dispatch(ne_request *req); /* Returns a pointer to the response status information for the given * request; pointer is valid until request object is destroyed. */ const ne_status *ne_get_status(const ne_request *req) ne_attribute((const)); /* Returns pointer to session associated with request. */ ne_session *ne_get_session(const ne_request *req) ne_attribute((const)); /* Destroy memory associated with request pointer */ void ne_request_destroy(ne_request *req); /* "Caller-pulls" request interface. This is an ALTERNATIVE interface * to ne_request_dispatch: either use that, or do all this yourself: * * caller must call: * 1. ne_begin_request (fail if returns non-NE_OK) * 2. while(ne_read_response_block(...) > 0) ... loop ...; * (fail if ne_read_response_block returns <0) * 3. ne_end_request * * ne_end_request and ne_begin_request both return an NE_* code; if * ne_end_request returns NE_RETRY, you must restart the loop from (1) * above. */ int ne_begin_request(ne_request *req); int ne_end_request(ne_request *req); /* Read a block of the response into the passed buffer of size 'buflen'. * * Returns: * <0 - error, stop reading. * 0 - end of response * >0 - number of bytes read into buffer. */ ssize_t ne_read_response_block(ne_request *req, char *buffer, size_t buflen); /* Read response blocks until end of response; exactly equivalent to * calling ne_read_response_block() until it returns 0. Returns * non-zero on error. */ int ne_discard_response(ne_request *req); /* Read response blocks until end of response, writing content to the * given file descriptor. Returns NE_ERROR on error. */ int ne_read_response_to_fd(ne_request *req, int fd); /* Defined request flags: */ typedef enum ne_request_flag_e { NE_REQFLAG_EXPECT100 = 0, /* enable this flag to enable use of the * "Expect: 100-continue" for the * request. */ NE_REQFLAG_IDEMPOTENT, /* disable this flag if the request uses a * non-idempotent method such as POST. */ NE_REQFLAG_LAST /* enum sentinel value */ } ne_request_flag; /* Set a new value for a particular request flag. */ void ne_set_request_flag(ne_request *req, ne_request_flag flag, int value); /* Return 0 if the given flag is not set, >0 it is set, or -1 if the * flag is not supported. */ int ne_get_request_flag(ne_request *req, ne_request_flag flag); /**** Request hooks handling *****/ 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. */ typedef void (*ne_create_request_fn)(ne_request *req, void *userdata, const char *method, const char *requri); void ne_hook_create_request(ne_session *sess, ne_create_request_fn fn, void *userdata); /* Hook called before the request is sent. 'header' is the raw HTTP * header before the trailing CRLF is added; more headers can be added * here. A pre_send hook may be called >1 time per request if the * request is retried due to a post_send hook returning NE_RETRY. */ typedef void (*ne_pre_send_fn)(ne_request *req, void *userdata, ne_buffer *header); void ne_hook_pre_send(ne_session *sess, ne_pre_send_fn fn, void *userdata); /* Hook called directly after the response headers have been read, but * before the resposnse body has been read. 'status' is the response * status-code. A post_header hook may be called >1 time per request * if the request is retried due to a post_send hook returning * NE_RETRY. */ typedef void (*ne_post_headers_fn)(ne_request *req, void *userdata, const ne_status *status); void ne_hook_post_headers(ne_session *sess, ne_post_headers_fn fn, void *userdata); /* Hook called after the request is dispatched (request sent, and * the entire response read). If an error occurred reading the response, * this hook will not run. May return: * NE_OK everything is okay * NE_RETRY try sending the request again. * anything else signifies an error, and the request is failed. The return * code is passed back the _dispatch caller, so the session error must * also be set appropriately (ne_set_error). */ typedef int (*ne_post_send_fn)(ne_request *req, void *userdata, const ne_status *status); void ne_hook_post_send(ne_session *sess, ne_post_send_fn fn, void *userdata); /* Hook called when the function is destroyed. */ typedef void (*ne_destroy_req_fn)(ne_request *req, void *userdata); void ne_hook_destroy_request(ne_session *sess, ne_destroy_req_fn fn, void *userdata); typedef void (*ne_destroy_sess_fn)(void *userdata); /* Hook called when the session is about to be destroyed. */ void ne_hook_destroy_session(ne_session *sess, ne_destroy_sess_fn fn, void *userdata); typedef void (*ne_close_conn_fn)(void *userdata); /* Hook called when the connection is closed; note that this hook * may be called *AFTER* the destroy_session hook. */ void ne_hook_close_conn(ne_session *sess, ne_close_conn_fn fn, void *userdata); /* The ne_unhook_* functions remove a hook registered with the given * session. If a hook is found which was registered with a given * function 'fn', and userdata pointer 'userdata', then it will be * removed from the hooks list. * * It is unsafe to use any of these functions from a hook function to * unregister itself, except for ne_unhook_destroy_request. */ void ne_unhook_create_request(ne_session *sess, ne_create_request_fn fn, void *userdata); void ne_unhook_pre_send(ne_session *sess, ne_pre_send_fn fn, void *userdata); void ne_unhook_post_headers(ne_session *sess, ne_post_headers_fn fn, void *userdata); void ne_unhook_post_send(ne_session *sess, ne_post_send_fn fn, void *userdata); void ne_unhook_destroy_request(ne_session *sess, ne_destroy_req_fn fn, void *userdata); void ne_unhook_destroy_session(ne_session *sess, ne_destroy_sess_fn fn, void *userdata); void ne_unhook_close_conn(ne_session *sess, ne_close_conn_fn fn, void *userdata); /* Store an opaque context for the request, 'priv' is returned by a * call to ne_request_get_private with the same ID. */ void ne_set_request_private(ne_request *req, const char *id, void *priv); void *ne_get_request_private(ne_request *req, const char *id); NE_END_DECLS #endif /* NE_REQUEST_H */ 0707010005ff9f000081a40000000000000000000000014cbd2dcd00001804000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/neon/ne_basic.h/* HTTP/1.1 methods Copyright (C) 1999-2008, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_BASIC_H #define NE_BASIC_H #include /* for time_t */ #include "ne_request.h" NE_BEGIN_DECLS /* Perform a GET request on resource at 'path', writing the entity * body which is returned to 'fd'. */ int ne_get(ne_session *sess, const char *path, int fd); /* Perform a PUT request on resource at 'path', reading the entity * body to submit from 'fd'. */ int ne_put(ne_session *sess, const char *path, int fd); #define NE_DEPTH_ZERO (0) #define NE_DEPTH_ONE (1) #define NE_DEPTH_INFINITE (2) /* For ne_copy and ne_move: * * If a resource exists at "dest" and overwrite is zero, the operation * will fail; if overwrite is non-zero, any existing resource will * be over-written. */ /* Copy resource from 'src to 'dest' paths. If 'src' identifies a * collection resource, depth may be NE_DEPTH_ZERO to request that the * collection and its properties are to be copied, or * NE_DEPTH_INFINITE to request that the collection and its contents * are to be copied. Returns NE_* error code. */ int ne_copy(ne_session *sess, int overwrite, int depth, const char *src, const char *dest); /* Move resource from 'src' to 'dest' path. Returns NE_* error * code. */ int ne_move(ne_session *sess, int overwrite, const char *src, const char *dest); /* Delete resource at 'path'. Returns NE_* error code. */ int ne_delete(ne_session *sess, const char *path); /* Create a collection at 'path', which is required to have a trailing * slash. Returns NE_* error code. */ int ne_mkcol(ne_session *sess, const char *path); /* Adds a Depth: header to a request. */ void ne_add_depth_header(ne_request *req, int depth); /* Retrieve modification time of resource at location 'path', using * the HEAD method, placing parsed time in *modtime. *modtime is set * to -1 if no Last-Modified response header was given, or the date * given could not be parsed. Returns NE_* error code. */ int ne_getmodtime(ne_session *sess, const char *path, time_t *modtime); typedef struct { const char *type, *subtype; const char *charset; char *value; } ne_content_type; /* Retrieve the content-type of the response; returns zero if response * had valid content-type, in which case all fields in *ctype are set * (and never NULL); the caller must free(ctype->value) after use. * Returns non-zero on error, in which case *ctype is not altered. */ int ne_get_content_type(ne_request *req, ne_content_type *ctype); /* DEPRECATED: Server capabilities. */ typedef struct { unsigned int dav_class1; /* True if Class 1 WebDAV server */ unsigned int dav_class2; /* True if Class 2 WebDAV server */ unsigned int dav_executable; /* True if supports the 'executable' * property a. la. mod_dav */ } ne_server_capabilities; /* DEPRECATED: Determines server capabilities (using OPTIONS). */ int ne_options(ne_session *sess, const char *path, ne_server_capabilities *caps); #define NE_CAP_DAV_CLASS1 (0x0001) /* Class 1 WebDAV (RFC 2518) */ #define NE_CAP_DAV_CLASS2 (0x0002) /* Class 2 WebDAV (RFC 2518) */ #define NE_CAP_DAV_CLASS3 (0x0004) /* Class 3 WebDAV (RFC 4918) */ #define NE_CAP_MODDAV_EXEC (0x0008) /* mod_dav "executable" property */ #define NE_CAP_DAV_ACL (0x0010) /* WebDAV ACL (RFC 3744) */ #define NE_CAP_VER_CONTROL (0x0020) /* DeltaV version-control */ #define NE_CAP_CO_IN_PLACE (0x0040) /* DeltaV checkout-in-place */ #define NE_CAP_VER_HISTORY (0x0080) /* DeltaV version-history */ #define NE_CAP_WORKSPACE (0x0100) /* DeltaV workspace */ #define NE_CAP_UPDATE (0x0200) /* DeltaV update */ #define NE_CAP_LABEL (0x0400) /* DeltaV label */ #define NE_CAP_WORK_RESOURCE (0x0800) /* DeltaV working-resouce */ #define NE_CAP_MERGE (0x1000) /* DeltaV merge */ #define NE_CAP_BASELINE (0x2000) /* DeltaV baseline */ #define NE_CAP_ACTIVITY (0x4000) /* DeltaV activity */ #define NE_CAP_VC_COLLECTION (0x8000) /* DeltaV version-controlled-collection */ /* Determines resource capailities, using an OPTIONS request. On * return, *caps is set to a bit-mask of the above NE_CAP_* constants * describing the advertised resource capabilities. */ int ne_options2(ne_session *sess, const char *path, unsigned int *caps); /* Defines a range of bytes, starting at 'start' and ending * at 'end'. 'total' is the number of bytes in the range. */ typedef struct { ne_off_t start, end, total; } ne_content_range; /* Partial GET. range->start must be >= 0. range->total is ignored. * * If range->end is -1, then the rest of the resource from start is * requested, and range->total and end are filled in on success. * * Otherwise, bytes from range->start to range->end are requested. * * This will write to the CURRENT position of f; so if you want * to do a resume download, use: * struct ne_content_range range; * range.start = resume_from; * range.end = range.start + 999; (= 1000 bytes) * fseek(myfile, resume_from, SEEK_SET); * ne_get_range(sess, path, &range, myfile); */ int ne_get_range(ne_session *sess, const char *path, ne_content_range *range, int fd); /* Post using buffer as request-body: stream response into f */ int ne_post(ne_session *sess, const char *path, int fd, const char *buffer); NE_END_DECLS #endif /* NE_BASIC_H */ 0707010005ffac000081a40000000000000000000000014cbd2dcd00001fef000000b500010002ffffffffffffffff0000002500000000root/usr/local/include/neon/ne_ssl.h/* SSL/TLS abstraction layer for neon Copyright (C) 2003-2006, 2009, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* ne_ssl.h defines an interface for loading and accessing the * properties of SSL certificates. */ #ifndef NE_SSL_H #define NE_SSL_H 1 #include #include "ne_defs.h" NE_BEGIN_DECLS /* A "distinguished name"; a unique name for some entity. */ typedef struct ne_ssl_dname_s ne_ssl_dname; /* Returns a single-line string representation of a distinguished * name, intended to be human-readable (e.g. "Acme Ltd., Norfolk, * GB"). Return value is a UTF-8-encoded malloc-allocated string and * must be free'd by the caller. */ char *ne_ssl_readable_dname(const ne_ssl_dname *dn); /* Returns zero if 'dn1' and 'dn2' refer to same name, or non-zero if * they are different. */ int ne_ssl_dname_cmp(const ne_ssl_dname *dn1, const ne_ssl_dname *dn2); /* An SSL certificate. */ typedef struct ne_ssl_certificate_s ne_ssl_certificate; /* Read a certificate from a file in PEM format; returns NULL if the * certificate could not be parsed. */ ne_ssl_certificate *ne_ssl_cert_read(const char *filename); /* Write a certificate to a file in PEM format; returns non-zero if * the certificate could not be written. */ int ne_ssl_cert_write(const ne_ssl_certificate *cert, const char *filename); /* Export a certificate to a base64-encoded, NUL-terminated string. * The returned string is malloc-allocated and must be free()d by the * caller. */ char *ne_ssl_cert_export(const ne_ssl_certificate *cert); /* Import a certificate from a base64-encoded string as returned by * ne_ssl_cert_export(). Returns a certificate object or NULL if * 'data' was not valid. */ ne_ssl_certificate *ne_ssl_cert_import(const char *data); /* Returns the identity of the certificate, or NULL if none is given. * For a server certificate this will be the hostname of the server to * which the cert was issued. A NUL-terminated UTF-8-encoded string * is returned, which is valid for the lifetime of the certificate * object. */ const char *ne_ssl_cert_identity(const ne_ssl_certificate *cert); /* Return the certificate of the entity which signed certificate * 'cert'. Returns NULL if 'cert' is self-signed or the issuer * certificate is not available; if non-NULL, the pointer is valid for * the lifetime of the certificate object. */ const ne_ssl_certificate *ne_ssl_cert_signedby(const ne_ssl_certificate *cert); /* Returns the distinguished name of the certificate issuer. */ const ne_ssl_dname *ne_ssl_cert_issuer(const ne_ssl_certificate *cert); /* Returns the distinguished name of the certificate subject. */ const ne_ssl_dname *ne_ssl_cert_subject(const ne_ssl_certificate *cert); #define NE_SSL_DIGESTLEN (60) /* Calculate the certificate digest ("fingerprint") and format it as a * NUL-terminated hex string in 'digest', of the form "aa:bb:...:ff". * Returns zero on success or non-zero if there was an internal error * whilst calculating the digest. 'digest' must be at least * NE_SSL_DIGESTLEN bytes in length. */ int ne_ssl_cert_digest(const ne_ssl_certificate *cert, char *digest); /* 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. */ void ne_ssl_cert_validity_time(const ne_ssl_certificate *cert, time_t *from, time_t *until); #define NE_SSL_VDATELEN (30) /* Copy the validity times into buffers 'from' and 'until' as * NUL-terminated human-readable strings, using RFC 1123-style date * formatting (and not localized, so always using English month/week * names). The buffers must be at least NE_SSL_VDATELEN bytes in * length, and either may be NULL. */ void ne_ssl_cert_validity(const ne_ssl_certificate *cert, char *from, char *until); /* Returns zero if 'c1' and 'c2' refer to the same certificate, or * non-zero otherwise. */ int ne_ssl_cert_cmp(const ne_ssl_certificate *c1, const ne_ssl_certificate *c2); /* Deallocate memory associated with certificate. */ void ne_ssl_cert_free(ne_ssl_certificate *cert); /* A client certificate (and private key). A client certificate * object has state; the object is either in the "encrypted" or * "decrypted" state. */ typedef struct ne_ssl_client_cert_s ne_ssl_client_cert; /* Read a client certificate and private key from a PKCS12 file; * returns NULL if the file could not be parsed, or otherwise * returning a client certificate object. The returned object may be * in either the encrypted or decrypted state. */ ne_ssl_client_cert *ne_ssl_clicert_read(const char *filename); /* Returns non-zero if client cert is in the encrypted state. */ int ne_ssl_clicert_encrypted(const ne_ssl_client_cert *ccert); /* Returns the "friendly name" given for the client cert, or NULL if * none given. Returns a NUL-terminated, UTF-8-encoded string. This * function may be used on a ccert object in either encrypted or * decrypted state. */ const char *ne_ssl_clicert_name(const ne_ssl_client_cert *ccert); /* Decrypt the encrypted client cert using the given password. * Returns non-zero on failure, in which case, the ccert object * remains in the encrypted state and the function may be called again * with a different password. This function has undefined behaviour * for a ccert object which is in the decrypted state. */ int ne_ssl_clicert_decrypt(ne_ssl_client_cert *ccert, const char *password); /* Return the actual certificate part of the client certificate (never * returns NULL). This function has undefined behaviour for a ccert * object which is in the encrypted state. */ const ne_ssl_certificate *ne_ssl_clicert_owner(const ne_ssl_client_cert *ccert); /* Destroy a client certificate object. This function may be used on * a ccert object in either the encrypted or decrypted state. */ void ne_ssl_clicert_free(ne_ssl_client_cert *ccert); /* SSL context object. The interfaces to manipulate an SSL context * are only needed when interfacing directly with ne_socket.h. */ typedef struct ne_ssl_context_s ne_ssl_context; /* Context creation modes: */ #define NE_SSL_CTX_CLIENT (0) /* client context */ #define NE_SSL_CTX_SERVER (1) /* default server context */ #define NE_SSL_CTX_SERVERv2 (2) /* SSLv2-specific server context */ /* Create an SSL context. */ ne_ssl_context *ne_ssl_context_create(int mode); /* Client mode: trust the given certificate 'cert' in context 'ctx'. */ void ne_ssl_context_trustcert(ne_ssl_context *ctx, const ne_ssl_certificate *cert); /* Server mode: use given cert and key (filenames to PEM certificates). */ int ne_ssl_context_keypair(ne_ssl_context *ctx, const char *cert, const char *key); /* Server mode: set client cert verification options: required is non-zero if * a client cert is required, if ca_names is non-NULL it is a filename containing * a set of PEM certs from which CA names are sent in the ccert request. */ int ne_ssl_context_set_verify(ne_ssl_context *ctx, int required, const char *ca_names, const char *verify_cas); #define NE_SSL_CTX_SSLv2 (0) /* Set a flag for the SSL context. */ void ne_ssl_context_set_flag(ne_ssl_context *ctx, int flag, int value); /* Destroy an SSL context. */ void ne_ssl_context_destroy(ne_ssl_context *ctx); NE_END_DECLS #endif 0707010005ffa3000081a40000000000000000000000014cbd2dcd000007d8000000b500010002ffffffffffffffff0000002600000000root/usr/local/include/neon/ne_i18n.h/* Internationalization of neon Copyright (C) 2005-2006, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_I18N_H #define NE_I18N_H #include "ne_defs.h" NE_BEGIN_DECLS /* Initialize translated error messages within neon. If 'encoding' is * non-NULL, it specifies the character encoding for the generated * translated strings. If it is NULL, the appropriate character * encoding for the locale will be used. * * This call is only strictly necessary if either: * * a) neon has been installed into a different prefix than the * gettext() implementation on which it depends for i18n purposes, or * * b) the caller requires that translated messages are in a particular * character encoding. * * If ne_i18n_init() is never called, the message catalogs will not be * found if case (a) applies (and so English error messages will be * used), and will use the default character encoding specified by the * process locale. The library will otherwise operate correctly. * * 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 ne_i18n_init() with a different encoding parameter. */ void ne_i18n_init(const char *encoding); NE_END_DECLS #endif /* NE_I18N_H */ 0707010005ff9c000081a40000000000000000000000014cbd2dcd00000aaf000000b500010002ffffffffffffffff0000002900000000root/usr/local/include/neon/ne_acl3744.h/* Access control Copyright (C) 2001-2007, Joe Orton Copyright (C) 2001, Arun Garg Copyright (C) 2007 Henrik Holst This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_ACL3744_H #define NE_ACL3744_H #include "ne_session.h" NE_BEGIN_DECLS #define NE_ACL_READ (0x0001) #define NE_ACL_WRITE (0x0002) #define NE_ACL_WRITE_PROPERTIES (0x0004) #define NE_ACL_WRITE_CONTENT (0x0008) #define NE_ACL_UNLOCK (0x0010) #define NE_ACL_READ_ACL (0x0020) #define NE_ACL_READ_CUPRIVSET (0x0040) #define NE_ACL_WRITE_ACL (0x0080) #define NE_ACL_BIND (0x0100) #define NE_ACL_UNBIND (0x0200) #define NE_ACL_ALL (0x0400) enum ne_acl_target { ne_acl_href, ne_acl_property, ne_acl_all, ne_acl_authenticated, ne_acl_unauthenticated, ne_acl_self }; enum ne_acl_optype { ne_acl_grant, ne_acl_deny }; /* A simplified representation of an Access Control Element (ACE): */ typedef struct { /* Identify the principal(s) to which this ACE applies: */ enum ne_acl_target target; /* Whether to grant or deny access: */ enum ne_acl_optype type; /* If target == ne_acl_href, tname must be non-NULL and give the * principal URL. If target == ne_acl_property, tname must be * non-NULL and be a property name, including an XML namespace * definition, if appropriate (the default namespace being * "DAV:"). This restricts access as described at: * http://tools.ietf.org/html/rfc3744#section-5.5.1 */ char *tname; /* The set of privileges to be restricted; a bit mask of one or * more of the NE_ACL_* constants defined above: */ unsigned int privileges; } ne_acl_entry; /* Set the ACL for the given resource to the list of ACL entries. */ int ne_acl3744_set(ne_session *sess, const char *path, const ne_acl_entry entries[], int numentries); NE_END_DECLS #endif /* NE_ACL3744_H */ 0707010005ffa4000081a40000000000000000000000014cbd2dcd000018b5000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/neon/ne_locks.h/* WebDAV Class 2 locking operations Copyright (C) 1999-2006, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_LOCKS_H #define NE_LOCKS_H #include "ne_request.h" /* for ne_session + ne_request */ #include "ne_uri.h" /* for ne_uri */ NE_BEGIN_DECLS /* The scope of a lock */ enum ne_lock_scope { ne_lockscope_exclusive, ne_lockscope_shared }; /* Lock type. Only write locks are defined in RFC2518. */ enum ne_lock_type { ne_locktype_write }; /* A lock object. */ struct ne_lock { ne_uri uri; int depth; /* the depth of the lock (NE_DEPTH_*). */ enum ne_lock_type type; enum ne_lock_scope scope; char *token; /* the lock token: uniquely identifies this lock. */ char *owner; /* string describing the owner of the lock. */ long timeout; /* timeout in seconds. (or NE_TIMEOUT_*) */ }; /* NB: struct ne_lock Would be typedef'ed to ne_lock except lock is * a verb and a noun, so we already have ne_lock the function. Damn * the English language. */ #define NE_TIMEOUT_INFINITE -1 #define NE_TIMEOUT_INVALID -2 /* Create a depth zero, exclusive write lock, with default timeout * (allowing a server to pick a default). token, owner and uri are * unset. */ struct ne_lock *ne_lock_create(void); /* HINT: to initialize uri host/port/scheme for the lock's URI, use * ne_fill_server_uri from ne_session.h. */ /* Deep-copy a lock structure: strdup's any of path, token, owner, * hostport which are set. */ struct ne_lock *ne_lock_copy(const struct ne_lock *lock); /* Free a lock structure; free's any of any of the URI, token and * owner which are set, but not the lock object itself. */ void ne_lock_free(struct ne_lock *lock); /* Like ne_lock_free; but free's the lock object itself too. */ void ne_lock_destroy(struct ne_lock *lock); /* ne_lock_store: an opaque type which is used to store a set of lock * objects. */ typedef struct ne_lock_store_s ne_lock_store; /* Create a lock store. */ ne_lock_store *ne_lockstore_create(void); /* Register the lock store 'store' with the HTTP session 'sess': any * operations made using 'sess' which operate on a locked resource, * can use the locks from 'store' if needed. */ void ne_lockstore_register(ne_lock_store *store, ne_session *sess); /* Destroy a lock store, free'ing any locks remaining inside. */ void ne_lockstore_destroy(ne_lock_store *store); /* Add a lock to the store: the store then "owns" the lock object, and * you must not free it. The lock MUST have all of: * - a completed URI structure: scheme, host, port, and path all set * - a valid lock token * - a valid depth */ void ne_lockstore_add(ne_lock_store *store, struct ne_lock *lock); /* Remove given lock object from store: 'lock' MUST point to a lock * object which is known to be in the store. */ void ne_lockstore_remove(ne_lock_store *store, struct ne_lock *lock); /* Returns the first lock in the lock store, or NULL if the store is * empty. */ struct ne_lock *ne_lockstore_first(ne_lock_store *store); /* After ne_lockstore_first has been called; returns the next lock in * the lock store, or NULL if there are no more locks stored. * Behaviour is undefined if ne_lockstore_first has not been called on * 'store' since the store was created, or the last time this function * returned NULL for the store.. */ struct ne_lock *ne_lockstore_next(ne_lock_store *store); /* Find a lock in the store for the given server, and with the given * path. */ struct ne_lock *ne_lockstore_findbyuri(ne_lock_store *store, const ne_uri *uri); /* Issue a LOCK request for the given lock. Requires that the uri, * depth, type, scope, and timeout members of 'lock' are filled in. * owner and token must be malloc-allocated if not NULL; and may be * free()d by this function. On successful return, lock->token will * contain the lock token. */ int ne_lock(ne_session *sess, struct ne_lock *lock); /* Issue an UNLOCK request for the given lock */ int ne_unlock(ne_session *sess, const struct ne_lock *lock); /* Refresh a lock. Updates lock->timeout appropriately. */ int ne_lock_refresh(ne_session *sess, struct ne_lock *lock); /* Callback for lock discovery. If 'lock' is NULL, something went * wrong performing lockdiscovery for the resource, look at 'status' * for the details. * * If lock is non-NULL, at least lock->uri and lock->token will be * filled in; and status will be NULL. */ typedef void (*ne_lock_result)(void *userdata, const struct ne_lock *lock, const ne_uri *uri, const ne_status *status); /* Perform lock discovery on the given path. 'result' is called with * the results (possibly >1 times). */ int ne_lock_discover(ne_session *sess, const char *path, ne_lock_result result, void *userdata); /* The ne_lock_using_* functions should be used before dispatching a * request which modify resources. If a lock store has been * registered with the session associated with the request, and locks * are present in the lock store which cover the resources which are * being modified by the request, then the appropriate lock tokens are * submitted in the request headers. */ /* Indicate that request 'req' will modify the resource at 'path', and * is an operation of given 'depth'. */ void ne_lock_using_resource(ne_request *req, const char *path, int depth); /* Indicate that request 'req' will modify the parent collection of * the resource found at 'path' (for instance when removing the * resource from the collection). */ void ne_lock_using_parent(ne_request *req, const char *path); NE_END_DECLS #endif /* NE_LOCKS_H */ 0707010005ffa6000081a40000000000000000000000014cbd2dcd000012cc000000b500010002ffffffffffffffff0000002800000000root/usr/local/include/neon/ne_pkcs11.h/* PKCS#11 support for neon Copyright (C) 2008, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_PKCS11_H #define NE_PKCS11_H 1 #include "ne_defs.h" #include "ne_session.h" NE_BEGIN_DECLS typedef struct ne_ssl_pkcs11_provider_s ne_ssl_pkcs11_provider; #define NE_PK11_OK (0) #define NE_PK11_NOTIMPL (-1) #define NE_PK11_FAILED (-2) /* Initialize a PKCS#11 provider of given name. Returns NE_OK on * success, NE_PK11_FAILED if the provider could not be * loaded/initialized, and NE_PK11_NOTIMPL if PKCS#11 is not * supported. On success, *provider is set to non-NULL. */ int ne_ssl_pkcs11_provider_init(ne_ssl_pkcs11_provider **provider, const char *name); /* Initialize a NSS softoken pseudo-PKCS#11 provider of given name * (e.g. "softokn3") to supply a client certificate if requested, * using database in given directory name; the other parameters may be * NULL. Returns NE_OK on success, NE_PK11_FAILED if the provider * could not be loaded/initialized, and NE_PK11_NOTIMPL if PKCS#11 is * not supported. On success, *provider is set to non-NULL. */ int ne_ssl_pkcs11_nss_provider_init(ne_ssl_pkcs11_provider **provider, const char *name, const char *directory, const char *cert_prefix, const char *key_prefix, const char *secmod_db); /* Destroy a PKCS#11 provider object. */ void ne_ssl_pkcs11_provider_destroy(ne_ssl_pkcs11_provider *provider); /* Flags passed to PIN entry callback: */ #define NE_SSL_P11PIN_COUNT_LOW (0x01) /* an incorrect PIN has been * entered. */ #define NE_SSL_P11PIN_FINAL_TRY (0x02) /* token will become locked if * entered PIN is incorrect */ /* Size of buffer passed to PIN entry callback: */ #define NE_SSL_P11PINLEN (256) /* Callback for PKCS#11 PIN entry. The callback provides the PIN code * to unlock the token with label 'token_label' in the slot described * by 'slot_descr'. * * The PIN code, as a NUL-terminated ASCII string, should be copied * into the 'pin' buffer (of fixed length NE_SSL_P11PINLEN), and * return 0 to indicate success. Alternatively, the callback may * return -1 to indicate failure and cancel PIN entry (in which case, * the contents of the 'pin' parameter are ignored). * * When a PIN is required, the callback will be invoked repeatedly * (and indefinitely) until either the returned PIN code is correct, * the callback returns failure, or the token refuses login (e.g. when * the token is locked due to too many incorrect PINs!). For the * first such invocation, the 'attempt' counter will have value zero; * it will increase by one for each subsequent attempt. * * The NE_SSL_P11PIN_COUNT_LOW and/or NE_SSL_P11PIN_FINAL_TRY hints * may be set in the 'flags' argument, if these hints are made * available by the token; not all tokens expose these hints. */ typedef int (*ne_ssl_pkcs11_pin_fn)(void *userdata, int attempt, const char *slot_descr, const char *token_label, unsigned int flags, char *pin); /* Set the PIN entry callback for the given provider. This is * necessary for some (but not all) types of token. For tokens which * implement an out-of-band ("protected") authentication path, the PIN * entry callback will not be invoked. */ void ne_ssl_pkcs11_provider_pin(ne_ssl_pkcs11_provider *provider, ne_ssl_pkcs11_pin_fn fn, void *userdata); /* Set up a given PKCS#11 provider to supply an appropriate client * certificate if requested by the server. A provider may be * configured for use in multiple sessions. */ void ne_ssl_set_pkcs11_provider(ne_session *sess, ne_ssl_pkcs11_provider *provider); NE_END_DECLS #endif /* NE_PKCS11_H */ 0707010005ffad000081a40000000000000000000000014cbd2dcd00001d3c000000b500010002ffffffffffffffff0000002800000000root/usr/local/include/neon/ne_string.h/* String utility functions Copyright (C) 1999-2009, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_STRING_H #define NE_STRING_H #include "ne_defs.h" #include "ne_alloc.h" #include NE_BEGIN_DECLS /* ne_token and ne_qtoken return the next token in *str before either * the next separator character 'sep' or the NUL terminator. * ne_qtoken skips over any parts quoted using a pair of any one of * the characters given in 'quotes'. After returning, *str will point * to the next character after the separator, or NULL if no separator * character was found. * * ne_qtoken will return NULL if unterminated quotes are found. */ char *ne_token(char **str, char sep); char *ne_qtoken(char **str, char sep, const char *quotes); /* Return portion of 'str' with any characters in 'whitespace' shaved * off the beginning and end. Modifies str in-place. */ char *ne_shave(char *str, const char *whitespace); /* Cleanse 'str' of non-printable (e.g. control) characters. 'str' is * modified in-place, and returned. */ char *ne_strclean(char *str); /* 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); /* Decode NUL-terminated base64-encoded string 'data', placing * malloc-allocated raw decoder output in '*out'. Returns length, or * zero on decode error (in which case the content of *out is * undefined). */ size_t ne_unbase64(const char *data, unsigned char **out); /* Dynamically-allocated string buffer. A string buffer which grows * dynamically . (Strings are zero-terminated still). A * string buffer ne_buffer which grows dynamically with the string. */ typedef struct { char *data; /* contents: NUL-terminated string */ size_t used; /* strlen(data) + 1 */ size_t length; /* number of bytes allocated */ } ne_buffer; /* Create a new string buffer object. */ ne_buffer *ne_buffer_create(void); /* Create a new string buffer object with at least 'size' bytes of * allocated space. */ ne_buffer *ne_buffer_ncreate(size_t size); /* Returns size of data in buffer, equiv to strlen(ne_buffer_data(buf)) */ #define ne_buffer_size(buf) ((buf)->used - 1) /* Concatenate all given strings onto the end of the buffer. The * strings must all be NUL-terminated, and MUST be followed by a NULL * argument marking the end of the list. */ void ne_buffer_concat(ne_buffer *buf, ...) ne_attribute_sentinel; /* Append a NUL-terminated string 'str' to buf. */ void ne_buffer_zappend(ne_buffer *buf, const char *str); /* Append 'len' bytes of 'data' to buf, where 'data' does not contain * a NUL terminator. (A NUL terminator is appended to buf) */ void ne_buffer_append(ne_buffer *buf, const char *data, size_t len); /* Append 'len' bytes of 'data' to buf. All non-ASCII bytes, and * ASCII control characters, are escaped. (Note that this includes * the NUL byte). */ void ne_buffer_qappend(ne_buffer *buf, const unsigned char *data, size_t len); /* Print a string to the end of the buffer using printf-style format * string 'format' and subsqeuent arguments. At most 'max' characters * are appended; the number of characters appended (excluding the NUL * terminator) is returned. Behaviour is undefined if 'max' is passed * as zero. */ size_t ne_buffer_snprintf(ne_buffer *buf, size_t max, const char *format, ...) ne_attribute((format(printf, 3, 4))); /* Append a literal, NUL-terminated constant string 'str' to buffer * 'buf'. */ #define ne_buffer_czappend(buf, str) \ ne_buffer_append((buf), (str), sizeof((str)) - 1) /* Clear the string buffer 'buf', making it equivalent to the empty * string. */ void ne_buffer_clear(ne_buffer *buf); /* Grow the allocated size of string buffer 'buf' to at least 'size' * bytes. */ void ne_buffer_grow(ne_buffer *buf, size_t size); /* Re-establish the 'used' invariant if the string buffer data field is * altered directly. */ void ne_buffer_altered(ne_buffer *buf); /* Destroy the string buffer object 'buf' without deallocating the * data string. The data string must subsequently be freed using * ne_free(). */ char *ne_buffer_finish(ne_buffer *buf); /* Destroy a string buffer object. */ void ne_buffer_destroy(ne_buffer *buf); /* Thread-safe strerror() wrapper; place system error for errno value * 'errnum' in 'buffer', which is of length 'buflen'. Returns * 'buffer'. */ char *ne_strerror(int errnum, char *buffer, size_t buflen); /* ne_strnzcpy copies at most 'n'-1 bytes of 'src' to 'dest', and * ensures that 'dest' is subsequently NUL-terminated. */ #define ne_strnzcpy(dest, src, n) do { size_t ne__nm1 = (n) - 1; \ strncpy(dest, src, ne__nm1); dest[ne__nm1] = '\0'; } while (0) /* 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); /* 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; /* Wrapper for snprintf: always NUL-terminates returned buffer, and * returns strlen(str). */ size_t ne_snprintf(char *str, size_t size, const char *fmt, ...) ne_attribute((format(printf, 3, 4))); /* Wrapper for vsnprintf. */ size_t ne_vsnprintf(char *str, size_t size, const char *fmt, va_list ap) ne_attribute((format(printf, 3, 0))); /* Implementations of strcasecmp and strncasecmp which behave as * defined by the ANSI C strcasecmp() and strncasecmp() when in the * POSIX locale; i.e. ignoring the process locale. */ /* Compares 's1' and 's2', ignoring differences in case. */ int ne_strcasecmp(const char *s1, const char *s2); /* Compares up to 'n' characters of 's1' and 's2', ignoring * differences in case. */ int ne_strncasecmp(const char *s1, const char *s2, size_t n); /* Return lowercase 'c' as in POSIX locale; note difference from ANSI * C semantics as both the argument and return value are unsigned * char. */ #define ne_tolower(c) (ne_tolower_array()[(unsigned char)c]) const unsigned char *ne_tolower_array(void); /* Convert an ASCII hexadecimal character in the ranges '0'..'9' * 'a'..'f' 'A'..'F' to its numeric equivalent. */ #define NE_ASC2HEX(x) (((x) <= '9') ? ((x) - '0') : \ (ne_tolower((x)) + 10 - 'a')) /* Convert an integer in the range 0..15 to the equivalent (lowercase) * ASCII hexadecimal equivalent character, in the range '0..9,'a..f' */ #define NE_HEX2ASC(x) ((char) ((x) > 9 ? ((x) - 10 + 'a') : ((x) + '0'))) NE_END_DECLS #endif /* NE_STRING_H */ 0707010005ffaf000081a40000000000000000000000014cbd2dcd00001006000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/neon/ne_utils.h/* HTTP utility functions Copyright (C) 1999-2006, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_UTILS_H #define NE_UTILS_H #include #include #include #include "ne_defs.h" #ifdef NEON_TRIO #include #endif NE_BEGIN_DECLS /* Returns a human-readable library version string describing the * version and build information; for example: * "neon 0.2.0: Library build, OpenSSL support" */ const char *ne_version_string(void); /* Returns non-zero if library version is not of major version * 'major', or if minor version is not greater than or equal to * 'minor'. For neon versions with major == 0, all minor versions are * presumed to be incompatible. */ int ne_version_match(int major, int minor); /* Feature codes: */ #define NE_FEATURE_SSL (1) /* SSL/TLS support */ #define NE_FEATURE_ZLIB (2) /* zlib compression in compress interface */ #define NE_FEATURE_IPV6 (3) /* IPv6 is supported in resolver */ #define NE_FEATURE_LFS (4) /* large file support */ #define NE_FEATURE_SOCKS (5) /* SOCKSv5 support */ #define NE_FEATURE_TS_SSL (6) /* Thread-safe SSL/TLS support */ #define NE_FEATURE_I18N (7) /* i18n error message support */ /* Returns non-zero if library is built with support for the given * NE_FEATURE_* feature code 'code'. */ int ne_has_support(int feature); /* Debugging macro to allow code to be optimized out if debugging is * disabled at build time. */ #ifndef NE_DEBUGGING #define NE_DEBUG if (0) ne_debug #else /* DEBUGGING */ #define NE_DEBUG ne_debug #endif /* DEBUGGING */ /* Debugging masks. */ #define NE_DBG_SOCKET (1<<0) /* raw socket */ #define NE_DBG_HTTP (1<<1) /* HTTP request/response handling */ #define NE_DBG_XML (1<<2) /* XML parser */ #define NE_DBG_HTTPAUTH (1<<3) /* HTTP authentication (hiding credentials) */ #define NE_DBG_HTTPPLAIN (1<<4) /* plaintext HTTP authentication */ #define NE_DBG_LOCKS (1<<5) /* WebDAV locking */ #define NE_DBG_XMLPARSE (1<<6) /* low-level XML parser */ #define NE_DBG_HTTPBODY (1<<7) /* HTTP response body blocks */ #define NE_DBG_SSL (1<<8) /* SSL/TLS */ #define NE_DBG_FLUSH (1<<30) /* always flush debugging */ /* Send debugging output to 'stream', for all of the given debug * channels. To disable debugging, pass 'stream' as NULL and 'mask' * as 0. */ void ne_debug_init(FILE *stream, int mask); /* The current debug mask and stream set by the last call to * ne_debug_init. */ extern int ne_debug_mask; extern FILE *ne_debug_stream; /* Produce debug output if any of channels 'ch' is enabled for * debugging. */ void ne_debug(int ch, const char *, ...) ne_attribute((format(printf, 2, 3))); /* Storing an HTTP status result */ typedef struct { int major_version; int minor_version; int code; /* Status-Code value */ int klass; /* Class of Status-Code (1-5) */ char *reason_phrase; } ne_status; /* NB: couldn't use 'class' in ne_status because it would clash with * the C++ reserved word. */ /* Parse 'status_line' using the the RFC2616 Status-Line grammar. * s->reason_phrase is malloc-allocated if non-NULL, and must be * free'd by the caller. Returns 0 on success, in which case all * fields of '*s' will be set; or -1 on parse error, in which case * '*s' is unmodified. */ int ne_parse_statusline(const char *status_line, ne_status *s); NE_END_DECLS #endif /* NE_UTILS_H */ 0707010005ffb1000081a40000000000000000000000014cbd2dcd000007b5000000b500010002ffffffffffffffff0000002800000000root/usr/local/include/neon/ne_xmlreq.h/* XML/HTTP response handling Copyright (C) 2004-2006, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_XMLREQ_H #define NE_XMLREQ_H #include "ne_request.h" #include "ne_xml.h" NE_BEGIN_DECLS /* Read the HTTP response body using calls to ne_read_response_block * (so must be enclosed by ne_begin_request/ne_end_request calls), and * parse it as an XML document, using the given parser. Returns NE_* * error codes. If an XML parse error occurs, the session error * string is set to the XML parser's error string, and NE_ERROR is * returned. */ int ne_xml_parse_response(ne_request *req, ne_xml_parser *parser); /* Dispatch the HTTP request, parsing the response body as an XML * document using the given parser, if the response status class is * 2xx and an XML media type is specified for the response entity. If * a non-2xx response code is given, or a non-XML media type is * specified, then the response body will be silently discarded. * * Returns NE_* error codes. If an XML parse error occurs, the * session error string is set to the XML parser's error string, and * NE_ERROR is returned. */ int ne_xml_dispatch_request(ne_request *req, ne_xml_parser *parser); NE_END_DECLS #endif /* NE_XMLREQ_H */ 0707010005ff9d000081a40000000000000000000000014cbd2dcd00000758000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/neon/ne_alloc.h/* Replacement memory allocation handling etc. Copyright (C) 1999-2005, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_ALLOC_H #define NE_ALLOC_H #include #ifndef WIN32 #include #endif #include "ne_defs.h" NE_BEGIN_DECLS typedef void (*ne_oom_callback_fn)(void); /* Set callback which is called if malloc() returns NULL. */ void ne_oom_callback(ne_oom_callback_fn callback); #ifndef NEON_MEMLEAK /* Replacements for standard C library memory allocation functions, * which never return NULL. If the C library malloc() returns NULL, * 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_malloc; void *ne_calloc(size_t size) ne_attribute_malloc; void *ne_realloc(void *ptr, size_t s); char *ne_strdup(const char *s) ne_attribute_malloc; char *ne_strndup(const char *s, size_t n) ne_attribute_malloc; #ifdef WIN32 void ne_free(void *ptr); #else #define ne_free free #endif #endif NE_END_DECLS #endif /* NE_ALLOC_H */ 0707010005ffa1000081a40000000000000000000000014cbd2dcd0000066e000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/neon/ne_dates.h/* Date manipulation routines Copyright (C) 1999-2002, 2005, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_DATES_H #define NE_DATES_H #include #include "ne_defs.h" NE_BEGIN_DECLS /* Date manipulation routines as per RFC1123 and RFC1036 */ /* Return current date/time in RFC1123 format */ char *ne_rfc1123_date(time_t anytime); /* Returns time from date/time using the subset of the ISO8601 format * referenced in RFC2518 (e.g as used in the creationdate property in * the DAV: namespace). */ time_t ne_iso8601_parse(const char *date); /* Returns time from date/time in RFC1123 format */ time_t ne_rfc1123_parse(const char *date); time_t ne_rfc1036_parse(const char *date); /* Parses asctime date string */ time_t ne_asctime_parse(const char *date); /* Parse an HTTP-date as per RFC2616 */ time_t ne_httpdate_parse(const char *date); NE_END_DECLS #endif /* NE_DATES_H */ 0707010005ffae000081a40000000000000000000000014cbd2dcd00000f41000000b500010002ffffffffffffffff0000002500000000root/usr/local/include/neon/ne_uri.h/* URI manipulation routines. Copyright (C) 1999-2008, Joe Orton This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef NE_URI_H #define NE_URI_H #include "ne_defs.h" NE_BEGIN_DECLS /* Return a copy of a path string with anything other than * "unreserved" and the forward-slash character percent-encoded * according to the URI encoding rules. Returns a malloc-allocated * string and never NULL. */ char *ne_path_escape(const char *path); /* Return a decoded copy of a percent-encoded path string. Returns * malloc-allocated path on success, or NULL if the string contained * any syntactically invalid percent-encoding sequences. */ char *ne_path_unescape(const char *epath); /* Returns malloc-allocated parent of path, or NULL if path has no * parent (such as "/"). */ char *ne_path_parent(const char *path); /* Returns strcmp-like value giving comparison between p1 and p2, * ignoring trailing-slashes. */ int ne_path_compare(const char *p1, const char *p2); /* Returns non-zero if child is a child of parent */ int ne_path_childof(const char *parent, const char *child); /* Returns non-zero if path has a trailing slash character */ int ne_path_has_trailing_slash(const char *path); /* Return the default port for the given scheme, or 0 if none is * known. */ unsigned int ne_uri_defaultport(const char *scheme); typedef struct { char *scheme; char *host, *userinfo; unsigned int port; char *path, *query, *fragment; } ne_uri; /* Parse a URI-reference 'uri' and place parsed components in *parsed. * Returns zero on success, non-zero on parse error. On successful or * error return, all the 'char *' fields of *parsed are either set to * NULL, or point to malloc-allocated NUL-terminated strings; * ne_uri_free can be used to free any set fields. On success, * parsed->path is guaranteed to be non-NULL. */ int ne_uri_parse(const char *uri, ne_uri *parsed); /* Turns a URI structure back into a string. The returned string is * malloc-allocated, and must be freed by the caller. */ char *ne_uri_unparse(const ne_uri *uri); /* Resolve a relative URI 'relative', with respect to base URI 'base', * placing the resultant URI in '*result'. At least both base->path * and relative->path must be non-NULL. On return, all the 'char *' * fields of *result are either set to NULL or point to * malloc-allocated NUL-terminated strings. result->path is * guaranteed to be non-NULL. ne_uri_free can be used to free the * result structure after use. Returns 'result'. */ ne_uri *ne_uri_resolve(const ne_uri *base, const ne_uri *relative, ne_uri *result); /* Compares URIs u1 and u2, returns non-zero if they are found to be * non-equal. The sign of the return value is <0 if 'u1' is less than * 'u2', or >0 if 'u2' is greater than 'u1'. */ int ne_uri_cmp(const ne_uri *u1, const ne_uri *u2); /* Copy components of URI 'src' to destination 'dest'. Returns * 'dest'. */ ne_uri *ne_uri_copy(ne_uri *dest, const ne_uri *src); /* Frees any non-NULL fields of parsed URI structure *parsed. All * fields are then zero-initialized. */ void ne_uri_free(ne_uri *parsed); NE_END_DECLS #endif /* NE_URI_H */ 0707010005ff96000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000001300000000root/usr/local/bin0707010005ff97000081ed0000000000000000000000014cbd2dce00000802000000b500010002ffffffffffffffff0000001f00000000root/usr/local/bin/neon-config#! /bin/sh # Originally from libxml, Copyright (C) Daniel Veillard # Modifications for neon Copyright (C) 2000-2006 Joe Orton. prefix=/usr/local exec_prefix=${prefix} includedir=${prefix}/include libdir=${exec_prefix}/lib usage() { cat <&2 ;; esac shift done exit 0 0707010005ffb2000041ed0000000000000000000000034cbd2dde00000000000000b500010002ffffffffffffffff0000001300000000root/usr/local/lib0707010005ffb6000041ed0000000000000000000000024cbd2dde00000000000000b500010002ffffffffffffffff0000001d00000000root/usr/local/lib/pkgconfig0707010005ffb7000081a40000000000000000000000014cbd2dce000001e7000000b500010002ffffffffffffffff0000002500000000root/usr/local/lib/pkgconfig/neon.pcprefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: neon Description: HTTP/WebDAV client library Version: 0.29.4 Libs.private: -lnsl -lsocket -lz -L/usr/local/lib -lssl -lcrypto -lsocket -lnsl -ldl -L/usr/local/lib -R/usr/local/lib -L/usr/local/lib -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv -lsocket -lnsl -L/usr/local/lib -lintl -lexpat Libs: -L${libdir} -lneon Cflags: -I${includedir}/neon -D_LARGEFILE64_SOURCE -DNE_LFS 0707010005ffb4000081ed0000000000000000000000014cbd2dcd0000046c000000b500010002ffffffffffffffff0000001e00000000root/usr/local/lib/libneon.la# libneon.la - a libtool library file # Generated by ltmain.sh (GNU libtool) 2.2.6b # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='libneon.so.27' # Names of this library. library_names='libneon.so.27.2.4 libneon.so.27 libneon.so' # The name of the static archive. old_library='libneon.a' # Linker flags that can not go in dependency_libs. inherited_linker_flags='' # Libraries that this one depends upon. dependency_libs=' -R/usr/local/lib -L/usr/local/lib -lz -lssl -lcrypto -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv -lsocket -lnsl /usr/local/lib/libintl.la /usr/local/lib/libiconv.la -lc /usr/local/lib/libexpat.la' # Names of additional weak libraries provided by this library weak_library_names='' # Version information for libneon. current=29 age=2 revision=4 # Is this an already installed library? installed=yes # Should we warn about portability when linking against -modules? shouldnotlink=no # Files to dlopen/dlpreopen dlopen='' dlpreopen='' # Directory that this library needs to be installed in: libdir='/usr/local/lib' 0707010005ffb3000081a40000000000000000000000014cbd2dcd000990dc000000b500010002ffffffffffffffff0000001d00000000root/usr/local/lib/libneon.a! / 1287466445 0 0 0 7392 ` E$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$TTTTTTTTTTTTTTU4U4U4U4U4U4U4U4U4U4U4U4U4U4\\\\\\\>>>>>>>>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxxxxxxO\O\uDuDVVVVVVVVVooooooooooooooooooooT=dddddddddddddddddddddddddddddddne_get_request_privatene_get_session_privatene_set_request_privatene_accept_alwaysne_accept_2xxne_request_createne_print_request_headerne_set_request_body_bufferne_set_request_body_providerne_set_request_body_fdne_set_request_flagne_get_request_flagne_add_request_headerne_get_response_headerne_response_header_iteratene_add_response_body_readerne_request_destroyne_read_response_blockne_begin_requestne_end_requestne_read_response_to_fdne_get_sessionne_discard_responsene_request_dispatchne_get_statusne_session_destroyne_close_connectionne_version_pre_http11ne_session_createne_session_proxyne_session_socks_proxyne_session_system_proxyne_set_addrlistne_set_localaddrne_set_errorne_set_session_flagne_get_session_flagne_set_progressne_set_notifierne_set_read_timeoutne_set_connect_timeoutne_set_useragentne_get_server_hostportne_get_schemene_fill_server_urine_fill_proxy_urine_get_errorne_ssl_set_verifyne_ssl_provide_clicertne_ssl_trust_certne_ssl_cert_validityne__ssl_set_verify_err.XBKgoyLJ3SvMU6$.ne__ssl_set_verify_err.reasonsne__ssl_match_hostnamene_hook_create_requestne_hook_pre_sendne_hook_post_sendne_hook_post_headersne_hook_destroy_requestne_hook_destroy_sessionne_hook_close_connne_set_session_privatene_unhook_create_requestne_unhook_pre_sendne_unhook_post_headersne_unhook_post_sendne_unhook_destroy_requestne_unhook_destroy_sessionne_unhook_close_connne_getmodtimene_putne_get_rangene_getne_postne_get_content_type.XAKgoyLJ3SvMkAA.options_mapne_options2ne_optionsne_add_depth_headerne_copyne_movene_deletene_mkcolne_tokenne_qtokenne_shavene_buffer_clearne_buffer_growne_buffer_concatne_concatne_buffer_zappendne_buffer_appendne_buffer_snprintfne_vsnprintfne_buffer_createne_buffer_ncreatene_buffer_destroyne_buffer_finishne_buffer_altered.XAKgoyLJ3SvM0FA.ascii_quote.XAKgoyLJ3SvM0FA.hex_charsne_buffer_qappendne_strnqdupne_base64.XAKgoyLJ3SvM0FA.b64_alphabetne_unbase64ne_strclean.XAKgoyLJ3SvM0FA.ascii_cleanne_strerrorne_snprintfne_tolower_array.XAKgoyLJ3SvM0FA.ascii_tolowerne_strcasecmpne_strncasecmpne_path_parentne_path_has_trailing_slashne_uri_defaultportne_uri_parse.XAKgoyLJ3SvMEMA.uri_charsne_uri_resolvene_uri_copyne_uri_freene_path_unescapene_path_escapene_uri_cmpne_path_comparene_uri_unparsene_path_childofne_rfc1123_date.XAKgoyLK3SvMESA.short_months.XAKgoyLK3SvMESA.rfc1123_weekdaysne_iso8601_parsene_rfc1123_parsene_rfc1036_parsene_asctime_parsene_httpdate_parsene_oom_callback.XAKgoyLK3SvMkWA.oomne_mallocne_callocne_reallocne_strdupne_strndupne_md5_create_ctxne_md5_reset_ctxne_md5_dup_ctxne_md5_destroy_ctxne_md5_read_ctxne_md5_finish_ctx.XAKgoyLK3SvMEbA.fillbufne_md5_process_blockne_md5_streamne_md5_process_bytesne_md5_to_asciine_ascii_to_md5ne_md5_finish_asciine_debug_initne_debug_streamne_debug_maskne_debugne_version_string.XAKgoyLK3SvMUhA.version_stringne_version_matchne_has_supportne_parse_statuslinene_sock_init.XAKgoyLK3SvM0oA.init_statene_sock_exitne_sock_blockne_sock_readne_sock_peekne_sock_fullwritene_sock_fullwritevne_sock_readlinene_sock_fullreadne_addr_resolvene_addr_resultne_addr_firstne_addr_nextne_addr_errorne_iaddr_printne_iaddr_rawne_iaddr_parsene_iaddr_makene_iaddr_reversene_addr_destroyne_sock_create.XAKgoyLK3SvM0oA.iofns_rawne_sock_prebind.XAKgoyLK3SvM0oA.dummy_laddrne_sock_connectne_sock_peerne_iaddr_typeofne_iaddr_cmpne_iaddr_freene_sock_acceptne_sock_fdne_sock_read_timeoutne_sock_connect_timeoutne_sock_accept_ssl.XAKgoyLK3SvM0oA.iofns_sslne_sock_connect_sslne__sock_sslsockne_sock_sessidne_sock_cipherne_sock_errorne_sock_set_errorne_sock_close.XAKgoyLL3SvM0zA.ah_server_class.XAKgoyLL3SvM0zA.protocolsne_set_server_authne_set_proxy_auth.XAKgoyLL3SvM0zA.ah_proxy_classne_add_server_authne_add_proxy_authne_forget_authne_redirect_registerne_redirect_locationne_decompress_readerne_decompress_destroyne_i18n_initne_ssl_pkcs11_provider_initne_ssl_pkcs11_nss_provider_initne_ssl_pkcs11_provider_destroyne_ssl_pkcs11_provider_pinne_ssl_set_pkcs11_providerne_sock_proxy.XBKgoyLL3SvMkVB.mkhash.magicne__ntlm_create_contextne__ntlm_destroy_contextne__ntlm_authenticatene__ntlm_getRequestTokenne_207_set_response_handlersne_207_set_propstat_handlersne_207_get_current_responsene_207_get_current_propstat.XAKgoyLM3SvM0bB.map207ne_207_createne_207_destroyne_accept_207ne_simple_requestne_xml_currentlinene_xml_doc_encodingne_xml_resolve_nspacene_xml_createne_xml_push_handlerne_xml_parse_vne_xml_parsene_xml_failedne_xml_destroyne_xml_set_errorne_xml_get_errorne_xml_get_attrne_xml_mapidne_propfind_get_parserne_propfind_get_requestne_propfind_allpropne_propfind_namedne_proppatchne_propset_valuene_propset_langne_propfind_current_privatene_propset_privatene_propset_iteratene_propset_statusne_propfind_createne_propfind_destroyne_simple_propfindne_propnamesne_propfind_set_privatene_lock_destroyne_lockstore_destroyne_lockstore_createne_lockstore_firstne_lockstore_nextne_lockstore_registerne_lockstore_findbyurine_lock_using_parentne_lock_using_resourcene_lockstore_addne_lockstore_removene_lock_copyne_lock_createne_lock_freene_unlock.XAKgoyLM3SvMEwB.lock_props.XAKgoyLM3SvMEwB.element_mapne_lock_discoverne_lockne_lock_refreshne_xml_parse_responsene_xml_dispatch_requestne_acl_setne_acl3744_setne_ssl_readable_dnamene_ssl_dname_cmpne_ssl_clicert_freene_ssl_cert_validity_timene_ssl_set_clicertne_ssl_context_createne_ssl_context_set_flagne_ssl_context_keypairne_ssl_context_set_verifyne_ssl_context_destroyne__negotiate_sslne_ssl_cert_freene_ssl_cert_issuerne_ssl_cert_subjectne_ssl_cert_signedbyne_ssl_cert_identityne_ssl_context_trustcertne_ssl_trust_default_cane_ssl_clicert_readne_ssl_clicert_encryptedne_ssl_clicert_decryptne_ssl_clicert_ownerne_ssl_clicert_namene_ssl_cert_readne_ssl_cert_writene_ssl_cert_cmpne_ssl_cert_importne_ssl_cert_exportne_ssl_cert_digestne__ssl_initne__ssl_exitne_request.o/ 1287466441 0 0 100644 64452 ` ELFP4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.symtabne_request.cstatlstatfstatmknodhash_and_lowerabortednotify_statusget_privatebody_string_sendbody_fd_sendsend_request_bodyadd_fixed_headersset_body_lengthget_response_header_hvremove_response_headerfree_response_headersread_response_blockbuild_requestdump_requeststrip_eolread_status_linediscard_headerssend_requestopen_connectionread_message_headeradd_response_headerread_response_headerslookup_hostproxy_tunnelresolve_firstresolve_nextdo_connectsocks_origin_lookupBbss.bssDdata.dataDrodata.rodata_xstat_lxstat_fxstat_xmknodne_tolower_arrayne_debuglibintl_dgettextne_set_errorne_sock_errorne_close_connectionstrcmpne_get_request_privatene_get_session_privatene_set_request_privatene_mallocmemcpyreaderrnone_strerrorlseek64strcpyne_snprintfne_sock_fullwritene_buffer_zappendne_buffer_appendne_buffer_concatne_accept_alwaysne_accept_2xxne_request_createne_callocne_buffer_createne_strdupne_concatne_print_request_headerne_set_request_body_bufferne_set_request_body_providerne_set_request_body_fdne_set_request_flagne_get_request_flagne_add_request_headerne_vsnprintfne_get_response_headerfreene_response_header_iteratene_add_response_body_readerne_request_destroyne_buffer_destroyne_sock_readlinestrtoulne_sock_readne_sock_fullreadne_read_response_blockne_debug_maskstrstrmemsetstrncmpstrlenatoine_strcleanne_parse_statuslinene_sock_peekne_reallocne_addr_resolvene_addr_resultne_addr_errorne_addr_destroyne_begin_requestne_tokenne_shavene_strcasecmpstrtollne_end_requestne_read_response_to_fdwritene_get_sessionne_discard_responsene_request_dispatchne_get_statusne_addr_firstne_addr_nextne_sock_createne_sock_connect_timeoutne_sock_prebindne_iaddr_printne_sock_connectne_sock_closene_sock_read_timeoutne_iaddr_typeofne_sock_proxyne__negotiate_ssl.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenamesUE PEPj EEUE PEPj EEUE PEPj EEUjjEPE PEPjEEÐU EEEE@tRЋE@UBUE@¹++‰EE@EE@uEEEÐU E!EEjjE PEPhjE@<@t*h$hЋE PREP (hPhЋE PREP hthЋE PREP E\Ej@PjjPE PhEP-E PhEP Ew$SjEPEEELUEt%MUEPE PPЃ ÐUEt7UE PBPuE@EE@ EEuEEÐUUE PT PEEÐUUE PPWEEÐUjjEET t9ET EE@ tE@ EE@ uEUP EUT EU PE@EUPE@ UEEEuEU@B EU@B]E@ ;Es E@ EUEPBPE P EEEPUEPE EEP+UEPEEEÐU EEE1EP(@,;u;u E UEH(@,;} E@(EUEPE PBP EE~6E(EEUMXp+EXpEEEu(]hhP!PWE}N(uhhh,P(P PS!P EMEjjjP@PRAPEUUME;Bu;JuEMP @$Q(A,EUE; u;uh(PP $hhP(PEjP@PRhjP]hhjj(PPR!PEE ÐU E!Eh8jE! UE!B0R4jEPUEjj@PB Ѓ tjEPEMUh PBPA Ѓ TUPPBP }hPhЋPREP tt uE t Dž EjPPPhlhE!AYBZjEPSMUh PBPA Ѓ u E1Phj jEPEEÐUE!EEtUEPBPE@\uEjh@P zE@ u%E@LuEj*h@P LE!@ u#E@LuEjEU@ BEj@PEj@PjEPE EE@uÐU EE+}zUEX EE@tPE@EEU@ BEj@PEj@PjEPE@uE@EE+|ÐUjjEEU PEUPEUP EU!BEU!ÐUEj@PEj@PE!EEt%E@EjEPEEEujEPEj@PhjE!EEt3E@EE@ EE@PEPEЃEEEu͋ET EEt%E@ EjEPEEEuۋE0!tEj0!PhjjEPÐU$]u܋E!@EpE @Eh 8PEP EE}.hhЋEPREP E4E8Phj UjEPB8P EEU8;tEtEv)hhjPEP EEPhj E UPE U@;BvE@E E @EEEeM EP@;Q A} E@E E @ EEE-E@EEE @w$EuE@EEPhj EPEPEP EE @u7EtEu'h4jEǀ!EME}0h@hЋEPREP EREPh`j EUPjEPEPEPhphE @E EEP+UEPE @jEPEP EE}-hhЋEPREP EE u E t&hhjPEP E[5E @u(E EEUMXp+EXpM EUAYU BZEE]uÈ0PU]EEE8 EjjEPE PEPEPt EEtAE!EMEAYUBZEj!PE!EEtXE@tM;A0Q4}(EPEPEEt EEEPh4j EPEPEP EEE@ E@PhPj EjEPEEtE!tME@duBM;A0Q4},Eu$jEPEEt7EEPEPEP EEuE@ E!@ u*hEPtEPEPEP Eԃ.jEPE!@<@uzE!@ uiEuaE!@ltPhjEP EEt2hEPuh jEǀ!E!@Ht,E@ u!Eǀ8 Eǀ!E !uE@=t E@=0uEǀ8 h\jEP EEt~hpEPthh|EPuEǀ8 Eǀ@ .hhjPEP E>hjEP@ EEEj EPEP EЉUԋE@twUЋE;u;taEЋU;|ME؃tEE@u9Eǀ8 UEЋMԉD H UEЋMԉ< @ ,hhjPEP EFEǀ8 hjE!EEt6E@E؋UE !PBPEPEЃ E@ EEuʋE!EEt3MUEPEPB PAЃ ЋEPE@EEu͋E! E8 uE< @ UԉE EԉU؋E!EԋM؉Ej!P'EEÐUE8 u(jEPEEt EE EhjE!EEuIEtAE@EUE !PBPEPEЃ EE@ EEuEuE!@\tE!uEj!PE!@EEEÐU$Eh 8PEP EEE8EEPEPE P EEuutE}Xh(PP jEPhhЍ(PRS EeE+EEEEEEUEh 8PEP EE%Eu E EEEE$ÐU Eh 8PEP EE݋Eu E EEEEÐUjEPEEujEPEEujEPEEtMUE!jP,!P(!Ph0h@EEEÐUE !EEÐUE!EEÐUEUEj@PBPhdh,P,PhlEP EE@HjEPEE@HE@EuE@tE,!taEjP(hthЋ(PREP j(PEuEjEPEEEÐUE@t E@EEj@PEEEEÐUE@t EEj@PEEEEÐUE @u4E @u)E PEPEEtEElEEUPEu+hhPEPE%EtUEPBPE@@tUEj@@PBP E @ujE PЋE PE U@E U@jEPt8U hbPBP ЋE jj@PRhjMU E @PBPAP EEt&jE P%EE UPEPEE @uhhEh hEEj@PjjPEPhEPEj@PEu E EEEZEtUEPBPjEPfEU P% %P %P $err^F$offstrpF^p "send_request_bodym Ut#Kreql#retryl $sesstn$bufferyo$bytesZp%S % % $ret%"%-%-$aret% &add_fixed_headers U#Kreq$sess%'ne_accept_always U:#;userdata#Kreq #?st*:'ne_accept_2xx U#;userdata#Kreq #st*'ne_request_createi UKi#%sess#nmethod #xpath$reqK% ^ $hk?% ^ %" M %" M $fnis}q ;ne_create_request_fn&set_body_length U#Kreq#length (ne_set_request_body_buffer Uw#Kreq#|buffer #sizew(ne_set_request_body_provider+ U#Kreq#bodysize #`provider#;ud(ne_set_request_body_fd  Ui#Kreq#fd #offset#length(ne_set_request_flag U#Kreq#flag #valuene_request_flag_eNE_REQFLAG_EXPECT100NE_REQFLAG_IDEMPOTENTNE_REQFLAG_LASTne_request_flag'ne_get_request_flag U#Kreq#flag (ne_add_request_header#U#Kreq!#name! #value"(ne_print_request_header)gU#Kreq'#name' #format(#;...($params*$buf+);va_list "get_response_header_hv8Uf3 #Kreq6#Zh6 #8 name7$f93 'ne_get_response_headerC8U  #KreqB# nameB $lcnamefD$hashZE$valuefF  'ne_response_header_iterateOU;!#KreqM#;iteratorM #!nameN#!valueN$fP$nZQ!!!!&remove_response_headerjU@"#Kreqh#E"nameh #Zhashi$ptrJ"k%6%A%A$fO"n@"&free_response_headers~QU##Kreq}$n%O%@%@$ptrJ"%@%5%5$f#(ne_add_response_body_readerU##Kreq# acpt # rdr#;userdata$new (ne_request_destroyUS$#Kreq$rdr $next_rdr $hk?$next_hk?%?%Y~%Y~$fnj$e$q ;S$e$ne_destroy_req_fn"read_response_blockU*&#Kreq#*&resp #fbuffer#/&buflen$sock4&$willread$readlenZ%+%0%0%0 %? %? $chunk_len$ptrf%?%?%?$sretZ%%h%h%h%h%h$crlfbuf9& J& 'ne_read_response_block!UZ&#Kreq #fbuffer  #buflen $rdr "$readlen#$resp&$*&"build_request:U.'#Kreq9$hk?;$buf.<%%%$fn'J'q ;'''ne_pre_send_fn&dump_requestVUO(#T(requestU%%,%,%=%=$reqdebugf\$pntf\O(&strip_eolovU(#fbufn#(lenn $pntfpZ"read_status_linezUk)#Kreqy#k)statusy #retryy$bufferf{$retZ|% % % $aret*"discard_headers+U)#Kreq%%%%%%$sretZ"send_requestU*#Kreq#*request $sess+$status +$sentbody$ret$retry$sretZ%(%(%($aret*%k)"read_message_header!U+#Kreq#fbuf #buflen$nZ$sock %N d!%Z X!%Z X!$ch%Z %Z %Z $sretZ&add_response_header,"U,#Kreq*#Zhash* #fname+#fvalue+$nextfJ"-$vlen.%!"%!"%!"$f,1"read_response_headersI&U-#KreqH$hdr-J$retK$countK%#K&%\#&%\#&$pntfO$hashZP -"lookup_host|'U.#%sess{# info{ %&'%'t'%'t'$buf.#.'ne_begin_requestX.U=0#Kreq$rdr $data.$stG0$valueQ0$hk?$ret$forced_closure%z)}*%)}*%)}*$vcopyf$ptrf%)o*%)c*%)c*$tokenf$hashZ% +!-%H+!-%H+!-%+!-%+!-% ,!-% ,!-%B,-%B,-$endptrf $len %0--%J-o-%J-o-$fn|0v =0B0L0v V0w0q ;[0`0w0ne_post_headers_fn'ne_end_request/g/U&1#Kreq.$hk?0$ret1%./%..%..$fnP1>v &1K1q ;+101K1ne_post_send_fn'ne_read_response_to_fdM0Uu2#KreqL#fdL $lenZN%/0%/Z0%/Z0$blockz2R%/Z0%/N0%/N0$retZU%/N0%/N0%/N0%/<0%/<0$err2Yu2ȑ2'ne_discard_responsei0U2#Kreqh$lenZj'ne_request_dispatcht1U53#Kreqs$retu'ne_get_status1Ur3m3#|3req*m3:w3'ne_get_session1U%3#3req:3"proxy_tunnel2Uj4#%sess$reqK$ret$rurij4%c22%22%22$errf|4"resolve_first;3U44# host1 4"resolve_next{3U44# host1 4"do_connect66U5#%sess# host $ret%465%45%45%44%44%44$buf5%655%B55%B55$msg555"socks_origin_lookup<7U[6#%sess$ia`6$ret 1 [6"open_connection(9U6#%sess'$ret)%h7I9%7I9%7I9$hi 5*B+ne__negotiate_ssl77,ne_set_error:77),ne_close_connection]7  b7l7v77+ne_sock_proxy7]7 g7q7Z{77,ne_sock_connect_timeout7]7,ne_sock_read_timeout8]7 8(8+ne_sock_error-8S8#8+ne_sock_closet8]7 +ne_sock_fullreadZ8t8y8Z+ne_sock_readlineZ8t8y8Z8+ne_sock_fullwrite9]78Z+ne_sock_peekZ=9t8y8Z+ne_sock_readZg9t8y8Z g9+ne_sock_connect9]7l9Z 9,ne_sock_prebind9]79Z-ne_sock_create  9+ne_iaddr_printf:9fZ : Q:ne_iaddr_ipv4ne_iaddr_ipv6):ne_iaddr_type +ne_iaddr_typeofQ::$: ,ne_addr_destroy:: :+ne_addr_errorf::fZ 1 :+ne_addr_next:;:1 ;+ne_addr_first;;;: ;;+ne_addr_resultg;@;g;+ne_addr_resolve ;l;unsigned char;;-ne_tolower_array;;;+ne_strcasecmp<;; <3+ne_vsnprintfK<<<<K<+ne_snprintf<<P<)<+ne_concatf<<)+ne_strerrorf<fZ,ne_buffer_destroy<'<,ne_buffer_append%='<Z%=,ne_buffer_zappendU='*=,ne_buffer_concatv=')-ne_buffer_create.+ne_strcleanf=f=+ne_shavef=f=f+ne_tokenf>=>v +ne_parse_statusline;>> >;>,ne_debugc>@>)c>+ne_strdupf>h>+ne_realloc;>;Z+ne_calloc;>Z+ne_malloc;>Z>>+libintl_dgettextf$?>>+__posix_ttyname_rS?fZ+__posix_getlogin_r~?fvoff64_t+lseek64~??~?3?+writeZ?Z?Z3+readZ@Z?Z@+strtollv4@ @=4@+strtoulc@9@=,freew@;w@+atoi@|@@@+strstrf@@@@@+strncmpA@@ZA+strlen)A A)A+strcpyfRAf.ARA\A+strcmpAWAaA+memset;A;Z3A+memcpy;A;AZA+_xmknodBAAB+_lxstatDBBBIB+_xstatwBDBNB+_fxstatBwBB+__posix_ctime_rfBBf tm$lC tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# BlC.__posix_asctime_rfqCf! /var/tmp/neon-0.29.4/src/usr/include/sys/usr/include/isone_request.cstat_impl.hstat.htypes.htime_impl.hne_string.hne_request.hne_defs.hne_private.hne_utils.hne_socket.hne_session.hne_ssl.hstdarg_iso.htime_iso.h &; F[ f    ~ " )D L Z        % (k:H N s    ~ / F_ v             0; D [ s       & . V d l    1 C Pf    /;J j     " - [   sS ^ h ~         " < X p         $ 1 > M [ q     " + M ~^ d s            ) 3 < K Z f o            ? ? e v  ~    - 3 FLT ` q ~          &6 A J b n    u       ' 5{@}O fu ~         ~ 0 ? Y b k ~}  ~    +0?       K P    Z(    $ 1 < D t      0 B l w       ( 0 ] q   } $E l    ~   , = T p       5 G T~t    3 C _ o     $ < Q x     & 6B M Tc t    (L _ g t   + H Ov}        . < E N Z       !#! 3!F!O! X!bd!!! ! !! ! ! ! !  " 0" L" m" " " "t"" " " " "  ##\# f## # # #$ S$ t$ $~$ % '% E%T% \%w%% % %% &_K&$V& }& & && & & & 'O' `' j' t' ' ' ''' '  (( -( @( H( W( j( x( (() 1)?)P) d)z) ) )) ) ) ) * * (* O*c* o* }* * * * *  + '+ 4+ H+p+ ++ + + + ,B, I, a, , , ,-!-0- J- S- o-~-- - -- 8. L. S. f. t. . . .. . . . .~/4/ L/ \/ b/ / / // / / / / 30 <0 E0 N0 Z0o00 0 0 0 0 1 1 01 I1 Q11 1 1 1 1 1 1 12 42 >2 O2 Y2 c2 2 2 2 2 22 2 3 63 F3 v3 3 3 3 33 4  44 34 >4 V4 a4 w4 44 4 445 65 B5M5 d5 y5 5 5 55 5  6 6  6 *6 16 F6 \6 d6 r6 66 6 6 667 7 (717 77 O7 h7 s7 7 7 7 77 7 77 7 8~+8I8T8 e8q88 89 9 9!9 +9 59 @9I9_9 m9 ~9 9 9 9 99  DD%. : ; @ ' ID I: ;  $> &III: I  !I/  :  I8 4I : ;   : ' ID I  I !I/ (  ' D  <  : ' D  :  :  : . : ; @ ' D  .?  : ; @ ' ID !.?  : ; @ ' D ". : ;@ ' ID #I: ; $4I : ; % &. : ;@ ' D '.?  : ;@ ' ID (.?  : ;@ ' D )*D D +.? < ' ID ,.? < ' D -.? < ' ID ..? < ' ID Cne_get_request_privatelne_get_session_privatene_set_request_privatene_accept_alwaysDne_accept_2xxne_request_createne_set_request_body_bufferne_set_request_body_providerne_set_request_body_fdine_set_request_flag5ne_get_request_flagne_add_request_headerne_print_request_header= ne_get_response_header ne_response_header_iterate#ne_add_response_body_reader#ne_request_destroyJ&ne_read_response_block#.ne_begin_request0ne_end_requestf1ne_read_response_to_fd2ne_discard_response2ne_request_dispatch53ne_get_status3ne_get_sessionxCrstat lstathfstatmknodhash_and_lowerkabortedhnotify_statusget_privateMbody_string_sendbody_fd_sendsend_request_bodyadd_fixed_headersset_body_lengthget_response_header_hv!remove_response_headerT"free_response_headers$read_response_block&build_request'dump_requestY(strip_eol(read_status_linep)discard_headers)send_request+read_message_header+add_response_header,read_response_headers-lookup_host3proxy_tunnel|4resolve_first4resolve_next4do_connect5socks_origin_lookupe6open_connectionCdev_tino_t mode_tnlink_t%uid_t1gid_tNoff_tZtime_tgtimespectimestruc_tblksize_tblkcnt_tstatsize_tne_buffer`ne_provide_bodyne_off_tNne_responseDhookfield ne_block_readerv  ne_accept_response# body_reader ne_socket proxy_type ne_sock_addr1 ne_inet_addrX host_info ne_sock_sversionp ne_progress Bune_session_status_info_u(ne_notify_statusVne_ssl_client_certne_ssl_certificatene_ssl_contextne_ssl_verify_fnne_ssl_provide_fnne_session_status_infone_session_sne_session*ne_status ne_request_s:ne_requestZssize_tne_session_statusne_create_request_fnne_request_flag_ene_request_flagva_listj$ne_destroy_req_fn'ne_pre_send_fn|0ne_post_headers_fnP1ne_post_send_fn):Q:ne_iaddr_type~?off64_tBtm  @ `(|Cp8Q} % 7p 4Gpa^ uv0X@7!]*#@&L1Y3;g@3;t3@6      ';B$Y@$pp ! / iAK\fpW B +0 U  , ("X9>@Y`MuV  $8EP`o}'`.p/<10N1)17ERay314Q5y676*=8[*`*e9x:**9:**9:;*:*:6A<SW[_cg={ATB((Cp*u*z9:D**9E:FX(`(sDyE**9G*H**9:<*C8T(Z(<I.*3*89*8p *w 8 < J * K( *1 K^ *g Kv * K * * L P% Qb Rr *{ = * S R * * T  _  * * L8[E*Q*^L=R&]V=x]]]] ].]kA]]])a1*88]]*8]Pbc*h*m9*8c**9 *8*8d*8E*J*O9y*8*8e* *9C*H*M9<Q**L>KP(X(o*xK*8*Kg*8-gDRU*^h*h*8]b**9%*,8X]hi*jklRm,*38EnR*W*\9b**9*8*=U*\8I**9:(@(y*8*8((b**9* 8 *' 8e ox *} * 9 b * * 9!*!8h!*m!*r!9!:!k!=!"p?"*E"Bf"B"A"R"Rp#kT$7%*%8W&*\&*a&9&*&8&q&r'* '*'92'sH':Y't'*'8(<I(*P(8q(a)**):e)*)R)v)*)w)*)=** *=:**C*=v*]*****x***8+*+*+x+*+x+*+*+9!,*T,yu,(},(,(,(,*,*,9"-*)-8-(-( .(.(.*.8A/</f/|/D/D/E0}0*0*09,0:k0f0f 1u&1~?1zw1*182*2H!2**2OE22R2*2*292:2]2`&3f333*3*393:,4O44g44*484N5*S5*X59e5*j5*o595;5*5:55k6<66666*6*697:7<88*8*898;8: 9<99<.n/{*.rvw{z ~ 2>6?@c g 59>BGKdhmqvz   !%>BGKPTMXN\O7;@DIM5U9VWXOYSZTZ \^ !^ !!!""""""&"o"s"""""""""""""*#_.##`#"$&$+$/$4$8$$$9%=%B%F%K%O%T%X%]%a%f%j%%%%%%%%%%%%%%%%%&&g&fk&' 'S'W'\'`'e'i'''''''(( ((((h(l(((8)<)A)E)J)N))))))))))))))) ********'+++++++++++++++,,,,,,,,,,>-B-G-K-P-T---------:.u>....// /;/?/D/H/M/Q/////////////////// 00000"00z000011 11{11111111122 22)2-22262;2?2D2H2M2Q22~223I3M33}33384<4A4E4J4N44 44!45"5X5\5a5e5j5n5s5w5|55555555556#6z6~6666666.5CPWery '/7?IQYais{    >'3@?GS`@gs{ !. 5AIS[emu}( /;EMU]gow#-5=GOYcmzMNO %/7?IS`gs{UVW #+3@XGS[hYo{ZT    ' 4 \; G O W _ g t ^{                   % - 5 = E M U ] e o y              _    ! ) 1 > `E Q Y a i q {                   % / 9 C K S [ e m u }                   # + 3 = G O W _ i q y        f         %/<COYcks} #07CKS[et{ ,3?GOW_ls #-5=GQ^eqy#-5?IQ^eqy '/9AIQ[cks}#+3;CMU]emzu#+5=EOW_gow #-5=EMU_is{z #+3=GOW_l{s~ *1=EMU_gt{} !+3@ GS`!gs" %-5?GOW_gqy#)1>EQYaiqy #+5?GOW_goy---4c 9aBaBdB"|B +L4R?RCK\W߲eu|x3 H     ( % 8 9 @ N H ne_session.o/ 1287466441 0 0 100644 33524 ` ELF 4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_session.cdestroy_hooksfree_hostinfofree_proxiesset_hostportset_hostinfoprogress_notifieradd_hookremove_hookBbss.bssDdata.dataDrodata.rodatafreene_addr_destroyne_session_destroyne_debugne_close_connectionne_ssl_context_destroyne_ssl_cert_freene_ssl_clicert_freene_version_pre_http11strlenne_mallocstrcpyne_snprintfne_strdupne_session_createne_callocstrcmpne_ssl_context_createne_iaddr_parsene_iaddr_freene_session_proxyne_session_socks_proxyne_session_system_proxyne_set_addrlistne_set_localaddrne_set_errorne_vsnprintfne_set_session_flagne_ssl_context_set_flagne_get_session_flagne_set_progressne_set_notifierne_set_read_timeoutne_set_connect_timeoutne_set_useragentstrcatne_get_server_hostportne_get_schemene_fill_server_urine_fill_proxy_urine_get_errorne_sock_closene_ssl_set_verifyne_ssl_provide_clicertne_ssl_trust_certne_ssl_context_trustcertne_ssl_cert_validityne_ssl_cert_validity_timene_rfc1123_datestrncpylibintl_dgettextne__ssl_set_verify_err.XBKgoyLJ3SvMU6$.ne__ssl_set_verify_err.reasonsstrncatne__ssl_match_hostnamestrncmpstrchrne_strcasecmpne_hook_create_requestne_hook_pre_sendne_hook_post_sendne_hook_post_headersne_hook_destroy_requestne_hook_destroy_sessionne_hook_close_connne_set_session_privatene_unhook_create_requestne_unhook_pre_sendne_unhook_post_headersne_unhook_post_sendne_unhook_destroy_requestne_unhook_destroy_sessionne_unhook_close_conn.rel.text.rel.rodata.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesUEt%E@ EjEPEEEuÐUE@tEj@PE@ tEj@ PE@tEj@PÐUE@4EEt3E@EjEPujEPEEEu͋E@LÐUhjEEEt+E@EEj@PEЃE@ EEuՋE@tjEPEjPEjPnEjPZEjPFEjP2EjPEjP EjPEj@PEjPjEPfEtEjPE@TtEj@TPE@XtEj@XPEtEjPEtEjPEtEjPjEPÐUE@ u E EEEEÐUEj@PEEj PЋEP UE@PB PE@;E t$EP UEjj@Phj RÐUjEPЋEPEUPEU PÐUjhEjEPE PEPh jEhDPhTEPu E EEUPDUjjEPE PjBP:E@Dt E EPUEPBPE@DjjЋEE@djE PEEujE PEEtjEP E@pE@pt xE EEPh\h jEPЋEPE@\EEEÐUjEPjj ЋEP4E@LUjjEPE PjB4PÐUjEPjj ЋEP4UjjEPEPjB4PEU PPEtjEPЋEPTEtjEPЋEPXÐUÐU jEPE4EEE;EsUjj EEUPE@UE MAEU@BEEE@EE;ErÐUEU P@ÐUEEUjjEPE PhPÐUE };U EML\E u&EtUEPjP ÐUE }U ED\E EEÐU ]uEEE tE u*u]MEjP@ PRQAPRC|PFxЃ]uÐUE t)EU PxEUP|EPhEP jjEP ÐUEU EUÐUEU ÐUEU ÐU]uEtEjPjhjhjE P3jDPЋEEhPЋE PRhP]uÐUE@ EEÐUE@EEÐUEj@PЋE PEU @B Ej@PЋE PÐUE@4tVE@<t E@U_ y sset_hostportU hostdefaultport len size_tset_hostinfoU& hiXtype + hostnameport& ne_session_createUy   scheme hostname portsessy kkkia   ne_session_proxyUDy sessIhostname portDne_session_socks_proxyyUy sess#vers hostnameportusernamepasswordne_session_system_proxyULy sessflags ne_set_addrlistDUy sessCaddrsC  nChiElasthiEi Fne_set_localaddrX.U9y sessW>addrW 9ne_set_error]aUy sess\format\ ...\params^ va_list ne_set_session_flagfU$y sesseflage valuee ne_session_flag_e NE_SESSFLAG_PERSIST NE_SESSFLAG_ICYPROTO NE_SESSFLAG_SSLv2 NE_SESSFLAG_RFC4918 NE_SESSFLAG_CONNAUTH NE_SESSFLAG_TLS_SNI NE_SESSFLAG_EXPECT100 NE_SESSFLAG_LAST$ne_session_flag!ne_get_session_flagrURy sessqflagq "progress_notifier{DUuserdataystatusy infozsessy |ne_session_status8 ne_set_progressUFy sessprogress userdatane_set_notifierUy sess|status userdatane_set_read_timeoutUy sesstimeout ne_set_connect_timeoutUBy sesstimeout ne_set_useragent Uy sesstoken !ne_get_server_hostport Uy sess!ne_get_scheme Uy sessne_fill_server_uriC Umy sessuri   scheme# host# userinfo# port# path# query# fragment#mne_uri ne_fill_proxy_uri Ufy sessuri V a a hi!ne_get_error Uy sessne_close_connection UEy sess   hkG [ u [ u fnWRERne_close_conn_fnne_ssl_set_verify Uy sessTfn userdatane_ssl_provide_clicert U)y sess fn userdatane_ssl_trust_cert9 Ury sesswcert rne_ssl_cert_validity Ucertfrom untiltftudateZ f f f n n    ne__nm1      ne__nm1      N  N  @  @  @ ne__nm1 P P P P P ne__nm1 stime_t ne__ssl_set_verify_err%jUNy sess$failures$ # bit# strS#reasons])n2flag2NX8ns!ne__ssl_match_hostnameBUcnA cnlenA 'hostnameAdot1CIIIia J","add_hooklUhookskidk fnkudkhkmposm$void_fnne_hook_create_requestEU;y sess}fn~ userdata~ ne_request_s;OYJT^cne_create_request_fnne_hook_pre_senduUy sessKfn userdata * data# used # length #FJ*/Fne_pre_send_fnne_hook_post_sendUy sessJfn userdata  major_version# minor_version# code# klass# reason_phrase# EJ%*Ene_post_send_fnne_hook_post_headersUy sessfn userdataJne_post_headers_fnne_hook_destroy_requestU^ y sessu fn userdatap J^ p ne_destroy_req_fnne_hook_destroy_session5U y sess fn userdatane_hook_close_conneUJ!y sessWfn userdatane_set_session_privateU!y sess!id userdata!"remove_hookUf"hooksfn udpnextne_unhook_create_request?U"y sessfn userdatane_unhook_pre_send_U$#y sessKfn userdatane_unhook_post_headersU#y sessfn userdatane_unhook_post_sendU#y sessJfn userdatane_unhook_destroy_requestUD$y sessu fn userdatane_unhook_destroy_sessionU$y sess fn userdatane_unhook_close_connU%y sessWfn userdata%ne_rfc1123_date(%s(%2%%ne_strcasecmpb%-%7%g%%ne_vsnprintf %b% l%q%%%ne_snprintf %b% % %%%libintl_dgettext&%%&&ne_debug>&& >&%ne_strdupe&C&%ne_calloc&%ne_malloc&%ne_sock_close&&&ne_iaddr_free&&&' ne_iaddr_ipv4 ne_iaddr_ipv6%ne_iaddr_parse @'&&&ne_addr_destroyd'@'&ne_ssl_context_destroy'd'&ne_ssl_context_set_flag'd''&ne_ssl_context_trustcert'd''%ne_ssl_context_create% (&ne_ssl_clicert_freeH( (&ne_ssl_cert_freem(H(m(s&ne_ssl_cert_validity_time(r(w(w(s(%__posix_ctime_r(( tm$z) tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# (z)%__posix_asctime_r))&free))%strchr)))%strncpy*)*$*%strncmpS**)*S*%strncat*X**%strlen ***%strcpy****%strcmp+**+'strcat+  /var/tmp/neon-0.29.4/src/usr/include/iso/usr/include/sysne_session.cne_private.hne_socket.hne_session.hne_defs.hne_ssl.hne_request.hstring_iso.hstdarg_iso.hne_uri.htypes.hne_string.hne_utils.htime_iso.h3  % +}3C<_ {     } ) 2 C~T_ m          / = _ {        9 FZ s       % ;l      ,6k        2 ; Y w        y #, 6< _ _ s{        < S[ d m       . {        ( A V a           $ G [ d u ~             ! 7 F Z f n        @ P        D K|ev      ' 07 @ I         #C Ss    3 Cc s        y #= C] c}      DD%. : ; @ ' D I: ;  4I : ;  ' D I$> &I  :  I8  :  ( < I: I !I/ ' D I :  :  : ' ID  : I !I/.?  : ; @ ' D  .?  : ; @ ' ID .?  : ;@ ' D I: ; 4I : ; !.?  : ;@ ' ID ". : ;@ ' D # $I%.? < ' ID &.? < ' D '.? < ' ID )+~ ne_session_destroy# ne_version_pre_http110 ne_session_create ne_session_proxyNne_session_socks_proxyne_session_system_proxyLne_set_addrlistne_set_localaddrCne_set_errorne_set_session_flagne_get_session_flagne_set_progressFne_set_notifierne_set_read_timeoutne_set_connect_timeoutBne_set_useragentne_get_server_hostportne_get_scheme$ne_fill_server_urine_fill_proxy_urifne_get_errorne_close_connectionnne_ssl_set_verifyne_ssl_provide_clicert)ne_ssl_trust_cert|ne_ssl_cert_validityne__ssl_set_verify_errnne__ssl_match_hostnamene_hook_create_requestne_hook_pre_send`ne_hook_post_send`ne_hook_post_headersne_hook_destroy_request ne_hook_destroy_session ne_hook_close_connJ!ne_set_session_privatef"ne_unhook_create_request"ne_unhook_pre_send$#ne_unhook_post_headers#ne_unhook_post_send#ne_unhook_destroy_requestD$ne_unhook_destroy_session$ne_unhook_close_conn)+rdestroy_hooks(free_hostinfofree_proxies_ set_hostport set_hostinfoRprogress_notifier6add_hook!remove_hook)+hookXproxy_typene_sock_addrne_inet_addr host_infone_socket#ne_sock_sversionne_progressZne_off_t ne_session_status_info_u|ne_notify_statusne_ssl_client_certne_ssl_certificatene_ssl_contextTne_ssl_verify_fn ne_ssl_provide_fn8 ne_session_status_infokne_session_sh ne_session ne_destroy_sess_fn size_tva_list$ne_session_flag_ene_session_flagne_session_statusmne_uriWne_close_conn_fntime_tvoid_fnne_create_request_fnKne_pre_send_fnJne_post_send_fnne_post_headers_fnu ne_destroy_req_fn&(tm)+reasons5@YV@z-Tu'(12=>MNOP Q R S T UVW\l  ..8?UdrN 01pH,-PF=Max    CP i    )0I@ L^x 8p$ %;P%L%^%s%%@%p% @`$>XXtfXt !"P$d%&'(*)4&<E+,- -#.CNZdr(**J(h(*X57r{::' 1 6 $B G $W $i %  & >  > (2 ( (   D    0 HS Ju K L    M L K+ LG X ] b Mu L   M & O O PO#(M=PXORS-- .P$gT% $,n:>        > #B p t   G )K       /j0n1 b2f3 V4Z68!im9\:`;<Y=]?@=AAB 59>BGKyC}#'EFAGEI!&*/38<AEJNSW\` >BGKPTY]bfN"OQD HUVxW|{X Y  Z ![ !g!\k!! !"""""'"+"0"4"9"="B"F""]""^"A#_E##`#$a$d$bh$$c$")4<DLVelw !)3;CKS[cks{# '/7DKW_gt){#+8/?KS[cp0w12 %43;GT4[gow68 9%19AIS`:gs{;<=? @!-:AAMU]jBq}C %/7?GO\EcowFGI    % - 5 = E O ^ Ne q y        Q           # + 5 B  I U ] e m u      U   V   W   X  $ Y+ 7 D ZK W d [k w  \              ]  ( ^/ ; H _O [ h `o {  a   b   c  4 0//08"hp+4"?")+KM WZ2e]uaatdd@m jw \n0 n  u   ~  ~  ~ ne_basic.o/ 1287466441 0 0 100644 24844 ` ELF ]4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_basic.cstatlstatfstatmknoddispatch_to_fdget_range_commonparse_dav_headercopy_or_moveBbss.bssDdata.dataDrodata.rodata_xstat_lxstat_fxstat_xmknodne_getmodtimene_request_createne_request_dispatchne_get_response_headerne_get_statusne_httpdate_parsene_request_destroyne_putfstat64errnolibintl_dgettextne_strerrorne_set_errorne_lock_using_resourcene_lock_using_parentne_set_request_body_fdne_get_sessionstrlenne_begin_requeststrncmpne_read_response_to_fdne_discard_responsene_end_requestne_add_request_headerne_get_rangene_snprintfne_getne_postne_set_request_flagne_set_request_body_bufferne_get_content_typestrchrne_strdupne_qtokenstrstrne_shavene_strcasecmp.XAKgoyLJ3SvMkAA.options_mapstrcmpfreene_options2ne_optionsmemsetne_add_depth_headerne_get_session_flagne_get_schemene_get_server_hostportne_print_request_headerne_simple_requestne_copyne_movene_deletene_mkcolne_path_has_trailing_slashne_concat.rel.text.rel.rodata.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesUE PEPj EEUE PEPj EEUE PEPj EEUjjEPE PEPjEEÐUE PhEP EjEPEhEPEEu)jEP@ tE@E*EtjEPЋEP E@jEPEEEÐUlhPEPtU`h hhP`P PSEP EE PhDEP EjE PEP E PEPUEPRPREPEPjEPddu jEP@ t DždjEPdEEÐUjEPEjEPEEtEjPE EEEjEPEEt/hHEPEEE@=EtWjhXEP u?MUEPBPAP u EUD-t8EUD/t(h`hPEPE|Et E@=tEu#E@ uE PEPEjEPEEujEPEEEEEÐUE PhEP EEPhEP hhEP EPEPEP EjEPEEu7E@=u*hhPEPE\EuRE@ u5E@=t(hhPEPEE@ tEjEPEEEÐUDEP@ ; u;u%EjP@PRhj@EP,MEP@ PRQAPRhj@EPjjEPEPE PEPJEEÐU E PhEP EjEPEPS EEujEP@ tEjEPEEEÐU E PhEP EjjEP jEPPEPEP jEPEP EEujEP@ tEjEPEEEUh EPEEtj/EPuEbjEPЋE P E j/@ PEUBE@EE U @ BE @j;EPEEt}UBE@E;h0PEP EEt:h4EPEEtEh0PЋE P Euh@EPЋE PE @uLE hD@Pu3E hL@PuE PP E \PEEÐUjEPEEEE @,h0PEP EEurhhEPEEEsAEPEPuE UH E HE@EErEgjEPUE PhpEP EjEPEhxEPEEtEPEPEujEP@ tEjEPEEEÐUEj jEP EPE PEP EEt EEEUPEt EEEUPEt EEEUPEEEÐU$|E)EEE tԃt吋EPhEP ÐU]E t E EEPEPEP EE uEPEPE tjEPEP jEPEP EPEPjEPtEPhEP >jEPjEPЋEPRShhEPEt E EEPhEP EPEPEE]ÐUEPEPEPE PjEPEEÐUEPEPjE PjEPaEEÐUE PhEP EjE PEP E PEPEPEPEEÐUjE PtjE PEjhE P EEPhEP EjEPEP EPEPEPEPEjEPEEE( 8@L\hpx HEADLast-ModifiedneonCould not determine file size: %sPUTContent-Rangebytes Response did not include requested rangeGETRangeAccept-RangesbytesRange is not satisfiableResource does not support ranged GET requestsbytes=%lld-bytes=%lld-%lldPOSTContent-Type"'charset= textxmlus-asciiISO-8859-1 OPTIONSDAV01infinityDepthMOVECOPYDestination%s://%s%sOverwriteTFDELETE/MKCOL23access-controlversion-controlcheckout-in-placeversion-historyworkspaceupdatelabelworking-resourcemergebaselineversion-controlled-collection@(#)types.h 1.86 07/09/20 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)stat.h 1.11 04/09/28 SMI@(#)stat_impl.h 1.4 03/12/04 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)unistd.h 1.76 06/03/10 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)errno.h 1.17 03/01/03 SMI@(#)errno.h 1.20 00/01/12 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21ne_basic.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_basic.o ne_basic.c -W0,-xp.XAKgoyLJ3SvMkAA.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLJ3SvMkAA.;backend;raw;cd;DBG_GEN 5.2.7statx U_pathr_bufr intcharunsigned longdev_tlong  ino_tmode_tnlink_tuid_tgid_tG off_ttime_t timespec tv_secS# tv_nsec#`timestruc_tblksize_tblkcnt_t    stat st_dev# st_pad1# st_ino# st_mode# st_nlink# st_uid# st_gid*# st_rdev#$ st_pad26#( st_sizeG#0 st_pad3#4 st_atim#8 st_mtim#@ st_ctim#H st_blksize#P st_blocks#T st_fstype#X st_pad4#hlstat@UW\_path_buf Wfstat`U_fd_buf mknodU_path_mode _dev ne_getmodtime6GUsess5uri5 modtime5 req7 value8 ret9ne_session_sne_sessionSne_request_sne_request ne_putYUsessXuriX fdX reqZ stu[ ret\_ww errnum_ buf`  unsigned long longino64_t long longoff64_tblkcnt64_tA  R  stat64u st_dev# st_pad1# st_ino# st_mode# st_nlink# st_uid# st_gid*#$ st_rdev#( st_pad2#, st_size#4 st_atim#< st_mtim#D st_ctim#L st_blksize#T st_blocks#X st_fstype0#` st_pad4A#pRstruct_statȘdispatch_to_fd~=Uk req}fd} p range} sessu  st  ret rlen 2&& value k  major_version# minor_version# code# klass# reason_phrasez #   unsigned size_t get_range_commoncU sess uri  brangefd req status  ret   ne_status  ne_get_rangeU\ sessa uri  rangefd brange \ ne_off_t  startf # endf # totalf #u ne_content_range  @ ? ne_getUC sessH uri fd req retC ne_post0U sess uri fd buffer req ret  ne_get_content_typeU reqct valuesepz stypez \\\tokz    type # subtype # charset # valuez #  ne_content_type  options_mapT name## cap #(Thoptions_mapY9Tx options_map9parse_dav_headerL UfkvalueKpcapsK tokensz Mpntz M   tokz Rn Sf ne_options2dI U sesscuric pcapscreqeretfheaderg ne_optionsv Usesstpatht  capsuretwcapmask x  dav_class1 # dav_class2 # dav_executable #ne_server_capabilities ne_add_depth_headerS Urreqdepth valuewrcopy_or_move Usessis_move overwritedepth$src.destreq)ne_copy Usessoverwrite depthsrcdestne_move U&sessoverwrite +src5dest&0ne_deleteh Usessuri reqne_mkcolU sess%uri reqreal_uriz ret *4libintl_dgettextz g/9gne_httpdate_parseSlne_lock_using_parentne_lock_using_resourcene_simple_request7ne_request_flag_e NE_REQFLAG_EXPECT100 NE_REQFLAG_IDEMPOTENT NE_REQFLAG_LASTne_set_request_flag7ne_read_response_to_fdne_discard_responsene_end_request7ne_begin_request[ne_request_destroy}}ne_get_session ne_get_statusne_request_dispatchne_print_request_headerK !KUne_add_request_headerPZne_get_response_headerne_set_request_body_fdne_set_request_body_bufferD  ISne_request_createDNXne_set_error!ne_get_schemene_get_server_hostportne_session_flag_e NE_SESSFLAG_PERSIST NE_SESSFLAG_ICYPROTO NE_SESSFLAG_SSLv2 NE_SESSFLAG_RFC4918 NE_SESSFLAG_CONNAUTH NE_SESSFLAG_TLS_SNI NE_SESSFLAG_EXPECT100 NE_SESSFLAG_LASTne_get_session_flag  ne_path_has_trailing_slashDDNne_strcasecmp~ISne_snprintf ~ !ne_concatz !ne_strerrorz z  ne_shavez 3z  z 8ne_qtokenz i3=ine_strdupz nvoidfree__posix_ttyname_rz  __posix_getlogin_r z  strstrz >>strchrz gCgqstrncmplv strlen strcmpmemset  _xmknodT%Y_lxstatT^_xstat_fxstatRfstat64  __posix_ctime_rz <z tm$  tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# <"__posix_asctime_rz z V /var/tmp/neon-0.29.4/src/usr/include/sys/usr/include/isone_basic.cstat_impl.hstat.htypes.htime_impl.hne_session.hne_request.hne_utils.hne_basic.hne_defs.htime_iso.h &; F[ f 6       $.< B _w   + ? ` j x          & 2 8 F^s        / 8 C JX ^ v  .C a hv |     % + 6J e t         * 2 P T \u      $ 0 D S o  ~        ) 0 > D V ] m            ) , w<  Q i          X        . @ P  c v            DD%. : ; @ ' ID I: ;  $> &III: I  !I/  :  I8 .?  : ; @ ' ID  4I : ;  <  I!I/ : .?  : ;@ ' ID I: ; 4I : ;  I!I. : ;@ ' D .?  : ;@ ' D . : ;@ ' ID .? < ' ID I.? < ' D  :  ( !".? < ' ID ne_getmodtimene_put ne_get_range ne_getM ne_post ne_get_content_typeune_options2ne_optionsne_add_depth_header3ne_copyne_move:ne_deletene_mkcolkstatlstatafstatmknoddispatch_to_fd get_range_commonparse_dav_header|copy_or_movedev_tino_tmode_tnlink_tuid_t*gid_tGoff_tStime_t`timespectimestruc_tblksize_tblkcnt_tstatne_sessionne_requestino64_toff64_tblkcnt64_tRstat64ustruct_stat size_t ne_statusf ne_off_tu ne_content_range ne_content_type(options_mapne_server_capabilities7ne_request_flag_ene_session_flag_e<tm.hoptions_mapoptions_map  @ `(@#` E&'6789 : ; < = >?@GOW_mP<3H_nupq50IPZdktx P  S.@ ,H *P XZp c~1Qy !"#$5%k'x()*+ ,-$.2!Q#q%/#01"@I2h2)+345KT cl6ty6#)+)(+Q%88$ R#o% ;0<#%7@"Y>{?>>@ A6?B]fBCC?  @1 : BY Dc E{ D F   !  " #7 %f Iz G  " A J 6s ~   J , , - K  6# L3 MC H Q Nb n z  6 O $  9 ,I -Y O} T ?  U   , - OF (08@HPX`hpxgtx#'ko &mqvz8 < A E J N + /  7  9 Z :^  = p t y }   DD "&+/48G/H3+J/ APEQJRNS'4;IV]kx&$.6@HPX`hu|",4<DLV^fnv~79 (5:<HRZbjr|= (0:BJR\fs zG&08EHLX`hpxJ  (08@JR\fn{PQRS $.6@HP4 Phhh"+G4?K;ZWXDeLFu%GGtI2I` O Sx hT0  Vh  ]  ]  ] ] ne_string.o/ 1287466441 0 0 100644 22364 ` ELFS4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_string.ccount_concatdo_concatqappend_countquoted_appendBbss.bssDdata.dataDrodata.rodatane_tokenstrchrne_qtokenne_shavestrlenne_buffer_clearmemsetne_buffer_growne_reallocmemcpyne_buffer_concatne_concatne_mallocne_buffer_zappendne_buffer_appendne_buffer_snprintfne_vsnprintfne_buffer_createne_buffer_ncreatene_buffer_destroyfreene_buffer_finishne_buffer_altered.XAKgoyLJ3SvM0FA.ascii_quote.XAKgoyLJ3SvM0FA.hex_charsne_buffer_qappendne_strnqdupmallocne_base64.XAKgoyLJ3SvM0FA.b64_alphabetne_unbase64ne_strclean.XAKgoyLJ3SvM0FA.ascii_cleanne_strerrorstrerror_rstrncpyne_snprintfvsnprintfne_tolower_array.XAKgoyLJ3SvM0FA.ascii_tolowerne_strcasecmpne_strncasecmp.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesU E@EUE PBPEEtUBEU@B E@EEEÐUEE@EE@E@PEPEEt3UE@PBPEEu EpEE8EPE ;u)UBE@EEU@BEE3E@EE@_E@EE@EEEÐU EEE@tEE@PE Pt,E@EE@tE@PE PujEPU‰EE;EvAE@PE Pt(EHEE;EvE@PE PuظUBEEEÐUUE@PjBP E@ÐUEU ;Pv0E @ EPUE@PBPЋEPUEEEE@EEUBE@EEtBjEPU‰EEEE@EEUBE@EEuEEEÐUE EE@EEUBE@EEtZjEPEEPEPEP EEEE EE@EEUBE@EEuÐU ]E E]jEPS‰EEPEPE EEUHJEPAPEUPEPUB]ÐUjEPEE EjEP8U‰EEj@PЋEPEPR EE EUUEPRUUBEEEÐUjE PPE PEP ÐUE@EPEPEUHJEPE PAP EPUEPUEHRDÐU E@E PEPEEEUHJjjEPEPE PAPEEPUEPEEEÐUjhEEÐUjj EjEPЋEPE@PEUPE@EEEÐUEj@PjEPÐUE@EjEPEEEÐUEj@PU@BÐU EEEE;E s%E@U‰EE@EE;E rۋEEEÐU EEE EE;EE@uE@UBE@Ed\UBE@ExUBE@EE@UBE@EE@UBE@EE@EE;E`UBEEEÐU]E EE]EPE PSPEPEU@BHEEPE PEP EEU+U@M‰A]ÐU EE EEPEP4j@PEEPEPEPa EEEÐUE +EE +ƒvE +؋UDEEj@PEEEE E@UBE@EE@Ѓ0E@ UBE@EE@ E?E؉E܋E܉EEEE@a|E@GEiE@A|E@AEHE@0|E@E&E@+u E> E?EȉE̋ẺEЋEЉEԋE?Eԃ? ЉUE%UBE@EE@=jE@a|E@GElE@A|E@AEHE@0|E@E&E@+u E> E?EEEEEEċEă?U ЉUE%UBE@EE@=E@a|E@GElE@A|E@AEHE@0|E@E&E@+u E> E?EEEEEEE?U ЉUE%UBE@EEEE@'E U+PUEÐUEEE@t*E@UBE@EE@u֋EEEÐUhPEP u:EHPPE P U B jjEPhEPE PE EEÐUEEjjEPEPE PEPU MD jEPEEÐUjjEPEPE PEPU MD jEPEEÐUEEÐUEEE EE;Eu EVE@EE@EE@EE@EEu UE;tEU+‰EEÐUEEE EE;EtEu EqE@EE@EE@EE@EEt UE;tEU+‰EEHEEwEU+‰EE0123456789ABCDEFABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Unknown error %d@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)unistd.h 1.76 06/03/10 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/216ne_string.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_string.o ne_string.c -W0,-xp.XAKgoyLJ3SvM0FA.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLJ3SvM0FA.;backend;raw;cd;DBG_GEN 5.2.7ne_token+]Ustr*separator* ret,pnt,charne_qtoken:EUstr9separator9 quotes9pnt;ret;m'quot>qcloseAne_shaveY"UDstrXIwhitespaceX pntZretZD ne_buffer_clearlWUbufkunsigned size_t  data# used# length# ne_buffer ne_buffer_growsU&bufrnewsizer count_concat&Uap~totalnextvoid va_listdo_concatU!strap next6bblen ne_buffer_concat9Ubuf... aptotalint ssize_tne_concatU05str... aptotalslenret0 ne_buffer_zappendU~bufstr ~ ne_buffer_append_Ubufdata lenne_buffer_snprintfUobufmax tfmt...apretone_buffer_createUne_buffer_ncreateGUsbuf ne_buffer_destroytU bufne_buffer_finishUlbufret ne_buffer_alteredUbufunsigned charlongascii_quote hex_charsqappend_countU  s send p ret   quoted_append*U dest($ s( . send)p8 +q, ) 3 ne_buffer_qappendAwU buf@ data@ len@dend BqCqsC  ne_strnqdupRUR W dataQlenQ denda SdestTR \ f z b64_alphabetk [f B Ab64_alphabet [ne_base64a UM R text`inlen` bufferdpointdoutleneM ne_unbase64.U  data out inlenoutp in& . D D tmp  ! + C ascii_clean0 ne_strclean}U strpnt ne_strerrorU`errnumbuf buflentmp`ne__nm1sne_snprintf]Ustrsize fmt...apne_vsnprintfUYstrsize ^fmtapYc{ascii_tolowerhne_tolower_array@Une_strcasecmpENUZ_s1Dis2D p1sFp2}Gc1Hc2HZdnxne_strncasecmpXU!&s1W0s2W nWp1:Yp2DZc1[c2[!+5?ne_realloclne_mallocvsnprintf__posix_ttyname_r__posix_getlogin_rstrerror_rAAstrchrjFjstrncpyostrlenmemsetmemcpy__posix_ctime_rAtm$ tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# A__posix_asctime_rmalloc( free  /var/tmp/neon-0.29.4/src/usr/include/iso/usr/include/sysne_string.cne_string.hstdlib_iso.hstdarg_iso.htypes.htime_iso.h+& . 9 HRX f:m           o'0 : @ V\         3K U cn    ! 6bs  z       # 4 FW] s s         9 H ] f|         ) 2 < B Sd r        &, > Q hz   x    7G ^r        + = [    |  ! c        . D 0 A P r   2 J Z  p) 6H _ rx    8 8 G X f        $ - 0 < I V\ br |       DD%.?  : ; @ ' ID I: ;  4I : ;  $> I &I .?  : ; @ ' D  I:  :  I8 . : ; @ ' ID . : ; @ ' D .?  : ; @ ' ID I !I/4I : ; I !I/ . : ;@ ' ID I: ; .?  : ;@ ' D .?  : ;@ ' ID I!I.?  : ;@ ' ID .? < ' ID I :  .? < ' D :nne_tokenne_qtokenne_shaveNne_buffer_clearne_buffer_grow!ne_buffer_concatne_concat:ne_buffer_zappendne_buffer_appendne_buffer_snprintfyne_buffer_createne_buffer_ncreatene_buffer_destroy ne_buffer_finishlne_buffer_altered= ne_buffer_qappend ne_strnqdup ne_base64W ne_unbase64^ ne_strclean ne_strerrorsne_snprintfne_vsnprintfne_tolower_arrayne_strcasecmpne_strncasecmpQ:&count_concatdo_concat qappend_count quoted_appendK:size_tne_bufferva_listssize_tAtmp:ascii_quote hex_charsz b64_alphabet b64_alphabetC ascii_clean{ascii_tolower0K      ](/`9PBI0'Y``@ozy@$_`g`GW P$#(4Fc~wMB ^0MR M+5FRe~sPuDi M{# %2 u')# #]+k++.H.//02! #J 4y 4 4 4 4R 4 4  #: +R79: ;1<N{<>>>>>j|hlquz~cg7;7!;"Q$U%&()*6,:-. /0 4   U 0Y  1  4 4 3 i 5m       Z 7p 6t  8 #(,15:>;' >=?@ $,4<FNV^fnx &3:FNXelx! $,4<DQ"Xdnv~$%&&.6>FN[(bn{)*,-".;BNV^hu|0$118DLT\i3p|5$.6>HPXbjrz68"/;6BLT\dq'x=?     - @4 @ H R Z d l t |   4 @111R"+)4?:K3 W= e?uAUAO/BtB F H0  K  |S  S  S Sne_uri.o/ 1287466441 0 0 100644 23108 ` ELFV4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_uri.cmerge_pathsremove_dot_segmentscopy_authorityBbss.bssDdata.dataDrodata.rodatane_path_parentstrlenne_strndupne_path_has_trailing_slashne_uri_defaultportne_strcasecmpne_uri_parsememset.XAKgoyLJ3SvMEMA.uri_charsatoine_concatstrrchrne_strdupne_mallocmemcpystrncmpstrcmpstrchrstrncatfreene_uri_resolvene_uri_copyne_uri_freene_path_unescape__ctypestrtolne_path_escapesprintfne_uri_cmpne_path_compareabsstrncasecmpne_uri_unparsene_buffer_createne_buffer_concatne_buffer_appendne_buffer_zappendne_snprintfne_buffer_finishne_path_childof.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesU jEPEEEHEE;ErE@/uEHEE;Ev'E@/tEHEE;Ev E@/uE;ErE;EuE@/t EE+E@PEPEEÐU jEPEEvEUD/u EEEEEÐUhEPu EP/hEPu E EEÐUjjE P EEEEE@%tkE@% t"E@EE@% uދE@:u"E+EPEPЋE PE@EE@/E@/EEEEE@/t+E@tE@EE@/t E@uEEE;EsEE@%,t*E@EE;EsE@%,u֋E@@u"E+EPEPЋE PE@EE@[umE@EE@]t#E;EsE@EE@]tE;ErE;EtE@;EtE@:tE=E@E8EEE@:t#E;EvEHEE@:tE;EwE;Eu EE#E@;EtEj@PЋE P E+EPEPЋE PEEE@u EEEE@%-t"E@EE@%-uދE+EPEPЋE PE@EEE@EE@%/t"E@EE@%/uދE@?uuUE+EHPBPЋE PE@tJEEE@EE@%/t"E@EE@%/uދE@#u!UE+EHPBPЋE P$E@u E@?t E EEÐU]E@t,E@@ujE Ph EEj/@PEEujE PEuEU+PBEjE PUjDPEUEPBPEP ]]jE P@PE PS EEE]ÐUjEPEEEjEPj@PEUBE@jhEP uEEjhEP uEEwjhEP uEEOh EPuUB'jh$EP th,EPubE@uEE/UB EEj/EPEEtUB UBh0EPth4EPuUB\E@/Uj/PEEujEPEE+EPEPEP EEE@,jEPEEEÐUE @tE j@PЋEPE U@ B E @tE j@PЋEPÐUjjEP E @tkE j@PЋEPE PEPYE j@PЋEPE @tE j@PЋEPE @tUE PEPE j@PЋEPE @tE j@PЋEPE @@umEj@PЋEPE @tE j@PЋEP&E@tEj@PЋEPE @@/uE j@PЋEP > >traila'trailb(lena)lenb)  ne_uri_unparse6US X uri5buf 7 D D D D D Dstr G S  data# used# length# ] ne_buffer  vne_path_childof][U+ 0 parent\: child\ root^ret_ +  5  ?  I ne_strcasecmpy D N  ~ ne_snprintf y   ne_concat   ] ne_buffer_finish    ne_buffer_append7   e 7 ne_buffer_zappendg  < ne_buffer_concat  ne_buffer_create  ne_strndup  e ne_strdup  void ne_malloc  e sprintfK% K strtolv~PUfree  atoiabs__posix_ttyname_re__posix_getlogin_r%v %__posix_ctime_rW*tm$ tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# W __posix_asctime_r$ $ .strncasecmpa)3e astrrchrf strchr  strncmpe strncate strlen@! @ JstrcmpsEOmemset  e memcpy  e  /var/tmp/neon-0.29.4/src/usr/include/isone_uri.cstring_iso.hne_uri.hne_string.htime_iso.h ! 5 < P W k       ( > H T fv      (7 O V nt         1N \hn            ' . Id t         $ ?K l        B Y |         $ 4L \ r      @ P s   G=    7 F V a z       , ; T _ |        2 B f        2 V \ s       + 6 h       & H \us~      % 7 O h t z   0   t  @ O fy    7 >D V^ i      4 DW b     # ? M S  DD%$> &II !I/4I : ;  .?  : ; @ ' ID I: ;  I I:   :  I8 . : ;@ ' ID I: ; 4I : ; . : ;@ ' D .?  : ;@ ' ID .?  : ;@ ' D D D I !I/ .? < ' ID I.? < ' D .? < ' ID  : .? < ' ID ne_path_parent4ne_path_has_trailing_slashne_uri_defaultportne_uri_parse~ne_uri_resolvene_uri_copyne_uri_freene_path_unescapene_path_escapek ne_uri_cmp ne_path_compare ne_uri_unparse ne_path_childofImerge_pathsremove_dot_segments0copy_authorityCsize_tne_uri] ne_bufferWtmuri_charsBY     '.9JTYgu`<@ U p  0 Y19@!OWb`rvPo  ) 2o ;U1[  !"&8#R$fu$"# % %7 @%] f& % &! &+ 4&i''()"( "O k " " "E "i " " )# "W "{ "  " "# "G " ) ) ) ) ) )$ 9  C  M  W  a  o { # . . )//"#AX a1&c;&& &o4+5W7s 8 9 8:" -;=:P:p y8 8<",3F)aTXKOTX]a*.quz~NRW[`dimrv{DH* !&*/38<AE+,-0| 2  3 , 0 5 9 > B  6        " ' + 0 4  = #/7?GO\cow %-5=EOWaks{ #+3;CKS]emu !)19AKS[cmw#+3@*GS[cks{ ,+3?GOW_go|,-'1;CP0Wcks{2 #+83?KS]emu6    ) 1 ; H =O [ c k u }   4 ["$V+z4"#?"#K4 W|>e;@uLAMAGA B E`  @J  (N8 - `V A hV V pVk xV ne_dates.o/ 1287466442 0 0 100644 10348 ` ELF$4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.debug_varnames.SUNW_cap.symtabne_dates.cBbss.bssDdata.dataDrodata.rodatane_rfc1123_dategmtimene_malloc.XAKgoyLK3SvMESA.short_months.XAKgoyLK3SvMESA.rfc1123_weekdaysne_snprintfne_iso8601_parsesscanf__xtolmktimetimezonene_rfc1123_parsestrcmpne_rfc1036_parsene_asctime_parsene_httpdate_parse.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_typenames.rel.debug_varnamesU$]u}jEPEEu EvjjEE@E}EpEXMUE@PBPAPlPPG PEPhjEP(EEE]u}ÐUP]uLEءPEܡTEXE\E`EdEhElEEPEPEPEPEPEPEPEPh(EP(EEuHEțE؋Mً  ؋UЋ++ƉEEPEPEPEPEPEPEPEPhPEP(EEuDEțE؋Mԋ  ؋UЋ+ƉE^jjEPEPEPEPEPEPhxEP(EEuEțEEE^E-lEEEHEjEPU‰EE~ EE؋UMȉME]uÐUne_rfc1123_dategUjjoanytimeggmthretji B k xtime_tint tm$ tm_sec|# tm_min|# tm_hour|# tm_mday|# tm_mon|# tm_year|# tm_wday|# tm_yday|# tm_isdst|# ne_iso8601_parsezUodateygmt{off_hour||off_min||sec}fix ~n|resulto C k double xoff_tne_rfc1123_parseUodategmtwkdaymonn|resulto C k kxkxne_rfc1036_parse4Uodategmtn|wkdaymonresulto C k k x kxne_asctime_parsePUofkdategmtn|wkdaypmonresulto C k fkxkxne_httpdate_parseUodatetmpok  kunsigned size_tk ne_snprintf< void <ne_mallocDfk fk pstrcmp|kuk k sscanf|x __posix_ctime_rjj __posix_asctime_rj3j mktimeoR3x RgmtimeW r /var/tmp/neon-0.29.4/src/usr/include/sys/usr/include/isone_dates.ctypes.htime_iso.h ( 4 C   P \   P \ ht     .` k z  ~    N    ~     / F   ~    K Vg o      DD%$> &II !I/ 4I : ;  .?  : ; @ ' ID I: ;  D D I I:  :  I8 .? < ' ID I.? < ' ID tne_rfc1123_date!ne_iso8601_parsene_rfc1123_parsene_rfc1036_parsene_asctime_parsene_httpdate_parse5totime_ttm off_tsize_t4trfc1123_weekdaysshort_months     0#EQbipw4@PT9z  5 >U 5 >U'M V'/7?Gm vGOW_gow 8]v ! g7;,0 !""*4>FNV^kr~  (2<DLT\dq!x"    43 p   " + 4?tKF$WjeMu98oP`0 P !  `"X  $   $  $ ne_alloc.o/ 1287466442 0 0 100644 6268 ` ELF44(.strtab.text.bss.data.rodata.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.debug_varnames.symtabne_alloc.cBbss.bssDdata.dataDrodata.rodatane_oom_callback.XAKgoyLK3SvMkWA.oomne_mallocmallocabortne_callocmemsetne_reallocreallocne_strdupstrlenstrcpyne_strndupmemcpy.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_typenames.rel.debug_varnamesUEÐUjEPEEutEEEUjEPEEutEPjEP EEÐUE PEPEEutEEEÐUjEPj@PEEutEPEPEEÐUE j@PEEutUU BE PEPEP EEE@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21{ne_alloc.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_alloc.o ne_alloc.c -W0,-xp.XAKgoyLK3SvMkWA.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLK3SvMkWA.;backend;raw;cd;DBG_GEN 5.2.7ne_oom_callback' Ucallback&ne_oom_callback_fnne_malloc7PU #len6ptr8 void  unsignedsize_tne_calloc>Uu#len=ptr?ne_reallocEUptrD#lenD retFne_strdupXIU sWretY char  ne_strndup_Usxs^#n^ new` soom$ long  __posix_ctime_r   int tm$itm_sec#tm_min#tm_hour#tm_mday# tm_mon#tm_year#tm_wday#tm_yday#tm_isdst# i __posix_asctime_r n  realloc   malloc abort  strlen#   strcpy/   memsetS    Smemcpy  X t /var/tmp/neon-0.29.4/src/usr/include/isone_alloc.cne_alloc.hstring_iso.htime_iso.h' 8E K V?        1 D V     DD%.?  : ; @ ' D I: ;  ' D II: .?  : ; @ ' ID 4I : ;  $> &I .? < ' ID  I  :  I8 .? < ' D .? < ' ID jkne_oom_callbackne_malloc0ne_callocune_reallocne_strdup#ne_strndup7ne_oom_callback_fn#size_ttm}oom     @ POB'/Y9@GPcR0:A]pz &-:^q{ g ?C37 !)6=IQ^eqy   4 "+;6;B NM\@nl;}Y c xs 4    $  , ne_md5.o/ 1287466442 0 0 100644 19844 ` ELFI4(.strtab.text.bss.data.rodata.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_md5.cmd5_init_ctxBbss.bssDdata.dataDrodata.rodatane_md5_create_ctxne_mallocne_md5_reset_ctxne_md5_dup_ctxmemcpyne_md5_destroy_ctxfreene_md5_read_ctxne_md5_finish_ctx.XAKgoyLK3SvMEbA.fillbufne_md5_process_blockne_md5_streamfreadne_md5_process_bytesne_md5_to_asciine_ascii_to_md5ne_tolower_arrayne_md5_finish_ascii.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesUE@#EgE@E@ܺE@ vT2E@E@E@ÐUjhEjEPEEEÐUjEPbÐUjhhEPR EEÐUjEPÐUEU @BEU @BEU @BEU @ B E EEÐUE@EEPUEPE@;Es E@U@BE8rE؃xE E؃8EEEUUEPhBP E@UUMD EPE@ ȋEEUL MUUEPBPAP E PEPEEÐUj`PDžjjEPPj P=s uuE@ t Etu#`PhP Bv`PPP E P`PEEÐU]E@E@EE;E vE E EEEEUUEPEPBP EPUEPEE@v\MEEЃEPRAP ]EEЃMEE?PD PCP EEЃ?EPEEEE +EE E @v.U EPREP E U‰EE ?E E v UE PEPBP EU P]UpEEEE EE@EE@EE@EE@ EEPU EPE@;E s E@U@BE;EEEEEEEEEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMxjȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMVȉMEEEEE E ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMp $ȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMνȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UM|ȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UM*ƇGȉMEEEEE E ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMF0ȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMFȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMؘiȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMDȉMEEEEE E ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UM[ȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UM\ȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UM"kȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMqȉMEEEEE E ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UMCyȉMEEEEEE ЉUEEEEPE@ ЋE@ ЋE@ ЉUEUPE3EU#ЋE3‹UM!IȉMEEEEEE ЉUEEEE3EU#ЋE3‹UċMb%ȉMEE ЉUEEEE3EU#ЋE3‹U؋M@@ȉME E ЉUEEEE3EU#ЋE3‹UMQZ^&ȉMEE ЉUEEEE3EU#ЋE3‹UMǶȉMEE ЉUEEEE3EU#ЋE3‹UԋM]/ȉMEE ЉUEEEE3EU#ЋE3‹UMSDȉME E ЉUEEEE3EU#ЋE3‹UMȉMEE ЉUEEEE3EU#ЋE3‹UЋMȉMEE ЉUEEEE3EU#ЋE3‹UM!ȉMEE ЉUEEEE3EU#ЋE3‹UM7ȉME E ЉUEEEE3EU#ЋE3‹ŰM ȉMEE ЉUEEEE3EU#ЋE3‹UMZEȉMEE ЉUEEEE3EU#ЋE3‹UMȉMEE ЉUEEEE3EU#ЋE3‹UȋMȉME E ЉUEEEE3EU#ЋE3‹U܋MogȉMEE ЉUEEEE3EU#ЋE3‹UML*ȉMEE ЉUEEEE3E3EUԋMB9ȉMEE ЉUEEEE3E3EUMqȉME E ЉUEEEE3E3EUM"amȉMEE ЉUEEEE3E3EUM 8ȉMEE ЉUEEEE3E3EUċMD꾤ȉMEE ЉUEEEE3E3EUЋMKȉME E ЉUEEEE3E3EU܋M`KȉMEE ЉUEEEE3E3EUMpȉMEE ЉUEEEE3E3EUM~(ȉMEE ЉUEEEE3E3EUM'ȉME E ЉUEEEE3E3EŰM0ȉMEE ЉUEEEE3E3EU؋MȉMEE ЉUEEEE3E3EUM9ȉMEE ЉUEEEE3E3EUMȉME E ЉUEEEE3E3EUM|ȉMEE ЉUEEEE3E3EUȋMeVȉMEE ЉUEEEEЋU ЋE3‹UMD")ȉMEE ЉUEEEEЋU ЋE3‹U܋M*CȉME E ЉUEEEEЋU ЋE3‹UM#ȉMEE ЉUEEEEЋU ЋE3‹UԋM9ȉMEE ЉUEEEEЋU ЋE3‹UMY[eȉMEE ЉUEEEEЋU ЋE3‹ŰM ȉME E ЉUEEEEЋU ЋE3‹UM}ȉMEE ЉUEEEEЋU ЋE3‹UċM]ȉMEE ЉUEEEEЋU ЋE3‹UMO~oȉMEE ЉUEEEEЋU ЋE3‹UM,ȉME E ЉUEEEEЋU ЋE3‹U؋MCȉMEE ЉUEEEEЋU ЋE3‹UMNȉMEE ЉUEEEEЋU ЋE3‹UЋM~SȉMEE ЉUEEEEЋU ЋE3‹UM5:ȉME E ЉUEEEEЋU ЋE3‹UȋM*ȉMEE ЉUEEEEЋU ЋE3‹UMӆȉMEE ЉUEEEEEEEEEEEEEEEE;E"EUPEUPEUPEUP U EEEE@ ~EE@WEEE@0EMU EJEE@ ~EE@WEEE@0EMU EDJE@EE^U B ÐU EEUEP9UEP0E ȋUEPWEUEDP9UEDP0E"ȋUEDPWEE EU UBE@EEUÐUEPEPE PEPE EEÀ@(#)types.h 1.86 07/09/20 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21ne_md5.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_md5.o ne_md5.c -W0,-xp.XAKgoyLK3SvMEbA.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLK3SvMEbA.;backend;raw;cd;DBG_GEN 5.2.7unsigned charelongv@{?fillbufImd5_init_ctxPKUctxOunsigned md5_uint32{char { ne_md5_ctx A# B# C# D# total# buflen# buffer#  ne_md5_create_ctx\Uctx]ne_md5_reset_ctxdUctxc ne_md5_dup_ctxjU6ctxine_md5_destroy_ctxpUmctxo ne_md5_read_ctx{QUctxzresbufz void    ne_md5_finish_ctxLU@ctxresbuf bytespad@size_t ne_md5_streamoUstreamresblock ctx buffersum@j(j#j#n@int e__FILE _cnt# _ptr # _base # _flage# _filee# __orientation# __ionolock#  __seekable#  __extendedfd#  __xf_nocheck#  __filler#  FILE H{Gne_md5_process_bytesUbuffer@len ctxy]]]left_over@add@ ne_md5_process_block0Uv { buffer@len ctxcorrect_words words endp ABCD  ,,cwp &A_save'B_save(C_save)D_save*JJJWORD_JXXXWORD_KXXXWORD_LfffWORD_MfffWORD_NtttWORD_OtttWORD_P   WORD_Q   WORD_R   WORD_S      WORD_T   WORD_U %  %  % WORD_V% % % WORD_W 3  3  3 WORD_X3 3 3 WORD_Y v @ {e e ne_md5_to_asciiU  md5_buf buffer counte ne_ascii_to_md5U}  buffer md5_buf count } ne_md5_finish_asciiU  ctx buffer result  {e ne_tolower_array ne_malloc@   fread@r @ @@E  r memcpy w free { __posix_ctime_r    tm$ tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst#  __posix_asctime_r   /var/tmp/neon-0.29.4/src/usr/include/sys/usr/include/isone_md5.ctypes.hstdio_impl.hstdio_iso.htime_iso.h  ! + ? I Vh v |    " . : F L fo~     4 G Yj t     # (3 Pc j y      : KT ]e |             , 2 8 > D J  X  f  t       %  3   6 t   . l   & d    \   ? v    R    . e    G    ; x   / l   # `        % . 6I  ~  ~    DD%$> &II !I/ 4I : ;  . : ; @ ' D I: ;  I   I8 I .?  : ; @ ' ID .?  : ; @ ' D I:   :  I8 I !I/.?  : ;@ ' D I: ; 4I : ; .?  : ;@ ' ID .? < ' ID .? < ' ID I.? < ' D .? < ' ID ne_md5_create_ctxne_md5_reset_ctxne_md5_dup_ctx6ne_md5_destroy_ctxmne_md5_read_ctxne_md5_finish_ctxMne_md5_streamne_md5_process_bytesne_md5_process_block ne_md5_to_ascii ne_ascii_to_md5 ne_md5_finish_asciimd5_init_ctxRmd5_uint32 ne_md5_ctx@size_t__FILEFILE tmfillbufK     P11(/BGAW`i@pPpP01^-=I \3u=##! aNR`d) -gkpty}37<@EIgkpty}      7 ; @ D I M k o t x }                    ; ? D H M Q o s x |                    ! ? C H L Q U  ! 1 "5  $ '4;GT[gt{ ")5?IQYais{  %/7?GQYanu'/7?GOW_gow #+3;CKS[cks{*5=EMZ!amu}"$    4 @"m+n#6n#B2N9\:l;#}<Vs<<P > ?x D / I C I X I m Ine_utils.o/ 1287466442 0 0 100644 8852 ` ELF$4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.debug_varnames.symtabne_utils.cBbss.bssDdata.dataDrodata.rodatane_debug_initne_debug_streamne_debug_masksetvbufne_debug__iobfflushvfprintfne_version_string.XAKgoyLK3SvMUhA.version_stringne_version_matchne_has_supportne_parse_statuslinestrstr__ctypene_strdupne_strclean.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_typenames.rel.debug_varnamesUEE EtjjjjjEPÐUE#uLjhEEEPE PP E%@=@ujPÐUEEÐUEuE E t EEEEEÐUEEEHw$EE$$U$]hEPEEuEEEEEEE@tZE@tDMME@ʍDЉEE@EE@tE@uE@EE@EEEE.t EE@tZE@tDMME@ʍDЉEE@EE@tE@uE@ tE`E@ uE@EE@ tE@tDE@t.E@tE@tE@ tEE@PЋE@XЍ]эЋE@DЉEE@0EEEE@ t E@ uE@EE@ tE@ tE UPE UPjEPjPЋE PE UPE UP EE]neon 0.29.4: Library build, IPv6, Expat 2.0.1, zlib 1.2.5, OpenSSL 0.9.8o 01 Jun 2010.HTTP/@(#)types.h 1.86 07/09/20 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)ctype.h 1.35 04/09/28 SMI@(#)ctype_iso.h 1.3 04/09/28 SMI@(#)ctype_c99.h 1.2 04/09/28 SMI@(#)unistd.h 1.76 06/03/10 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21Fne_utils.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_utils.o ne_utils.c -W0,-xp.XAKgoyLK3SvMUhA.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLK3SvMUhA.;backend;raw;cd;DBG_GEN 5.2.7intne_debug_maskk8unsigned charunsigned__FILE_cntk#_ptr#_base#_flag# _file# __orientation# __ionolock#  __seekable#  __extendedfd#  __xf_nocheck#  __filler#  FILEne_debug_stream9 ne_debug_init<3U stream; kmask; ne_debugGUd kchF qtemplateF ~...F paramsH char dlvoidv~va_list dlong version_stringUWV version_stringUne_version_string}U$ dne_version_match Ukt kmajor kminor ne_has_supportEUk kfeaturene_parse_statusline2Ukn sstatus_line st part majork minork status_codek klassk dndmajor_versionk#minor_versionk#codek#klassk# reason_phrasex#}ne_status dne_strcleanx x d ne_strdupxG%__posix_ttyname_rkvkx__posix_getlogin_rkxk dvfprintfk~setvbufkxkfflushk d d$strstrxM) M__posix_ctime_rxRxtm$tm_seck#tm_mink#tm_hourk#tm_mdayk# tm_monk#tm_yeark#tm_wdayk#tm_ydayk#tm_isdstk# __posix_asctime_rxx} /var/tmp/neon-0.29.4/src/usr/include/usr/include/isone_utils.cstdio_impl.hstdio_iso.hstdarg_iso.hne_utils.htime_iso.h< 1 FX g m       $0d@y     L n  T      # *  DD%$> 4I?  : ;  I :  I8  I8 I: .?  : ; @ ' D  I: ;  4I : ;   &II!II !I/ .?  : ; @ ' ID .?  : ; @ ' ID  : .? < ' ID I.? < ' ID Jrne_debug_maskne_debug_streamne_debug_initne_debugne_version_string)ne_version_matchtne_has_supportne_parse_statuslineHJ__FILEFILEva_list}ne_statustm4Jversion_stringversion_string     3 @d#,>W^:o5~p*K[`v|<EIMQUY]z   b    ! !" g?C !.5ANUanu !+3;EOW_gow   4 `2W"+4 ? JKWNMeuHL80    |       ne_socket.o/ 1287466442 0 0 100644 71420 ` ELF4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_socket.cstatlstatfstatmknodseed_ssl_prngraw_pollreadable_rawread_rawwrite_rawwritev_rawwritev_dummyreadable_osslerror_osslread_osslwrite_osslraw_connecttimed_connectconnect_socketdo_bindBbss.bssDdata.dataDrodata.rodata_xstat_lxstat_fxstat_xmknodRAND_statusne_debugne_sock_init.XAKgoyLK3SvM0oA.init_statesignalne__ssl_initne_sock_exitne__ssl_exitpollerrnone_sock_blockne_sock_readmemcpyne_sock_peekne_strerrorrecvlibintl_dgettextstrncpysendwritevSSL_pendingSSL_get_errorERR_get_errorERR_reason_error_stringne_snprintfERR_clear_errorSSL_readSSL_writene_sock_fullwritene_sock_fullwritevne_sock_readlinememchrmemmovene_sock_fullreadne_addr_resolvene_callocstrchrne_strdupgetaddrinfofreene_addr_resultne_addr_firstne_addr_nextne_addr_errorgai_strerrorne_iaddr_printinet_ntopne_iaddr_rawne_iaddr_parseinet_ptonne_iaddr_makene_iaddr_reversegetnameinfone_addr_destroyfreeaddrinfoconnectne_sock_create.XAKgoyLK3SvM0oA.iofns_rawne_sock_prebind.XAKgoyLK3SvM0oA.dummy_laddrmemsethtonsbindne_sock_connectsocketfcntlclosene_sock_peergetpeernamene_mallocntohsne_iaddr_typeofne_iaddr_cmpmemcmpne_iaddr_freene_sock_acceptacceptne_sock_fdne_sock_read_timeoutne_sock_connect_timeoutne_sock_accept_sslSSL_newSSL_set_fdSSL_acceptSSL_ctrl.XAKgoyLK3SvM0oA.iofns_sslne_sock_connect_sslSSLeaySSL_set_ex_dataSSL_set_sessionSSL_connectSSL_freene__sock_sslsockne_sock_sessidSSL_get_sessionne_sock_cipherSSL_get_current_cipherSSL_CIPHER_get_namene_sock_errorne_sock_set_errorne_vsnprintfne_sock_closeSSL_shutdown.rel.text.rel.rodata.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesUE PEPj EEUE PEPj EEUE PEPj EEUjjEPE PEPjEEÐUu EhjEEÐU~@EQ} E>jj tEEEÐU~HuÐUE~U ȍ++ʉMEEEEEE u EEEfEfEEPjEP EE} tًEEEÐUE@$t EEPE PEPBЃEEÐUE@$vWEU;P$v E@$EUEPB PE P EP UEP EP$+UEP$EEE=r"EPEPE PEPBЃ EEPEh(PEPBЃ EE EEKE;EvEEUEPB(PE P EEU(B U+UEP$EEEÐUE@$t E@$EIEPEh(PEPBЃ EE EECEU(B EUP$E;EvEEUEPB PE P EEEÐU UE PjBPH EE}&Eh(PP E"Eu E EEEEÐU]E@PEPgEEt EEUjjjEPE PBPEEu t΋EuNE]h8h0ЋEPR(P UU(EaE}WEE=tE=t E=u EEEEEh(PEP EEE]ÐUUjjjEPE PBPEEu t΋E}tEEh(PEP E u E6E=tE=t E=u EEEEEE EEEÐUE EUEPEPBP EEu tԋE}tEEh(PEP E u E6E=tE=t E=u EEEEEE EEEÐUEHU E @PBPEPAЃ EEÐUEj@Pt EE PEPkEEU]uUE PBPEEuRE]h8h0ЋEPR(P UU(E{EEE uPE]hLh0ЋEPR(P UU(E EEh(PEP E u E6E=tE=t E=u EEEEEEjEPtAuhhh0jEPjjPSh(P8]hxh0ЋEPEPE PRh(PEE]uÐU E@PEPEEtEEUE=v EEEUEPE PBP EEEPEPEEEEÐUE=v E EEEEUEPE PBP EE;EtEPEPEEEEÐU EPEPE PEPBЃ EE~E EE E+EEE~EwE} EE EEEEÐU EPEPE PEPB Ѓ EEEt:E U;Pr/E U+PUEHEE E Et E U;PsыEt;Et3E PUE @+EPREP EEHEE E Et E>E}EEEEEEÐU]UE@$Pj B P EEE@$=E@$tMUE@$PB PA(P EU(B EHEUP$E@$PB(PEPAЃ EE} EEEP$UEP$UE@$Pj B(P EEuE@$=zEtEU+P BEEEE@;EvME]hh0ЋEPR(P UU(EJUEPB PE P U UBEP$+UEP$EP UEP EEE]ÐUEvDEPE PEP EE} EE$E+EEE EE EwEEÐU0jj EEءEܡE EEEEEEE@[j]EPEԋEԃtgEj@PEЋU+UMиD E EjjEPEPjEPЋEPjEP,EjjEPEPjEPЋEPEEEUE@EEÐUE@U@BE@EEÐUE@EE@tE@U@BEEEÐU E@uhh0EEj@PEEHEEPEPE P U UBE EEU E@u+E@EUjjEPE PBPjE?E@u-E@EUjjEPE PBPjE EEu*EHEEPhE P U UBE EEÐUE@u#E@EEjPE P E$E@EEjPE P EEÐUE u EEEEEPEPEP t EEPE PEEUMUjjjEPE PBPAPEEÐUE@tEj@PjEPÐUEPE PEP EE} t׋EEEÐUEPEPE P EE}#Eh(PP EEEEÐU$E@uGEj @PEP EfE޸fEjjj EPE PEPSEwE@uEEj@PEP EfEfEjjjEPE PEPE%Eh(Pj EEÐUjhEE@xE@EU(B EPE@EEEÐUEUPE t E E EEUPÐU$E=t E@tE=uoE ugE=uj jEP Ej @PEP EjPfE޸fEj EPEP EdE=ujjEP Ej@PEP EjPfEfEjEPEP EEÐUEU E @ PEPBP EE}*Eh(PP EjEPEE|EPjEP E@E@=tE@U @;BuiM UEjj@PBPAPEP'EE}9EjEPEh(PEP EXEjPjjPE PEPEP8EEuEUPjEPEEEÐU4E E܉EЋUEPEPBP t)Eh(PP Ejj Ejj ЋEԉPEԋU؉PUԋEPEPBP U܋EԉPE܃u EމEEމEEjPЋE PEԉEEÐU jj EEuOjjEE@EUPE@UfBUjE PBP Mjj EE@EUPE@ UfBUjE PBP EEEÐUE@u E EEEEÐU EU @;BtE U@+BEE@u1E@EE @EUEjPBP EJE@u1E@EE @EUEjPBP EEEÐUEj@PjEPÐUjjE P EE} EEUPEEÐUE@EEÐUEU PÐUEU PÐU E j@PEE@PEPEUPjEPEEtEPEPE@jjjjjEPthhEPEEÐU]RtQE]hh0ЋEPR(P UU(E5%tPE]hh0ЋEPR(P UU(E\E j@PEEUPEuOE]h8h0ЋEPR(P UU(EEPjEP jjjjj!EPE@PEPEPE @t%E jj@Pjj7EPtE @tE @PEPjEPEEt2EPEPjEPE@EEE]ÐUE@EEÐUE@u E{Ej@PEE uEU@DBEHEU@;BDs E.EU@DBUE@PBHPE P EEÐUE@t3Ej@PjPEjEPE EEÐUE(EEÐUEEUjjEPE Ph(PÐUE@t"Ej@PEj@PE@} EEj@PEjEPEEENo entropy source found; could not seed PRNG. neonConnection closedSecure connection truncatedSSL error: %sSSL error code %d/%d/%luLine too longHost not found[IP address]ssl: Server reused session. SSL disabled due to lack of entropySSL disabled due to library version mismatchCould not create SSL structure@(#)types.h 1.86 07/09/20 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)stat.h 1.11 04/09/28 SMI@(#)stat_impl.h 1.4 03/12/04 SMI@(#)socket.h 1.78 08/01/18 SMI@(#)uio.h 1.34 09/06/15 SMI@(#)socket_impl.h 1.1 05/08/02 SMI@(#)un.h 1.11 02/10/02 SMI@(#)if_dl.h 1.10 03/05/21 SMI@(#)netconfig.h 1.24 04/02/27 SMI@(#)in.h 1.55 09/05/27 SMI@(#)stream.h 1.115 08/07/22 SMI@(#)vnode.h 1.133 09/07/17 SMI@(#)t_lock.h 1.45 98/02/01 SMI@(#)machlock.h 1.25 04/07/19 SMI@(#)param.h 1.82 06/01/30 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)mutex.h 1.21 07/04/04 SMI@(#)rwlock.h 1.9 98/02/18 SMI@(#)semaphore.h 1.5 98/02/01 SMI@(#)condvar.h 1.14 04/10/21 SMI@(#)rwstlock.h 1.4 04/11/09 SMI@(#)ksynch.h 1.6 97/10/22 SMI@(#)cred.h 1.27 06/05/03 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)seg_enum.h 1.9 09/07/02 SMI@(#)kstat.h 1.22 07/02/02 SMI@(#)kmem.h 1.38 09/05/07 SMI@(#)vmem.h 1.12 05/06/27 SMI@(#)poll.h 1.28 98/11/23 SMI@(#)strmdep.h 1.10 98/01/06 SMI@(#)model.h 1.24 04/09/28 SMI@(#)strft.h 1.2 00/03/17 SMI@(#)byteorder.h 1.18 04/09/28 SMI@(#)tcp.h 1.18 05/12/21 SMI@(#)inttypes.h 1.3 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)int_const.h 1.5 04/09/28 SMI@(#)int_fmtio.h 1.6 04/09/28 SMI@(#)inet.h 1.21 08/01/04 SMI@(#)netdb.h 1.30 03/12/04 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)strings.h 1.3 96/03/12 SMI@(#)unistd.h 1.76 06/03/10 SMI@(#)signal.h 1.43 04/09/28 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)errno.h 1.17 03/01/03 SMI@(#)errno.h 1.20 00/01/12 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)fcntl.h 1.17 06/03/10 SMI@(#)fcntl.h 1.52 07/03/05 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stddef.h 1.18 04/09/28 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21ne_socket.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_socket.o ne_socket.c -W0,-xp.XAKgoyLK3SvM0oA.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLK3SvM0oA.;backend;raw;cd;DBG_GEN 5.2.7statx U_pathr_bufr intcharunsigned longdev_tlong  ino_tmode_tnlink_tuid_tgid_tJ off_ttime_t timespec tv_secV# tv_nsec#ctimestruc_tblksize_tblkcnt_t    stat st_dev# st_pad1# st_ino# st_mode# st_nlink# st_uid!# st_gid-# st_rdev#$ st_pad29#( st_sizeJ#0 st_pad3#4 st_atim#8 st_mtim#@ st_ctim#H st_blksize#P st_blocks#T st_fstype#X st_pad4#hlstat@UZ__path_buf Zfstat`U_fd_buf mknodU_path_mode _dev seed_ssl_prngU init_state3ne_sock_init6JUne_sock_exitjyUraw_poll}U fdno|rdwr| secs| ret~ fds timeoutshort pollfdL fd# events # revents #ne_sock_blockZUybsockn unsignedsocklen_tunsigned shortsa_family_t   sockaddr  sa_family# sa_data# addrinfo  ai_flags# ai_family# ai_socktype# ai_protocol# ai_addrlen# ai_canonname# ai_addr# ai_next#  ne_inet_addrvoidne_socket_s fd# lport# laddr# progress_ud# rdtimeout# cotimeout# ops # ssl0b# bufpos# bufavail% #$ bufferDb#( errorWb#    size_t ne_iovec \ base# len% #2 \  a f iofns sread# swrite # readable # swritev #   6         +   A  0 a  F   f               !    unsigned char& a  7 < f   k p       J          stack_st u num# data # sorted# num_alloc# comp # STACK u X509_VERIFY_PARAM_st name# check_timeV# inh_flags# flags# purpose# trust# depth# policies # X509_VERIFY_PARAM  x509_store_st@ ] cache# objs # get_cert_methods # param8 # verify*# verify_cb*# get_issuer+# check_issued.+# check_revocationD+# get_crld+#$ check_crl+#( cert_crl+#, cleanup+#0 ex_data#4 references#<= X509_STORE] asn1_string_st length# type# data7 # flags# sASN1_INTEGER asn1_object_stF sn# ln# nid# length# data7 # flags#ASN1_OBJECTFASN1_BOOLEANsASN1_STRINGpsASN1_ENUMERATEDsASN1_BIT_STRINGsASN1_OCTET_STRINGsASN1_PRINTABLESTRINGsASN1_T61STRINGsASN1_IA5STRINGsASN1_GENERALSTRING.sASN1_BMPSTRINGLsASN1_UNIVERSALSTRINGfsASN1_UTCTIMEsASN1_GENERALIZEDTIMEsASN1_VISIBLESTRINGsASN1_UTF8STRINGASN1_VALUE_stASN1_VALUE ptr# boolean]# asn1_string# objectX# integer# enumerated# bit_string# octet_string# printablestring# t61string# ia5string)# generalstringG# bmpstringa# universalstring# utctime# generalizedtime# visiblestring# utf8string# set# sequence# asn1_value# asn1_type_st type# value#ASN1_TYPE X509_algor_st+ algorithmX# parameter#X509_ALGOR+ buf_mem_st | length# data# max#ABUF_MEM| X509_name_st entries # modified# bytes# hash# X509_NAMEsASN1_TIME X509_val_stA notBefore# notAfter# X509_VALAU& _d7 in& 7 i& 7 i& /7 i  bignum_st d4# top# dmax# neg# flags#99bignum_ctxi9999BIGNUM bn_mont_ctx_stHT ri# RR# N# Ni#, n0#@ flags#DTYii&  rsa_stX pad# version# methl# engine# n# e# d# p# q# dmp1#$ dmq1#( iqmp#, ex_data#0 references#8 flags#< _method_mod_n#@ _method_mod_p#D _method_mod_q#H bignum_data#L blinding#P mt_blinding#TC7 & HRM7 W\ cb_1# cb_2# bn_gencb_st % ver# arg# cb#Ei% rsa_meth_st8V nameZ# rsa_pub_enc# rsa_pub_dec# rsa_priv_enc# rsa_priv_dec/# rsa_mod_exp# bn_mod_exp# init# finish# flags#$ app_data#( rsa_signC#, rsa_verify#0 rsa_keygenE#4JRSA_METHODVgengine_stqENGINE} crypto_ex_data_st sk # dummy#CRYPTO_EX_DATABN_MONT_CTXbn_blinding_stBN_BLINDING& % DSA_SIG_st[ r# s#4[{*/`/& [//T99!Z/&T+p/_/u/7  4/ dsa_method0 name # dsa_do_sign{# dsa_sign_setup# dsa_do_verify# dsa_mod_exp# bn_mod_expZ# initp# finish# flags# app_data#$ dsa_paramgen#( dsa_keygen#,DSA_METHOD dsa_stD pad# version# write_params# p# q# g# pub_key# priv_key# kinv# r#$ flags#( method_mont_p#, references#0 ex_data#4 meth#< engine#@#97  dh_stL5 pad# version# p# g# length# pub_key# priv_key# flags# method_mont_p# q#$ j#( seed7 #, seedlen#0 counter#4 references#8 ex_data#< meth!#D engine#H#5 9? 9I 9S  : D N X T]       dh_method$! name# generate_key# compute_key# bn_mod_exp # init # finish # flags# app_data# generate_params #  DH_METHOD!!ec_key_st!! ptr# rsai# dsa/# dh# ec!# evp_pkey_st{" type# save_type# references# pkey!# save_parameters# attributes #!EVP_PKEY{" X509_pubkey_st " algor<# public_key# pkey"#"X509_PUBKEY" x509_cinf_st(# version# serialNumber# signature<# issuer# validityP# subject# key"# issuerUID# subjectUID# extensions #$"X509_CINF#AUTHORITY_KEYID_st#X509_POLICY_CACHE_st#X509_POLICY_CACHE#& $  x509_cert_aux_st$ trust # reject # alias# keyid# other #$X509_CERT_AUX$ x509_st\% cert_info## sig_alg<# signature# valid# references# name# ex_data# ex_pathlen# ex_pcpathlen#$ ex_flags#( ex_kusage#, ex_xkusage#0 ex_nscert#4 skid#8 akid##< policy_cache $#@ sha1_hash$#D aux$#X$X509%(%%%&%&$&B&"&%&'&b&%&&G&x&%g& ASN1_ENCODING_st & enc7 # len# modified#}&ASN1_ENCODING X509_crl_info_st(p' version# sig_alg<# issuer# lastUpdate# nextUpdate# revoked # extensions # enc&#&X509_CRL_INFOp' X509_crl_st' crl'# sig_alg<# signature# references# ''(%'&'(%'(>(%'&#(T(%C(j(%Y(X509_POLICY_TREE_sto(X509_POLICY_TREE('X509_CRL( x509_store_ctx_stt * ctxn# current_method# cert%# untrusted # crls # param8 # other_ctx# verify%# verify_cb&# get_issuerB&#$ check_issuedb&#( check_revocationx&#, get_crl(#0 check_crl(#4 cert_crl>(#8 check_policyT(#< cleanupj(#@ valid#D last_untrusted#H chain #L tree(#P explicit_policy#T error_depth#X error#\ current_cert%#` current_issuer%#d current_crl(#h ex_data#l*%**%*+"&%&*.+%&&+D+%3+d+%'&I++%'i++%'&++%+= + lhash_node_st , data# next+# hash#+,,0, ,,,0,LHASH_COMP_FN_TYPEN,i,S,X,i,LHASH_HASH_FN_TYPE lhash_st`g. b,# comp5,# hashn,# num_nodes# num_alloc_nodes# p# pmax# up_load# down_load# num_items#$ num_expands#( num_expand_reallocs#, num_contracts#0 num_contract_reallocs#4 num_hash_calls#8 num_comp_calls#< num_insert#@ num_replace#D num_delete#H num_no_delete#L num_retrieve#P num_retrieve_miss#T num_hash_comps#X error#\,& }. & 0. /& . & . sess_cert_st.. ssl_cipher_st( / valid# name.# id# algorithms# algo_strength# algorithm2# strength_bits# alg_bits# mask# mask_strength#$.SSL_CIPHER // ssl_session_st 1 ssl_version# key_arg_length# key_argl.# master_key_length# master_key}.# session_id_length#D session_id.#H sid_ctx_length#h sid_ctx.#l not_resumable# sess_cert.# peer%# verify_result# references# timeout# time# compress_meth# cipher/# cipher_id# ciphers # ex_data# prev/# next/# tlsext_hostname# tlsext_tick7 # tlsext_ticklen% # tlsext_tick_lifetime_hint#1 /1ZA21/2/82 7  2, F3 sess_connect# sess_connect_renegotiate# sess_connect_good# sess_accept# sess_accept_renegotiate# sess_accept_good# sess_miss# sess_timeout# sess_cache_full# sess_hit#$ sess_cb_hit#(\3%F33a3pem_password_cb3!33 "&333 7 34 7 35EVP_MD44 env_md_ctx_sto4 digest4# engine# flags# md_data# 44o4t444o4444o47 4444o4445o44&  5>557 5& C5& M55H5R5W55  env_md_stH6 type# pkey_type# md_size# flags# init4# update4# final4# copy4# cleanup5# sign>5#$ verify5#( required_pkey_type5#, block_size#@ ctx_size#D464646ssl_st8 < version# type# method # rbioqM# wbioqM# bbioqM# rwstate# in_handshake# handshake_funcM# server#$ new_session#( quiet_shutdown#, shutdown#0 state#4 rstate#8 init_buf#< init_msg#@ init_num#D init_off#H packet7 #L packet_length#P s2=Q#T s3^[#X d12a#\ read_ahead#` msg_callbackla#d msg_callback_arg#h hit#l param8 #p cipher_list #t cipher_list_by_id #x enc_read_ctxj\#| read_hashva# expand\# enc_write_ctxj\# write_hasha# compress\# certA<# sid_ctx_length# sid_ctxa# session\# generate_session_id<# verify_mode# verify_callbacka# info_callbacka# error# error_code# ctxa# debug# verify_result# ex_data# client_CA # references# options# mode# max_cert_list# first_packet# client_version# tlsext_debug_cbb# tlsext_debug_arg# tlsext_hostname# servername_done# tlsext_status_type# tlsext_status_expected# tlsext_ocsp_ids # tlsext_ocsp_exts+b# tlsext_ocsp_resp7 # tlsext_ocsp_resplen# tlsext_ticket_expected# initial_ctxa#6<2<<<cert_st7<F<{<K< P<& < <%<6<<<7 <<GEN_SESSION_CB =  <& = & -= & >= x?& C=& M=w=>=H=R=W=& |==>=7 ===>===>====>===>>== evp_cipher_st4? nid# block_size# key_len# iv_len# flags# initw=# do_cipher=# cleanup=# ctx_size# set_asn1_parameters=#$ get_asn1_parameters=#( ctrl>#, app_data#0!>EVP_CIPHER?*?& E? & V? & g? & x?  evp_cipher_ctx_stv@ cipher/?# engine# encrypt# buf_len# oiv4?# ivE?# bufV?#0 num#P app_data#T key_len#X flags#\ cipher_data#` final_used#d block_mask#h finalg?#l4v@4EVP_MD_CTX& @  hmac_ctx_st A md{@# md_ctx@# i_ctx@# o_ctx@#$ key_length#4 key@#8@:A 7 7 >= AAUA ?Assl_ctx_st@ NF method # cipher_list # cipher_list_by_id # cert_store+# sessionsg.# session_cache_size# session_cache_head/# session_cache_tail/# session_cache_mode# session_timeout#$ new_session_cb1#( remove_session_cb2#, get_session_cb82#0 stats=2#4 references#` app_verify_callback\3#d app_verify_arg#h default_passwd_callback3#l default_passwd_callback_userdata#p client_cert_cb3#t app_gen_cookie_cb3#x app_verify_cookie_cb4#| ex_data# rsa_md56# md56# sha16# extra_certs # comp_methods # info_callback2<# client_CA # options# mode# max_cert_list# certA<# read_ahead# msg_callback{<# msg_callback_arg# verify_mode# sid_ctx_length# sid_ctx<# default_verify_callback<# generate_session_id<# param8 # quiet_shutdown# client_cert_engine# tlsext_servername_callback=# tlsext_servername_arg# tlsext_tick_key_name =# tlsext_tick_hmac_key=# tlsext_tick_aes_key-=# tlsext_ticket_key_cb:A# tlsext_status_cbUA# tlsext_status_arg#nF1NF& sF.}FFxFF.FFF7 F6FFFFF}FFF ssl_method_stt I version# ssl_new # ssl_clear # ssl_free # ssl_accept+ # ssl_connectA # ssl_reada # ssl_peek # ssl_write # ssl_shutdown #$ ssl_renegotiate #( ssl_renegotiate_check #, ssl_get_message! #0 ssl_read_bytesa #4 ssl_write_bytes #8 ssl_dispatch_alert #< ssl_ctrl #@ ssl_ctx_ctrlnF#D get_cipher_by_charF#H put_cipher_by_charF#L ssl_pendingF#P num_ciphersF#T get_cipherF#X get_ssl_methodI#\ get_timeoutI#` ssl3_encI#d ssl_versionI#h ssl_callback_ctrlI#l ssl_ctx_callback_ctrlJ#pFIIIIssl3_enc_methodIIII IIIJ1IIFSSL_METHOD *J bio_st@3K method)M# callbackbM# cb_arg# init# shutdown# flags# retry_reason# num# ptr# next_bio3K#$ prev_bio3K#( references#, num_read#0 num_write#4 ex_data#84J8K]K3K=KBK}K3KbKKK3KKKK3KKK3KKK3KKL3KLLHL3KL"LhL3KHLML bio_method_st(M type# name/J# bwrite]K# bread}K# bputsK# bgetsK# ctrlK# createK# destroyL# callback_ctrlhL#$mLBIO_METHODM.MbM3K3M8M4JBIOgMM vM& M& M & M & 0M /& M HN conn_id_length# cert_type# cert_length# csl# clear# enc# cclM# cipher_spec_length#8 session_id_length#< clen#@ rlen#Dssl2_state_st =Q three_byte_header# clear_text# escape# ssl2_rollback# wnum# wpend_tot# wpend_bufM# wpend_off# wpend_len# wpend_ret#$ rbuf_left#( rbuf_offs#, rbuf7 #0 wbuf7 #4 write_ptr7 #8 padding#< rlength#@ ract_data_length#D wlength#H wact_data_length#L ract_data7 #P wact_data7 #T mac_data7 #X read_key7 #\ write_key7 #` challenge_length#d challengeM#h conn_id_length# conn_idM# key_material_length# key_materialM# read_sequence# write_sequence# tmpM#N& SQ & @dQ ?& uQ & @Q ?& Q & Q  ssl3_buffer_stQ buf7 # len% # offset# left# QSSL3_BUFFERunsigned long long ssl3_record_st$R type# length# off# data7 # input7 # comp7 # epoch# seq_numR#RSSL3_RECORD& R & R & R& R & S & S & "S #DH"S!EC_KEY0SSS ?SS4]SgSqS(U comp_ctx_stS meth{S# compress_in# compress_out# expand_in# expand_out# ex_data#STST'TSTQTS7 7 ,T{TS7 7 VTTT comp_method_st (U type# namevS# initT# finish'T# compressQT# expand{T# ctrlT# callback_ctrlT#TCOMP_METHOD ssl_comp_st uU id# namelS# method{S#:USSL_COMP uUUoW cert_verify_mdR# finish_mdS# finish_md_len# peer_finish_mdS# peer_finish_md_len# message_size# message_type# new_cipher/# dh+S# ecdh=S# next_state# reuse_message# cert_req# ctype_num# ctypeBS# ca_names # use_rsa_tmp# key_block_length# key_block7 # new_sym_encXS# new_hashbS# new_compressionU# cert_request#& @W ?& @W ?ssl3_state_st ^[ flags# delay_buf_pop_ret# read_sequenceBQ# read_mac_secretSQ# write_sequencedQ#P write_mac_secretuQ#X server_randomQ# client_randomQ# need_empty_fragments# empty_fragment_done# rbufQ# wbufQ# rrecR# wrecR# alert_fragmentR# alert_fragment_len# handshake_fragmentR# handshake_fragment_len# wnum# wpend_tot# wpend_type# wpend_ret# wpend_bufR# finish_dgst1@# finish_dgst2@# change_cipher_spec# warn_alert# fatal_alert# alert_dispatch# send_alertR# renegotiate# total_renegotiations# num_renegotiations# in_read_app_data# tmpU# previous_client_finishedoW# previous_client_finished_len& # previous_server_finishedW# previous_server_finished_len& # send_connection_binding#W & v[! & [! dtls1_bitmap_st [ mapR# length# max_seq_numR# [DTLS1_BITMAP & [ _pqueue[[pqueue! record_pqueue_st A\ epoch# q\#\record_pqueue x?EVP_CIPHER_CTXU\4o\SCOMP_CTXy\/SSL_SESSION \ dtls1_retransmit_state ] enc_write_ctxj\# write_hasht\# compress\# session\# epoch# hm_header_st, ] type& # msg_len# seq# frag_off# frag_len# is_ccs# saved_retransmit_state\# dtls1_timeout_st ^ read_timeouts# write_timeouts# num_alerts#suseconds_t timeval"C^ tv_secV# tv_usec^#& T^ & e^  dtls1_state_st 2a send_cookie# cookiec[# rcvd_cookiev[# cookie_len# r_epoch# w_epoch# bitmap[# next_bitmap[# handshake_write_seq# next_handshake_write_seq# handshake_read_seq# last_write_sequence[# unprocessed_rcdsA\# processed_rcdsA\# buffered_messages\# sent_messages\# buffered_app_dataA\# listen# mtu# w_msg_hdr]# r_msg_hdr]# timeout]# next_timeout^# timeout_duration# alert_fragmentC^# alert_fragment_len# handshake_fragmentT^# handshake_fragment_len# retransmitting# change_cipher_spec_ok#e^7alamne_addr_resultUmmaddr&mmne_addr_firstUmm9maddrmne_addr_nextU nn9maddr retnne_addr_errorUnnaddrbuf % bufsiz errn"Lu"Lu"Lu ne__nm1% &mnnne_iaddr_print8Uppiabuf % bufsiz retp""" in6Mq"""" in|r "-"-"-"-"- ne__nm1% p pin_port_t%uint32_t&& uint8_t&4pSp %pdp p _S6_u8Bp# _S6_u32Sp# __S6_align%p# in6_addrp _S6_undp# sockaddr_in6 Mq sin6_family# sin6_portp# sin6_flowinfo%p# sin6_addrp# sin6_scope_id%p# __sin6_src_id%p#pq s_b14p# s_b24p# s_b34p# s_b44p#uint16_t&q s_w1q# s_w2q#q S_un_bRq# S_un_wq# S_addr%p# in_addrr S_unq#"r  sockaddr_in|r sin_family# sin_portp# sin_addrq# sin_zeror#"rne_iaddr_rawU7 s$sia7 buf "F"Qt"Qt in6Mq""t"t in|r'sne_iaddr_parse0Usssaddr/stype/ dsts2 af3s$ s%ne_iaddr_ipv4%ne_iaddr_ipv6sne_iaddr_type s ne_iaddr_reversek2UQtVtiajbufj % bufsizjQt&ne_addr_destroy|oUt9maddr{raw_connectUtfdtsa % salen retttimed_connectU|uybsockfd usa% salen ret|uconnect_socketUZvybsockfd _vaddrport""!h"!h in6p"h"h"s"s in"rZvne_sock_create IUybv sockyb &ne_sock_prebindUvybsockvaddr portvdo_bind'Uwfd%peer_family% waddr&port&""$"$ in6p7"$"$ in"rEwne_sock_connectb Uxybsock`xaddra porta fdc retc typed""G"G"o"w"w errnumxne_sock_peerUsyybsockport 'saun sa# sin"r# sin6p# saun y len ias sadne_iaddr_makeUs;zstype@zraw ias""j"j in4|r"l"l in6Mq& ;zne_iaddr_typeofUs~zzia~zne_iaddr_cmp Ub{g{i1q{i2 "("3d"3d in1|r in2|r"d"d"o"o in1Mq in2Mqb{l{&ne_iaddr_free#U{saddr"ne_sock_accept+1U |ybsock*listener* fd,ne_sock_fd6TUB|G|sock5ibB|&ne_sock_read_timeout;nU|ybsock:timeout: &ne_sock_connect_timeout@~U|ybsock?timeout? ne_sock_accept_ssl~)Ub}ybsock}}ctx} ret ssl0bb} ne_ssl_context_s#} ctxa# sess\# hostnameg}# failures# l}ne_ssl_context'}ne_sock_connect_ssl[U`ybsock}ctx userdata ret sslj"9"C"C"C"C"C ne__nm1% """""" ne__nm1% "l"l"l"`"`"` ne__nm1% 6SSL`ne__sock_sslsocktU0bybsockne_sock_sessid!Uybsock 7 buf  buflen  sess\*% ne_sock_cipherEuUybsockD"&p"1d"1d nameIne_sock_errorXUՀЀ߀sockWЀibڀ&ne_sock_set_error]UVybsock\[format\ ...\ params`^(Vva_list(ne_sock_closefUUybsocke retg)dummy_laddr߁*ne_vsnprintf% ځ% *ne_snprintf% Qځ% "(*ne_strerrorzz*ne_strdup*ne_calloc*ne_mallocۂۂ+ne_debug( *libintl_dgettext@,ne__ssl_exit-ne__ssl_init-RAND_status}*ERR_reason_error_string,ERR_clear_error-ERR_get_error*SSL_set_ex_data  6 *SSL_get_session\8*SSL_shutdownX 6X*SSL_get_error]*SSL_ctrl *SSL_write *SSL_read  *SSL_connect) *SSL_acceptG +SSL_free_ ZA*SSL_newj_*SSL_set_session /*SSL_set_fdʅ 6ʅ*SSL_pendingυ.*SSL_CIPHER_get_name.6.*SSL_get_current_cipher/b3-SSLeay*fcntl(+free )І __sigbits#І*__posix_sigwaitՆ !*signal!E*__posix_ttyname_rt*__posix_getlogin_r*close*strchr*memchr*strncpy>*memsetbb*memmoveg*memcpyɈ*memcmpĈΈ*getnameinfo>>*gai_strerrorCh+freeaddrinfo *getaddrinfoՉՉ߉*inet_ntopډ*inet_ptonF*socketjj*sendbbob*recvbNJbb*getpeername*connect*bindK$*accepto*ntohsqq*htonsqq*pollȋ E Srw     &1 < U fq |         ( 0 6 M \ h p           &> F b l      Q \ d l       2       DJ Vy     - <D P X     / p        ( ; A V x           - F c o     }      % 9 q |      + 3 D J S         % 8 A J|RY fu       9 L S u%{     ! 8 Lu {        - 3 FQ Z t}   /- CN _m v          ! 6 = F hs           ( 4 > D V _         $. @Uh q       G o w            # ? [ h w       , 6 ? I U l{         ( 3 < E do x          % , F O c l s |         $ 9 C      ` l~        * 8 B L8S fo        &1 P d p         ( < J P  DD%. : ; @ ' ID I: ;  $> &III: I  !I/  :  I8 . : ;@ ' ID 4I : ; .?  : ;@ ' ID .?  : ;@ ' D . : ;@ ' ID I: ; .?  : ;@ ' ID I ' ID I ' D <  :  :  : ' ID ' D  :  I !!I/" #D D $ : %( &.?  : ;@ ' D ' ()4I : ;  *.? < ' ID +.? < ' D ,.? < ' D -.? < ' ID ..? < ' ID 5ne_sock_initXne_sock_exitLne_sock_block~bne_sock_readbne_sock_peekine_sock_fullwriteine_sock_fullwritev|jne_sock_readlinekne_sock_fullreadlne_addr_resolveHmne_addr_resultmne_addr_firstmne_addr_next%nne_addr_errornne_iaddr_printrne_iaddr_raw)sne_iaddr_parsesne_iaddr_reverse[tne_addr_destroydvne_sock_createvne_sock_prebindwne_sock_connectxne_sock_peeryne_iaddr_makeEzne_iaddr_typeofzne_iaddr_cmpv{ne_iaddr_free{ne_sock_accept |ne_sock_fdL|ne_sock_read_timeout|ne_sock_connect_timeout|ne_sock_accept_ssl}ne_sock_connect_sslone__sock_sslsockne_sock_sessid ne_sock_cipherne_sock_errorne_sock_set_errornne_sock_closenstatlstatdfstatmknodseed_ssl_prngwraw_pollpcreadable_rawcread_rawdwrite_rawoewritev_rawufwritev_dummyfreadable_ossl?gerror_ossluhread_osslhwrite_ossltraw_connectutimed_connectuconnect_socketwdo_bind dev_tino_tmode_tnlink_t!uid_t-gid_tJoff_tVtime_tctimespectimestruc_tblksize_tblkcnt_tstatpollfdsocklen_tsa_family_tsockaddr addrinfone_inet_addr% size_t2 ne_iovec iofns stack_stu STACK X509_VERIFY_PARAM_st X509_VERIFY_PARAM]X509_STOREsasn1_string_stASN1_INTEGERasn1_object_stFASN1_OBJECT]ASN1_BOOLEANpASN1_STRINGASN1_ENUMERATEDASN1_BIT_STRINGASN1_OCTET_STRINGASN1_PRINTABLESTRINGASN1_T61STRINGASN1_IA5STRING.ASN1_GENERALSTRINGLASN1_BMPSTRINGfASN1_UNIVERSALSTRINGASN1_UTCTIMEASN1_GENERALIZEDTIMEASN1_VISIBLESTRINGASN1_UTF8STRINGASN1_VALUEasn1_type_stASN1_TYPEX509_algor_st+X509_ALGORAbuf_mem_st|BUF_MEMX509_name_stX509_NAMEASN1_TIME X509_val_stAX509_VAL9bignum_stBIGNUMbn_mont_ctx_stbn_gencb_stJrsa_meth_stVRSA_METHOD}ENGINEcrypto_ex_data_stCRYPTO_EX_DATABN_MONT_CTXBN_BLINDINGrsa_st4DSA_SIG_stdsa_methodDSA_METHODdsa_st dh_method!DH_METHOD#dh_st!!evp_pkey_st{"EVP_PKEY"X509_pubkey_st"X509_PUBKEY"x509_cinf_st#X509_CINF#X509_POLICY_CACHE$x509_cert_aux_st$X509_CERT_AUX$x509_st%X509}&ASN1_ENCODING_st&ASN1_ENCODING&X509_crl_info_stp'X509_CRL_INFO'X509_crl_st(X509_POLICY_TREE(X509_CRL(x509_store_ctx_st= x509_store_st+lhash_node_st5,LHASH_COMP_FN_TYPEn,LHASH_HASH_FN_TYPE,lhash_st.ssl_cipher_st/SSL_CIPHER/ssl_session_st=23pem_password_cb4env_md_ctx_st5env_md_st4EVP_MD<GEN_SESSION_CB!>evp_cipher_st?EVP_CIPHERx?evp_cipher_ctx_st@EVP_MD_CTX@hmac_ctx_stZAssl_ctx_stFssl_method_stJSSL_METHODmLbio_method_stMBIO_METHOD4Jbio_stgMBIOMNssl2_state_stQssl3_buffer_stQSSL3_BUFFERRssl3_record_stRSSL3_RECORD"SDH0SEC_KEYScomp_ctx_stTcomp_method_st(UCOMP_METHOD:Ussl_comp_stuUSSL_COMPUWssl3_state_st[dtls1_bitmap_st[DTLS1_BITMAP\pqueue\record_pqueue_stA\record_pqueueU\EVP_CIPHER_CTXy\COMP_CTX\SSL_SESSION\dtls1_retransmit_state]hm_header_st]dtls1_timeout_st^suseconds_t^timevale^dtls1_state_staSSL_CTXbX509_EXTENSIONS6ssl_st0bne_ssl_socketne_socket_sibne_socketbssize_t.fcaddr_t?:;=@chm:;38# A3 8 = :M Ag Bt y ~ : B C D E FJ I J I^ c h :~ ; 65kMv~NO*P@QfP"',:BV`;XX;h66[\#^X`fQa338/668M-creeeef6gh(e7fN6]g|hj38kk0ex3l8gl3nN3T8mM|o6p M"Mc6qM6VssQQv{|}~ +NSX:n;:;{(-2:H;w~|~C16;FWO 2lCQ  $ ( , 048<  j!w{&*nr 1-H,Lk0o`4db5bc7cc cc c3d7dsZBs t]tqt_utttuuuuuuuuuvv"v'v+v0v4v9v=vyvb}vvdvwwkwowtwxw}wwwwwwwiwexixnxrxwx{xxxxxxxxmxy\yyyyyyyzzzz[zq_zzrzzzzzzz{{{{#{'{,{0{{t{{u{|w!|g|xk||y|}z }}}d~h~m~q~v~z~~~~~~~~~~~~~~~~~~~ "'+049=59Z^cglpցeip~ +,2>FNV^hrz0 4 ,4<I5P\dlt|7 (08BJRZg nz  # *6>FNV^fs z  !(4>FNX`hpx(0:BJWF^jrzG    ' H. : D L T ^ f n v             K       & 3 L: F N X b j r z        R   S    T   * 7 U> J R Z d l y W            Y      ) Z0 < D L V e ]l x  _                + 2 > F N V ^ h p x      b         d  &2<DLT\dnvi "*4<DLTamht|\ $,6>FNV^huq|r t (5u<HPX`huw|xyz",4AHT\dnv~ *7>JW^jr| )0<DLY`lt|4 U(' (','@"l'W+(8 43?3KWhe u#1 5M &  8 @#  3 , C  W  l  ne_auth.o/ 1287466443 0 0 100644 54852 ` ELFX4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_auth.cfree_domainsclean_sessionget_cnonceget_credentialschallenge_errorbasic_challengerequest_basicrequest_negotiateget_gss_namemake_gss_errorcontinue_negotiatenegotiate_challengeverify_negotiate_responseparse_domainrequest_ntlmntlm_challengedigest_challengeinside_domainrequest_digesttokenizeverify_digest_responseinsert_challengeauth_challengeah_createah_pre_sendah_post_sendah_destroyfree_authauth_registerBbss.bssDdata.dataDrodata.rodatafreene_md5_destroy_ctxgss_delete_sec_contextne__ntlm_destroy_contextne_md5_create_ctxRAND_statusRAND_pseudo_bytesne_md5_process_bytestimegetpidne_md5_finish_asciine_strduplibintl_dgettextne_concatstrlenne_base64memsetGSS_C_NT_HOSTBASED_SERVICEgss_import_namene_debuggss_display_statusne_buffer_appendgss_release_bufferne_unbase64gss_init_sec_contextstrchrstrncmpne_set_errorne_buffer_destroyne_fill_server_urine_tokenne_uri_parsene_uri_resolvene_uri_cmpne_reallocne_uri_freene__ntlm_getRequestTokenne__ntlm_create_contextne__ntlm_authenticatestrcmp.XAKgoyLL3SvM0zA.ah_server_classne_snprintfne_md5_dup_ctxne_buffer_createne_buffer_concatne_buffer_zappendne_buffer_finishne_shavene_strcasecmperrnostrtoulne_callocne_vsnprintf.XAKgoyLL3SvM0zA.protocolsne_set_request_privatene_get_request_privatene_get_response_headerne_set_session_flaggss_release_namene_get_schemene_get_session_privatene_hook_create_requestne_hook_pre_sendne_hook_post_sendne_hook_destroy_requestne_hook_destroy_sessionne_set_session_privatene_fill_proxy_urine_mallocne_set_server_authne_set_proxy_auth.XAKgoyLL3SvM0zA.ah_proxy_classne_add_server_authne_add_proxy_authne_forget_auth.rel.text.rel.rodata.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesUUE@H<jPE@HEEU@EuEj<PEǀ<ÐUEtEjPE0tEj0PE4tEj4PE8tEj8PE,tEj,PEEU8EU0EU4EUEU,Ett!EjtPEǀtE@tjEPUEtEjPEP EtEjPEǀE(t!Ej(PEǀ(E@ ÐU0u6hP|PhP hPhP jjPjP PjP EPPjPjEPEEÐU]uE@ EE@EEU@BEpEXMUjEPBPEP,PCPFЃu E4hhЋE@@PRE P EE]uÐUE@u,h hPEPEjEP5Ej@PЋE,jPEPE PEPEPt ExUjjjPhDBPEjEPPEPЋEjEPhjP EEÐUEjjjhPPhHEEUEt(EjjjhPPhTE EEÐUjE Ph` EjEPEjjEPPEPEPEjEPE%thhjE@ÐUEEPEPjEPEPEPEEuPEtHE EE@EEU@BEtjhEP EPEPEP EtEPEPEcÐU0]ԉuСEEE EEE teEPE PEEu.hhPEP^E EEE Phj 5Et&hjEjPEP u]MUjjjEP$PEPjjj$P PPjEP8EEtjEPE%tlEhhPEPiUjjjEPEPBPUjjjEPEPBPEEtEuEPhj E,h<hЋEPREP EEtEjPEP EtIEPEPЋEEPhXj EPEPhtjE܉EE]ԋuÐUE@EE tEtEPEPEP0 E(hhPEPEEÐU ]jEPEj EPEEE+EPhEP t=] hhPCPjEPE.E@EjEPu*h jjEPEj,EPEEt UBj EPEEt UBEPh8j EPEPE P EEt+] h`hЋE@PRCP EtjEPjEPEt E EEEE]ÐUljE PEEEEjjEP UEPBP PEPEЍEPEPEEPEPEP EEEEPEPE@@EEU@UEP<PЋE<UE@H<UjjEPEPhjEEPhj jEPEjEPEt EԃEԃtE@tjEPjEPEjEPEԉEEÐU Ej(PEEt?EP jjhPEPhBPEjEPEEEEÐUhjE@E(t E jPEPE PEPEPt EE(t!Ej(PEǀ(UPBPЋE(UE@P(PEEtEEEEÐU4E@$u.hhPEPZEJE@$u9E@ u.hhPEPEE@t E@ u.h<hPEPEE@t9E,u+hdhPEPE{E@t]EUH;B$uUE@P,Pt.hhPEP&EE@jEPE@tPE@=uCE@PEPt+hhPEPEEj@PЋE,EU@$H ЋE4jPEPE PEPEPtE.QE0tEj0PE8tE@tEj8PEj@ PЋE0E@tEj@PЋE8E@t+hjEǀLEǀD EǀDE@-]EjPЋPRCP PjhD ]Ej,PЋPR,P PjhD jPЋPRP hjP EH PPPj P PjhD ]Ej0PЋPR0P PjhD ]Ej4PЋPR4P EPPPjPEPPh j 1EPPPEPPh,j jPhDjEEÐU,EhhE PtEPE Pt EEEU;@sbEuZEU<EjEPPEPEP EE@EEU;@sEtjjEPEPhljjEPEEEÐUl]u,E-E.E/E0E1E2E3E4EEE@t'E @PEPuEEDt4ELU@LEjjLPhj EPE] E j@PЋEPRCP EPjhD ] E j@PЋEPRCP EPEPjEPEPhj EUEPj PP EPjhD ]Ej0PЋEPR0P EPjhD EDEPjEP EPjhD ]Ej4PЋEPR4P EPjhD EttEjtPjEPЋEtjEPЋEPREP EPjhD EPj EP EPEPjEPEEHu E Eu]MU jh EPhEPhBPh0Ph,PhFPhEPhEPu EEhEPuEEjjjEPEPEPyEuhjLEtE܃tE؃u0E] hhPCPE 4PEPt1E] hhPCPE؃jEPEP EЋE@u t+E] h0hPCPKE U;Lt=E] hthЋE jjLPEPRCPEẼEȋEPjhD ]Ej@PЋEPRCP EPEPjEPjEPЋE tPREP E tPjhD E tPj EP U EPtPE jtPE ǀtEPEPu EEEE̋Ẽu| |jEPEP|PhjẼt"] hhPCPEtMEPhDj E j0PjEPЋE 0E ǀLjEPẺEExÐUjj,EE@EEEt*U E@R;P~EEE@(EEu֋EtEU@(B(EUP(EU@B(EUPEU PEEEÐUE|jj|PE PhEPxE@u)ЋEPUxPEPBP UjjjEPhdBPÐU4]EEEjEPEEEjjEPEPEPEPbEEE@EԋEԃEUЋȍ+ȋUЋȍ+ȋEԋ#PtIUЋȍ+ȋPEPuUЋȍ+ȍE)E@EЋUЋȍ+ȋjE؃tEԋ@EԋEԃ!E؃u3EhhhЋEPREP E؋@Phj EPEPEEUԉPE؋@tdE u[,PEPhPЋEPU؋Ejj@PBPhjEuEu jjEPEPhjhEPEhEPuEUPhEPuEUP _hEPuEUP;hEPu&hEPҋEPhEPuVhEPu E@$.h EPuE@$ E@$htEPu^,PEPhPEhEPu E@ EuEU@ B!h,EPu EUPjjEPEPEPEPl E@ EEEtyE@@Ph4j EPjjEPEPE PEPB Ѓu(E@@PhTj EU@B E@(EEuE@ ufhtjE܃t E܋@EhhE؋]E@@PhЋEPRCP Et%E@(EjEPEEEujEPE܃tjEPE@ u EEE؉EE]ÐUE EhEPEE@t.Et E@tEE@jjEE@@Phj EUPEUPEUPEPEPBPEP E@EEtE@ E@EEuÐU E EE@@PEPEE@ tsEtkE@ @Phj EP EPEPBЃEEt1EPjjEPhBPEPjEPÐU,]؉uԋE EE@@PEPEEEuEE@@PEPEE@@ PEPEE@u0E@=u#EuhEPEEEt!EjPEǀEtEE 4 Eu]EHEPEPBPAPCPF Ph jEtNE@ tCE@ @t5E@ @u$EP EPEPEPBЃ E^E@ taE@ @tSE@ @tBE@ t E@ u,Et$EP EPEPEPBЃ EUE@R;Pt E@=E@EE@Ph< j E EE@E܋E܋U@BEPEPEP u EjEP=E@@EE@ tE@ @t EEUEPjBP EEE]؋uÐUE EE@@PEPEEtjEPÐUEEE tE PEPE@EEt%E@EjEPEEEujEP jEPÐU$E= u EEFE=u;EEjEPh\ PtE t EEEu EEEPEPEEjhxEEUPEUPjEPh\ Pu'E t E EEUP E@EPhEP EPhEP EPhEP EPhEP EPhEP EPEPEP EE EܡEEEEEEE tEPEPEPEPUEP PjEPEEE@tE@EE@ujjЋEPE@UPE@UPE@U PE@@E@@ ÐUEPE Phd hhjEP+ÐUEPE Ph hhjEPÐUEPEPhd hE PjEPÐUEPEPh hE PjEPÐUhd EPEEtjEPch EPEEtjEP9d    t |     , H neonrejected %s challengemissing realm in Basic challenge:Basic Negotiate HTTP@gssapi: gss_import_name failed. : invalid Negotiate tokengssapi: Continuation token [%s] gssapi: Reset incomplete context. GSSAPI authentication error: gssapi: init_sec_context OK. (major=%d) GSSAPI failure (code %u)gssapi: Output token: [%s] gssapi: No output token. ignoring empty Negotiate continuationNegotiateNegotiate response verification failed: invalid response header tokengssapi: No token in Negotiate response! gssapi: Negotiate response token [%s] Negotiate response verification failure: %s/auth: Using domain %s from %s auth: Ignoring domain %s auth: NTLM challenge. unknown algorithm in Digest challengeincompatible algorithm in Digest challengemissing parameter in Digest challengeinitial Digest challenge was stalestale Digest challenge with new algorithm or realmcould not parse domain in Digest challengeauth: Got qop, using 2617-style. auth: Session H(A1) is [%s] auth: H(A1) is [%s] auth: Accepting digest challenge. *auth: '%s' is inside auth domain: %d. auth%08xauth: H(A2): %s Digest username="", realm="", nonce="", uri="", response="", algorithm="MD5MD5-sess", opaque=", cnonce="", nc=, qop=" auth: Got Auth-Info header: %s qopnextnoncerspauthcnoncencauth: 2069-style A-I header. Digest mutual authentication failure: missing parametersDigest mutual authentication failure: client nonce mismatchDigest mutual authentication failure: could not parse nonce countDigest mutual authentication failure: nonce count mismatch (%u not %u)auth: response-digest match: %s (expected [%s] vs actual [%s]) yesnoDigest mutual authentication failure: request-digest mismatchauth: Found nextnonce of [%s]. , ignored %s challengeauth: Got '%s' challenge. auth: %s opaque parameter '%s' auth: Ignored parameter: %s = %s "'realmnonceopaquestaletruealgorithmmd5md5-sessdomainauth: Trying %s challenge... auth: Accepted %s challenge. auth: No challenges accepted. could not parse challengeCONNECTah_create, for %s auth: Sending '%s' response. WWW-Authenticateah_post_send (#%d), code is %d (want %d), %s is %s (none)auth: Got challenge (code %d). httpshttp://webdav.org/neon/hooks/server-authhttp://webdav.org/neon/hooks/proxy-authAuthorizationAuthentication-InfoCould not authenticate to server: %sProxy-AuthorizationProxy-AuthenticateProxy-Authentication-InfoCould not authenticate to proxy server: %sBasicDigestNTLM@(#)types.h 1.86 07/09/20 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)strings.h 1.3 96/03/12 SMI@(#)unistd.h 1.76 06/03/10 SMI@(#)errno.h 1.17 03/01/03 SMI@(#)errno.h 1.20 00/01/12 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMI@(#)stdint.h 1.1 03/12/04 SMI@(#)stdint.h 1.1 03/12/04 SMI@(#)int_const.h 1.5 04/09/28 SMI@(#)inttypes.h 1.4 04/04/29 SMI@(#)inttypes.h 1.3 03/12/04 SMI@(#)int_fmtio.h 1.6 04/09/28 SMI@(#)stddef.h 1.18 04/09/28 SMI@(#)stddef_iso.h 1.2 03/03/06 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/214ne_auth.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_auth.o ne_auth.c -W0,-xp.XAKgoyLL3SvM0zA.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLL3SvM0zA.;backend;raw;cd;DBG_GEN 5.2.7charhpinthauth_classidu#req_hdru#resp_hdru#resp_info_hdru# status_codez#fail_codez#error_noauth#ah_server_classah_proxy_classfree_domainsmU sess ne_session_s ne_session  AUTH_ANY AUTH_CONNECT AUTH_NOTCONNECTunsignedhxsess#context#spec#protocol5# handlersq#usernameB#basic.#gssapi_token.#gssctxn#gssname#gssmech#ntlm_context2 #realm.#nonce.#cnonce.#opaque.#domains7 #ndomains#qopc #alg#nonce_count#h_a1q #stored_rdig #auth_protocol id#strengthz#name#challengeY# response#verify+#flagsz# voidh$hzX)z..3 Xne_auth_credsvauth_handlerprotomask#creds]#userdata#attemptz# nextq#h  auth_alg_md5 auth_alg_md5_sess auth_alg_unknownauth_algorithm8auth_challenge,protocol#handlerq#realm#nonce# opaque#domain#stale#got_qop#qop_auth# alg#$next3#( size_t /data.#used#length#/zYz349 ne_request_s ^ne_requestmhhauth_requestrequest~#uri#method#attemptz# .hz+ 0longhU: gss_ctx_id_structU igss_ctx_id_t gss_name_struct gss_name_t OM_uint32gss_OID_desc_structlength#elements# gss_OID ne_ntlm_context_s  ne_ntlm_context . c auth_qop_none auth_qop_auth< auth_qoph! : ne_md5_ctx auth_session clean_session =U sess majorget_cnonce66U. ret 7data 8hash 9Tt Wpid _h! : unsigned char  : :time_t :pid_tget_credentialsqUz sesso errmsgo zattempto 3challp .pwbufp/basic_challengeUz+ sess~ zattempt~ 3parms errmsgtmp.password+ h> :request_basic@U. sess req request_negotiateU. sess req get_gss_nameU[ [ server e hostname majorminortoken h` gss_buffer_desc_struct length#value# j gss_buffer_descmake_gss_errorU buf flag status ztypemajorminorcontext---msg  ne_bufferzcontinue_negotiateh Uz sess token errmsgmajorminorinput output bintokenretzflagzCh negotiate_challenge# Uzk sess  zattempt  3chall! errmsg"tokenp$hkverify_negotiate_response4 UzA req2 sess2 Fhdr3duphdr.5sep.6ptr.6retz7errmsg8hAparse_domain UzG sess Ldomain cp.p.baseinvalidz =  )  ) token.relabsolutehG scheme.#host.#userinfo.#port# path.#query.#fragment.# Qne_uri request_ntlmU.^ sess request token.   req.ntlm_challenge Uz sess zattempt 3parms errmsgstatusz(QQpasswordh.:digest_challengeUz9 sess zattempt 3parms errmsgpassword9M\\tmp ?-x?E?Ea1 Ltmp_md5_asciiLMhL:h!]: inside_domainlUz sessk req_urik insidezmnnuriokNNd$yhhrequest_digestU.( sess req a2 rdig a2_md5_ascii(rdig_md5_ascii9nc_valueJqop_value`retC h!9: h!J: h [:h[tokenizeUz/ 7 hdr 7 key 7 value .sep zischallpnt. BEFORE_EQ AFTER_EQ AFTER_EQ_QUOTEDstateverify_digest_response( Uzu req& sess& zvalue'hdr.)pnt.)key.)val.)qopc *nextnonce.+rspauth.+cnonce.+nc.+qop_value.+nonce_count,retz-s$$00ptr.Zz z z a2 na2_md5_asciiordig_md5_asciiohuh!: h!: :protocols:protocolsinsert_challenge!U3 list proto ret3chall3prev33challenge_error,"U$ errbuf )fmt ...err.ap?lenh$h?: va_list auth_challenge'Uz sess zattempt valuepnt.key.val.hdr.sephchall3challenges3errmsge"&"[&"[&"$"x$"x$protohdlqn$[&$[&$[&$[&$[& %[& %[&\%[&\%[&%[&%[&%8&%8&%,&%$&%$&tokBhhah_creates(Uz ~reqq sessionq methodq urirsess tis_connectzu)((b((b((areqzhdlq{hzhah_pre_send)U? ~r cookie requestsess req))())())value.ah_post_send,Uz! ~req cookie !statussess areqauth_hdr!auth_info_hdr!retz s!major_versionz#minor_versionz#codez#klassz# reason_phrase.# !ne_status s!!h!ah_destroy,U" ~req session sess areqfree_authc-U" cookiesess hdlqnextq,-,-,-majorauth_register0U# sess zisproxy protomask #ahc #id ]creds userdata ahs hdl#./////uriBC#h#q ne_set_server_auth]J0U"$ sess\ ]creds\ userdata\ ne_set_proxy_authcz0U$ sessb ]credsb userdatab ne_add_server_authj0U$ sessh protocolh ]credsi userdatai ne_add_proxy_authq0Ue% sesso protocolo ]credsp userdatap ne_forget_authw<1U% sessvas x !ne__ntlm_getRequestToken.%%h%!ne__ntlm_authenticatez&%%"ne__ntlm_destroy_context?&%h?&hI&!ne__ntlm_create_context2 &D&N&j !gss_release_buffer&&&!gss_release_name&&&!gss_import_name'&&&&!gss_display_status\'&z&&&i!gss_delete_sec_context'&\'& gss_cred_id_struct'gss_channel_bindings_struct Y(initiator_addrtype#initiator_address #acceptor_addrtype# acceptor_address #application_data #'&!gss_init_sec_context(&'\''&Y(&^(&&&h(h(!libintl_dgettext.)((^h )!ne_get_request_privateB)))hB)"ne_set_request_private|))G)#))"ne_hook_destroy_session)|))#)))"ne_hook_destroy_request *|))! *z1*)**"ne_hook_post_senda*|)1*#x*)/a*"ne_hook_pre_send*|)x*h*h*#*)***"ne_hook_create_request +|)*h +h+!ne_get_response_header+O+)+hO+"ne_set_error{+|)T+Q"ne_fill_proxy_uri+|){+"ne_fill_server_uri+|){+h+!ne_get_scheme++|)h+!ne_get_session_private1,|)+h1,"ne_set_session_privatek,|)6,$ne_session_flag_e4- NE_SESSFLAG_PERSIST NE_SESSFLAG_ICYPROTO NE_SESSFLAG_SSLv2 NE_SESSFLAG_RFC4918 NE_SESSFLAG_CONNAUTH NE_SESSFLAG_TLS_SNI NE_SESSFLAG_EXPECT100 NE_SESSFLAG_LAST"ne_set_session_flaga-|)k,z"ne_uri_free|-{+Q|-Q-!ne_uri_cmpz-----!ne_uri_resolve-----h-!ne_uri_parsez'.-{+h'.h1.!ne_strcasecmpza.,.6.hhf.!ne_vsnprintf.a.k.p.h.!ne_snprintf.a..h.!ne_concat./."ne_buffer_destroy!//!ne_buffer_finish.E//hE/"ne_buffer_appendy//J/hy/"ne_buffer_zappend//~/"ne_buffer_concat//%ne_buffer_createh/!ne_unbase640// 0!ne_base64.C00hC0!ne_shave.n0.H0!ne_token.07 hh0!ne_strdup.00!ne_realloc0!ne_calloc0!ne_malloc1h1"ne_debug;1z1!ne_md5_finish_ascii.g1 ."ne_md5_destroy_ctx1 !ne_md5_dup_ctx 1 1"ne_md5_process_bytes11 %ne_md5_create_ctx %RAND_statusz!RAND_pseudo_bytesz=2z!__posix_ttyname_rzl2z.!__posix_getlogin_rz2.z%getpid h2!strchr.22zh2h2!strncmpz 322h 3!strlen-33h-3h73!strcmpz`323<3!memset3zh3unsigned long!strtoul3337 z"free3:3!__posix_ctime_r. 43.tm$ 4tm_secz#tm_minz#tm_hourz#tm_mdayz# tm_monz#tm_yearz#tm_wdayz#tm_ydayz#tm_isdstz#  44!__posix_asctime_r.44. &time 4Z  /var/tmp/neon-0.29.4/src/usr/include/sys/usr/local/include/gssapi/usr/include/isone_auth.cne_session.hne_auth.hne_string.htypes.hne_request.hgssapi.hne_ntlm.hne_uri.hstdarg_iso.hne_utils.htime_iso.h) J ^ k v      c q       $ 1; IT w       1 L    # 0> Z      ; FT |        &-N ^          & E T Z p ~     : W t       3 H W ] v          / Q _ l s          " * U k y        ( 1 E K p        ) = S a o v          ( Qw      * I X n        $^}      / ? e x     $ 1 @M\g      - ?U ` x      - H ` x     # N}k    5 DR e         (@ S        , E f y    0 > bp      $ 0 ; H S ] l            ) 8 D K P \ c n p_#      , C V y            * 4 J Pos{      $ 0: O e l     5 E Sz     P X z          !! .! 0!~?! G!O! [! h! t! }!! ! ! ! ! ! ! !  "*" 9" G" N" e"" " "" " *# F# H#|q#|#x# # # # ## # # $@$ a$ p$ x$ $ $ $$ $ $ $ $ %  % 6% \% r% % % % % % %& & $& ,& <& R& [&&&& & & & & 'y' ' +' '' ' ' '}'' ' ' (  ( )(b( q(( ( ( ( (( ( (( ( ) ()A) Z) b) ) )) ) ) ) ) * * :*N* U*c* w* ** + (+p+ +++ , (, 6, B,, , , , , , , , ,, - - )- 7-~E-S- a- v- - - - - - -- -- . . . (. I. p. z.. . . . . ./ P/ X/ l/ |/ / // / / // / / 0 0 0 #0 H0 S0 x0 0 0 0 0 0 1 1 ,1 :1  DD%$> &II  I8 4I : ;  . : ;@ ' D  I: ; < I:   (  ' ID II : I !I/ : I !I/  4I : ; . : ;@ ' ID D D  I!I .?  : ;@ ' D !.? < ' ID ".? < ' D #' D $ : %.? < ' ID &.? < ' ID {4#ne_set_server_auth"$ne_set_proxy_auth$ne_add_server_auth$ne_add_proxy_authe%ne_forget_auth24Zfree_domains clean_session get_cnonce get_credentials basic_challenge> request_basic request_negotiate get_gss_name make_gss_errorcontinue_negotiatenegotiate_challengeuverify_negotiate_responseKparse_domainrequest_ntlm^ntlm_challenge.digest_challenge]inside_domain)request_digestetokenize/verify_digest_responseinsert_challengechallenge_errorMauth_challengeah_createah_pre_send? ah_post_send!ah_destroy"free_auth"auth_register 4auth_classne_session]ne_auth_credsvauth_handlerauth_algorithm8auth_challengesize_tmne_requestauth_requestauth_protocolngss_ctx_id_tgss_name_tOM_uint32gss_OID_desc_structgss_OID ne_ntlm_context< c auth_qop auth_session time_t pid_tj gss_buffer_desc_struct gss_buffer_descne_bufferQne_uri?va_list!s!ne_status'gss_channel_bindings_structk,ne_session_flag_e 4tmQ4ah_server_class=ah_proxy_classprotocolsprotocolsmp@@!0@M0= L_p es   u3 0"$(.(:)G,=R,\p-jktu     ',3GQbls},>QZgv"3DVgp~8(6Mdu 0*P0*/0)B0)T0\"0W000000~1203J4U5k6778797:1';&&<& &<H;&=>?0@ &,&1=^&j&o=&=>AB0&CDD&EEF$$$$G'&,&1<_&fC&C2H0&!&&<&C&&<2 ?% &, C< FI &P C & & < ; I &# J3 &8 &= <J KX 0z > & C 0 I I & C. &3 &8 <N Kd Lr 0 ; @ M N O* &> P` Q R & C & C S" Sh 0} S T & & = 0&!C3UV+&0&5<o&t&y<&&<&&<RW_&d&i<X&&<;00;;&C]4t>7&7>7&7>7&@N:V4q7&7>7&7>7:&17&>CY:j&qC1&C&WO*>;Jx&CS$$$$$$$$$&t&Y4>7&7>7:1&C!497G&L7c>y7&77&7>7&7%13ZL>_7m&r77:1[&&&&&& && &)\F&R&[\x&&&&\&]^&I{3;H&OCz&_&`&`&`&`&`5&>`|&C&&<KW&&<K2aEb\ap&u&z<K&&<K4&7>.7>:L1Z>s7&77:1` && &B &I C\ &a &f <s K & C 0 ; 0 c!d!["E"&#"\U";"e"e#e#`?#ed#e#&#&#<#&#C#$N+$&1$_S$&Z$C$&$C$&$_$&$`$&$`$&%`!%&*%`7%&@%`]%&f%`s%&|%`%&%`%&%`%N%&%_&&&`=&&F&`&&&C&&&C'&$'CA'&F'&K'<c'&h'<{'K'0'0'L (&(Wg(c|(&(C(f )g3)&:)Cq)&~)\)0)g)h*h;*&D*hp*0*&*&*C+&+C},i,g,0-j0-0Z-0-k-&-W-l .c/.k7.&=.W..m..n..o..p..q.r/$!/$)/$1/$9/$A/$I/$a/su/M/S/t,0&10X\0&a0w0&0X0&0w0&0l1&1l&&&&(&@&DH \&`dhx&| &&&&&&*d+9XVwlp      b f k o t x }     !   Q  U       fjosx| ]a,059>BrvDHpt=AswKO eeaeVZ_chlquz~  %).27;@DIMRV37<@EI     ! Q U !!""t"x"}""""""n#r#w#{####u#:$v>$$x$ %y%z%z~%*2:BOVbjrz$.8@JR\dly $1 8DQ Xdlt  % ,8@HRZbjrz &.6>FP]dpz (08@HPZbjw~"*2:DLT\ip| &3:FNV^fnv~    " , 4 < F N V ^ h r |                     ( 0 = D P Z b l t |                   & . 8 B J R Z b l t |                   & . 6 > F P X ` h p x                      * 4 < D L V ` m t                  $.8@HPX`hpz &08@JRZbjt|$,4<DLVcjv~ $,6>FNV^fpx "-8BJRZbjt~ (08BJRaht| $,6>FPXblt| $.8@MT`hpx (08@HRZbjt|uvx y)z0<DLT))))4  <1\9\9\9"X: +D'4 L? L4K^W[eEuĚ6 U`0c 0m @y   (  8  @  H P ne_redirect.o/ 1287466443 0 0 100644 9644 ` ELF8"4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.symtabne_redirect.ccreatepost_sendfree_redirectBbss.bssDdata.dataDrodata.rodatafreene_strdupne_get_response_headerstrstrne_buffer_createne_buffer_zappendstrrchrne_buffer_alteredne_uri_freene_uri_parselibintl_dgettextne_set_errorne_fill_server_urine_buffer_destroyne_redirect_registerne_callocne_hook_create_requestne_hook_post_sendne_hook_destroy_sessionne_set_session_privatene_redirect_locationne_get_session_private.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenamesUE EE@tEj@PjEPЋEPU]E EhEPEEE@=-t'E@=.tE@=/t E@=3uEuETh EPE@/tuEE@PEPEj/@PEEt%E@tUBjEPEPEPE@EEjPEPEPu E@u5E@]hhPC$PE2E@E E@ uUEPB$PEtjEPEEE]ÐUEEEjPE@tEj@PjEPÐUjj(EEUP$EPhEP EPhEP EPhEP EPhDEP ÐUhDEPEEtE@t EE EELocation://neonCould not parse redirect destination URLhttp://www.webdav.org/neon/hooks/http-redirect@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21 ne_redirect.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_redirect.o ne_redirect.c -W0,-xp.XAKgoyLL3SvME4A.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLL3SvME4A.;backend;raw;cd;DBG_GEN 5.2.7create2@Ureq1session1 !method1+uri1red.3ne_request_sne_requestvoidchar  &intunsigned  scheme0# host0# userinfo0# port<# path0# query0# fragment0#Hne_urine_session_sne_session redirect(. requri0# valid5# uri# sess#$ post_send<U5 req;private; status;red.=location>path?ret5@OOOpnt0G o major_version5# minor_version5# code5# klass5# reason_phrase0# ne_status o <size_t  data0# used# length#ne_bufferfree_redirectoYU-cookienred.pne_redirect_registerxUzsesswred.yne_redirect_location)Usessred.   libintl_dgettext0$ne_hook_destroy_sessionZ$ _5Zdine_hook_post_send  Zne_hook_create_request  #ne_get_response_header(\Zne_buffer_destroy\ne_buffer_altered\ ne_buffer_zappend\ne_buffer_create ne_strdup0ne_calloc1< 1ne_set_error]6Hne_fill_server_uri] ne_get_session_private ne_set_session_privatene_uri_free ]  ne_uri_parse5F  ] F P strstr0y K U y strrchr0 ~ 5long  __posix_ctime_r0  0tm$v tm_sec5# tm_min5# tm_hour5# tm_mday5# tm_mon5# tm_year5# tm_wday5# tm_yday5# tm_isdst5# v __posix_asctime_r0 { 0free /var/tmp/neon-0.29.4/src/usr/include/isone_redirect.cne_request.hne_uri.hne_session.hne_utils.hne_string.hstdlib_iso.htime_iso.h2 ( > I<O c j       ( 6 F O`         - 8 I W fu ~         $  DD%. : ; @ ' D I: ;  4I : ;  < I: I$> &I  :  I8   . : ; @ ' ID  .?  : ; @ ' D .?  : ; @ ' ID .? < ' ID I' D .? < ' D ' ID .? < ' ID  : .? < ' D @ -ne_redirect_registerzne_redirect_location9 tcreate3post_sendfree_redirect ne_requestHne_urine_sessionredirect one_statussize_tne_buffer tm@@I      "):LTfr`t "9IN!/P Y /?Yl   !"&BPk$%&' ( *pAEG#K)"*4<DLT\dlv # ,4<DLTa)ht|4 )999"<s+4] ?] KWxe'Duk=0e o   x   "  ("  0" ne_compress.o/ 1287466443 0 0 100644 17204 ` ELF?4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.symtabne_compress.cparse_headerprocess_footerset_zlib_errordo_inflategz_readergz_pre_sendgz_acceptorBbss.bssDdata.dataDrodata.rodatane_debugne_set_errormemcpylibintl_dgettextinflatecrc32ne_get_response_headerne_strcasecmpinflateInit2_memchrinflateEndne_decompress_readerne_callocne_add_request_headerne_add_response_body_readerne_get_sessionne_hook_pre_sendne_decompress_destroyne_unhook_pre_sendfree.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenamesU]EP EQ ER ES PRQShjEP u EQ =uER t!Eh(@PEEW EV EU ыET ڋEX EY jPRPhDjES uEǀp EPES tEhd@PE#hjEǀp EE]ÐU ]EUh v&UEPhBP EEUh EPE P` P Eh UEh Eh Ec Eb Ea ыE` ƒEEU;l u!Eǀp hjCEjjl PEPhjEh8@PE EE]ÐU]E t-UEjj PE Ph`BPJhEOxECE7E+EEEw$]hhjEPEPE PRCP]H<0$U]EU EU  Eǀ Eǀ EU Eǀ Ej PEUEj P PEPhjMUE PBPl P ЋEl E vB]MUE PBPL PD Ѓ EEtEEEuE EuNE Ph$j Eǀp UE P PEPG EBEt0hThЋEPREPb E EE]ÐUEEEfEhl@PEEthEPuQMUjE PL PD Ѓ Ef&Ep }tt␐tِEh@PEMUEPE PL PD Ѓ EEv Eh@PEEhl@PEEhEPu{hjEjjj8hj PEEt3hhЋEPREP EEǀ@ 9Eǀp MUEPE PL PD Ѓ EEǀp EU\ vE\ ؃ E EEEU\ EPE PP P E\ UE\ E\ t EDE EE E+EELEu EPE EvEPE PEPC EjEPiw$u EPjE P EEu EE+E Ph$j E@+E U+ЉUE@E Eǀp Eu EVEPE PEP E;EPE PEP7 EEp w$ EEd@X\ 8 UE EE@;Eu}hLjEǀp E@ tEj PEǀ@ Eǀh Eǀ\ jjj ЋEl ÐUEEMUEPE PL PH Ѓ EEÐUjht EhhhEP jjEPhhEPEUD EUL jEPЋEPEUPEU H jEPЋEPhR EEEÐUE@ tEj PUEPhBP jEPID1: %d ID2: %d, cmeth %d, flags %d Compressed stream invalidmtime: %d, xflags: %d, os: %d Compressed stream not supportedcompress: Good stream. Too many bytes (%u) in gzip footercompress: End of response; checksum match. compress: End of response; checksum mismatch: given %lu vs computed %lu Checksum invalid for compressed stream%s: %sstream errordata corruptout of memorybuffer errorlibrary version mismatchunknown errorneon%s: %s (code %d)compress: inflate %d, %ld bytes out, %d remaining compress: end of data stream, %d bytes remain. Could not inflate dataContent-EncodinggzipCompressed response was truncatedUnexpected content received after compressed streamcompress: got gzipped stream. 1.2.5Could not initialize zlibcompresss: skipped %u header bytes. compress: Initialization. Accept-Encoding@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMI@(#)unistd.h 1.76 06/03/10 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21ne_compress.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_compress.o ne_compress.c -W0,-xp.XAKgoyLL3SvMU_A.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLL3SvMU_A.;backend;raw;cd;DBG_GEN 5.2.7parse_headerlwUctxkintne_request_sne_requestne_session_sne_sessioncharlong  unsigned charBytef-unsigned>uIntunsigned longUuLong internal_state dummy#wvoid   > >alloc_func  free_funcvoidpf z_stream_s8 next_in9# avail_inJ# total_inf# next_out9# avail_outJ# total_outf# msgr# state# zalloc# zfree#$ opaque#( data_type#, adlerf#0 reservedf#4z_stream 8   >8ne_block_reader major_version# minor_version# code# klass# reason_phraser#X   S ne_accept_response  >size_t/stateNE_Z_BEFORE_DATANE_Z_PASSTHROUGHNE_Z_IN_HEADERNE_Z_POST_HEADERNE_Z_INFLATINGNE_Z_AFTER_DATANE_Z_FINISHEDne_decompress_st  request# session# outbuf # zstr#@ zstrinit#@ reader=#@ acceptor#@ userdata#@ header#@ hdrcount#@ footer#@ footcount#@ checksumf#@ state/#@ne_decompressprocess_footerUtctxybuf len  crcftset_zlib_errorUctxmsg codeerr do_inflateUctxbuf lenretrretgz_readeru U ud buf lenctxzbuf counthdr Ti \T \T eeret   gz_pre_sendz6 U6 ryudy w reqyctx{ g datar# used# length#6 ne_buffer g gz_acceptort U userdatareq  stctxXne_status  ne_decompress_reader< U reqacpt =rdruserdatactxne_decompress_destroy U ctx inflateInit2_   crc32f/ f  >inflateEndM inflatem __posix_ttyname_r  r >__posix_getlogin_r r   libintl_dgettextr 6 % S   ne_unhook_pre_sendV  %  ne_hook_pre_send  %  ne_get_session   ne_add_request_header S   ne_get_response_header 2 S ne_add_response_body_readerl S  8 l ne_set_error  q!ne_strcasecmp  ne_calloc > ne_debug  !__posix_ctime_rrI  r tm$  tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# I__posix_asctime_rr  r free* *memchrX /  >X"memcpy  ] >u /var/tmp/neon-0.29.4/src/usr/local/include/usr/include/isone_compress.cne_request.hne_session.hzlib.hzconf.hne_utils.hstring_iso.hne_compress.hne_string.htime_iso.h D s       / C L[ h o       M [ h |     $ 0 < H T `zr       -V        D L q |       s4H T\      % J X hu        ,5 > @ H T X d l  u        8 T i p         4 F L o          1 7 C d |   DD%. : ; @ ' ID I: ;  $> < I: II  !I/  :  I8 ' ID  I' D &I : I !I/  (   4I : ;  . : ; @ ' D 4I : ; . : ;@ ' D I: ; . : ;@ ' ID .?  : ;@ ' ID .?  : ;@ ' D .? < ' ID  .? < ' D !".? < ' ID A ne_decompress_reader ne_decompress_destroytparse_headerprocess_footer~set_zlib_errordo_inflategz_reader gz_pre_send| gz_acceptor3ne_requestne_session-BytefJuIntfuLongwinternal_statealloc_funcfree_funcvoidpfz_stream_sz_stream=ne_block_readerXne_accept_responsesize_t/statene_decompress_sne_decompress6 g ne_buffer ne_statusItmwK @ 4,-./ 0 1 2 3 45>KRckq '@ L=P6=w3<MTip&2>JVnv{#HOrMRW 8A !&+0"e u y }           #"  %   &   ' ( ($ * )] #l u + ,p%).27;@DIMRV!%sw|h l q u z ~            $  * !+3;CKS]emz#-5=EMU]gq~ !)19FMYcks{ %-7?IS[cks{ #+5?JUbiu} $'/7?L*S_go4  "x+4?KU(yW.e0Eu 1172U 5 _ 8 o :  ?  ?  ?ne_i18n.o/ 1287466443 0 0 100644 3540 ` ELF 4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.symtabne_i18n.cBbss.bssDdata.dataDrodata.rodatane_i18n_initlibintl_bindtextdomainlibintl_bind_textdomain_codeset.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_typenamesUhhEtEPhneon${prefix}/share/locale@(#)types.h 1.86 07/09/20 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21Lne_i18n.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_i18n.o ne_i18n.c -W0,-xp.XAKgoyLL3SvM0DB.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLL3SvM0DB.;backend;raw;cd;DBG_GEN 5.2.7ne_i18n_init0Uencodingcharlibintl_bind_textdomain_codeset libintl_bindtextdomainDlongDL__posix_ctime_r~Qint tm$ tm_sec~# tm_min~# tm_hour~# tm_mday~# tm_mon~# tm_year~# tm_wday~# tm_yday~# tm_isdst~#  __posix_asctime_r#U /var/tmp/neon-0.29.4/src/usr/include/isone_i18n.ctime_iso.h% . DD%.?  : ; @ ' D I: ;  $> &II.? < ' ID I  :  I8 .? < ' ID Phne_i18n_initPtm     0  " ' dz~bit~  4^ 0"+A40?0PKWe#u@  0 ( X  % x ( 5  I   ne_pkcs11.o/ 1287466443 0 0 100644 4580 ` ELF4(.strtab.text.bss.data.rodata.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.symtabne_pkcs11.cBbss.bssDdata.dataDrodata.rodatane_ssl_pkcs11_provider_initne_ssl_pkcs11_nss_provider_initne_ssl_pkcs11_provider_destroyne_ssl_pkcs11_provider_pinne_ssl_set_pkcs11_provider.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_typenamesUEEÐUEEÐUÐUÐU@(#)types.h 1.86 07/09/20 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21ne_pkcs11.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_pkcs11.o ne_pkcs11.c -W0,-xp.XAKgoyLL3SvMEJB.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLL3SvMEJB.;backend;raw;cd;DBG_GEN 5.2.7ne_ssl_pkcs11_provider_initZUproviderXnameY intne_ssl_pkcs11_provider_scharne_ssl_pkcs11_nss_provider_initc2Uprovider^name_ directory_cert_prefix`key_prefixasecmod_dbbne_ssl_pkcs11_provider_destroygEU9Vproviderg ne_ssl_pkcs11_provider9ne_ssl_pkcs11_provider_pinkUUVprovideri$fnj userdatakvoidunsigned        ne_ssl_pkcs11_pin_fnne_ssl_set_pkcs11_providerneUsessmVprovidern ne_session_s ne_sessionlong __posix_ctime_r   tm$tm_sec#tm_min#tm_hour#tm_mday# tm_mon#tm_year#tm_wday#tm_yday#tm_isdst# __posix_asctime_r  v /var/tmp/neon-0.29.4/src/usr/include/isone_pkcs11.cne_pkcs11.hne_session.htime_iso.h &- CSc DD%.?  : ;@ ' ID I: ; $> < I&I.?  : ;@ ' D  I: ' ID  I .? < ' ID   :  I8 .? < ' ID nne_ssl_pkcs11_provider_initne_ssl_pkcs11_nss_provider_initne_ssl_pkcs11_provider_destroy[ne_ssl_pkcs11_provider_pin?ne_ssl_set_pkcs11_providerX9ne_ssl_pkcs11_provider$ne_ssl_pkcs11_pin_fnne_sessiontm     @P5` j -1|`d  4 e555"5+565B N \ l \} PP @` ` ` p     ne_socks.o/ 1287466443 0 0 100644 16004 ` ELF;4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.symtabne_socks.cv5failfailsofailv5_proxyv4failv4_proxyBbss.bssDdata.dataDrodata.rodatalibintl_dgettextne_sock_set_errorne_sock_errorne_strdupfreene_sock_fullwritene_sock_fullreadstrlenmemcpyne_iaddr_typeofne_iaddr_rawne_sock_readne_sock_proxy.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenamesUhhEhhEh,hEh@hEhThEyh`hEahxhEIhhjjE PEPREPE6E Hw$5jjEPEPhEPEE (D`|UE PhEP EEÐUjEPjPEjjEPEPhEPjEPEEÐU(B@B@B@B@+RPEP t.hhPPEP E3jPEP t.hhPPEPo Et(hhPEP EgB@jEP%B@PEPP jEP%B@PEPP +RPEP t0h,hPPEP EQjPEP t.hLhPPEP Et(hhhPEP(Et(hhPEPE~hhPEPEhhhPEPE@} =t뮐B@B@B@E jE Pu(DžB@&DžB@PE PЋPRP jEP%B@B@PEPP E%B@E%B@+RPEP t.hhPPEP{ EjPEP t.h hPPEP' Et(h,hPEPEdt0hPhPSEP( E(DžDžjPEP t.hdhPPEP; E9hhPEPEwHw$ PPEP t.hhPPEP E EEp UhhE{hhEch(hEKhPhjjE PEPREPE8E [w$ jjEPEPhEPEE< T l U$B@B@E%B@E%B@E ujhpP 'PEPjPP EtEjEP%PEPP B@E u`jEP%PEPP B@+RPEP t1hhPPEPz EjPEP t.hxhPPEP# EBZt,hPhPPEP EEEÐUE u&E PEPEPEPEPEPE)EPEPEPEPE PEPEEneonfailureconnection not permittednetwork unreachablehost unreachableTTL expiredcommand not supportedaddress type not supported%s: unrecognized error (%u)%s: %s%sCould not send message to proxyCould not read initial response from proxyInvalid version in proxy responseCould not send login messageCould not read login replyInvalid version in login replyAuthentication failedNo acceptable authentication methodUnexpected authentication method chosenCould not send connect requestCould not read connect replyInvalid version in connect replyCould not connectCould not read FQDN length in connect replyUnknown address type in connect replyCould not read address in connect replyrequest rejected or failedcould not establish connection to identdrejected due to identd user mismatch%s: unrecognized failure (%u)Could not read response from proxy@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21- ne_socks.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_socks.o ne_socks.c -W0,-xp.XAKgoyLL3SvMUOB.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLL3SvMUOB.;backend;raw;cd;DBG_GEN 5.2.7v5fail<5Usock;code; context;err=intne_socket_sne_socketunsignedchar   fail`U]sock_berror_ ]sofailgUsockfretf contextferrhssize_t v5_proxyr Usocko#addro -hostnamepportp7usernameqApasswordqmsg_sprslentretunv U a arawwne_inet_addr_sne_inet_addr  ( 2 <unsigned charlong Fr WF FWv4fail Usockcode contexterr  v4_proxy  USsockSvers addrhostnameportusernamemsg!raw!pr!n"ret# = = = len9 X ` ` len@ne_sock_sversionNE_SOCK_SOCKSV4NE_SOCK_SOCKSV4ANE_SOCK_SOCKSV5    F W FWne_sock_proxy[!UsockWSversW addrXhostnameXportYusernameZpasswordZ     size_tstrlenvoid memcpy #ne_sock_set_errorT( T ^ne_sock_errorcYne_sock_fullread ne_sock_fullwritene_sock_read$  $ ne_iaddr_rawrS ) r S  ne_iaddr_ipv4ne_iaddr_ipv6] ne_iaddr_typene_iaddr_typeof  X  ne_strdup  free    libintl_dgettext4   W4 __posix_ctime_rf 9 tm$ tm_sec#tm_min#tm_hour#tm_mday# tm_mon#tm_year#tm_wday#tm_yday#tm_isdst# f  __posix_asctime_r 8 /var/tmp/neon-0.29.4/src/usr/include/sys/usr/include/isone_socks.cne_socket.htypes.hlimits.htime_iso.h> ! ( = D Y ` u |        h ) 0 f{        & A \ w     , 8 `h p |       - G Y       D P x |  ^&  : U at ~    8 T n      ; F t         ' 2 ` m p  p     6 < Q T i l     s    % @ [ |        + = X ` y      $ ? J x         DD%. : ; @ ' ID I: ;  4I : ;  $> < I: I &I  I  !I/ I !I/ . : ;@ ' ID I: ; 4I : ;  : ( .?  : ;@ ' ID .? < ' ID I.? < ' D  :  :  I8 .? < ' ID 1 ne_sock_proxyR1 kv5fail failgsofailv5_proxyv4failv4_proxyw1 ne_socketssize_t ne_inet_addrSne_sock_sversionsize_t] ne_iaddr_typef tm5`'Y&0       )7AFXipw a ).3EJOafk}"59=AEIMQkt 9>C @ t"'QV[}h!" g .GLQ #3 8 = q v {         " = B G U Z _ m r w              "  $  g      2 K P U    gvz)-rv!%*.37$ $,6@HU\hp} "*4<DLT\dlt| "*4<DNV`hrz (08@HPZdlt~ $,4<DNX`hpx $ (24 P!qqq"t+4?1 K$<W*+e,$u,V+-{-P / 4  58  :  ;  ; ne_ntlm.o/ 1287466443 0 0 100644 15932 ` ELF|:4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_ntlm.cne_input_ntlmsetup_des_keycalc_respmkhashne_output_ntlmBbss.bssDdata.dataDrodata.rodatane_unbase64memcpyfreeDES_set_odd_parityDES_set_keyDES_ecb_encryptstrlenne_malloctoupper.XBKgoyLL3SvMkVB.mkhash.magicmemsetMD4_InitMD4_UpdateMD4_Finalne_snprintfne_base64strchrne__ntlm_create_contextne_callocne_strdupne__ntlm_destroy_contextne__ntlm_authenticatene__ntlm_getRequestToken.rel.text.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesU E t^EEPE PEE@E0|UEjPBP EtjEP E@| EE@EEÐUE@EE@ЁE@ ЈUE@ЁE@ ЈUE@ЁE@ ЈUE@ЁE@ ЈUE@E@ ЈUE@E@ ЈUE@E%EjEPE PEPÐUEPEPjjjEPEPE PUEPBPUjjjEPBPE PUEPBP}UjjjEPBPE PÐUjEPEȋEȃ} EEȍEEjEPEЋEЃuEȃ~EEE;E}-EE@jPUÜBE@E̋E;E|ӋẼ}UU̸BE@E̋Ẽ|㍅DPEPxjjjDPEPhUЍDPBPDjjjDPEPhjjEP EPE PEP jEPEEE;E}1EE@M̋UЈJM̋UиDJE@E̋E;E|jhPEȍEPEPhP hPEPjjEP EPE PEP[ jEPÐUEEjEPEjEPEE@ t E@uE=E EEEE`%`EhhEp%pExxE䉅%E䉅E쉅%EuEMEjEPEPjjRQSVWPjjPPxPpPhP`PjjjjjjjjhhPxEE EE@tEj@PEPPЋEPEj\@ PuEj/@ Pt$E@ E+EE@ E@ jPMUjjPPBPAP8E@EEEEE쉅`%`hh%E%EE%EE䉅 % E䉅((0%088@%@HHP%PXX}E]EUEjjjjjjjjjjPRQSVWjjXPPPHP@P8P0Pjj(P PPPPPjjPPjjjjjjhP`PjjjjjjjjhHhPEE@EU=r E6UEPEPP EEEUPPP EEE=}%UjPP EEE=}%UjPP EEE%EEPPЋEPE@?E@tEj@PE@E@H$5 EEh UjjEE@jEPЋEP jE PЋEPEEEÐUE@ tEj@ PE@tEj@PE@tEj@PjEPÐUEu E^E uE@u E@E@$E PEPEEt EjEPEEÐUEt E@u E7Ej@PEEj@PE@EEEKGS!@#$%NTLMSSP%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%s%sNTLMSSP%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c@(#)types.h 1.86 07/09/20 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)ctype.h 1.35 04/09/28 SMI@(#)ctype_iso.h 1.3 04/09/28 SMI@(#)ctype_c99.h 1.2 04/09/28 SMI@(#)stddef.h 1.18 04/09/28 SMI@(#)stddef_iso.h 1.2 03/03/06 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21ne_ntlm.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_ntlm.o ne_ntlm.c -W0,-xp.XAKgoyLL3SvMkVB.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLL3SvMkVB.;backend;raw;cd;DBG_GEN 5.2.7ne_input_ntlmU@kctxuresponseToken hhbufferzsize@NTLM_NONENTLM_BADNTLM_FIRSTNTLM_FINENTLM_LASTntlmNTLMSTATE_NONENTLMSTATE_TYPE1NTLMSTATE_TYPE2NTLMSTATE_TYPE3NTLMSTATE_LASTJNTLMState unsigned char long   char  ne_ntlm_context_sUstate#nonce#user# passwd#requestToken#ne_ntlm_context U p  intsetup_des_keyUzkey_56ks key  DES_cblock unsigned long  Ecblock#deslong # V DES_kspksE#VDES_key_schedule pcalc_respEUzkeyszplaintext zresultskspmkhash,hUpassword%znonce& zlmresp'zntresp)lmbuffer-ntbuffer)/pwz1magic?2i5len6kspHDmd4Z )  :  :P  unsigned P@m MD4state_st\AP#BP#CP#DP# NlP#NhP#data\#numP#XmMD4_CTXne_output_ntlmv5 Ukctxudomainwhostxdomlenyhostlenzhostoff{domoff|size}ntlmbuf ~   h lmrespoffntrespoffuserofflmresp ntresp$ user: userlenBE    $  5  5 ne__ntlm_create_contextv Uk  userNameu passwordu ctxkw  ne__ntlm_destroy_context U kcontextne__ntlm_authenticate U kcontext responseToken & 8 8 U ` ` ntlmstatus@ ne__ntlm_getRequestToken U kcontextret mMD4_FinalE z voidE M MD4_Update  R PMD4_Init    VDES_set_key   DES_set_odd_parity  DES_ecb_encrypt/    toupperJ  J strchrs O  s Psize_tstrlen}  x E memset   PE memcpy    P  ne_snprintf} 4  }   4 zne_unbase64} g 9 >  g ne_base64 l P ne_strdup  ne_calloc  Pne_malloc  Pfree  __posix_ctime_r: tm$tm_sec#tm_min#tm_hour#tm_mday# tm_mon#tm_year#tm_wday#tm_yday#tm_isdst# : !__posix_asctime_r /var/tmp/neon-0.29.4/src/usr/local/include/openssl/usr/include/sys/usr/include/isone_ntlm.cne_ntlm.hdes.hmd4.htypes.htime_iso.h ( 2 : Rlw        3 V y        & C Yj          + I _ }    ~ ! 4 DXf       ,)E ` h        " . = I X       - 9 C _ h r           ~  V e o            & . 8 K U ` s {           DD%. : ; @ ' ID I: ;   4I : ;   ( I $> I  !I/ I   I8 I: &I. : ; @ ' D  :  : . : ;@ ' D I: ; 4I : ; . : ;@ ' ID D D I !I/.?  : ;@ ' ID .?  : ;@ ' D .? < ' ID I.? < ' D  !.? < ' ID ~? ne__ntlm_create_context ne__ntlm_destroy_context ne__ntlm_authenticate ne__ntlm_getRequestToken^hne_input_ntlmsetup_des_keycalc_respmkhashne_output_ntlm@ntlmJNTLMStatene_ntlm_context_sUne_ntlm_contextDES_cblockVDES_kspDES_key_schedulemMD4state_stMD4_CTX} size_t:tmmagicPp    ! " # $%&29>Q]mt~P V g+ zA ^Ka <` =!Bq!v"#$-%="_&>Q'r((  & & X   '  5 9 = [ *v + +     + dz~!] )a  , ! -% b f k o t x }       .  !.5AIQYaiqy #+3=EMW_gow %-5?GQ[emu",4<DNV^hpx) !,(4<DLT\dq-x.4  "+4?K%W+e-u .bn.-/L/Z <2d 3 t 5  \:  d:  l: t:ne_207.o/ 1287466444 0 0 100644 19068 ` ELFF4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.debug_varnames.symtabne_207.ccan_handlecdata_207start_elementend_elementstart_responsehandle_errorend_responseend_propstatBbss.bssDdata.dataDrodata.rodatane_207_set_response_handlersne_207_set_propstat_handlersne_207_get_current_responsene_207_get_current_propstatne_buffer_append.XAKgoyLM3SvM0bB.map207ne_xml_mapidne_buffer_clearne_shavefreene_strdupne_uri_parsene_uri_resolvene_uri_freene_parse_statuslinene_debuglibintl_dgettextne_xml_currentlinene_snprintfne_xml_set_errorne_207_createne_callocne_buffer_createne_uri_copyne_xml_push_handlerne_207_destroyne_buffer_destroyne_accept_207ne_uri_unparsesprintfne_buffer_concatne_simple_requestne_xml_createne_fill_server_urine_xml_parse_vne_add_response_body_readerne_request_dispatchne_get_statusne_xml_failedne_xml_get_errorne_set_errorne_xml_destroyne_request_destroy.rel.text.rel.rodata.rel.debug_info.rel.debug_line.rel.debug_pubnames.rel.debug_funcnames.rel.debug_typenames.rel.debug_varnamesUEU PEUPÐUEU PEUP ÐUE@ /%sDAV:multistatusresponseresponsedescriptionhrefpropstatpropstatus@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21ne_207.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_207.o ne_207.c -W0,-xp.XAKgoyLM3SvM0bB.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLM3SvM0bB.;backend;raw;cd;DBG_GEN 5.2.7charemintne_xml_idmap nspacer#namer#idw#~long map207G T  map207G ne_207_set_response_handlersUUn 4pR 6startS endTvoidneunsignedscheme{#host{#userinfo{#port# path{#query{#fragment{#vvne_207_start_responsemajor_versionw#minor_versionw#codew#klassw# reason_phrase{#;evvne_207_end_responsevvvne_207_start_propstat;&e0Vvv+5:ne_207_end_propstatVne_xml_parser_sune_xml_parserne_urisize_t data{#used#length#ne_buffer;ne_statusne_207_parser_s` start_response6#end_response#start_propstat!#end_propstatp# parser#userdatav#base#cdata#4in_responsew#8responsev#<propstatv#@status#Ddescription{#Xhref{#\ne_207_parser  ne_207_set_propstat_handlers]7U 4pZ !start[ pend\ne_207_get_current_responsecTUv 4pbne_207_get_current_propstathtUv 4pgcan_handlen Uw_ wparentm wchildm cdata_207zjUw vuserdatay wstatey bufy leny p4{estart_elementLUw| vuserdata wparent nspace name atts p4 statewe|eeend_elementUw vuserdata wstate nspace name p4 cdata UUU ref resolved\/n/n// buf e e e e ne_207_createcU4 parser base vuserdata p4 ne_207_destroyU 4pne_accept_207Uw vuserdata9 req C statusne_request_s ne_request( > start_response:Uv vuserdata uri ctx  context href{#buf#is_error# handle_errorU}  ctx status  descriptionFrrbuf  } e e2 1end_response0"U* vuserdata.vresponse. / status/9 description/ctx 1* e4 end_propstat8RU vuserdata6vpropstat6  status7 description7ctx 9 e ne_simple_request@j Uwsess?9 req? retwActx Bp2074CpDbaseEC ne_session_sne_session ee libintl_dgettext{ !ne_request_destroy   * ne_get_status/U% ne_request_dispatchw|;|wvewv!ne_add_response_body_reader ve!ne_set_error; "!ne_fill_server_urig ;!ne_uri_free; ne_uri_copy ne_uri_resolve ne_uri_unparse{!e! ne_uri_parsewP&;eeU ne_snprintfPZ"!ne_buffer_destroy!ne_buffer_cleare!ne_buffer_append!ne_buffer_concat#"#ne_buffer_createe= ne_shave{h{B~here| ne_xml_mapidwmwu!ne_xml_destroy ne_xml_currentlinewe ne_xml_parse_vw4ve4 ne_xml_get_error9beb!ne_xml_set_errorg ne_xml_failedweeewvwew)vw e.e8wbvw3=B!ne_xml_push_handler)bv#ne_xml_createe; ne_parse_statuslinewe!ne_debugw"e sprintfwC{"eC ne_strdup{jH ne_callocv __posix_ctime_r{{tm$ Rtm_secw#tm_minw#tm_hourw#tm_mdayw# tm_monw#tm_yearw#tm_wdayw#tm_ydayw#tm_isdstw# R __posix_asctime_r{W{$freev# /var/tmp/neon-0.29.4/src/usr/include/isone_207.cne_xml.hne_uri.hne_207.hne_utils.hne_string.hstdlib_iso.hne_request.hne_session.htime_iso.h  #, 5 FO fo  G ^ e v|       ' 0A G _e        / 9 G U \ n      /4 ?         K U _ {   F<    $ 7X ^ s       . 5 Fr |       6< P f~       # 6 T e q           - ; Q _ e  DD%$> &II :  I8 I!I 4I : ;  I  !I/ .?  : ; @ ' D  I: ;   : ' ID II: ' D <  .?  : ; @ ' ID . : ; @ ' ID  I !I/.?  : ;@ ' ID I: ; . : ;@ ' ID 4I : ; . : ;@ ' D D D .? < ' ID !.? < ' D "#.? < ' ID $.? < ' D ne_207_set_response_handlers9ne_207_set_propstat_handlersne_207_get_current_responsene_207_get_current_propstat ne_207_create ne_207_destroy ne_accept_207 ne_simple_requestcan_handle_cdata_207start_elementend_elementH start_response handle_error end_response> end_propstat-~ne_xml_idmapne_207_start_response;ne_207_end_responsene_207_start_propstatVne_207_end_propstatne_xml_parserne_urisize_tne_bufferne_statusne_207_parser_s ne_207_parser( ne_request contextne_sessiontm$map207map207ZpPJ@"0"()45DEFG H I J K LMNk @`T+:FZctspQ+3D` VdwW !:"lu#$%& '@(N($)*+,-.!(*$$t$$0102>CHQ3$5($$7899gow;<%/( 1    $  / ? =D 6M >[ ?x @ A B  C  C @ 4& D4 5J $X E $(04<@HLa  37[_)-mq- 1 6 : ? C H L Q U Z ^             ' /+  4  6 \ `   K O T X ] a   P  T  :  ")5BIUbiu #+8?KS[cks{ #+3;CKS[cks{/4!)66=IV]iqy  *:1=EMW_goy 4 j ::<|"+m45?5K,'W2e 5u5617(7` << E6E@EE@ uE@EE@ tE@ EEÐU]jhEjjEEUPEUPE@P E@@]hh\PCPjjЋEPE@uEhh@P Eh@PUEPBPEh@PEh@PEEE]ÐUjjEEU PEUPEUPEUP E@uE@UPEUPE@UPEUPÐUEEEPE PEP EEÐU]uE@ t!EPhj@ E@ EEu$EE hj@EPhj@ EUjjEPEPE PBPEEPhj@ EuwE@ uluEj@P؋Ej@PjPjPShhFPE@ EPh<j@ E@ EE]uÐUE@ EEÐUE@@EEt%E@EjEPEEEuۋE@EEU;Pt(E@EjEPEEEU;Pu؋Ej@PEj@PE@tEj@PjEPÐUUjjE PhThBPÐUEEEÐU]u}EUE UE j:PEEu5Eu-MU EPPuUE DEEtxEtpUEPBPuX}u] UE M+ QPGP EEt'EPEPuUE DE%EEUE EE]u}ÐUEE;E szUMȋAPEPuDUMȋAPEPuUMȋAEE@EE;E rEExmlnsxmlns:-.0123456789XML parse error at line %d: invalid namespace declarationneonXML parse error at line %d: invalid element nameXML parse error at line %d: undeclared namespace prefixXML: start-element (%d, {%s, %s}) => %d XML: char-data (%d) returns %d XML: end-element for %d failed with %d. XML: end-element (%d, {%s, %s}) XML: entity declaration [%s]. Failing. Unknown errorXML: Failed; ignoring %u bytes. XML: End of document. XML: Parsing %u bytes. XML: XML_Parse returned %d XML parse error at line %d: %sXML: Parse error: %s %s@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.11 04/09/28 SMI@(#)machtypes.h 1.2 04/09/28 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.11 03/09/26 SMI@(#)faultcode.h 1.16 09/07/02 SMI@(#)procset.h 1.25 04/07/16 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)unistd.h 1.43 06/03/10 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)strings.h 1.3 96/03/12 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)locale.h 1.20 03/12/04 SMI@(#)locale_iso.h 1.3 03/12/04 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21_ne_xml.c /var/tmp/neon-0.29.4/src /opt/sunstudio12.1/prod/bin/cc -DHAVE_CONFIG_H -I/usr/local/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/local/include -I/usr/local/include -I.. -g -c -o ne_xml.o ne_xml.c -W0,-xp.XAKgoyLM3SvMEhB.Xa;g;R=Sun C 5.10 SunOS_i386 Patch 142363-02 2009/09/21;G=.XAKgoyLM3SvMEhB.;backend;raw;cd;DBG_GEN 5.2.7decl_handler,Uuserdataversion encodingstandalonepcvoidcharXML_Char int ne_xml_char$5$I namespace  name?# uri?# nextD#      ne_xml_startelm_cb     ne_xml_endelm_cb6unsigned l   ; @Lne_xml_cdata_cbl handler startelm_cb# endelm_cb1# cdata_cb# userdata# next# elementp nspace:# name?# state# default_ns?# nspacesD# handler# parent#XML_ParserStructpXML_Parserlongne_xml_parser_sO root# current# top_handlers# failure# prune# parser# encoding# error#ne_xml_parserOne_xml_currentlineOUcpne_xml_doc_encodingdUpOdeclare_nspacesUcpelm attsnynsDexpand_qnameUcpelm qnamepfx -x5|5|e xxxxuri$$start_element. U^userdata,cname, ratts-pc/elm0hand1state2$^hmdestroy_element[UelmZthis_nsD\next_nsD\char_datanWUU userdatamZ datam lenmpcoelmp$U end_element}U userdata| name| pc~elm$ entity_declarationU userData entityName is_parameter_entity valuevalue_length base systemId  publicId$ notationName(parserc      resolve_nspacebU   elm prefix  pfxlens VEEns    @size_t I ne_xml_resolve_nspaceU  cparser prefix  lengthve  ne_xml_create Uc pcne_xml_push_handlers Ux cpstartelm_cb cdata_cb1endelm_cbuserdatahand ne_xml_parse_v U userdata block  lenpc ne_xml_parse$ Upcp#ublock#  len#ret%flag%pne_xml_failedf Ucpene_xml_destroyk U8cpjelmlparentlhandmnextmne_xml_set_error U|cpmsg |ne_xml_get_error4 Ucpne_xml_get_attrlUcpattrs nspacenamenO Wh <h <pnt < < < < < < < <uri ne_xml_mapid Umap maplen nspacenamen ne_xml_idmap  nspace# name# id#XML_ErrorXML_ERROR_NONEXML_ERROR_NO_MEMORYXML_ERROR_SYNTAXXML_ERROR_NO_ELEMENTSXML_ERROR_INVALID_TOKENXML_ERROR_UNCLOSED_TOKENXML_ERROR_PARTIAL_CHARXML_ERROR_TAG_MISMATCHXML_ERROR_DUPLICATE_ATTRIBUTEXML_ERROR_JUNK_AFTER_DOC_ELEMENT XML_ERROR_PARAM_ENTITY_REF XML_ERROR_UNDEFINED_ENTITY XML_ERROR_RECURSIVE_ENTITY_REF XML_ERROR_ASYNC_ENTITY XML_ERROR_BAD_CHAR_REFXML_ERROR_BINARY_ENTITY_REFXML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REFXML_ERROR_MISPLACED_XML_PIXML_ERROR_UNKNOWN_ENCODINGXML_ERROR_INCORRECT_ENCODINGXML_ERROR_UNCLOSED_CDATA_SECTIONXML_ERROR_EXTERNAL_ENTITY_HANDLINGXML_ERROR_NOT_STANDALONEXML_ERROR_UNEXPECTED_STATEXML_ERROR_ENTITY_DECLARED_IN_PEXML_ERROR_FEATURE_REQUIRES_XML_DTDXML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSINGXML_ERROR_UNBOUND_PREFIXXML_ERROR_UNDECLARING_PREFIXXML_ERROR_INCOMPLETE_PEXML_ERROR_XML_DECLXML_ERROR_TEXT_DECLXML_ERROR_PUBLICID XML_ERROR_SUSPENDED!XML_ERROR_NOT_SUSPENDED"XML_ERROR_ABORTED#XML_ERROR_FINISHED$XML_ERROR_SUSPEND_PE%XML_ERROR_RESERVED_PREFIX_XML&XML_ERROR_RESERVED_PREFIX_XMLNS'XML_ERROR_RESERVED_NAMESPACE_URI(XML_LCharXML_ErrorString XML_ParserFree punsigned longXML_SizeXML_GetCurrentLineNumber9 XML_GetErrorCode] unsigned charXML_StatusXML_STATUS_ERRORXML_STATUS_OKXML_STATUS_SUSPENDEDXML_StopParsern  ]XML_Parsen    XML_SetUserData<  < ]  A FXML_SetCharacterDataHandler  ]       XML_SetElementHandler   !+5?I     &  0 : D NSXML_SetEntityDeclHandler  XML_ParserCreate      XML_SetXmlDeclHandlerG  Lne_snprintf  G Q!ne_debug  !ne_strdup ne_calloc @libintl_dgettext)  )strchrR . R\strncmp W a @strlen  strcpy  strcmp    memcmpC   @C__posix_ctime_ru H tm$ tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# u__posix_asctime_rB  freeV "abort /var/tmp/neon-0.29.4/src/usr/local/include/usr/include/isone_xml.cexpat_external.hne_xml.hexpat.hstdlib_iso.htime_iso.h * 6JV_ y   Co |    k - 5 ;F O Zp      5 @l x        2 < D` i }        &7 @ H Q b s  {       1 R lr {        7]i s     ' 4}E}V ] v~       + 8 Z n y ~           ' 0 9 D P \ h q            ' . P c v       & : C Q ~_ s |  ~       & / O h        * <tW^ v  }  DD%. : ; @ ' D I: ;  4I : ;  $> II: &I I   I8 ' ID  I< I !I/ .?  : ; @ ' ID . : ; @ ' ID  . : ;@ ' ID I: ; 4I : ; . : ;@ ' D .?  : ;@ ' ID .?  : ;@ ' D  :  : ( .? < ' ID .? < ' D  ' D !".? < ' D chne_xml_currentlinene_xml_doc_encoding ne_xml_resolve_nspace ne_xml_create ne_xml_push_handlerx ne_xml_parse_v ne_xml_parsezne_xml_failedne_xml_destroy8ne_xml_set_errorne_xml_get_errorne_xml_get_attrne_xml_mapidcedecl_handlerdeclare_nspacesexpand_qnamestart_elementwdestroy_elementchar_data_ end_element entity_declaration resolve_nspace!cXML_Char$ne_xml_charInamespacene_xml_startelm_cbne_xml_endelm_cblne_xml_cdata_cbhandlerelementXML_Parserne_xml_parser_sOne_xml_parser size_tne_xml_idmapXML_ErrorXML_LCharXML_SizenXML_Statusutm,pz  `)9)*34?@OPQR S T U V WXb0uP pe .5FLb~ s ( F & 5D &U f@ ,vp@ $!MZh"##!a!$"&JWe"#%0&[&l&z&&&DK%)0%OV%%'()# #$ < A F $S ,_ -z .   /  0 1  2  3 # 6  %   %  %F 7U \ %  8 9  "  %J & & < & &  "u !  avzRV[_dhmqvz+/48=AZ^cglpuy p  t   ' +        * X \ a e j n  +  4  5 6 :;O=S>?FJOSX\uy~&@*  ,4<DNX`jrz $,4>FP]dpz "*7>JRZbjrz  &.6>FNXbjr  *$.6>FP]+dpx4 &.6>FS5Zfn{6 : ,9;@LT\fpx=>? (0:BJR\fs@z4   +++",W+4P?PcK8WgA etCuDGE%lF |J Mp  Q  X  X  Xne_props.o/ 1287466444 0 0 100644 29460 ` ELFo4(.strtab.text.bss.data.rodata.rodata1.comment.debug_loc.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.symtabne_props.cchardatapropfindendelmstartelmset_bodypnamecmpfindpropstart_responsestart_propstatend_propstatfree_propsetend_responseBbss.bssDdata.dataDrodata.rodatane_buffer_appendne_propfind_get_parserne_propfind_get_requestne_xml_push_handlerne_set_request_body_bufferne_add_request_headerne_xml_parse_vne_accept_207ne_add_response_body_readerne_request_dispatchne_get_statusne_xml_failedne_xml_get_errorne_set_errorne_buffer_concatne_propfind_allpropne_propfind_namedne_proppatchne_request_createne_buffer_createne_lock_using_resourcene_simple_requestne_buffer_destroystrcmpne_propset_valuene_propset_langne_propfind_current_privatene_propset_privatene_propset_iteratene_propset_statusne_callocne_uri_copylibintl_dgettextne_xml_set_errorne_reallocmemsetne_207_get_current_propstatstrchrne_xml_resolve_nspacene_strdupne_debugne_xml_get_attrne_buffer_finishfreene_uri_freene_propfind_createne_fill_server_urine_xml_createne_207_createne_add_depth_headerne_207_set_response_handlersne_207_set_propstat_