# PaCkAgE DaTaStReAm neon 1 4415 # end of header 070701000a0737000081a40000000000000000000000014cbd2db60000010d000000b600010002ffffffffffffffff0000000d00000000neon/pkginfoPKG=neon NAME=neon 0.29.4 i86pc Solaris 11 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 070701000a0736000081a40000000000000000000000014cbd2db60000454a000000b600010002ffffffffffffffff0000000c00000000neon/pkgmap: 1 4415 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 1942 17716 1287466413 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 1287466413 1 f none /usr/local/include/neon/ne_acl.h 0644 root root 1455 52952 1287466413 1 f none /usr/local/include/neon/ne_acl3744.h 0644 root root 2735 19094 1287466413 1 f none /usr/local/include/neon/ne_alloc.h 0644 root root 1880 28884 1287466413 1 f none /usr/local/include/neon/ne_auth.h 0644 root root 5617 25875 1287466413 1 f none /usr/local/include/neon/ne_basic.h 0644 root root 6148 45315 1287466413 1 f none /usr/local/include/neon/ne_compress.h 0644 root root 1746 18274 1287466413 1 f none /usr/local/include/neon/ne_dates.h 0644 root root 1646 4791 1287466413 1 f none /usr/local/include/neon/ne_defs.h 0644 root root 1944 29898 1287466413 1 f none /usr/local/include/neon/ne_i18n.h 0644 root root 2008 39818 1287466413 1 f none /usr/local/include/neon/ne_locks.h 0644 root root 6325 20559 1287466413 1 f none /usr/local/include/neon/ne_md5.h 0644 root root 3920 4880 1287466413 1 f none /usr/local/include/neon/ne_pkcs11.h 0644 root root 4812 54700 1287466413 1 f none /usr/local/include/neon/ne_props.h 0644 root root 10005 20040 1287466413 1 f none /usr/local/include/neon/ne_redirect.h 0644 root root 1515 62708 1287466413 1 f none /usr/local/include/neon/ne_request.h 0644 root root 14411 53392 1287466413 1 f none /usr/local/include/neon/ne_session.h 0644 root root 14933 25826 1287466413 1 f none /usr/local/include/neon/ne_socket.h 0644 root root 12132 54375 1287466413 1 f none /usr/local/include/neon/ne_ssl.h 0644 root root 8175 54546 1287466413 1 f none /usr/local/include/neon/ne_string.h 0644 root root 7484 41940 1287466413 1 f none /usr/local/include/neon/ne_uri.h 0644 root root 3905 4249 1287466413 1 f none /usr/local/include/neon/ne_utils.h 0644 root root 4102 8013 1287466413 1 f none /usr/local/include/neon/ne_xml.h 0644 root root 6806 49304 1287466413 1 f none /usr/local/include/neon/ne_xmlreq.h 0644 root root 1973 36605 1287466413 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libneon.a 0644 root root 599840 20299 1287466413 1 f none /usr/local/lib/libneon.la 0755 root root 1081 29541 1287466413 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 528872 58888 1287466413 1 d none /usr/local/lib/pkgconfig 0755 root root 1 f none /usr/local/lib/pkgconfig/neon.pc 0644 root root 346 30263 1287466413 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 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/biblio.html 0644 root root 5015 45393 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/compliance.html 0644 root root 5427 13907 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/features.html 0644 root root 4698 31608 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/index.html 0644 root root 10881 175 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/intro.html 0644 root root 3547 49000 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/ref.html 0644 root root 7416 27825 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refalloc.html 0644 root root 4989 50967 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refauth.html 0644 root root 6019 12157 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbuf.html 0644 root root 3586 56699 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufapp.html 0644 root root 5135 62023 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufcr.html 0644 root root 3371 35735 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufdest.html 0644 root root 4096 34899 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufutil.html 0644 root root 3956 24820 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refcert.html 0644 root root 5991 9324 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refclicert.html 0644 root root 8023 57774 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refconfig.html 0644 root root 5207 62800 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/referr.html 0644 root root 4408 62321 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/reffeat.html 0644 root root 4134 34780 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refgetst.html 0644 root root 3461 44246 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refi18n.html 0644 root root 3886 13776 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refiaddr.html 0644 root root 6422 37591 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refneon.html 0644 root root 12772 5486 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refopts.html 0644 root root 6394 46597 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refreq.html 0644 root root 8741 63651 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqbody.html 0644 root root 4429 414 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqflags.html 0644 root root 4464 64747 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqhdr.html 0644 root root 3847 14833 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refresolve.html 0644 root root 7513 4422 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refresphdr.html 0644 root root 5318 11601 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsess.html 0644 root root 7286 65049 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsessflags.html 0644 root root 5264 321 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refshave.html 0644 root root 2935 61018 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsockinit.html 0644 root root 6809 7650 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslca.html 0644 root root 4034 31943 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslcert2.html 0644 root root 3120 14676 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslcertio.html 0644 root root 5660 44263 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refssldname.html 0644 root root 3923 19162 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslvfy.html 0644 root root 7289 54873 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refstatus.html 0644 root root 4183 39449 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/reftok.html 0644 root root 4074 32902 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refvers.html 0644 root root 3426 38873 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refxml.html 0644 root root 3090 8982 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/security.html 0644 root root 7105 39440 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/using.html 0644 root root 4878 32156 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/xml.html 0644 root root 11371 14842 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466413 1 f none /usr/local/share/man/man3/ne_addr_destroy.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_addr_error.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_addr_first.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_addr_next.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_addr_resolve.3 0644 root root 4048 4412 1287466413 1 f none /usr/local/share/man/man3/ne_addr_result.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_buffer.3 0644 root root 1914 19451 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_altered.3 0644 root root 27 2379 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_append.3 0644 root root 2583 7817 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_clear.3 0644 root root 1876 14348 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_concat.3 0644 root root 28 2492 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_create.3 0644 root root 1600 54678 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_destroy.3 0644 root root 2083 30703 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_finish.3 0644 root root 29 2638 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_grow.3 0644 root root 27 2379 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_ncreate.3 0644 root root 28 2488 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_zappend.3 0644 root root 28 2492 1287466413 1 f none /usr/local/share/man/man3/ne_calloc.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_close_connection.3 0644 root root 29 2626 1287466413 1 f none /usr/local/share/man/man3/ne_forget_auth.3 0644 root root 30 2750 1287466413 1 f none /usr/local/share/man/man3/ne_get_error.3 0644 root root 2504 2401 1287466413 1 f none /usr/local/share/man/man3/ne_get_request_flag.3 0644 root root 31 2840 1287466413 1 f none /usr/local/share/man/man3/ne_get_response_header.3 0644 root root 2983 46320 1287466413 1 f none /usr/local/share/man/man3/ne_get_scheme.3 0644 root root 28 2532 1287466413 1 f none /usr/local/share/man/man3/ne_get_server_hostport.3 0644 root root 28 2532 1287466413 1 f none /usr/local/share/man/man3/ne_get_session_flag.3 0644 root root 31 2835 1287466413 1 f none /usr/local/share/man/man3/ne_get_status.3 0644 root root 1921 17844 1287466413 1 f none /usr/local/share/man/man3/ne_has_support.3 0644 root root 1909 14106 1287466413 1 f none /usr/local/share/man/man3/ne_i18n_init.3 0644 root root 2351 53915 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_cmp.3 0644 root root 25 2156 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_free.3 0644 root root 25 2156 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_make.3 0644 root root 3410 11349 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_print.3 0644 root root 25 2156 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_typeof.3 0644 root root 25 2156 1287466413 1 f none /usr/local/share/man/man3/ne_malloc.3 0644 root root 2235 43781 1287466413 1 f none /usr/local/share/man/man3/ne_oom_callback.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_print_request_header.3 0644 root root 33 3012 1287466413 1 f none /usr/local/share/man/man3/ne_qtoken.3 0644 root root 20 1676 1287466413 1 f none /usr/local/share/man/man3/ne_realloc.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_request_create.3 0644 root root 4851 19100 1287466413 1 f none /usr/local/share/man/man3/ne_request_destroy.3 0644 root root 29 2631 1287466413 1 f none /usr/local/share/man/man3/ne_request_dispatch.3 0644 root root 29 2631 1287466413 1 f none /usr/local/share/man/man3/ne_response_header_iterate.3 0644 root root 34 3137 1287466413 1 f none /usr/local/share/man/man3/ne_session_create.3 0644 root root 3943 3703 1287466413 1 f none /usr/local/share/man/man3/ne_session_destroy.3 0644 root root 29 2626 1287466413 1 f none /usr/local/share/man/man3/ne_session_proxy.3 0644 root root 29 2626 1287466413 1 f none /usr/local/share/man/man3/ne_set_connect_timeout.3 0644 root root 28 2532 1287466413 1 f none /usr/local/share/man/man3/ne_set_error.3 0644 root root 24 2100 1287466413 1 f none /usr/local/share/man/man3/ne_set_proxy_auth.3 0644 root root 30 2750 1287466413 1 f none /usr/local/share/man/man3/ne_set_read_timeout.3 0644 root root 28 2532 1287466413 1 f none /usr/local/share/man/man3/ne_set_request_body_buffer.3 0644 root root 2302 53550 1287466413 1 f none /usr/local/share/man/man3/ne_set_request_body_fd.3 0644 root root 38 3589 1287466413 1 f none /usr/local/share/man/man3/ne_set_request_body_fd64.3 0644 root root 38 3589 1287466413 1 f none /usr/local/share/man/man3/ne_set_request_flag.3 0644 root root 2240 45461 1287466413 1 f none /usr/local/share/man/man3/ne_set_server_auth.3 0644 root root 3416 14728 1287466413 1 f none /usr/local/share/man/man3/ne_set_session_flag.3 0644 root root 2628 10588 1287466413 1 f none /usr/local/share/man/man3/ne_set_useragent.3 0644 root root 3464 23866 1287466413 1 f none /usr/local/share/man/man3/ne_shave.3 0644 root root 1472 40664 1287466413 1 f none /usr/local/share/man/man3/ne_sock_exit.3 0644 root root 24 2094 1287466413 1 f none /usr/local/share/man/man3/ne_sock_init.3 0644 root root 4202 27286 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_cmp.3 0644 root root 1546 51066 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_export.3 0644 root root 28 2501 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_free.3 0644 root root 27 2409 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_identity.3 0644 root root 3333 14673 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_import.3 0644 root root 28 2501 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_issuer.3 0644 root root 32 2963 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_read.3 0644 root root 2998 52231 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_signedby.3 0644 root root 32 2963 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_subject.3 0644 root root 32 2963 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_write.3 0644 root root 28 2501 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_decrypt.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_encrypted.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_free.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_name.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_owner.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_read.3 0644 root root 4660 4117 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_dname_cmp.3 0644 root root 33 2992 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_readable_dname.3 0644 root root 1872 13146 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_set_verify.3 0644 root root 4499 42551 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_trust_cert.3 0644 root root 2164 39497 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_trust_default_ca.3 0644 root root 29 2667 1287466413 1 f none /usr/local/share/man/man3/ne_status.3 0644 root root 2073 28593 1287466413 1 f none /usr/local/share/man/man3/ne_strdup.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_strndup.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_token.3 0644 root root 2190 39337 1287466413 1 f none /usr/local/share/man/man3/ne_version_match.3 0644 root root 1821 7016 1287466413 1 f none /usr/local/share/man/man3/ne_version_string.3 0644 root root 28 2525 1287466413 1 f none /usr/local/share/man/man3/ne_xml_create.3 0644 root root 1446 40548 1287466413 1 f none /usr/local/share/man/man3/ne_xml_destroy.3 0644 root root 25 2191 1287466414 1 f none /usr/local/share/man/man3/neon.3 0644 root root 8421 7896 1287466414 1 i checkinstall 790 2505 1287466441 1 i pkginfo 269 20402 1287466422 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!070701000a0737000081a40000000000000000000000014cbd2db60000010d000000b600010002ffffffffffffffff0000000800000000pkginfoPKG=neon NAME=neon 0.29.4 i86pc Solaris 11 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 070701000a0736000081a40000000000000000000000014cbd2db60000454a000000b600010002ffffffffffffffff0000000700000000pkgmap: 1 4415 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 1942 17716 1287466413 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 1287466413 1 f none /usr/local/include/neon/ne_acl.h 0644 root root 1455 52952 1287466413 1 f none /usr/local/include/neon/ne_acl3744.h 0644 root root 2735 19094 1287466413 1 f none /usr/local/include/neon/ne_alloc.h 0644 root root 1880 28884 1287466413 1 f none /usr/local/include/neon/ne_auth.h 0644 root root 5617 25875 1287466413 1 f none /usr/local/include/neon/ne_basic.h 0644 root root 6148 45315 1287466413 1 f none /usr/local/include/neon/ne_compress.h 0644 root root 1746 18274 1287466413 1 f none /usr/local/include/neon/ne_dates.h 0644 root root 1646 4791 1287466413 1 f none /usr/local/include/neon/ne_defs.h 0644 root root 1944 29898 1287466413 1 f none /usr/local/include/neon/ne_i18n.h 0644 root root 2008 39818 1287466413 1 f none /usr/local/include/neon/ne_locks.h 0644 root root 6325 20559 1287466413 1 f none /usr/local/include/neon/ne_md5.h 0644 root root 3920 4880 1287466413 1 f none /usr/local/include/neon/ne_pkcs11.h 0644 root root 4812 54700 1287466413 1 f none /usr/local/include/neon/ne_props.h 0644 root root 10005 20040 1287466413 1 f none /usr/local/include/neon/ne_redirect.h 0644 root root 1515 62708 1287466413 1 f none /usr/local/include/neon/ne_request.h 0644 root root 14411 53392 1287466413 1 f none /usr/local/include/neon/ne_session.h 0644 root root 14933 25826 1287466413 1 f none /usr/local/include/neon/ne_socket.h 0644 root root 12132 54375 1287466413 1 f none /usr/local/include/neon/ne_ssl.h 0644 root root 8175 54546 1287466413 1 f none /usr/local/include/neon/ne_string.h 0644 root root 7484 41940 1287466413 1 f none /usr/local/include/neon/ne_uri.h 0644 root root 3905 4249 1287466413 1 f none /usr/local/include/neon/ne_utils.h 0644 root root 4102 8013 1287466413 1 f none /usr/local/include/neon/ne_xml.h 0644 root root 6806 49304 1287466413 1 f none /usr/local/include/neon/ne_xmlreq.h 0644 root root 1973 36605 1287466413 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libneon.a 0644 root root 599840 20299 1287466413 1 f none /usr/local/lib/libneon.la 0755 root root 1081 29541 1287466413 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 528872 58888 1287466413 1 d none /usr/local/lib/pkgconfig 0755 root root 1 f none /usr/local/lib/pkgconfig/neon.pc 0644 root root 346 30263 1287466413 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 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/biblio.html 0644 root root 5015 45393 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/compliance.html 0644 root root 5427 13907 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/features.html 0644 root root 4698 31608 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/index.html 0644 root root 10881 175 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/intro.html 0644 root root 3547 49000 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/ref.html 0644 root root 7416 27825 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refalloc.html 0644 root root 4989 50967 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refauth.html 0644 root root 6019 12157 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbuf.html 0644 root root 3586 56699 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufapp.html 0644 root root 5135 62023 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufcr.html 0644 root root 3371 35735 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufdest.html 0644 root root 4096 34899 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refbufutil.html 0644 root root 3956 24820 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refcert.html 0644 root root 5991 9324 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refclicert.html 0644 root root 8023 57774 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refconfig.html 0644 root root 5207 62800 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/referr.html 0644 root root 4408 62321 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/reffeat.html 0644 root root 4134 34780 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refgetst.html 0644 root root 3461 44246 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refi18n.html 0644 root root 3886 13776 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refiaddr.html 0644 root root 6422 37591 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refneon.html 0644 root root 12772 5486 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refopts.html 0644 root root 6394 46597 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refreq.html 0644 root root 8741 63651 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqbody.html 0644 root root 4429 414 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqflags.html 0644 root root 4464 64747 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refreqhdr.html 0644 root root 3847 14833 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refresolve.html 0644 root root 7513 4422 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refresphdr.html 0644 root root 5318 11601 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsess.html 0644 root root 7286 65049 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsessflags.html 0644 root root 5264 321 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refshave.html 0644 root root 2935 61018 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsockinit.html 0644 root root 6809 7650 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslca.html 0644 root root 4034 31943 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslcert2.html 0644 root root 3120 14676 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslcertio.html 0644 root root 5660 44263 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refssldname.html 0644 root root 3923 19162 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refsslvfy.html 0644 root root 7289 54873 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refstatus.html 0644 root root 4183 39449 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/reftok.html 0644 root root 4074 32902 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refvers.html 0644 root root 3426 38873 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/refxml.html 0644 root root 3090 8982 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/security.html 0644 root root 7105 39440 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/using.html 0644 root root 4878 32156 1287466414 1 f none /usr/local/share/doc/neon-0.29.4/html/xml.html 0644 root root 11371 14842 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466414 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 1287466413 1 f none /usr/local/share/man/man3/ne_addr_destroy.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_addr_error.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_addr_first.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_addr_next.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_addr_resolve.3 0644 root root 4048 4412 1287466413 1 f none /usr/local/share/man/man3/ne_addr_result.3 0644 root root 27 2405 1287466413 1 f none /usr/local/share/man/man3/ne_buffer.3 0644 root root 1914 19451 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_altered.3 0644 root root 27 2379 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_append.3 0644 root root 2583 7817 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_clear.3 0644 root root 1876 14348 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_concat.3 0644 root root 28 2492 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_create.3 0644 root root 1600 54678 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_destroy.3 0644 root root 2083 30703 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_finish.3 0644 root root 29 2638 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_grow.3 0644 root root 27 2379 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_ncreate.3 0644 root root 28 2488 1287466413 1 f none /usr/local/share/man/man3/ne_buffer_zappend.3 0644 root root 28 2492 1287466413 1 f none /usr/local/share/man/man3/ne_calloc.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_close_connection.3 0644 root root 29 2626 1287466413 1 f none /usr/local/share/man/man3/ne_forget_auth.3 0644 root root 30 2750 1287466413 1 f none /usr/local/share/man/man3/ne_get_error.3 0644 root root 2504 2401 1287466413 1 f none /usr/local/share/man/man3/ne_get_request_flag.3 0644 root root 31 2840 1287466413 1 f none /usr/local/share/man/man3/ne_get_response_header.3 0644 root root 2983 46320 1287466413 1 f none /usr/local/share/man/man3/ne_get_scheme.3 0644 root root 28 2532 1287466413 1 f none /usr/local/share/man/man3/ne_get_server_hostport.3 0644 root root 28 2532 1287466413 1 f none /usr/local/share/man/man3/ne_get_session_flag.3 0644 root root 31 2835 1287466413 1 f none /usr/local/share/man/man3/ne_get_status.3 0644 root root 1921 17844 1287466413 1 f none /usr/local/share/man/man3/ne_has_support.3 0644 root root 1909 14106 1287466413 1 f none /usr/local/share/man/man3/ne_i18n_init.3 0644 root root 2351 53915 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_cmp.3 0644 root root 25 2156 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_free.3 0644 root root 25 2156 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_make.3 0644 root root 3410 11349 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_print.3 0644 root root 25 2156 1287466413 1 f none /usr/local/share/man/man3/ne_iaddr_typeof.3 0644 root root 25 2156 1287466413 1 f none /usr/local/share/man/man3/ne_malloc.3 0644 root root 2235 43781 1287466413 1 f none /usr/local/share/man/man3/ne_oom_callback.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_print_request_header.3 0644 root root 33 3012 1287466413 1 f none /usr/local/share/man/man3/ne_qtoken.3 0644 root root 20 1676 1287466413 1 f none /usr/local/share/man/man3/ne_realloc.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_request_create.3 0644 root root 4851 19100 1287466413 1 f none /usr/local/share/man/man3/ne_request_destroy.3 0644 root root 29 2631 1287466413 1 f none /usr/local/share/man/man3/ne_request_dispatch.3 0644 root root 29 2631 1287466413 1 f none /usr/local/share/man/man3/ne_response_header_iterate.3 0644 root root 34 3137 1287466413 1 f none /usr/local/share/man/man3/ne_session_create.3 0644 root root 3943 3703 1287466413 1 f none /usr/local/share/man/man3/ne_session_destroy.3 0644 root root 29 2626 1287466413 1 f none /usr/local/share/man/man3/ne_session_proxy.3 0644 root root 29 2626 1287466413 1 f none /usr/local/share/man/man3/ne_set_connect_timeout.3 0644 root root 28 2532 1287466413 1 f none /usr/local/share/man/man3/ne_set_error.3 0644 root root 24 2100 1287466413 1 f none /usr/local/share/man/man3/ne_set_proxy_auth.3 0644 root root 30 2750 1287466413 1 f none /usr/local/share/man/man3/ne_set_read_timeout.3 0644 root root 28 2532 1287466413 1 f none /usr/local/share/man/man3/ne_set_request_body_buffer.3 0644 root root 2302 53550 1287466413 1 f none /usr/local/share/man/man3/ne_set_request_body_fd.3 0644 root root 38 3589 1287466413 1 f none /usr/local/share/man/man3/ne_set_request_body_fd64.3 0644 root root 38 3589 1287466413 1 f none /usr/local/share/man/man3/ne_set_request_flag.3 0644 root root 2240 45461 1287466413 1 f none /usr/local/share/man/man3/ne_set_server_auth.3 0644 root root 3416 14728 1287466413 1 f none /usr/local/share/man/man3/ne_set_session_flag.3 0644 root root 2628 10588 1287466413 1 f none /usr/local/share/man/man3/ne_set_useragent.3 0644 root root 3464 23866 1287466413 1 f none /usr/local/share/man/man3/ne_shave.3 0644 root root 1472 40664 1287466413 1 f none /usr/local/share/man/man3/ne_sock_exit.3 0644 root root 24 2094 1287466413 1 f none /usr/local/share/man/man3/ne_sock_init.3 0644 root root 4202 27286 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_cmp.3 0644 root root 1546 51066 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_export.3 0644 root root 28 2501 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_free.3 0644 root root 27 2409 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_identity.3 0644 root root 3333 14673 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_import.3 0644 root root 28 2501 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_issuer.3 0644 root root 32 2963 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_read.3 0644 root root 2998 52231 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_signedby.3 0644 root root 32 2963 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_subject.3 0644 root root 32 2963 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_cert_write.3 0644 root root 28 2501 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_decrypt.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_encrypted.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_free.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_name.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_owner.3 0644 root root 31 2813 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_clicert_read.3 0644 root root 4660 4117 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_dname_cmp.3 0644 root root 33 2992 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_readable_dname.3 0644 root root 1872 13146 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_set_verify.3 0644 root root 4499 42551 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_trust_cert.3 0644 root root 2164 39497 1287466413 1 f none /usr/local/share/man/man3/ne_ssl_trust_default_ca.3 0644 root root 29 2667 1287466413 1 f none /usr/local/share/man/man3/ne_status.3 0644 root root 2073 28593 1287466413 1 f none /usr/local/share/man/man3/ne_strdup.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_strndup.3 0644 root root 21 1763 1287466413 1 f none /usr/local/share/man/man3/ne_token.3 0644 root root 2190 39337 1287466413 1 f none /usr/local/share/man/man3/ne_version_match.3 0644 root root 1821 7016 1287466413 1 f none /usr/local/share/man/man3/ne_version_string.3 0644 root root 28 2525 1287466413 1 f none /usr/local/share/man/man3/ne_xml_create.3 0644 root root 1446 40548 1287466413 1 f none /usr/local/share/man/man3/ne_xml_destroy.3 0644 root root 25 2191 1287466414 1 f none /usr/local/share/man/man3/neon.3 0644 root root 8421 7896 1287466414 1 i checkinstall 790 2505 1287466441 1 i pkginfo 269 20402 1287466422 070701000a0818000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000000800000000install070701000a081a000081ed0000000000000000000000014cbd2dc900000316000000b600010002ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.11" 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 070701000a0738000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000000500000000root070701000a0739000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000000900000000root/usr070701000a073b000041ed0000000000000000000000064cbd2db600000000000000b600010002ffffffffffffffff0000000f00000000root/usr/local070701000a073c000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000001300000000root/usr/local/bin070701000a073d000081ed0000000000000000000000014cbd2dad00000796000000b600010002ffffffffffffffff0000001f00000000root/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 070701000a075f000041ed0000000000000000000000054cbd2db600000000000000b600010002ffffffffffffffff0000001500000000root/usr/local/share070701000a0796000041ed00000000000000000000000b4cbd2db600000000000000b600010002ffffffffffffffff0000001c00000000root/usr/local/share/locale070701000a07ac000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/tr070701000a07ad000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/tr/LC_MESSAGES070701000a07ae000081a40000000000000000000000014cbd2dae000005f3000000b600010002ffffffffffffffff0000003300000000root/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 uzun070701000a07af000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000002200000000root/usr/local/share/locale/zh_CN070701000a07b0000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/locale/zh_CN/LC_MESSAGES070701000a07b1000081a40000000000000000000000014cbd2dae00002168000000b600010002ffffffffffffffff0000003600000000root/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 挑战陈旧的摘要挑战用于新算法或新领域在摘要挑战中的算法不可识别070701000a07a9000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/ru070701000a07aa000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/ru/LC_MESSAGES070701000a07ab000081a40000000000000000000000014cbd2dae0000017f000000b600010002ffffffffffffffff0000003300000000root/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 070701000a07a0000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/ja070701000a07a1000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/ja/LC_MESSAGES070701000a07a2000081a40000000000000000000000014cbd2dae0000036d000000b600010002ffffffffffffffff0000003300000000root/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 ɤޤե뤬񤱤ޤ: %s070701000a079a000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/de070701000a079b000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/de/LC_MESSAGES070701000a079c000081a40000000000000000000000014cbd2dae000006b0000000b600010002ffffffffffffffff0000003300000000root/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 lang070701000a07a3000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/nn070701000a07a4000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/nn/LC_MESSAGES070701000a07a5000081a40000000000000000000000014cbd2dae0000065a000000b600010002ffffffffffffffff0000003300000000root/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 svarhovud070701000a079d000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/fr070701000a079e000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/fr/LC_MESSAGES070701000a079f000081a40000000000000000000000014cbd2dae00000183000000b600010002ffffffffffffffff0000003300000000root/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 070701000a0797000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/cs070701000a0798000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/cs/LC_MESSAGES070701000a0799000081a40000000000000000000000014cbd2dae0000061e000000b600010002ffffffffffffffff0000003300000000root/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 dlouh070701000a07a6000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001f00000000root/usr/local/share/locale/pl070701000a07a7000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/locale/pl/LC_MESSAGES070701000a07a8000081a40000000000000000000000014cbd2dae0000346f000000b600010002ffffffffffffffff0000003300000000root/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)070701000a07b2000041ed0000000000000000000000044cbd2db600000000000000b600010002ffffffffffffffff0000001900000000root/usr/local/share/man070701000a07b5000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man3070701000a07e6000081a40000000000000000000000014cbd2dad00000018000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_set_error.3.so man3/ne_get_error.3 070701000a07f7000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_ssl_cert_import.3.so man3/ne_ssl_cert_read.3 070701000a07f6000081a40000000000000000000000014cbd2dad00000d05000000b600010002ffffffffffffffff0000003500000000root/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 070701000a07b9000081a40000000000000000000000014cbd2dad0000001b000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_addr_first.3.so man3/ne_addr_resolve.3 070701000a07d6000081a40000000000000000000000014cbd2dad00000d52000000b600010002ffffffffffffffff0000002e00000000root/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 070701000a07e4000081a40000000000000000000000014cbd2dad0000001d000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_session_proxy.3.so man3/ne_session_create.3 070701000a07e1000081a40000000000000000000000014cbd2dad00000022000000b600010002ffffffffffffffff0000003b00000000root/usr/local/share/man/man3/ne_response_header_iterate.3.so man3/ne_get_response_header.3 070701000a07e8000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_set_read_timeout.3.so man3/ne_set_useragent.3 070701000a0810000081a40000000000000000000000014cbd2dad00000015000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man3/ne_strndup.3.so man3/ne_malloc.3 070701000a07c1000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_buffer_concat.3.so man3/ne_buffer_append.3 070701000a07ee000081a40000000000000000000000014cbd2dad00000a44000000b600010002ffffffffffffffff0000003400000000root/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 070701000a07ef000081a40000000000000000000000014cbd2dad00000d88000000b600010002ffffffffffffffff0000003100000000root/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 070701000a07b7000081a40000000000000000000000014cbd2dad0000001b000000b600010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_addr_destroy.3.so man3/ne_addr_resolve.3 070701000a07d4000081a40000000000000000000000014cbd2dad00000019000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_iaddr_cmp.3.so man3/ne_iaddr_make.3 070701000a07cc000081a40000000000000000000000014cbd2dad0000001f000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_get_request_flag.3.so man3/ne_set_request_flag.3 070701000a0813000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_version_string.3.so man3/ne_version_match.3 070701000a07f1000081a40000000000000000000000014cbd2dad00000018000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_sock_exit.3.so man3/ne_sock_init.3 070701000a07fd000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_ssl_cert_write.3.so man3/ne_ssl_cert_read.3 070701000a07e9000081a40000000000000000000000014cbd2dad000008fe000000b600010002ffffffffffffffff0000003b00000000root/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 070701000a07e2000081a40000000000000000000000014cbd2dad00000f67000000b600010002ffffffffffffffff0000003200000000root/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 070701000a07fb000081a40000000000000000000000014cbd2dad00000020000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/man/man3/ne_ssl_cert_signedby.3.so man3/ne_ssl_cert_identity.3 070701000a07e3000081a40000000000000000000000014cbd2dad0000001d000000b600010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_session_destroy.3.so man3/ne_session_create.3 070701000a07e5000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_set_connect_timeout.3.so man3/ne_set_useragent.3 070701000a07ed000081a40000000000000000000000014cbd2dad00000d58000000b600010002ffffffffffffffff0000003300000000root/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 070701000a07dd000081a40000000000000000000000014cbd2dad00000015000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man3/ne_realloc.3.so man3/ne_malloc.3 070701000a0806000081a40000000000000000000000014cbd2dad00000750000000b600010002ffffffffffffffff0000003600000000root/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 070701000a0801000081a40000000000000000000000014cbd2dad0000001f000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_ssl_clicert_free.3.so man3/ne_ssl_clicert_read.3 070701000a07cf000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_get_server_hostport.3.so man3/ne_set_useragent.3 070701000a0809000081a40000000000000000000000014cbd2dad00000874000000b600010002ffffffffffffffff0000003200000000root/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 070701000a07c9000081a40000000000000000000000014cbd2dad0000001d000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_close_connection.3.so man3/ne_session_create.3 070701000a07b6000081a40000000000000000000000014cbd2dad00000729000000b600010002ffffffffffffffff0000003600000000root/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 070701000a07bb000081a40000000000000000000000014cbd2dad00000fd0000000b600010002ffffffffffffffff0000003000000000root/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 070701000a07c0000081a40000000000000000000000014cbd2dad00000754000000b600010002ffffffffffffffff0000003000000000root/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 070701000a07ca000081a40000000000000000000000014cbd2dad0000001e000000b600010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_forget_auth.3.so man3/ne_set_server_auth.3 070701000a07c2000081a40000000000000000000000014cbd2dad00000640000000b600010002ffffffffffffffff0000003100000000root/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 070701000a07bf000081a40000000000000000000000014cbd2dad00000a17000000b600010002ffffffffffffffff0000003100000000root/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 070701000a07d5000081a40000000000000000000000014cbd2dad00000019000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_iaddr_free.3.so man3/ne_iaddr_make.3 070701000a0811000081a40000000000000000000000014cbd2dad0000088e000000b600010002ffffffffffffffff0000002900000000root/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 070701000a0808000081a40000000000000000000000014cbd2dad00001193000000b600010002ffffffffffffffff0000003200000000root/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 070701000a07f5000081a40000000000000000000000014cbd2dad0000001b000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_ssl_cert_free.3.so man3/ne_ssl_cert_cmp.3 070701000a07bd000081a40000000000000000000000014cbd2dad0000077a000000b600010002ffffffffffffffff0000002a00000000root/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 070701000a07d9000081a40000000000000000000000014cbd2dad000008bb000000b600010002ffffffffffffffff0000002a00000000root/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 070701000a07e7000081a40000000000000000000000014cbd2dad0000001e000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_set_proxy_auth.3.so man3/ne_set_server_auth.3 070701000a07da000081a40000000000000000000000014cbd2dad00000015000000b600010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_oom_callback.3.so man3/ne_malloc.3 070701000a07c6000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_buffer_ncreate.3.so man3/ne_buffer_create.3 070701000a07f0000081a40000000000000000000000014cbd2dad000005c0000000b600010002ffffffffffffffff0000002900000000root/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 070701000a07c7000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_buffer_zappend.3.so man3/ne_buffer_append.3 070701000a07ce000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_get_scheme.3.so man3/ne_set_useragent.3 070701000a07c8000081a40000000000000000000000014cbd2dad00000015000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_calloc.3.so man3/ne_malloc.3 070701000a0805000081a40000000000000000000000014cbd2dad00000021000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_ssl_dname_cmp.3.so man3/ne_ssl_readable_dname.3 070701000a07bc000081a40000000000000000000000014cbd2dad0000001b000000b600010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_addr_result.3.so man3/ne_addr_resolve.3 070701000a07fc000081a40000000000000000000000014cbd2dad00000020000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_ssl_cert_subject.3.so man3/ne_ssl_cert_identity.3 070701000a07db000081a40000000000000000000000014cbd2dad00000021000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/man/man3/ne_print_request_header.3.so man3/ne_add_request_header.3 070701000a07d7000081a40000000000000000000000014cbd2dad00000019000000b600010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_iaddr_print.3.so man3/ne_iaddr_make.3 070701000a07e0000081a40000000000000000000000014cbd2dad0000001d000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_request_dispatch.3.so man3/ne_request_create.3 070701000a07c4000081a40000000000000000000000014cbd2dad0000001d000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ne_buffer_finish.3.so man3/ne_buffer_destroy.3 070701000a07f8000081a40000000000000000000000014cbd2dad00000020000000b600010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_ssl_cert_issuer.3.so man3/ne_ssl_cert_identity.3 070701000a07d2000081a40000000000000000000000014cbd2dad00000775000000b600010002ffffffffffffffff0000002f00000000root/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 070701000a07ff000081a40000000000000000000000014cbd2dad0000001f000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_ssl_clicert_decrypt.3.so man3/ne_ssl_clicert_read.3 070701000a07ec000081a40000000000000000000000014cbd2dad000008c0000000b600010002ffffffffffffffff0000003400000000root/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 070701000a0800000081a40000000000000000000000014cbd2dad0000001f000000b600010002ffffffffffffffff0000003900000000root/usr/local/share/man/man3/ne_ssl_clicert_encrypted.3.so man3/ne_ssl_clicert_read.3 070701000a07ba000081a40000000000000000000000014cbd2dad0000001b000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ne_addr_next.3.so man3/ne_addr_resolve.3 070701000a07d1000081a40000000000000000000000014cbd2dad00000781000000b600010002ffffffffffffffff0000002e00000000root/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 070701000a07d0000081a40000000000000000000000014cbd2dad0000001f000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_get_session_flag.3.so man3/ne_set_session_flag.3 070701000a07c3000081a40000000000000000000000014cbd2dad00000823000000b600010002ffffffffffffffff0000003200000000root/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 070701000a07cb000081a40000000000000000000000014cbd2dad000009c8000000b600010002ffffffffffffffff0000002d00000000root/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 070701000a0815000081a40000000000000000000000014cbd2dad000005a6000000b600010002ffffffffffffffff0000002e00000000root/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 070701000a07de000081a40000000000000000000000014cbd2dad000012f3000000b600010002ffffffffffffffff0000003200000000root/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 070701000a07eb000081a40000000000000000000000014cbd2dad00000026000000b600010002ffffffffffffffff0000003900000000root/usr/local/share/man/man3/ne_set_request_body_fd64.3.so man3/ne_set_request_body_buffer.3 070701000a07f3000081a40000000000000000000000014cbd2dad0000060a000000b600010002ffffffffffffffff0000003000000000root/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 070701000a07f9000081a40000000000000000000000014cbd2dad00000bb6000000b600010002ffffffffffffffff0000003100000000root/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 070701000a0802000081a40000000000000000000000014cbd2dad0000001f000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/man/man3/ne_ssl_clicert_name.3.so man3/ne_ssl_clicert_read.3 070701000a0817000081a40000000000000000000000014cbd2dae000020e5000000b600010002ffffffffffffffff0000002500000000root/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 070701000a07d8000081a40000000000000000000000014cbd2dad00000019000000b600010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ne_iaddr_typeof.3.so man3/ne_iaddr_make.3 070701000a07df000081a40000000000000000000000014cbd2dad0000001d000000b600010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_request_destroy.3.so man3/ne_request_create.3 070701000a080e000081a40000000000000000000000014cbd2dad00000015000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_strdup.3.so man3/ne_malloc.3 070701000a07b8000081a40000000000000000000000014cbd2dad0000001b000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ne_addr_error.3.so man3/ne_addr_resolve.3 070701000a07f4000081a40000000000000000000000014cbd2dad0000001c000000b600010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ne_ssl_cert_export.3.so man3/ne_ssl_cert_read.3 070701000a07d3000081a40000000000000000000000014cbd2dad0000092f000000b600010002ffffffffffffffff0000002d00000000root/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 070701000a0812000081a40000000000000000000000014cbd2dad0000071d000000b600010002ffffffffffffffff0000003100000000root/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 070701000a0816000081a40000000000000000000000014cbd2dae00000019000000b600010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_xml_destroy.3.so man3/ne_xml_create.3 070701000a07be000081a40000000000000000000000014cbd2dad0000001b000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ne_buffer_altered.3.so man3/ne_buffer_clear.3 070701000a07ea000081a40000000000000000000000014cbd2dad00000026000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ne_set_request_body_fd.3.so man3/ne_set_request_body_buffer.3 070701000a07dc000081a40000000000000000000000014cbd2dad00000014000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ne_qtoken.3.so man3/ne_token.3 070701000a0803000081a40000000000000000000000014cbd2dad0000001f000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/man/man3/ne_ssl_clicert_owner.3.so man3/ne_ssl_clicert_read.3 070701000a07f2000081a40000000000000000000000014cbd2dad0000106a000000b600010002ffffffffffffffff0000002d00000000root/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 070701000a080b000081a40000000000000000000000014cbd2dad0000001d000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/man/man3/ne_ssl_trust_default_ca.3.so man3/ne_ssl_trust_cert.3 070701000a07c5000081a40000000000000000000000014cbd2dad0000001b000000b600010002ffffffffffffffff0000002f00000000root/usr/local/share/man/man3/ne_buffer_grow.3.so man3/ne_buffer_clear.3 070701000a07cd000081a40000000000000000000000014cbd2dad00000ba7000000b600010002ffffffffffffffff0000003700000000root/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 070701000a0804000081a40000000000000000000000014cbd2dad00001234000000b600010002ffffffffffffffff0000003400000000root/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 070701000a080d000081a40000000000000000000000014cbd2dad00000819000000b600010002ffffffffffffffff0000002a00000000root/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) 070701000a07b3000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man1070701000a07b4000081a40000000000000000000000014cbd2dae00000be9000000b600010002ffffffffffffffff0000002c00000000root/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 070701000a0761000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001900000000root/usr/local/share/doc070701000a0762000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000002500000000root/usr/local/share/doc/neon-0.29.4070701000a0764000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/doc/neon-0.29.4/html070701000a0795000081a40000000000000000000000014cbd2dae00002c6b000000b600010002ffffffffffffffff0000003300000000root/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.

070701000a077e000081a40000000000000000000000014cbd2dae000031e4000000b600010002ffffffffffffffff0000003700000000root/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.

070701000a0787000081a40000000000000000000000014cbd2dae00001490000000b600010002ffffffffffffffff0000003c00000000root/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.

070701000a077f000081a40000000000000000000000014cbd2dae000018fa000000b600010002ffffffffffffffff0000003700000000root/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);
070701000a0765000081a40000000000000000000000014cbd2dae000009f9000000b600010002ffffffffffffffff0000003300000000root/usr/local/share/doc/neon-0.29.4/html/api.htmlChapter 2. The neon C language interface

Chapter 2. The neon C language interface

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.

070701000a077b000081a40000000000000000000000014cbd2dae00000d85000000b600010002ffffffffffffffff0000003800000000root/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.

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);
070701000a0789000081a40000000000000000000000014cbd2dae00001a99000000b600010002ffffffffffffffff0000003b00000000root/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.

070701000a078f000081a40000000000000000000000014cbd2dae00001057000000b600010002ffffffffffffffff0000003900000000root/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)

070701000a0777000081a40000000000000000000000014cbd2dae00001f57000000b600010002ffffffffffffffff0000003a00000000root/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);
070701000a0767000081a40000000000000000000000014cbd2dae00001533000000b600010002ffffffffffffffff0000003a00000000root/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.

070701000a0780000081a40000000000000000000000014cbd2dae00002225000000b600010002ffffffffffffffff0000003600000000root/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);
070701000a0769000081a40000000000000000000000014cbd2dae00002a81000000b600010002ffffffffffffffff0000003500000000root/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
070701000a078e000081a40000000000000000000000014cbd2dae00001c79000000b600010002ffffffffffffffff0000003900000000root/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");
  ...
}
070701000a0790000081a40000000000000000000000014cbd2dae00000fea000000b600010002ffffffffffffffff0000003600000000root/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);
}
070701000a0784000081a40000000000000000000000014cbd2dae00001d59000000b600010002ffffffffffffffff0000003a00000000root/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);
070701000a078b000081a40000000000000000000000014cbd2dae00000c30000000b600010002ffffffffffffffff0000003b00000000root/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.

070701000a0774000081a40000000000000000000000014cbd2dae00001767000000b600010002ffffffffffffffff0000003700000000root/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);
}
070701000a076f000081a40000000000000000000000014cbd2dae0000140f000000b600010002ffffffffffffffff0000003900000000root/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);
070701000a076c000081a40000000000000000000000014cbd2dae0000137d000000b600010002ffffffffffffffff0000003800000000root/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.

070701000a077d000081a40000000000000000000000014cbd2dae00001916000000b600010002ffffffffffffffff0000003800000000root/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 {
    /* ... */
}
070701000a078c000081a40000000000000000000000014cbd2dae0000161c000000b600010002ffffffffffffffff0000003c00000000root/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.

070701000a0792000081a40000000000000000000000014cbd2dae00000c12000000b600010002ffffffffffffffff0000003600000000root/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

070701000a076a000081a40000000000000000000000014cbd2dae00000ddb000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/doc/neon-0.29.4/html/intro.htmlChapter 1. Introduction

Chapter 1. Introduction

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.

070701000a0770000081a40000000000000000000000014cbd2dae00000d2b000000b600010002ffffffffffffffff0000003800000000root/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

070701000a0788000081a40000000000000000000000014cbd2dae00000b77000000b600010002ffffffffffffffff0000003800000000root/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, ".!"));
070701000a0793000081a40000000000000000000000014cbd2dae00001bc1000000b600010002ffffffffffffffff0000003800000000root/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.

070701000a0785000081a40000000000000000000000014cbd2dae000014c6000000b600010002ffffffffffffffff0000003a00000000root/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);
070701000a0771000081a40000000000000000000000014cbd2dae00001000000000b600010002ffffffffffffffff0000003a00000000root/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);
}
070701000a0782000081a40000000000000000000000014cbd2dae00001170000000b600010002ffffffffffffffff0000003b00000000root/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.

070701000a0779000081a40000000000000000000000014cbd2dae00001138000000b600010002ffffffffffffffff0000003600000000root/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");
070701000a076e000081a40000000000000000000000014cbd2dae00000e02000000b600010002ffffffffffffffff0000003600000000root/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.

070701000a0783000081a40000000000000000000000014cbd2dae00000f07000000b600010002ffffffffffffffff0000003900000000root/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.

070701000a0794000081a40000000000000000000000014cbd2dae0000130e000000b600010002ffffffffffffffff0000003500000000root/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:

  • autoconf macros are distributed in the 'macros' subdirectory of the neon distribution. Use the NEON_LIBRARY macro from your configure.in to check for the presence of the neon library installed on the system. The macro adds an '--with-neon=...' argument to configure, which allows the user to specify a location for the library (the standard /usr and /usr/local directories are checked automatically without having to be specified).

  • The 'src' directory of the neon package can be imported directly into your application, if you do not wish to add an external dependency. If you wish to bundle, use the NEON_BUNDLED macro to configure neon in your application: here, the neon sources are bundled in a directory called 'libneon':

    NEON_BUNDLED(libneon, ...)

    If your application supports builds where srcdir != builddir, you should use the NEON_VPATH_BUNDLED macro like this:

    NEON_VPATH_BUNDLED(${srcdir}/libneon, libneon, ...)

    If you use this macro, a '--with-included-neon' option will be added to the generated configure script. This allows the user to force the bundled neon to be used in the application, rather than any neon library found on the system. If you allow neon to be configured this way, you must also configure an XML parser. Use the NEON_XML_PARSER macro to do this.

  • The final argument to the _BUNDLED macros is a set of actions which are executed if the bundled build *is* chosen (rather than an external neon which might have been found on the user's system). In here, use either the NEON_LIBTOOL_BUILD or NEON_NORMAL_BUILD macro to set up the neon Makefile appropriately: including adding the neon source directory to the recursive make.

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.

070701000a0768000081a40000000000000000000000014cbd2dae0000125a000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/doc/neon-0.29.4/html/features.htmlFeature list

Feature list

The major features of the neon library are as follows:

  • A high-level interface to common HTTP and WebDAV methods. This allows you to easily dispatch a GET or a MKCOL request against a resource with a single function call.

  • A low-level interface for HTTP request handling; allowing you to implement requests using arbitrary methods and request headers, capture arbitrary response headers, and so on.

  • Persistent connection support; neon groups a set of requests to a server into a "session"; requests within that session can use a persistent (also known as "keep-alive") connection.

  • Modern HTTP authentication support: a complete implementation of the new authentication standard, RFC2617, supporting the Digest, Basic, and Negotiate protocols. Credentials are supplied by an application-defined callback as appropriate.

  • Proxy server support; a session can be set to use a proxy server. Authentication is supported for the Proxy as well as the origin server. The system's proxy configuration can be optionally used, on some platforms.

  • Complete SSL support; a simple interface for enabling SSL, hiding the complexity of using an SSL library directly. Client certificate support, callback-based server certificate verification, along with functions to load trusted CA certificates. Smartcard-based client certs are also supported via a wrapper interface for PKCS#11 modules.

  • Compressed response support: responses compressed using the "deflate" algorithm can be transparently decompressed.

  • Generic XML parsing interface for handling XML response bodies using SAX-like callbacks. Both the expat and libxml XML parser libraries are supported.

  • WebDAV metadata support; set and remove properties, query properties (PROPFIND); simple interface for retrieving "flat" byte-string properties, more advanced support for parsing "complex" structured XML properties.

  • Build environment support: the neon source tree is designed so that it can be embedded in your application's build tree; autoconf macros are supplied for integration. To get started quickly a neon-config script is included, to easily determine how to compile and link against an installed copy of neon

  • Complete test suite: the neon test suite comprises half as many lines of source code as the library itself, including many tests for protocol compliance in network behaviour, and that the library implementation meets the guarantees made by the API.

070701000a076d000081a40000000000000000000000014cbd2dae00001783000000b600010002ffffffffffffffff0000003700000000root/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);

   /* ... */
}
070701000a078d000081a40000000000000000000000014cbd2dae00000f53000000b600010002ffffffffffffffff0000003b00000000root/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.

070701000a0773000081a40000000000000000000000014cbd2dae00000f74000000b600010002ffffffffffffffff0000003a00000000root/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.

070701000a0791000081a40000000000000000000000014cbd2dae00000d62000000b600010002ffffffffffffffff0000003700000000root/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);
}
070701000a0778000081a40000000000000000000000014cbd2dae00001457000000b600010002ffffffffffffffff0000003900000000root/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
070701000a076b000081a40000000000000000000000014cbd2dae00001cf8000000b600010002ffffffffffffffff0000003300000000root/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
070701000a0766000081a40000000000000000000000014cbd2dae00001397000000b600010002ffffffffffffffff0000003600000000root/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.

070701000a0781000081a40000000000000000000000014cbd2dae0000114d000000b600010002ffffffffffffffff0000003a00000000root/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.

070701000a077c000081a40000000000000000000000014cbd2dae00000f2e000000b600010002ffffffffffffffff0000003700000000root/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

070701000a078a000081a40000000000000000000000014cbd2dae00000fc2000000b600010002ffffffffffffffff0000003800000000root/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));
}
070701000a0786000081a40000000000000000000000014cbd2dae00001c76000000b600010002ffffffffffffffff0000003700000000root/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);
070701000a077a000081a40000000000000000000000014cbd2dae00001026000000b600010002ffffffffffffffff0000003700000000root/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.

070701000a073e000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001700000000root/usr/local/include070701000a073f000041ed0000000000000000000000024cbd2db600000000000000b600010002ffffffffffffffff0000001c00000000root/usr/local/include/neon070701000a074a000081a40000000000000000000000014cbd2dad000018b5000000b600010002ffffffffffffffff0000002700000000root/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 */ 070701000a074f000081a40000000000000000000000014cbd2dad0000384b000000b600010002ffffffffffffffff0000002900000000root/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 */ 070701000a0751000081a40000000000000000000000014cbd2dad00002f64000000b600010002ffffffffffffffff0000002800000000root/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 */ 070701000a0755000081a40000000000000000000000014cbd2dad00001006000000b600010002ffffffffffffffff0000002700000000root/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 */ 070701000a0754000081a40000000000000000000000014cbd2dad00000f41000000b600010002ffffffffffffffff0000002500000000root/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 */ 070701000a0750000081a40000000000000000000000014cbd2dad00003a55000000b600010002ffffffffffffffff0000002900000000root/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 */ 070701000a0743000081a40000000000000000000000014cbd2dad00000758000000b600010002ffffffffffffffff0000002700000000root/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 */ 070701000a0747000081a40000000000000000000000014cbd2dad0000066e000000b600010002ffffffffffffffff0000002700000000root/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 */ 070701000a074b000081a40000000000000000000000014cbd2dad00000f50000000b600010002ffffffffffffffff0000002500000000root/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 */ 070701000a0753000081a40000000000000000000000014cbd2dad00001d3c000000b600010002ffffffffffffffff0000002800000000root/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 */ 070701000a0741000081a40000000000000000000000014cbd2dad000005af000000b600010002ffffffffffffffff0000002500000000root/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 */ 070701000a0756000081a40000000000000000000000014cbd2dad00001a96000000b600010002ffffffffffffffff0000002500000000root/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 */ 070701000a074c000081a40000000000000000000000014cbd2dad000012cc000000b600010002ffffffffffffffff0000002800000000root/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 */ 070701000a0749000081a40000000000000000000000014cbd2dad000007d8000000b600010002ffffffffffffffff0000002600000000root/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 */ 070701000a0740000081a40000000000000000000000014cbd2dad00001142000000b600010002ffffffffffffffff0000002500000000root/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 */ 070701000a0746000081a40000000000000000000000014cbd2dad000006d2000000b600010002ffffffffffffffff0000002a00000000root/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 */ 070701000a074d000081a40000000000000000000000014cbd2dad00002715000000b600010002ffffffffffffffff0000002700000000root/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 */ 070701000a0748000081a40000000000000000000000014cbd2dad00000798000000b600010002ffffffffffffffff0000002600000000root/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 */ 070701000a0752000081a40000000000000000000000014cbd2dad00001fef000000b600010002ffffffffffffffff0000002500000000root/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 070701000a0742000081a40000000000000000000000014cbd2dad00000aaf000000b600010002ffffffffffffffff0000002900000000root/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 */ 070701000a0757000081a40000000000000000000000014cbd2dad000007b5000000b600010002ffffffffffffffff0000002800000000root/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 */ 070701000a074e000081a40000000000000000000000014cbd2dad000005eb000000b600010002ffffffffffffffff0000002a00000000root/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 */ 070701000a0745000081a40000000000000000000000014cbd2dad00001804000000b600010002ffffffffffffffff0000002700000000root/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 */ 070701000a0744000081a40000000000000000000000014cbd2dad000015f1000000b600010002ffffffffffffffff0000002600000000root/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 */ 070701000a0758000041ed0000000000000000000000034cbd2db600000000000000b600010002ffffffffffffffff0000001300000000root/usr/local/lib070701000a075b000081ed0000000000000000000000014cbd2dad000811e8000000b600010002ffffffffffffffff0000002500000000root/usr/local/lib/libneon.so.27.2.4ELF4H 4 ($#o !"%&()*+,./126789<>@ACEGHIJLMNQRSUVYZ[]^_`bdefgilpqrsux{|}~  #$%&(*+,-./0124568:;<>@CFHJKLOPTVWXZ\]^_`bdefhjkmopqrstuwxy{|}  #$'-0345:;=?BDFKOPTWX\achjkmnotvwyz    !"')379=?ABDEGIMNQRSUY[acgilnvz~ <~ ~ t &  <   S E j  { n }  ~  }\  ,:> ?P> 9> GЮF M  \ d`Y rl ~ @  й6 _ |     +p5 9' F| P`/ a q` ~ =  |  `/ M Z `Z   ,S :z Hpt U` bN or `  :> ?0> 9p> GF P  0 R  y P  "l p" ' 6  307i G9z ValuQT :r> ?r> 90s> GpsF sT 0u @x xT @z 0{  |L p|[ |.   0\ "u 0 ?( GQ ^ l  wЛ ` B R P ` & 0   @ 3 @X , = 8 L` Vp b@ o0[ z~ 7 O^ ep pg  o    @ 0=  `R *5 >G <y Cp L0  SP \f t-  pB .  Px   h  @ @ @J & 6 J@  ` Y  i   L s Y e ] " &  @ 0E P   $ ' 'k `* p._ . /t '@0l 10[ <2} H: T ; b; s<I @>` > ? 0@` @` @ B pCG C:  E Jx  L   pN (  R 5 B 0W S XB a [ s ] b c= `e4 f @h iG s     P ( 0 9  F { Y x m `  B  03x   @K?   nA / $-  ) F @ U  f   БE    m E   KO % . x 7 ` ; H Y 0.2 j PI { Of PS  o   px 0#  !0A ,@3 TlP |pM 0   x 1I N  @ `r -17 D R`Pm} w| @F F @* @ L #1Pu E`, \aP lH |I ?D   p $n ; O{ \d) ryP|W P X   & 5@G& Ww dlPc k# H P  p - "pi 65 FOEp Wb0w5 { = < O 01|  Wv `F  O "pna 9Ir ]в t D   W pP Ph P P  P )1o 6FKp@ eP wP Q a @m p# !{ 4Aw PzB ``v w@2k x 8f - ` @ PO tZ  $Pk? 7F@ ]ck| pl r 0,n PF  / 2P BB YUo nz r uY !>  J 0R4 '0 >p LF _gS wR4 `  F `18  o Џ PH1 & *;Gm C  af@YN |0V @ j    &@.) >ZB On Xx4  t o Ou / 0h 2HF `PNr r l Ѕ: QO pw `>t 0J  7  !0B 8 :t GV_~ np `5p -e O @ @ % 0 *J3 ;Qe& wF 0  0oc @N $; Nn2 `y V   (  5  D pRO S x d 0@ ~   @ k      !!!@ 1!9!p@ L! Y!p9B i!P/ {!!` !!!s y!!Pv0 ! t !@]z ! 5 "& &"*p 9"- L"r a"o"""d ""pF " "@z} "" "p #D #$#y E6#~ A#$k M#T#&} `#g###`TE #` #`mO # !E #9 ##N2 #$l $` 0$@ 9$ u K$X$Ѓy i$v$@9 $$$m\ $pH $sM $v Ѐ  $%SG %/%M E%i U%]%p!F n%%1E %%%%t %  %0i && M' & ` /&G&, S&1E h&66 y&&&P & &&& 8&& '&'0k B'N'& b'= n'z'`G ''`sN 'Z ' 'p. ''(7 #(P 4(0@ M(](3 r(8 ((P-k ( (C (E ( Y(  (.libs/libneon.so.27.2.4crti.svalues-Xa.cne_request.cfstatlstat_xmknodhash_and_lowerabortednotify_statusget_privatebody_string_sendbody_fd_sendsend_request_bodyadd_fixed_headersset_body_lengthget_response_header_hvremove_response_headerfree_response_headersne_read_response_blockbuild_requestdump_requeststrip_eolread_status_linediscard_headerssend_requestopen_connectionread_message_headeradd_response_headerread_response_headerslookup_hostproxy_tunnelresolve_firstresolve_nextdo_connectsocks_origin_lookupne_session.cdestroy_hooksfree_hostinfofree_proxiesset_hostportset_hostinfoprogress_notifieradd_hookremove_hookne_basic.cdispatch_to_fdget_range_commonparse_dav_headercopy_or_movene_string.ccount_concatdo_concatqappend_countquoted_appendne_uri.cmerge_pathsremove_dot_segmentscopy_authorityne_dates.cne_alloc.cne_md5.cmd5_init_ctxne_utils.cne_socket.cseed_ssl_prngraw_pollreadable_rawread_rawwrite_rawwritev_rawwritev_dummyreadable_osslerror_osslread_osslwrite_osslraw_connecttimed_connectconnect_socketdo_bindne_auth.cfree_domainsclean_sessionget_cnonceget_credentialschallenge_errorbasic_challengerequest_basicparse_domainrequest_ntlmntlm_challengedigest_challengeinside_domainrequest_digesttokenizeverify_digest_responseinsert_challengeauth_challengeah_createah_pre_sendah_post_sendah_destroyfree_authauth_registerne_redirect.cfree_redirectne_compress.cparse_headerprocess_footerset_zlib_errordo_inflategz_readergz_pre_sendgz_acceptorne_i18n.cne_pkcs11.cne_socks.cv5failsofailv5_proxyv4failv4_proxyne_ntlm.cne_input_ntlmsetup_des_keycalc_respmkhashne_output_ntlmne_207.ccan_handlecdata_207start_elementend_elementstart_responsehandle_errorend_responseend_propstatne_xml.cdecl_handlerdeclare_nspacesexpand_qnamene_xml_resolve_nspacedestroy_elementchar_dataentity_declarationne_props.cchardatane_simple_propfindld_startelmlk_endelmset_bodypnamecmpfindpropstart_propstatfree_propsetne_locks.clk_createlk_pre_sendinsert_lockfree_listlk_destroysubmit_lockparse_depthparse_timeoutdiscover_resultsend_element_commonend_element_ldisccan_acceptlk_cdatald_cdatalk_startelmld_createld_destroyadd_timeout_headerne_xmlreq.cparse_errormedia_type_is_xmlne_oldacl.cacl_bodyne_acl3744.cne_openssl.cappend_dirstringdup_ia5stringasn1time_to_timetcheck_identitypopulate_certverify_callbackmake_chaincheck_certificatedup_client_certprovide_client_certfind_friendly_namecrtn.s_finine__ssl_initne__ntlm_create_contextne__ntlm_authenticatene__ssl_set_verify_errne__ssl_match_hostnamene__sock_sslsockne__negotiate_sslne__ntlm_getRequestTokenne__ntlm_destroy_contextne__ssl_exitgetnameinfoSSL_get_ex_data_X509_STORE_CTX_idxXML_SetCharacterDataHandlerne_buffer_append__ctype_DYNAMICne_xml_mapidne_ssl_cert_exportne_ssl_clicert_namene_request_create_edataEVP_sha1ne_lockstore_findbyurifreadne_options2ne_xml_parse_responseX509_NAME_cmplibintl_dgettextne_version_matchne_strncasecmpne_base64GENERAL_NAME_freene_hook_create_requestPKCS12_unpack_p7datane_accept_alwaysne_ssl_pkcs11_provider_destroyne_response_header_iteratene_iaddr_freene_xml_doc_encodingne_sock_peerPKCS12_SAFEBAG_freene_putne_buffer_zappendSSL_connectSSL_pendingne_rfc1036_parseSSL_ctrlne_tokenne_buffer_createXML_ParserCreatene_tolower_arrayne_xml_set_errorne_mallocne_md5_finish_ctxne_decompress_destroySSL_CTX_set_verifyne_207_get_current_propstatne_ssl_clicert_ownerne_accept_2xxSSL_get_client_CA_listne_sock_fdne_uri_cmpSSL_CIPHER_get_namene_get_request_flagSSL_load_client_CA_filene_set_addrlistne_xml_dispatch_requestne_set_read_timeoutne_ssl_pkcs11_nss_provider_initRAND_statusne_get_rangene_deletene_lockstore_nextne_add_server_authne_xml_createne_207_destroyabsfcntlne_iaddr_cmpne_207_createinflateInit2_ne_ssl_context_keypairSSL_CTX_newsignalne_iaddr_rawSSL_get_peer_cert_chainX509_STORE_set_default_pathsne_set_session_privatene_hook_post_headersne_xml_failedne_set_request_body_providerEVP_PKEY_freene_ssl_clicert_readne_propfind_destroysk_freene_optionsne_buffer_clearfopenne_lock_refreshne_path_escapene_sock_read_timeoutX509_check_private_keysk_pushne_fill_proxy_uriXML_SetUserDataX509_STORE_CTX_get_error_depthne_get_schemene_read_response_to_fdne_request_dispatchne_xml_parsestrrchrne_addr_firstmktimesk_pop_freene_ssl_cert_digest__iobXML_SetElementHandlerne_set_connect_timeoutne_reallocne_propfind_allpropstrtollSSLeayne_sock_fullwritevne_buffer_concatvfprintfne_iaddr_parsePKCS7_freestrlenne_set_notifierne_sock_peeksprintfne_set_request_body_bufferne_ssl_context_createne_xml_get_attrd2i_PKCS12_fpne_207_set_propstat_handlersSSL_CTX_set_client_cert_cbne_207_get_current_responseSSL_writei2d_X509ne_set_session_flagne_iaddr_typeofSSL_freene_lockstrerror_rne_ssl_clicert_encryptedne_close_connectionne_xml_currentlinene_uri_copyne_sock_set_errorne_uri_defaultportSSL_get1_sessionne_md5_process_blockne_hook_pre_sendSSL_acceptne_set_errorne_ssl_context_destroySSL_get_ex_datane_ssl_cert_subjectne_set_request_privateXML_SetEntityDeclHandlerne_xml_push_handlerne_lock_discoverne_sock_closestrstrne_i18n_initne_strdupne_strndupne_concatne_redirect_registerX509_freene_get_server_hostportne_uri_parseSSL_SESSION_cmp_endne_unhook_destroy_sessionne_session_createX509_print_fpX509_get_issuer_namefreeaddrinfone_print_request_headerOBJ_obj2nidne_acl_setDES_set_keyinet_ptonne_buffer_growne_discard_responsene_buffer_qappendne_ssl_cert_importSSL_CTX_ctrlne_sock_createne_ssl_cert_cmpne_get_response_headerne_lockstore_registerne_request_destroyne_lock_createne_propnamesne_propset_valuene_unhook_close_connCRYPTO_freene_set_server_authsscanfne_sock_exitne_addr_resultne_ssl_set_clicertXML_ParserFreene_propfind_get_parsercrc32fstat64XML_GetErrorCodene_ssl_pkcs11_provider_initne_ascii_to_md5ne_ssl_cert_issuerne_strcleanne_hook_destroy_requestXML_StopParserSSL_CTX_set_client_CA_listne_get_session_flagSSLv23_server_methodne_addr_destroyne_get_session_privatene_md5_process_bytesgetaddrinfoSSL_get_current_cipherDES_set_odd_paritystrtoulne_shaveSSL_CTX_get_cert_storene_ssl_cert_identityne_sock_blockne_buffer_alteredne_copyne_md5_reset_ctxSSL_CTX_freeSSL_readne_addr_errorne_get_statusne_hook_close_conntoupperne_sock_prebindne_md5_destroy_ctxne_xml_destroyne_begin_requestne_hook_post_sendfclosene_lockstore_createne_session_proxyX509_STORE_add_certne_iaddr_makene_iso8601_parsene_end_requestSSL_SESSION_freegetpeernamene_ssl_context_set_verifyatoine_ssl_readable_dnamene_acl3744_setntohsstrcatne_sock_proxy_PROCEDURE_LINKAGE_TABLE_ne_iaddr_printSSL_newSSL_CTX_use_certificate_chain_filene_ssl_set_pkcs11_providerne_xml_get_errorne_propfind_set_privatene_ssl_dname_cmpne_debuglibintl_bind_textdomain_codesetSSL_get_peer_certificateSSL_get_sessionne_vsnprintfsetvbufmemchrne_simple_requestne_sock_initne_parse_statuslinegetpidSSL_set_sessionne_callocne_path_parentne_propfind_named_GLOBAL_OFFSET_TABLE_ne_hook_destroy_sessionne_httpdate_parsene_decompress_readerne_ssl_context_set_flagne_addr_nextne_md5_create_ctxne_ssl_clicert_decryptne_path_unescapene_ssl_trust_certgai_strerror_etextne_lock_copyne_postne_get_request_privatene_uri_resolvePEM_write_X509sk_valuene_forget_authSSLv23_client_methodne_set_useragentstrncatXML_GetCurrentLineNumberne_lock_using_resourcene_set_proxy_authne_session_system_proxyne_unhook_post_headersne_accept_207ne_sock_sessidne_rfc1123_parseX509_get_subject_nameSSLv2_server_methodne_ssl_set_verifyDES_ecb_encryptstrncpyne_path_childofmemsetX509_STORE_CTX_get_errorne_207_set_response_handlerstimezonene_has_supportne_add_proxy_authlibintl_bindtextdomainstrtolSSL_load_error_stringsne_sock_accept_sslne_version_stringCRYPTO_set_mem_functionsOPENSSL_add_all_algorithms_noconfne_sock_connect_timeout_xstat_fxstatX509_cmpMD4_Initd2i_X509ne_sock_connect_sslhtonsX509_NAME_ENTRY_get_datamemcmpX509_get_ext_d2ine_proppatchne_get_sessionne_md5_dup_ctxne_ssl_cert_readne_unhook_destroy_requestX509_NAME_get_index_by_NIDSSL_set_ex_datane_sock_fullwritene_md5_to_asciiSSL_get_errorOBJ_cmpMD4_FinalASN1_STRING_to_UTF8ne_sock_readlineabortstrchrne_unhook_post_sendstrncmpne_unhook_pre_sendne_get_errorne_lock_destroyne_addr_resolvegmtimene_propset_statusfflushX509_alias_get0ne_ssl_cert_validityne_sock_readne_add_depth_headerne_ssl_cert_validity_timene_version_pre_http11ne_ssl_provide_clicertne_propfind_createne_session_destroyne_ssl_cert_signedbyERR_get_errorSSL_library_initinet_ntopne_fill_server_uriPKCS12_get_friendlynamene_xml_parse_vne_session_socks_proxyne_ssl_cert_free__xtolne_qtokenne_sock_errorne_propset_iterateerrnone_ssl_cert_writeSSL_set_fdne_strnqdupsk_numne_unbase64memcpySSL_CTX_load_verify_locations_lxstatne_md5_streamne_propset_langne_md5_finish_asciine_buffer_destroyne_unlocklseek64ne_oom_callbackne_debug_streamne_redirect_locationne_propfind_get_requestne_mkcolne_buffer_ncreatePKCS12_parsene_sock_fullreadSSL_shutdownne_propfind_current_privateSSL_CTX_use_PrivateKey_filestrcmpne_debug_initne_movene_ssl_context_trustcertne_set_request_body_fdX509_NAME_get_entryne_md5_read_ctxXML_ErrorStringne_add_request_headerne_set_progressmemmovene_buffer_finishRAND_pseudo_bytesne_lockstore_firstX509_NAME_entry_countXML_ParseSSL_get_verify_resultne_sock_cipherne_set_localaddrne_path_has_trailing_slashinflateEndne_asctime_parsene_sock_acceptPKCS12_unpack_authsafesne_strerrorne_lockstore_destroyne_lockstore_addPEM_read_X509ERR_reason_error_stringne_getne_ssl_pkcs11_provider_pinXML_SetXmlDeclHandlerX509_dupne_buffer_snprintfX509_digestPKCS12_freeX509_STORE_CTX_get_ex_datane_add_response_body_readersk_new_nullne_set_request_flagne_uri_freeOBJ_nid2objne_rfc1123_dateMD4_Updatene_ssl_trust_default_cane_ssl_clicert_freene_get_content_typene_strcasecmpne_debug_maskX509_verify_cert_error_stringne_lockstore_removene_iaddr_reversene_unhook_create_requestERR_clear_errorne_lock_using_parentne_lock_freerecvne_snprintfne_sock_connectne_path_comparene_uri_unparsene_propset_privatene_getmodtimestrcpylibneon.so.27libc.so.1SUNW_1.23SUNW_1.22SUNW_1.1SUNW_0.7SUNWprivate_1.1SYSVABI_1.3libsocket.so.1SUNW_1.4libnsl.so.1SUNW_1.7libintl.so.8libiconv.so.2libz.solibssl.so.0.9.8libcrypto.so.0.9.8libdl.so.1libexpat.so.1/usr/local/lib(py(y )'= )(= )qN %)75)A)0'= P)(=  )Y)'= e)gm(          {^5 !3"#$%&')*+,FG=-./01(345_\67gwh8[PEdBPn]W9u21:OM@<=>?@A  B:ZC! j;EFV |GHrt rJKL p>!P>ytD{.'STUVWXY\YZ[\]^_`aCJRJ.Xbcdei(?1-7kqghijlmnopqrstuvkwxyz{|}#(  %bd)%o$}fH4 `R<zlT^8f" Q}~k=[_+x z`7m?nhM (04@DHPdltĻȻܻ  $(048<DHLPTX`dlpxļ̼мԼؼ  $(,08<@DTdhlxĽԽؽܽ 048<@HLTX\ptxľоԾܾ (,8<@HPT`dlpxȿؿܿ  ,048<LXTX\dh  $(048<@DHLPTX\`dhlptx|  (08@HP\`dhltx| $,0<@DHLPTX\dhlptx|  (,0<@DHLPX\dhp (048<@DHLPTX\`dhlptx|  ,048@DHLPT\dhlx|  ,048<@DHLPTX\`dhlptx|(,@DTlpt 4@Dt (08@hlptx| ,04<@HLTX`dlpx| $(04<@HLTX`dlpx|x7\t|pW(Do|lXl pwPQ $*, 8<LTX\,`hx|a"̻tлԻ(ػ3Wh,w@ht@|lxzȼܼp'4qHQLP[X\`p te|h O]Ƚ̽н}vy $y(,>D0Pj`dhl|2dȾ̾|ؾ x$0c4DLX\ht|gĿI̿{пDԿv$i@9D%HPiTo\`dhl-pbxs=Ks$c%  V$ (,E048<X@DHLP&`rl`pt#x|6!q*5,\)$,4<DLTXOpfH (m4H8 `L=SeY+$48TB`GlCtR C1)maf $,0~|pVo$(?<X`rpAt :$(g  $d048T<HYLP,\j`:d_hWx|bBu3.J/;8 U$M(,0_8R<HLPTXN\`dhxZ|Gt^+T MJN hhhhh $h(0h04h8pDh@`LhHPPhP@ThX0Xh` `hhphpthxhhhhhhhhph`hPh@h0h hhh$h8h`hlhth xh(|h0h8ph@`hHPhP@hX0h` hhhphxhh,h@hDhHhPhThpXh`hhPlh@th0xh |hhhhhhhh h(h0h8ph@`hHPhP@hX0h` hhhphxhh h$h<hHhXh\hp`h`dhPth@xh0h hhhhhhhh (h(,h0<h8pDh@`PhHPThP@`hX0lh` thh|hphxhhhhhhhhp h`hPh@8h0<h @hHhLhThXh\h`hdh hh(ph0xh8p|h@`hHPhP@hX0h` hhhphxhhhhhhhhph`hPh@h0h hh hhh h$h(h ,h(0h04h8p8h@`<hHP@hP@DhX0Hh` Xhhdhphhxlhphthxh|hhhhph`hPh@h0h hhhhh$hhh h($h0,h8p4h@`<hHPDhP@LhX0Ph` hhhhphxh h h h, h0 hX h hp h` hP h@ h0 h h h h h h h h h , h(0 h0L h8pX h@`d hHPl hP@x hX0 h` hh hp hx h h h h h h h hp h` hP h@$ h0 h h h h h h h h h  h(4 h0P h8pX h@`h hHPl hP@ hX0 h` hh hp hx h hhh hhhhph`(hP,h@0h04h @hDhHhTh Xh \h `h ph th( xh0 |h8 ph@ `hH PhP @hX 0h` hh hp hx h h h h h h h h ph `h Ph @h 0h h h h h $h (h 0h 4h @h( Dh0 Hh8 pLh@ `PhH PThP @XhX 0\h` `hh php thx xh |h h h h h h h ph `h Ph @h 0h h U ]ZU ڋE PEPj EE]ÐU ]ZU ڋE PEPj EE]ÐU ]ZUo ڋE PEPj EE]ÐU ]ZU/ jjEPE PEPjPEE]ÐU]ZU EEEE@tR ЋE@UBUE@¹++‰EE@EE@uEEE]ÐU]uZU< ڋE!EE jjE PEPRjgE@<@t.(,PRKЋE PREPH ,(8PRЋE PREP (<PRЋE PREP Em@Ej@PjjPE PVEPM\P@;Q0A4}'EPEPfEEt EEEPRj EPEPEPv EEE@ E@PRjX EjEP[EEtE!tME@duBM\P@;Q0A4}+Eu#jEPEEt6EEPEPEP EEuE@ :EEE]ÐU ]uZUڋE!@EEPE PEP EE2(PRCЋEPREPh EE PRj EPE PZEuPjEdE EE E+EEEjEPEP EE}1(PRЋEPREP EE tE tEEPE PEP EE1(PRЋEPREP? EE PRj EPE P2Et U BE EE E+EEEu(PRP!PEE]uÐU]ZUڋU EX EjEPEE@E@EUEPBP>EUP svUE@EPBPЋEPEUHJjPQ EUHJE@PEPAP EU@MDAxE EE@9jjЋEPjEPQЋE@PjEP8ЋE@PE@UPE@@ ]ÐU ZYDžh PEP  @dDžjPC;vg@ t@ uIBH;v@ tƋ@ t@@:@ @ OЋ@B@¹++‰@@t1@:t"@ t@ e@ t@ u9B@@ t֋@ tNj@:tB@@ t@ u+@@ t䋅@ tՋjjPPRjؾjjPPPEP[h PEP u@ddu+(PR]jPEP EEÐUZڋE @PRjͽ E U@jEPE j@PЋE PE j@Ptr(PR{u U hPBP˿ jjPFPWEPUE j@P贿E @EEEÐU@]ĉuZUȸlڋE !EEE!uGE!@t6E!@lu%PjtEj!P蠼jEPJEEj@PvEPEPEEu$PjEPEPEjEPqEt&Eu EEE܋E܉EE@u E@ E@~ E EE!U܉P E!@ t Eǀ!uUEjj@PBPQ!PXjEP2jEPDEEtEEPjEPV EEjEPE؋E؉EԸ,PEPSЋPRQEjEP8E̋PEPʺuEǀ!EePEP蜺uEǀ!>E!@ u,PEPctEPEPEPB Eԃ&jEPPE!@<@E!@ uoEugE!@ltV PjEP EEt6PEP+uPjUEǀ!E!@Ht,E@ u!Eǀ8 Eǀ!E !uE@=t E@=0uEǀ8 PjEP" EEPEPXtl PEP@uEǀ8 Eǀ@ 0($PRYjPEP EK (PjEPz EEEj EPEP躺 EЉUԋE@ty0MЋE;Bu;Jtc\EЋU;AQ|OE؃tGE@u;Eǀ8 UEЋMԉD H UEЋMԉ< @ 2(4PRYjPEP EKEǀ8 8Pj E!EEt6E@E؋UE !PBPEPEЃ E@ EEuʋE!EEt3MUEPEPB PAЃ ЋEPE@EEu͋\E!BRE8 uE< @ UԉExP@UԉE؋E!EԋM؉Ej!PEE]ċuÐU]ZU_ڋE8 u)jEPEEt EE E<PjkE!EEuIEtAE@EUE !PBPEPEЃ EE@ EEuEuE!@\tE!uEj!PE!@EEE]ÐU Z$#ڋEh 8PEPC EEE8EEPEPE P' EEuh@u{E}`hh(PBP腴 jEP(LPR߳Ѝ(PRVܳ EeE+EEEEEEJEh 8PEP] EEEu E EEEE ÐU]ZUڋEh 8PEP EE݋Eu E EEEE]ÐU]uZULjEP詵EEujEP蠵EEujEP藵EEt\MUE!jP,!P(!PVh@#EEE]uÐU]E !EE]ÐU]E!EE]ÐU Z$IE`UEj@PBPQh,P/d,PREP蕴 EE@HjEP芴EE@HE@EuE@tE,!teEjP((pPRЋ(PREPݰ j(PEuEjEPEEE ÐU]ZUڋE@t E@EEj@P袳EEEE]ÐU]ZUڋE@t EEj@PREEEE]ÐUXTZ\3ڋE @u1E @u&E PEPMEEt EE}ײEEUPEu/(PR0PEP3E5EtUEPBP耲E@@tUEj@@PBPm E @ujE P,ЋE PE U@E U@jEPXT@t:U hbPBP ЋE jj@PRVj%MU E @PBPAPر EEt&jE PEE UPEJEE @u(PR躭E(PR蝭E@Ej@P裭jjPEPVEP}Ej@P,Eu EEEEZEtUEPBPjEPEU PjDPܝЋEUPPЋE PRЋPRס]u}ÐU]E@ EE]ÐU]E@EE]ÐU]ZUoڋEj@PЋE PEU @B Ej@PĝЋE P]ÐU]ZUڋE@4tWE@<t E@E(,PR辘ЋEPREP{ UUB]ÐU]uZUEu(0PRGPPטEU4ЃU4M # ЃtbEtU8hPP u(U4DPQhPP茜 EE@EU4Ѓn]uÐU]ZUڋ@jjEPEPRh*DjPEP E j.EPEEtyjEP9EEujEP EEt.LPh衖jEPE\E@EEEE E jEP`U ;uEPEP u EEEEE]ÐU]ZUjjNEE@t5E@EE@ tE@ EE@ uEUP EUPEU PEUPEUPE@ ]ÐU]ZUڋUjjEPE PjP]ÐU]ZUڋUjjEPE PjP]ÐU]ZUOڋUjjEPE PjPr]ÐU]ZUڋUjjEPE PjP"]ÐU]ZUڋUjjEPE PjP]ÐU]ZU_ڋUjjEPE PjP]ÐU]ZUڋUjjEPE PjP2]ÐU]ZUڋUjjEPjE PP]ÐU]ZUoڋEEE@t]E@@;E u8E@@;Eu*E@@ EEj@PEUPE@ EE@u]ÐU]ZUϴڋUEPE PP( ]U]ZUڋUEPE PP ]U]ZUOڋUEPE PP ]U]ZUڋUEPE PPh ]U]ZUϳڋUEPE PP( ]U]ZUڋUEPE PP ]U]ZUOڋUEPE PP ]U ]ZUڋE PEPj EE]ÐU ]ZUϲڋE PEPj؏ EE]ÐU ]ZUڋE PEPj訏 EE]ÐU ]ZUOjjEPE PEPjpEE]ÐU]ZUڋPE PREP胒 EjEP肒ETPEP,EEu*jEP#@ tE@E+EtjEPЋEP E@jEPEEE]ÐUtZڍhPEP蘓t\h@`hlPR>hP`P衎 PVEP# EpE PREP EjE PEP E PEP|UEPRQAPREPEPjEPאddu jEP舒@ t DždjEP訐dEEÐU$]ZUฯjEPEjEP EEtEjPώE EEEjEP輏EEt7PEP蘑EEE@=EtYjPEP; u?MUEPBPAP u EUD-t 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]ÐU]ZUώڋEEE@t-E@hUBE@EE@uӋEEE]ÐUZYhPEP r u9EHPPE PPp U B!pjjEPREPE PkE EEU]ZUڍEEjjEPEPE PEPhqU MD jEPlEE]ÐU ]ZU?jjEPEPE PEPpU MD jEPalEE]ÐU ]ZUόڋxEE]ÐU]ZU츏ڋEEE EE;Eu E_E@xEE@EE@xEE@EEuUE;tEU+‰EE]ÐU]ZUߋڋEEE EE;EtEu EzE@xEE@EE@xEE@EEt UE;tEU+‰EEHEEwEU+‰EE]ÐU]ZUjEP\jEEEHEE;ErE@/uEHEE;Ev'E@/tEHEE;Ev E@/uE;ErE;EuE@/t EE+E@PEP[nEE]ÐU]ZU?jEPiEEvEUD/u EEEEE]ÐU ]ZUωڋPEPiu EP2PEPiu EEE]ÐU]ZUOjjE Pzh EEEEE@Ћ%toE@Ћ% t$E@EE@Ћ% u܋E@:u"E+EPEPlЋE PE@EE@/E@/EEEEE@/t+E@tE@EE@/t E@uEEE;EsIE@Ћ%,t,E@EE;EsE@Ћ%,uԋE@@u"E+EPEPkЋE PE@EE@[ulE@EE@]t#E;EsE@EE@]tE;ErE;EtE@;EtE@:t EHE@E8EEE@:t#E;EvEHEE@:tE;EwE;Eu EE#E@;EtEj@POfЋE P E+EPEPjЋE PEEE@u EEEE@Ћ%-t$E@EE@Ћ%-u܋E+EPEP7jЋE PE@$EEE@EE@Ћ%/t$E@EE@Ћ%/u܋E@?uyUE+EHPBPiЋE PE@tNEEE@EE@Ћ%/t$E@EE@Ћ%/u܋E@#u!UE+EHPBP)iЋE P$E@u E@?t E EE]ÐU]uZU܄ڋE@t-E@@ujE PRHc EEj/@PhEEujE PcEuEU+PBEjE PcUjDPbEUEPBPEPa uujE Prc@PE PVa EEE]uÐU]ZUσjEPLbEEEjEPcj@PYaEUBE@jPEPb uEEjPEPb uEE}jPEPfb uEEUPEP`uUB-jPEPb tPEP^`ubE@uEE/UB EEj/EPpfEEtUB UBPEP_tPEP_uUB\E@/Uj/PGdEEujEP.dEE+EPEPEPd EEE@#jEP``EEE]ÐU]ZU_ڋE @tE j@P_ЋEPE U@ B E @tE j@P_ЋEP]ÐU]ZU߀jjEP ` E @tlE j@P>_ЋEPE PEPE j@PЋEPE @tE j@P^ЋEPE @tUE PEPE j@P?ЋEPE @tE j@P^ЋEPE @@umEj@Pc^ЋEPE @tE j@P?^ЋEP&E@tEj@P^ЋEPE @@/uE j@PoЋEPڋEHU E @PBPEPAЃ EE]ÐU ]ZU>ڋEj@Py$t EE PEPEE]ÐU$]u}ZU)>ڋUE PBP!$EEuSEuPRVЋEPR(P UU(E#EEE uTEuPRЋEPR(P UU(Eh@EEh(PEP  E u E6E=tE=t E=u EEEEEEjEP"tE}PRjEP"jjPVh(PE} EEEEEE]ÐU]uZU9ڋUE@$Pj B Po EEE@$=E@$tMUE@$PB PA(P7 EU(B EHEUP$E@$PB(PEPAЃ EE} EEEP$UEP$UE@$Pj B(P EEuE@$=yEtEU+P BEEEE@;EvQEuPRLЋEPR(P UU(EJUEPB PE Pd U UBEP$+UEP$EP UEP EEE]uÐU]ZU/7ڋEvAEPE PEP EE}EE!E+EEE EE EwEE]ÐU8]ZU̸6jj EBE؋BE܋BEB EBEBEBEBEEE@[uj]EPEԋEԃtfEj@PEЋU+UMиD E EjjEPEPjEP}ЋEPjEP+EjjEPEPjEPBЋEPEEE]ÐU]E@EE]ÐU]E@U@BE@EE]ÐU ]E@EE@tE@U@BEEE]ÐU]ZU4ڋE@uPR9EEj@PREEHEEPEPE P U UBE EE]ÐU]ZUO4ڋE@u,E@EUjjEPE PBPjE@E@u-E@EUjjEPE PBPjE EEu,EHEEPRE P U UBE EE]ÐU]ZUo3ڋE@u$E@EEjPE P E%E@EEjPE P EE]ÐU$]ZU2ڋE u E EEEEPEPEPv t EEPE PgEE]ÐU ]ZUo2ڋMUjjjEPE PBPAP&EE]U]ZU2ڋE@tEj@PjEP]U]ZU1ڋEPE PEP EE}h@tӋEEE]ÐU]ZUo1ڋEPEPE Pn EE}'hEh(PBP EEEE]ÐU,]ZUظ0ڋE@uDEj @PEP EfE޸fEjjj EPE PEPEtE@uEEj@PEPK EfEfEjjjEPE PEPE%Eh(Pj# EE]ÐU]ZU/jh[EE@xE@EU(B EPE@EEE]ÐU ]ZU/ڋEUPE t E E EEUP]ÐU,]ZUظ/ڋU;t E@tU;urE ujU;uj jEP Ej @PEP EjPfE޸fEj EPEP EhU;ujjEP Ej@PEP EjPOfEfEjEPEP@ EE]ÐU]ZU-EU E @ PEPBP EE}/hEh(PBP E'jEPEE|EPjEP E@E@;tE@U @;BunM UEjj@PBPAPEPEE}>h@EjEP7Eh(PEP EYEjPjjPE PEPEPEEuEUPjEPEEE]ÐU<]ZUȸ?,E E܉EЋUEPEPBPv t.hEh(PBP Ejj G Ejj ЋEԉPEԋU؉PUԋEPEPBPp U܋EԉPE܃u EމEEމEEjPЋE PEԉEE]ÐU]ZU/+jj EEuPjjw EE@EUPE@UfBUjE PBP Njj ' EE@EUPE@ UfBUjE PBPF EEE]ÐU ]E@u E EEEE]ÐU]ZU)ڋEU @;BtE U@+BEE@u1E@EE @EUEjPBP" EJE@u1E@EE @EUEjPBP EEE]U]ZU/)ڋEj@PjEP]ÐU]ZU(jjE PZ EE} EEUPEE]U]E@EE]ÐU]EU P]ÐU]EU P]ÐU]ZU(ڋE j@PEE@PEPEUPjEPEEtEPEPyECjjjjjEPutLPhPEPEE]ÐU]uZUL'tVEuTPRЋEPR(PG UU(E5%tTEu\PR#ЋEPR(P UU(E`E j@PEEUPEuSEu`PRЋEPR(Pd UU(EEPjEP jjjjj!EP E@PEP| PEPE @t%E jj@Pjj7EPj t E @tE @PEPr jEPt EEt2EPEPjEP[ E@EEE]uÐU]E@EE]ÐU]ZU$ڋE@u E|Ej@P EE uEU@DBEHEU@;BDs E.EU@DBUE@PBHPE P EE]ÐU]ZU$ڋE@t4Ej@P. jP3 EjEPbEEE]ÐU]E(EE]ÐU ]ZUo#ڍEEUjjEPE Ph(P]ÐU]ZU#ڋE@t"Ej@P^ Ej@P E@} EEj@P EjEPEEE]ÐU ]ZU"ڋUE0H,jP'E0HEEU0EuEj,PEǀ,]ÐU ]ZU!ڋEtEjPE tEj PvE$tEj$PTE(tEj(P2EtEjPEEU(EU EU$EUEUEdt!EjdPK EǀdE0tjEPEt!EjPZEǀE@ ]ÐU8ZI u9hP| PhP8 kPhP jjlPjP VPjP EPP8jPjEPEEU]u}ZU)ڋE@ EE@EEU@BExEpMUjEPBPEPPFPGЃu E9PRЋE@@PRE P EE]u}ÐUZYڋE@u/PRPEPkEjEPEj@PЋEjPEPE PEPEPt EzMjjjPRAP8EjEPPEPJЋEjEP1hjP EEÐU ]ZUڋUjjjPPQEE]ÐUt]ZUjE P,EEEEjjEP UEPBPI PEPTEЍEPEP1EEPEPEP EEEEPEP E0@EEU0UEP,PjЋE,UE0H,UjjEPEPRjEEPRj jEPh EjEPNEt EԃEԃtE0tjEP^jEPEjEPEԉEE]ÐU]ZUڋEjPVEEtDEH jjPEPRAPEjEPEEEE]ÐUZڋPj@E@Et E jPEPE PEPEPNtEEt!EjPSEǀUPBP&SЋEUE@PPTEEtEEEEÐU<ZڋE@$u1PR PEPEuE@$u=E@ u2PRPEPE.E@t E@ u2PR{PEPFEE@t=Eu/PR0PEPEE@taEU8;B$uUE@PP"t2PRPEPE2E@jEPE@tXE@;uHE@PEP(t0PREPEPEEj@P:ЋEEU@$8 ЋE$jPEPE PEPEPtEBQE tEj PE(tE@tEj(PEj@ PwЋE E@tEj@PPЋE(E@t/PjEǀ<Eǀ4Eǀ4E@;uEjPЋPRFPj PjRR uEjP[ЋPRP" PjR jPЋPRP hjP E8PP"Pj P PjRg uEj PpЋPR P7 PjR uEj$P(ЋPR$P E@PPWjPE@PRj 5E@PPE@PRj jPPjsEEU4]ZUиE PE PptEPE PtEEEU;0sbEuZEU,EjEPPEPEP EE@EEU;0sEtjjEPEPRjcjEPEEE]ÐUd`\ZUڋBEBEBEBEBEBEBEBEBEEE0t%E @PEPAu EE4t6E<U@<Ejj<PRj EP[Eu E j@P'ЋEPRFP EPjR u E j@PЋEPRFP EPEP(jEP EPRj EUEPj @Pe EPjRP uEj PYЋEPR P# EPjR E4EPjEP EPjR uEj$PЋEPR$P EPjR EdtEjdPjEPSЋEdjEPjЋEPREP7 EPjR" EPj EP EPEPjEP"*EE8u (E ,E0hEp4xEE8EEE<u @DHjPEPREPQFPWE PEPEPxPpPhPEPGPuTXHjjPEPREPQ$PWEP(PEPjEPEEd`\ÐU]ZU ڋE@EEE@@u EE @UE@=upPEPuEEtPEPxuEEjjjEPEPEPEuxPjqdEtE܃tE؃u4Eu |PRCPFPFE $PEPYt5Eu PRPFPE؃h@jEPEPD EЋE@uh@t0Eu PRwPFPzPE U;<tAEu PR9ЋE jj<PEPRFP(EẼEȋEPjR uEj@PЋEPRFP EPEPjEPjEPЋE dPREPG E dPjR, E dPj EP U EPdP~E jdPE ǀdEPEPu EEEE̋Ẽu| |jEPEP|PRjẼt&u PR|PFPEtOEPRjB E j PjEPPЋE E ǀ<jEPjẺEEtpÐU]ZU_jj,EE@EEEt+U E@R;P~EEE@(EEuՋEtEU@(B(EUP(EU@B(EUPEU PEEE]UpZtڍE|jj|PE PhEP(xE@u,ЋEPUxPEPBP #MjjjEPRAPkpÐU<]ȉuZU̸EEEjEPDEEEjjEPEPEPEPw5EEE@EԋEԃEUЋȍ+ȋUЋȍ+ȋUԋ#BtPUЋȍ+ȋDPEPu!UЋȍ+ȋE-E@EЋUЋȍ+ȋ]E؃tEԋ@EԋEԃE؃u7EPRЋEPREP~ E؋@PRjw EPEPEEUԉPE؋@tjE ua,PEPЋPRЋEPU؋Ejj@PBPQjEu4Eu$jjEPEPRjPEPLEPEPFuEUPPEP uEUP wPEPuEUPOPEPu(PEPҋEPPEPuXPEPxu E@$.PEPTu E@$ E@$dPEP ud,PEPЋPRE؋PEPu E@ EuEU@ B#PEPu EUPjjEPEPEPEPBE@ EEEtE@@PRj~ EPjjEPEPE PEPB Ѓu,E@@PRj< EU@B E@(EEuE@ ulPjE܃t E܋@EPRE؋uE@@PRЋEPRFP Et%E@(EjEPEEEujEPE܃tjEPE@ u E EE؉EE]ȋuÐU]ZU츟ڋE EPEP1EE@t.Et E@tEE@jjEE@@PRjr EUPEUPEUPEPEPBPEP E@EEtE@ E@EEu]ÐU]ZUڋE EE@@PEPEE@ twEtoE@ @PRj EP EPEPBЃEEt3EHjjEPRAPEPWjEP]ÐU<]̉uȉ}ZUظڋE EE@@PEPEEEuEE@@PEPEE@@ PEPEE@u2E@=u%Eu PEPEEEt EE E䋃EЋ}uEHEPEPBPAPFPG PEPjEtNE@ tCE@ @t5E@ @u$EP EPEPEPBЃ E^E@ taE@ @tSE@ @tBE@ t E@ u,Et$EP EPEPEPBЃ EUE@R;Pt E@=E@EE@PRj E EE@E܋E܋U@BEPEPEPr u EjEPEE@@EE@ tE@ @t EEUEPjBP_ EEE]̋uȋ}U]ZUڋE EE@@PEPEEtjEPe]ÐU]ZUoڋEEE@EEt%E@EjEP EEEujEPjEP]ÐU]ZUڋE= u EEKE=u?EEjEPЋ PRPtE t EEEu EEEPEPEEjhhEEUPEUPjEPЋ PRu'E t E EEUP E@(EPREPF 0EPREP? 8EPREP8 @EPREP1 HEPREP* EPEPEP& EEE@tE@EE@ujjЋEPE@UPE@UPE@U PE@@E@@ ]ÐU]ZUڋTEPE PRQhjEPy]ÐU]ZU_ڋX\EPE PRQhjEP)]ÐU]ZUڋTEPEPRQE PjEP]ÐU]ZUڋX\EPEPRQE PjEP]ÐU ]ZUoڋTPEPEEtjEP6\PEPEEtjEP ]ÐU ]ZUڋE EE@tEj@PjEPJЋEP]ÐU$]uZU丌ڋE E`PEPEEE@=-t'E@=.tE@=/t E@=3uEu E[dPEP8E@/tukEE@PEPEj/@PEEt%E@tUBjEPwEPEPE@EEjPEPEPJu E@u;E@ulpPRPF$PE4E@E E@ uUEPB$PEtjEPEEE]uÐU ]ZUڋEEEjPE@tEj@P'jEP]ÐU ]ZUjj(~EEUP$tEPREPk xEPREPt |EPREP} EPREPv ]ÐU]ZUڋPEPEEtE@tEEEE]ÐU,]ZUڋEEP EEQ ER ES PRQEPEPj!EP u EQ =uER t#UPBPEEEW EV EU EEыET E‰E؋EX EY jPREPEPjUES uEǀp EVES t!UPBP*E'PjEǀp EE]ÐU]ZUOڋEUh v&MEPRAP EEUh EPE P` P Eh UEh Eh Ec Eb Ea EEыE` EEEU;l u"Eǀp PjFEjjl PEPRjUPBPE EE]ÐU]uZUڋE t.MEjj PE PRAP!JE\EPEDE8E,E EHwUDUuPRjEPEPE PRFPz]uÈ|pdXU]uZUڋEU EU  Eǀ Eǀ EU Eǀ Ej PFEUEj P PEPQjMUE PBPl P ЋEl E vAuMUE PBPL PD Ѓ EEt EEEuE EuNE PRj Eǀp UE P PEP EDEt4PRЋEPREP E EE]uÐU ]ZUڋEEEkUPBP EEtPEPuQMUjE PL PD Ѓ E&Ep }tt␐tِUPBPEOMUEPE PL PD Ѓ EEv$UPBP5EUPBPEEPEPPjUjjj8Pj P<EEt6PR{ЋEPREP E6Eǀ@ 9Eǀp MUEPE PL PD Ѓ EEǀp EU\ vE\ ؃ E EEEU\ EPE PP P E\ UE\ E\ t EaE EE E+EELEu E9_E)EvEPE PEP E+jEPȃw@UDUEPjE P EEuE E+E PRj E@+E U+ЉUE@E Eǀp Eu EaEPE PEP+ EHEPE PEP E,Ep w\UDUEE]CLTU ]ZU_ڋE EE@;Eu PjEǀp E@ tEj P*Eǀ@ Eǀh Eǀ\ jjj ЋEl ]ÐU]ZUڋEEMUEPE PL PH Ѓ EE]ÐU]ZU?jht E PREP   jjEPRQEPEUD EUL jEP&ЋEPEUPEU H jEPȋ EPRQ EEE]ÐU]ZUOڋE@ tEj PIM EPRAPO jEP]ÐU]ZUڋ$ ( PREt$ EPR ]ÐU]EE]ÐU]EE]ÐU]]ÐU]]ÐU]]ÐU]ZU4 8 PR]E4 < PR=E4 @ PRE4 D PRE4 H PRݾE4 L PR轾Ex4 P PR衾E\4 T PR腾jjE PEPREPjEGE HwUDU⋓\ jjEPEPREP!EE]?_U ]ZU_ڋ` E PREP EE]ÐU]ZUjEP茽jP聾E\ jjEPEPREP?jEP葾EE]ÐU4ZڍB@B@B@B@+RPEP t34 d PR0PPEP EjPEP讽 t24 h PR׻PPEP+ E?t,4 l PR虻PEPEB@jEP.%B@PEPP] jEPͼ%B@PEPP +RPEP( t44 p PRAPPEP EjPEP辻 t24 t PRPPEP; EOt,4 x PR詹PEPEt,4 | PRqPEP|E4 PR=PEPHE4 PRPEPE} k뽐g=t몐B@B@B@E jE PHu(DžB@&DžB@PE PЋPRP: jEP襹%B@B@PEPP蹷 E%B@E%B@+RPEP覷 t24 PR迶PPEP E'jPEP> t24 PRgPPEP Et,4 PR)PEP4Et@4 PRPPEP8 ELDžDžjPEP* t24 PRcPPEP EV4 PR!PEP,EHwŸD⋅PPEPu t14 PR螴PPEP E EEMm]U]ZU4 PRE4 PREx4 PRE\4 PRųjjE PEPREPEGE Hw UDU⋓\ jjEPEPREPaEE]?[U,ZڍB@B@E%B@E%B@E u jPPв (PEPhjPP覲 EtEjEP%PEPP\ B@E u`jEP詳%PEPP B@+RPEP t54 d PRPPEPr EjPEP蚲 t24 PRðPPEP EFZt04 PR腰PPEP EEEÐU ]ZUڋE u'E PEPEPEPEPEPE*EPEPEPEPE PEPEE]U]ZU?ڋE t_EEPE P諼EE@E0|UEjPBP辯 EtjEP訰!E@| EE@EE]ÐU]ZUڋE@EE@ЁE@ ЈUE@ЁE@ ЈUE@ЁE@ ЈUE@ЁE@ ЈUE@E@ ЈUE@E@ ЈUE@E%EjEP#E PEP#]ÐUxZ|IڍEPEPjjjEPEPE P׺UEPBPlUjjjEPBPE P觺UEPBP<UjjjEPBPE PwxÐU<Z@jEPӮEȋEȃ} E EȍEEjEPEЋEЃuEȃ~EEE;E}-EE@jPйUÜBE@E̋E;E|ӋẼ}UU̸BE@E̋Ẽ|㍅DPEP jjjDPEPRPUЍDPBP jjjDPEPRjjEP芭 EPE PEP jEP舭EEE;E}1EE@M̋UЈJM̋UиDJE@E̋E;E|jhP贸EȍEPEPhP覸 hPEP裸jjEPӬ EPE PEP jEPA<ÐU$Z-ڋ E EjEPeEjEPTEE@ t E@u ESE EEE䋃 PEX%XE``Eh%hEppE䉅x%xE䉅E쉅%E쉅}EMEjEPEPjjRQVWPPjjPxPpPhP`PXPjjjjjjjjPPhP蘩xEE EE@tEj@P EPP ЋEPEj\@ P~uEj/@ P\t$E@ E+EE@ E@ jP MUjjPPBPAPE@EEEEE쉅 PX%X``%E%EE%EE䉅%E䉅%  (%(008%8@@E쉅H%HEuEUEjjjjjjjjjjPRQVWHPjj@P8P0P(P PPjjPPPPPPjjPPjjjjjj`PXPjjjjjjjjPPhPEE@EU=r ELUEPEPPD EEEUPPP EEE=}%UjPP EEE=}%UjPP蹤 EEE%EEPP胯ЋEPE@TE@tEj@PSE@,E@HD􋕘EEyU]ZUjj^EE@jEPcЋEP jE PMЋEPEEE]ÐU]ZUڋE@ tEj@ P.E@tEj@PE@tEj@PjEP]ÐU]ZUڋEu E_E uE@u E@E@$E PEPGEEt EjEP%EE]ÐU]ZUOڋEt E@u E8Ej@P誢EEj@P֢E@EEE]ÐU]EU PEUP]U]EU PEUP ]U]E@PB P'm jEPwEEE]U]ZUڋEj@(PimE@$tE@$PEPCEj@P:zEj@P9zEj@ PmEj@PnjEPl]ÐU]ZUڋEPE PEPz EEt$jjEPEPEPEPzEEPEPEPz EjEPzEEE]ÐU]ZUOڋEPE PEP6z EU jPB Pkk EPEPEPo EjEP&zEEE]ÐU]EU PEUPEUP ]ÐU ]ZUjj>jEEU PE@ EPREPu ]ÐU]uZU,ڋ PEPduEE@ jPEP=j E@EEtdEj@P;wE EP jPB(PQEPVEPijEPYjE@EEu jPEPi ]uU ]ZU?jj hEE@t E@UPE@EU@BEU PEUP]ÐU ]ZUڋEt>E@EE tEj@PwjEPRiEEEu‹]ÐU ]ZUOڋ PEPsEEj@PKjEPh]ÐU]ZUڋEj@PjEPh]ÐU ]ZUjjgEE]ÐU ]EU@BE@tE@@E EEEE]ÐU ]E@U@BE@tE@@E EEEE]ÐU]ZUڋ EPRE P#r  EPRE Pr  EPRE P%r ]ÐU ]ZUOڋE@EEt3EPE @(PB(P@hu&E@EEu͋UE PBP]ÐU]ZUχڋE@EEt7UE PBPpuE@EE@EEuEE]ÐU0]ZUԸOڋ PEPpE BEBEBEB EBEBEBEEu)jE P9tE؋E؃u jEP)gЍEPRoE@@E܋E܃E܋@@EE܋@PEPotE܋@@uE܋PEPBPsuE܋PEPBPju<$ E܋PE܋@jj@PB(PQj jcE܋@PEPE܋@E܋E܃@E؉EjEPn]ÐU]ZU𸟅ڋ PEPnEEu'E@@EEEEuEE@@PE Prt*( E@@(PRj zb EE@@PE Peiu%, E@@(PRj 5b ELE@@u=EPE PBPrt"0 E@@(PRj a EEtE@PEPE@EE]U]ZU/ڋE PEP]ÐU ]ZUڋE@EEtE@;E uE@EEuE@tUE@RPEU@BE@tUE@RPjEP7b]ÐU]ZU?jj4aEEPEPknEj@(PaЋEP(EU@BEU@ B EU@$B$E@,tEj@,PRaЋEP,EU@0B0EEE]ÐU]ZUjj4`EE@E@ E@$E@0EEE]ÐU]ZUjEPkE@,tEj@,P`E@,E@(tEj@(P`E@(]U]ZUjEPnjEP>`]ÐU]ZU?ڋ8 E @PREPa E< @ E jj@(PRQEP_E @PEPcjEPaEEujEP>c@ tEjEPaaEEE]ÐU ]ZUoڋD PEPw`u E>EPDtjEP_EEE]ÐU]ZUڋH PEP_u EfL jPEPc u>Ej jPc EE=t E=u EEE EE]U]ZU/ڋEEjEPlET PEPlEE@(t[Et/E@ t$MUjjEPE PjBPAЃ"MUjjjE PEPBPAЃ*Et MUjjEPE PjBPAЃ\ E @PRj [ ]ÐU ]ZU/~E@ E@$E@$` EPRj >[ jEPHЋEPE@uEd EPRj Z jEPЋEP0E@0u E^TjEPjЋEP,:jEPjЋEP("E wdUD܋UEE]O11/?U]ZU|ڋEEEj@PSjEE@ @PE PEP> EE]U ]Eu E 2E2uE = E= uE = E= uEPEP_EEuijEPS@ t EJEu8x PRMNЋE @(PREPGN E E U؉P0jEP^jEPvOjEPHQjEPj\EEE]uÐU]uZUE@tEj@P>Ej@PNEj@PNE@ tEj@ Pi>jEP[>]ÐU4]ZUи__ڋ8BE؋BE܋BEB EBEBEBEBEB EE@EԋEԃ }EE@@HЍME@@ʍDЉEEF} EdEE@@HЍME@@ʍDωEE@@HЍME@@ʍDЉEE@@HЍME@@ʍDЉEE@@HЍME@@ ʍDЉE܋E@@ HЍME@@ ʍDЉEjEPB +BEE]ÐU]ZU]ڋE t"E@@@j@P ЋE PEt"E@@@j@PЋEP]ÐUTZX9]EEEt E@E <EEEjjjjjUE PKEEEjEPKU;EwEPEPKEE@uzEj@PXE܋EtEujEP:ЋEPjEP;ЋEPREP. EjEP:EE@E@@uE@@PjBE1E@@uE@@PjBEEE܃tIh\PEP< PEP39EEjEP2=LE@@PRh8 E@Ej@PE܍EPEPCEăt{EtsEtEujEPa9ЋEPEEt>jjEP9 EĉEEEẺEEPEPCEjEPCjEP09E@EjEP;IU;} EPPEP5IE jE P+IEjj=EEE؉EԋEPj EP I E؋E؃}݋Eԃ}jEP8EEPEPHEjEPHPEPtjEPJ8EEtEj@P7ЋEPM܋E܋PEPBPAP EjEP7Et dE hE䋓ljjEPEPRh.6Et E EEEETÐU ]ZUXjE PGЋEPjE PGЋEPE@ EU PE@EPE Pj EEE]ÐU0]ԉuZUظW?GPE PEGEjEPDGEjE PCGEjE PBGEEEt EEjjEPEPRh4EE&E~ E EE EEE~ E EE EEE􋀼 E܋E܋P E܉PjEPiFjjPEPVh4Eu}0 }t닐  Bq} N_AU؍DU=E􋀼 EEP UEPE􋀼jj@ PEPRh@3EE]ԋuäU ]ZU丟UjEP|DEEEEPRh2 EE;Ejj3EEPEP1DjPDPEPT@%t6lEPRAPD lE@PBPDEuEEEEEUP EEE@EE;EEEEE]ÐU<]ȉuZU̸\TڋE@EE@ EE tQjE PDEЋPR}1jEPCPVEPo1 EjjEP3 EPEP<jEPEPY EjEP<E}-PR0PEP0E|E~ EEEu ESEPEPEEt,MUEPEPPЃ uEEEE]ȋuÐU]ZU츿Rjj$1EE@EU@BE@ tEj@ P 1ЋEP UE@PBPE@EE@U@BE@EE@U@BEEE]U,]؉uZUܸQjEPiAEEHE6EEEjEPAEEtjEPv@E EEEE~~EjP/EEjP.EEE;E}?UEuMEPEP @ȋUEHE@EE;E|Ph8.MUjjEPEPEPPЃEtjEPj/jEP\/EtsEEPh-E@EE@U@BE@EE@U@BEU @BEU@BE,EǀPhJ-EE]؋uÐU]ZUOjE PЋE]ÐU]ZUoOjj-EEup[?jPc?ЋEPE@UPBPK?Ejjjhj @P??UPjBP7? oEu43?jP>ЋEPEjjjjj,@P>2?jP>ЋEPEjjjjj,@P>EEE]ÐU ]ZU?NڋEjjjjj @Pa>E)EtE%EE E E tЋUjjjEPj BP>]U]ZUMڋUjEPBP> EEuUE PBP>EEu EEEEE]ÐU]uZU,MڋE tEjj@P\= EtujEP=PFP=EtUjEPBP= EE]uÐU]ZULڋEj@PI=E@tEj@P==jEP+]ÐU(]܉uZULڋEEE PhP)E@ptE@E EEUPEǀE@ UEPEPBP< E@tEj@PT<E@Et9PR(Ej@P(PVEP( 7PR}(Ej@P(PVEPl( EFEj@P%EjEP;EEu8jEP;EEt;EEPEP;EEtjEPT9u0,PR'PEP'EEt~jEP9ЋE@PR;;EEtjEP2;Et/8PR4'PEP7'EjEPEEtjEP:EPEPEP t8<EPRh& jEP*EEU䉐E@t]jEP61EEU;PuUEPBPE:t'Ej@P9jEP1:ЋEPjEP:ЋEPEE]܋uÐU]EEE]ÐU]EEE]ÐU]E@ EE]ÐU]E@EE]ÐU ]ZUGڋEj@PY9EE @PEPS9]ÐU ]ZUGڋEj@P9EjEP9]ÐU(]ZUܸOGjEP8EEEuE?EjEP5U;EEPEP5EEj@P8tjEP8EEuEjEPz5U;}PEuHEPEPk5EjEP:8EE@EjEP25U;}EtdPEP05E@EjEP4U;} E hPEP4EEE]ÐU(]ZUܸEڋlPEP7EEu EjEPq7EjEPp7Eu+ETjjEPEPjEPM7EEtEujEP3EEPEP7Ejj$D#EEUPE@Et E~EPEP(ЋEP UEPBPjEP%3EEz*E*E%#uCE%qu6jj$"EjEPЋEP EUPEEjEP2EE]U ]E@u E EEEE]ÐU]ZUCڋUjjEPEPE PBP5t)EEPEP5t?v)jEP1jEP1Phi EIEj@P1UEPBPCEUPE@E@EE]ÐU]EEE]ÐU]E@ EE]ÐU]uZULBڋPEP$4EEuEjjjjjEPU4EjEP4Eu5'jP(PVh' 'E jj ЋEPREE]uÐU]ZUoAڋPE PG3EEu EWE@PEP3tc'jEP(3E#jEP3t EEE]ÐU]ZU@ڋEj@Py/E@ tEj@ P"E@tEj@PAjEP3]ÐU ]ZU?@ڋUE @PBPd1EE]ÐU]ZU?ڍEPEPj*EEu EaEEEPEPj2 EjEPjEu%EjjЋEPREE]ÐU]ZU??ڋEj@P1EjEPEEEUEPBP|1EPEP'EjEPEEE]ÐUd]uZU>ڋu,1jjEPEPRFP$1tEt$EEE EEED ~EDWEED0EEUBE@EED ~EDWEED0EEUBE@E:UBE@EE@EEGUBEE]uÐU ]ZUO=ڋPRQ/ ///EE]ÐU]]UWVS[<[^_UWVS[<[^_0123456789ABCDEFABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @   @ @ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0x00SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecneon 0.29.4: Library build, IPv6, Expat 2.0.1, zlib 1.2.5, OpenSSL 0.9.8o 01 Jun 2010.KGS!@#$%Aborted request (%d): %s neon%s: connection was closed by proxy server%s: connection was closed by server%s: connection timed out%s: %s%sPremature EOF in request body fileFailed reading request body file: %soffset invalid%lldCould not seek to offset %s of request body file: %sSending request body: Could not send request bodyBody block (%d bytes): [%.*s] Request body provider failed with %d Connection: TE, close Keep-Alive: Connection: TE, Keep-Alive Keep-Alive: Proxy-Connection: Keep-Alive Connection: TE Connection: TE TE: trailers Host: HEAD://Content-Length: Running destroy hooks. Request ends. Could not read chunk size[chunk] < %sCould not parse chunk sizeGot chunk size: %lu Reading %u bytes of response body. Got EOF. Could not read response bodyGot %d bytes. Read block (%d bytes): [%.*s] Could not read chunk delimiterChunk delimiter was invalid HTTP/1.1 Expect: 100-continue Running pre_send hooks Sending request headers: %sAuthorization: Could not read status line[status-line] < %sICY [status-line] ICY protocol; code %d Could not parse response status lineCould not read interim response headers[discard] < %sSending request-line and headers: Could not send requestRequest sent; retry is %d. Interim %d response. Error reading response headers[hdr] %sEnd of headers. [cont] %sResponse header too long, Header Name: [%s], Value: [%s] Response exceeded maximum number of header fieldsDoing DNS lookup on %s... Could not resolve hostname `%s': %sreq: Closing connection for non-idempotent request. Persistent connection timed out, retrying. %d %sconnection closekeep-aliveproxy-connectionreq: Using persistent connection for HTTP/1.0 proxy requiring conn-auth hack. transfer-encodingidentitychunkedUnknown transfer-coding in responsecontent-lengthInvalid Content-Length in responseRunning post_headers hooks Running post_send hooks Could not write to file: %sRequest ends, status %d class %dxx, error line: %s %s:%uCONNECTCould not create SSL connection through proxy server: %sCould not create socketreq: Connecting to %s:%u Could not connect to serverCould not connect to proxy serverCould not find IPv4 address of hostname %s for SOCKS v4 proxyCould not establish connection from SOCKS proxy (%s:%u): %ssess: Destroying session. :%uHTTP session to %s://%s:%d begins. Unknown error.httpsssl: SNI %s by default. enableddisabledUser-Agent: neon/0.29.4 sess: Closing connection. sess: Connection closed. sess: Not closing closed connection. neon[invalid date]Server certificate verification failed: , ssl: Match common name '%s' against '%s' *.ssl: Denying wildcard match for numeric IP address. certificate is not yet validcertificate has expiredcertificate issued for a different hostnameissuer is not trustedbad certificate chaincertificate has been revokedHEADLast-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-collectionUnknown error %dhttphttps/./..//.//./..//.....%%%02x://@:%d?#%3s, %02d %3s %4d %02d:%02d:%02d GMT%04d-%02d-%02dT%02d:%02d:%lf+%02d:%02d%04d-%02d-%02dT%02d:%02d:%lf-%02d:%02d%04d-%02d-%02dT%02d:%02d:%lfZ%10s %2d-%3s-%2d %2d:%2d:%2d GMT%3s %3s %2d %2d:%2d:%2d %4dHTTP/No 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 structureneonrejected %s challengemissing realm in Basic challenge:Basic /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: %sBasicDigestNTLMLocation://neonCould not parse redirect destination URLhttp://www.webdav.org/neon/hooks/http-redirectID1: %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-Encodingneon${prefix}/share/localeneonfailureconnection 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 proxyNTLMSSP%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 Status line: %s neonInvalid HTTP status line in status element at line %d of response: Status line was: %sDecoded status line: %s %d: -> /%sDAV:multistatusresponseresponsedescriptionhrefpropstatpropstatusxmlnsxmlns:-.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 %sContent-Typeapplication/xml%s < xmlns=""/> PROPPATCH setremove<"> neonResponse exceeds maximum property count =''Got property #%d: {%s}%s. xml:langProperty language is %s PROPFIND http://webdav.org/neon/hooks/webdav-lockingIf: <> (<>) Locked parent, %s on %s Has child: %s Has direct lock: %s Is child of: %s UNLOCKLock-Token<%s>infinityinfiniteSecond-End of response for %s Got depth: %s Got timeout: %s lk_startelm: %s => %d neonLOCK response missing Lock-Token header>lk_startelm: Finding token %s TimeoutInfiniteSecond-%ldLOCK Content-Typeapplication/xmlResponse missing activelock for %sIf(<%s>)No activelock for <%s> returned in LOCK refresh responseDAV:lockdiscoveryactivelockproplockscopelocktypedepthownertimeoutlocktokenlockinfowriteexclusivesharedhrefneonCould not parse response: %stextxmlapplication+xml grantdeny </> <> ACLContent-Typeapplication/xml grantdeny </> <> ACLContent-Typeapplication/xmlCould not convert DirectoryString type %d , ???iPAddress name with unsupported address type (length %d), skipped. Identity match for '%s': %s goodbadssl: Verify callback @ %d => %d ssl: Unhandled verification error %d -> %s ssl: Verify failures |= %d => %d Chain depth: %d Cert #%d: neonCertificate verification error: %sServer certificate was missing commonName attribute in subject nameCalling client certificate provider... Supplying client certificate. No client certificate supplied. Doing SSL negotiation. SSL handshake failed, client certificate was requested: %sSSL handshake failed: %sSSL server did not present certificateServer certificate changed: connection intercepted?SSL certificate checks failed: %s rbDecrypted private key/cert are not matched.rd2i_X509_fp failed: %s w.>N^n~؇ Θޘ\~$Hd~p.>N؈^<nTԉ~Ι@ ޙ(8Td.Ȋ>8TXd|N܋^n~ Hp،0<ΚX\|ޚ̍(T\h.lt> 0Nl~@d^n~Λޛ8.P>Nl^n~(DHl|Μޜđԑ .>N^4<Lxn|~ܓΝޝt~$(0@Hd|~.Ȕ>̔ؔܔN(08^n@L~dhXltxΞ~ޞXրlt؁|؅.>N^n~Ė,<ΟPt\ޟ.>N^n~Πޠԗܗ.>N ^n~8HHΡXޡh.>N^n~΢ޢhxܘ.>N^n~Σޣ@DLP.Tt>ԙ(LК,0SX`hNԛ؛|ě8<HPX\|8ĝȝ(,D`dĞ̞Ԟ8Xt|^nȟ~$`p@0Τޤ,XT`dlppȡ ,Ld(0@P`p4HPtȤ.Ф>0`0N^@Hn~`hpإ<hȦ$Llħ@\ШبΥޥ\D0.>ĩةN^8nP~TX\`dlΦަp̪Ԫܪ(0dȫ8.`d>` N ^n@~ t̬Χާ "&$4DH`PTdl (,DLtx|ȮP `* 'Ԯ.>N,X\`hl^p..0n~pȯЯܯ,Ψ@X`ިpCC?@@>;̰@0@B 0԰<hp|бԱܱز.8@H\htгD$0D\htе$Ptܶ(Llp|>N^n~ܷΩީd.>N^LT,n~X|Ϊ̸ު\.>iN^cn~Ϋޫȹ.>N8^n`~άެ.>N^n~έޭn){)()))A)Y))) ~ <~())P= +p `P`-``m`ooioo,ioo (u"o`o``>H`@x Е@$, 8x@z@x0{p| |, <D0@@L`X̠t|ttttt2tĪ   0 <2D P \dltD P PpP=,iijm u (   ~<~X~ !"#<~ ~0Tր7؁RxoWxhB"t : P0n  E X~82pM~j  n \} @ 4I~ }\  ,7@X~O]> bP> \> jЮF p   ,؇$ `Y l  @ \~$$H(d~p 8 *0؈6 <(Bй6 T<ZT,`@flԉrx~_  |   (  8Td$$+ 2Ȋ 9@ G N8Up5 cTjX qdx|' | `/ ܋( ( H(p` $  !(،/= C J QX0 _<f | zX \ |4`/ ̍$8(,T\ hlt P   $0!l~*@$1d8?F4MM Zah<oZ }`Z  8Pl$ @<7,@\~S z pt ( ` -D3N @H$FlL|RX ^dr v|đԑ (4<L,x|,5`  7,@X~]> b0> \p> jF $ܓt~P  ,0 R ,$2(80>@DHJd0|~P V\bhȔn̔ tؔzܔ    (y 08@ L dhX l tx7,@t~"P / 9"l Gp" UX7,@~[dlitn|t 6  07i <l9z ؅7,@؁Ė( ,$((< !P$'t$-\$3$97,@?7,@X~JSQT 7,@`k7,@q]r> br> \0s> jpsF }sT 00u @x xT ԗܗ@z 0{  |L p|[ |.        8# H ) H/ X6 0\ B u P  _ ( g h n $u 0| ܘ7,@X~H      Л   ` B $ @ R ,D L P  P" T ( t. ` ; A & P V 0 g (m ԙ,s (y ($ L4, $ К   $  , 0( @ S  X` h ԛ ؛  |        ě       & 3 / 5 @X L  R 8X < _ Hf Pm Xt \ { |< < D+8H  ĝ @ ȝ@    ( 8 , D ` d  $     Ğ ̞' Ԟ . 5  < C  J  Q 8 X X_ ` u ti |p p |    @   ȟ4   0[ ~ 7 $ ,, X(7,@S b ^ p T  ` d l, pg  /7,@X~ )  6 ȡ(; @  E , J LO o ^ d$c ,i L(o   ~ ( 0 @ P ` p    @ 4 0  0= 4^H P$ t4   Ȥ Фt(   `R 07,@X~6 @H7,@X~ 7,@X~,7 >`ChHpMRW \aإE J hG mfy rp i  <,{h$ Ȧ $ $(L ^l $ħ,(P (0  @\,( P Ш<ب#7,@X~ -  pB . %+@1Du7,@\7@ KPx U c oĩuة{X 8h  TX\`d@ @  <lp7,@X~0@J  ̪ Ԫܪ < $( 041@  @d8U`  ,F  V  `ȫ c L f,l$r Y 8(` dt$̬  7,@X~e ] " & $4D i H`PT #d)l/5  L;AG% M SY_e( ,k@ t0E P  } $ DL( tx|  ' 'k `* Ȯ Ԯ@7,@X~p._ ,,. E X\`hl /t @0l 0[ +2} 7=pCIOUȯ[Я xܯa: m s ;  ; <I ,@>` > ? 0@` @` @ @X`(R   B pCG C: { % E 8? F M̰T [0 b԰Li<,phwp ~| $бԱܱ97,@X~Jx 6  L ز 7,@X~pN @8@@ H\ h tE  J $г($(!D<   #7,@X~R @@ $ 0,D \ 1h t md$iе$60$,kP$t(@'ܶ(<$B($5L  lHp N|  3 7,@X~Ta0W 6 d,rXB ܷ-[ Yd$] XDLT, b c= lX$|,$`e4 ̸ f  $D@h "iG 6\(< B$HȹO<V8(]`4d$ks ~,7,@dVbP  { x ` b 03x 06 B@K? XfwnA  / $- F    *БE 8 L Ym m tE KO x ` ; 0.2 PI Of PS  !o 7J fpx {0#  0A 3 P pM 0 2 R^ kx u1I N  @ `r   Pm}  | !9V@F mF @* @ L Pu `, P H  I ?D + @W_ qp n  { )   P|W " ( > P X ` X t |        & w  Pc !k# '!H 7!E!P  b!}!p !- !!pi !5 !!Ep !!0w5 " "= ,"< 8"O J"01| ]"n" Wv "`F "" O "pna ""r "в "# +#D <# J#Q# W ^#pP U Ph h#P s#P }# ##P #1o ###p@ #P $$$$1$P I$U$Q `$l$v$a $@m !$p# ${ $$w $zB $`v %@2k %x *%8f 9%- F%` W%@ l%x%PO %%tZ % %Pk? %%@ %%%& "&pl 2&r E&0,n Q&PF i&x&&/ &&P &B &Uo &''.'6' ?'V'r k'uY y'!> ' J '0R4 ''' 'p 'F ''S (R4 (` #( 4(F G(M(`18 a( o r((Џ (PH1 (& (((m *  ((@YN )0V ))")@  0) J) Y)a)) ) )@.) )ZB )n )**.*8*@*G*4 Y* t f*o z***Ou */ *0h **F *PNr * +l )+Ѕ: 6+QO H+pw _+`>t p+0J +++7 + +0B + :t +++~ + ,p ,&,?,`5p +*-e V,O h,@ ,@ ,% ,0 ,J3 ,,,& ---F )-a#0-I-0  f-o-0oc ~-@N F(---- -n2 -.%. =.D.L.U.^.g.V {..... . .pRO .x .0@ /#/3/@ E/k U/c/k/ u// ///@ //p@ / /p9B /P/ 0 0` 0#030s 0H0Pv0 U0 t i0@]z 0 5 0& 0*p 0- 0r 00 11d '1?1pF N1 e1@z} v1}1 1p 1D 11y h11$k 11&} 112"2`TE %2` 52`mO I2 !E [29 e2m2N2 }22l 2` 2@ 2 u 22Ѓy 23@9 383?3m\ M3pH 1U3sM n3v Ѐ  33SG 33M 3i 33p!F 3 41E 434=4S4t b4 s40i 44 M' 4 ` 44, 41E 466 55)5P 05 K5a5j5 X }55550k 55& 5= 56`G 66`sN 76Z K6 _6p. m6{667 6P 60@ 663 68 77P-k 7 *7C :7E I7 \7  j7.libs/libneon.so.27.2.4crti.svalues-Xa.cDdata.dataBbss.bssDrodata.rodatane_request.cfstatlstat_xmknodhash_and_loweraborted.L87.L102.L103.L110.L117.L124.L128notify_statusget_privatebody_string_sendbody_fd_send.L_cseg0.L334.L347.L_cseg1.L386.L391.L393send_request_body.L412.L443.L456.L476add_fixed_headers.L509.L522.L535.L542.L551.L552.L590.L599set_body_length.L635.L726get_response_header_hvremove_response_headerfree_response_headers.L977.L1018ne_read_response_block.L1054.L1062.L1074.L1079.L1119.L1131.L1145.L1151.L1159.L1180.L1191build_request.L1284.L1285.L1295.L1300dump_request.L1334.L1351strip_eolread_status_line.L1433.L1446.L1460.L1472.L1484discard_headers.L1517.L1525send_request.L1545open_connection.L1563.L1597.L1608read_message_header.L1662.L1666.L1675.L1730.L1747add_response_header.L1783read_response_headers.L1906.L1921lookup_host.L1935.L1946.L1978.L1993.L2025.L2036.L2051.L2056.L2069.L2112.L2121.L2159.L2161.L2168.L2180.L2191.L_cseg2.L2215.L2235.L2305.L2384.L2472proxy_tunnel.L2505.L2507.L2523resolve_firstresolve_nextdo_connect.L2597.L2642.L2666.L2671socks_origin_lookup.L2742.L2856Dpicdata.picdatane_session.cdestroy_hooksfree_hostinfofree_proxies.L100set_hostport.L214set_hostinfo.L240.L242.L245.L290.L292.L287progress_notifier.L546.L547.L640.L670.L677.L769.L770.L843.L863.L886.L890.L912add_hookremove_hookne_basic.c.L59.L62.L113.L114.L120dispatch_to_fd.L166.L174.L182get_range_common.L231.L233.L235.L236.L247.L267.L308.L315.L354.L381.L414.L422.L449.L454.L461.L465.L470parse_dav_header.L518.L558.L561.L624.L479.L631.L639copy_or_move.L652.L654.L684.L691.L699.L701.L696.L733.L759.L764ne_string.ccount_concatdo_concatqappend_countquoted_append.L735ne_uri.c.L83.L92.L288merge_pathsremove_dot_segments.L452.L464.L488.L501.L503.L549copy_authority.L852.L950.L1291.L1302.L1310.L1325.L1341.L1352ne_dates.c.L29.L40.L45.L58.L71.L107.L146.L149.L203.L206ne_alloc.cne_md5.cmd5_init_ctxne_utils.c.L119ne_socket.cseed_ssl_prng.L67raw_pollreadable_rawread_raw.L367.L368write_rawwritev_rawwritev_dummyreadable_osslerror_ossl.L567.L601.L608read_osslwrite_ossl.L848.L904.L985.L1053raw_connecttimed_connectconnect_socketdo_bind.L1609.L1637.L1658.L1680ne_auth.cfree_domainsclean_sessionget_cnonceget_credentials.L176.L177challenge_errorbasic_challenge.L198.L216request_basic.L232parse_domain.L260.L273.L281request_ntlm.L335ntlm_challenge.L356digest_challenge.L419.L432.L446.L459.L474.L562.L603.L611.L620inside_domain.L636.L664request_digest.L676.L679.L710.L752.L754.L744.L745.L746.L747.L748.L749.L755.L763.L774.L775.L776tokenize.L864verify_digest_response.L961.L974.L1002.L1014.L1026.L1038.L1066.L1082.L1095.L1118.L1172.L1174.L1169.L1182.L1196insert_challenge.L1288auth_challenge.L1372.L1378.L1389.L1391.L1413.L1421.L1425.L1437.L1449.L1461.L1466.L1474.L1481.L1493.L1549.L1584.L1592.L1610.L1615ah_create.L1673ah_pre_send.L1714.L1723ah_post_send.L13.L1770.L1766.L1813ah_destroyfree_authauth_register.L1923.L11.L16ne_redirect.c.L38.L57.L93.L94free_redirect.L159ne_compress.cparse_header.L19.L30.L36.L55.L63process_footer.L82.L105.L112set_zlib_error.L141.L154.L157.L160.L163.L169do_inflate.L204.L237.L250gz_reader.L282.L306.L327.L343.L345.L353gz_pre_send.L490gz_acceptor.L527ne_i18n.c.L20ne_pkcs11.cne_socks.cv5fail.L26.L27.L31.L35.L39.L43.L47.L51sofail.L75v5_proxy.L135.L168.L180.L191.L202.L213.L275.L298.L309.L342v4fail.L378.L382.L390v4_proxy.L420ne_ntlm.cne_input_ntlmsetup_des_keycalc_respmkhashne_output_ntlm.L193.L217.L263ne_207.ccan_handlecdata_207start_elementend_element.L249.L251.L252start_responsehandle_error.L423.L425.L426.L427.L435end_responseend_propstat.L473.L480.L507ne_xml.cdecl_handlerdeclare_nspaces.L79.L88expand_qname.L162ne_xml_resolve_nspace.L184destroy_elementchar_data.L350.L403.L413entity_declaration.L428.L524.L604.L617.L619.L626.L633.L642.L645.L719ne_props.cchardatane_simple_propfindld_startelmlk_endelm.L64.L65set_body.L131.L126.L127.L132.L148.L161.L173.L188.L190.L192.L201.L212.L223.L224.L225pnamecmpfindpropstart_propstat.L540.L541.L612.L613.L673.L688free_propset.L909.L918.L924.L989ne_locks.clk_create.L37lk_pre_send.L66.L68.L76insert_lockfree_listlk_destroysubmit_lock.L284.L332.L379.L392.L406.L587.L589parse_depth.L618parse_timeout.L655.L666discover_resultsend_element_common.L771.L786end_element_ldisccan_acceptlk_cdatald_cdatalk_startelm.L935.L959.L960.L976ld_createld_destroyadd_timeout_header.L1110.L1111.L1124.L1140.L1153.L1155.L1150.L1156.L1164.L1165.L1170.L1173.L1258.L1309.L1337ne_xmlreq.cparse_errormedia_type_is_xml.L95.L98ne_oldacl.cacl_body.L32.L34.L49.L50.L54.L80.L89.L111.L137.L138ne_acl3744.c.L53.L61.L101.L155.L164.L179.L186ne_openssl.cappend_dirstringdup_ia5string.L140asn1time_to_timetcheck_identity.L376.L506.L508populate_certverify_callback.L583.L592make_chain.L606check_certificate.L671.L672dup_client_certprovide_client_cert.L804.L828.L840.L1036.L1067.L1115.L1141.L1166find_friendly_name.L1349.L1479.L1520.L1538.L1555crtn.s.XAKk4Dps2SvMF33.element_map_END__finine__ssl_init.XAKk4Dps2SvMFu3.map207.XAKk4Dpq2SvM1D3.ascii_tolower.XAKk4Dpr2SvM1J3.rfc1123_weekdays.XAKk4Dpq2SvM1G3.uri_chars.XAKk4Dpq2SvM1A3.options_map.XAKk4Dpr2SvM1S3.version_string.XAKk4Dpr2SvM1V3.iofns_ssl.XAKk4Dpr2SvM1V3.iofns_raw.XAKk4Dpq2SvM1D3.b64_alphabet.XAKk4Dpq2SvM1D3.hex_chars.XAKk4Dpr2SvM1V3.init_state_START_ne__ntlm_create_contextne__ntlm_authenticate.XAKk4Dpr2SvM1J3.short_monthsne__ssl_set_verify_err.XAKk4Dps2SvMF33.lock_propsne__ssl_match_hostname.XAKk4Dpr2SvM1Y3.ah_proxy_class_lib_version.XBKk4Dpq2SvM192.ne__ssl_set_verify_err.reasons.XAKk4Dpq2SvM1D3.ascii_clean.XAKk4Dpr2SvM1Y3.protocols.XAKk4Dpq2SvM1D3.ascii_quote.XAKk4Dpr2SvM1V3.dummy_laddrne__sock_sslsockne__negotiate_ssl.XBKk4Dps2SvMFr3.mkhash.magic.XAKk4Dpr2SvM1Y3.ah_server_classne__ntlm_getRequestToken.XAKk4Dpr2SvM1P3.fillbufne__ntlm_destroy_context.XAKk4Dpr2SvM1M3.oomne__ssl_exitgetnameinfoSSL_get_ex_data_X509_STORE_CTX_idxXML_SetCharacterDataHandlerne_buffer_append__ctype_DYNAMICne_xml_mapidne_ssl_cert_exportne_ssl_clicert_namene_request_create_edataEVP_sha1ne_lockstore_findbyurifreadne_options2ne_xml_parse_responseX509_NAME_cmplibintl_dgettextne_version_matchne_strncasecmpne_base64GENERAL_NAME_freene_hook_create_requestPKCS12_unpack_p7datane_accept_alwaysne_ssl_pkcs11_provider_destroyne_response_header_iteratene_iaddr_freene_xml_doc_encodingne_sock_peerPKCS12_SAFEBAG_freene_putne_buffer_zappendSSL_connectSSL_pendingne_rfc1036_parseSSL_ctrlne_tokenne_buffer_createXML_ParserCreatene_tolower_arrayne_xml_set_errorne_mallocne_md5_finish_ctxne_decompress_destroySSL_CTX_set_verifyne_207_get_current_propstatne_ssl_clicert_ownerne_accept_2xxSSL_get_client_CA_listne_sock_fdne_uri_cmpSSL_CIPHER_get_namene_get_request_flagSSL_load_client_CA_filene_set_addrlistne_xml_dispatch_requestne_set_read_timeoutne_ssl_pkcs11_nss_provider_initRAND_statusne_get_rangene_deletene_lockstore_nextne_add_server_authne_xml_createne_207_destroyabsfcntlne_iaddr_cmpne_207_createinflateInit2_ne_ssl_context_keypairSSL_CTX_newsignalne_iaddr_rawSSL_get_peer_cert_chainX509_STORE_set_default_pathsne_set_session_privatene_hook_post_headersne_xml_failedne_set_request_body_providerEVP_PKEY_freene_ssl_clicert_readne_propfind_destroysk_freene_optionsne_buffer_clearfopenne_lock_refreshne_path_escapene_sock_read_timeoutX509_check_private_keysk_pushne_fill_proxy_uriXML_SetUserDataX509_STORE_CTX_get_error_depthne_get_schemene_read_response_to_fdne_request_dispatchne_xml_parsestrrchrne_addr_firstmktimesk_pop_freene_ssl_cert_digest__iobXML_SetElementHandlerne_set_connect_timeoutne_reallocne_propfind_allpropstrtollSSLeayne_sock_fullwritevne_buffer_concatvfprintfne_iaddr_parsePKCS7_freestrlenne_set_notifierne_sock_peeksprintfne_set_request_body_bufferne_ssl_context_createne_xml_get_attrd2i_PKCS12_fpne_207_set_propstat_handlersSSL_CTX_set_client_cert_cbne_207_get_current_responseSSL_writei2d_X509ne_set_session_flagne_iaddr_typeofSSL_freene_lockstrerror_rne_ssl_clicert_encryptedne_close_connectionne_xml_currentlinene_uri_copyne_sock_set_errorne_uri_defaultportSSL_get1_sessionne_md5_process_blockne_hook_pre_sendSSL_acceptne_set_errorne_ssl_context_destroySSL_get_ex_datane_ssl_cert_subjectne_set_request_privateXML_SetEntityDeclHandlerne_xml_push_handlerne_lock_discoverne_sock_closestrstrne_i18n_initne_strdupne_strndupne_concatne_redirect_registerX509_freene_get_server_hostportne_uri_parseSSL_SESSION_cmp_endne_unhook_destroy_sessionne_session_createX509_print_fpX509_get_issuer_namefreeaddrinfone_print_request_headerOBJ_obj2nidne_acl_setDES_set_keyinet_ptonne_buffer_growne_discard_responsene_buffer_qappendne_ssl_cert_importSSL_CTX_ctrlne_sock_createne_ssl_cert_cmpne_get_response_headerne_lockstore_registerne_request_destroyne_lock_createne_propnamesne_propset_valuene_unhook_close_connCRYPTO_freene_set_server_authsscanfne_sock_exitne_addr_resultne_ssl_set_clicertXML_ParserFreene_propfind_get_parsercrc32fstat64XML_GetErrorCodene_ssl_pkcs11_provider_initne_ascii_to_md5ne_ssl_cert_issuerne_strcleanne_hook_destroy_requestXML_StopParserSSL_CTX_set_client_CA_listne_get_session_flagSSLv23_server_methodne_addr_destroyne_get_session_privatene_md5_process_bytesgetaddrinfoSSL_get_current_cipherDES_set_odd_paritystrtoulne_shaveSSL_CTX_get_cert_storene_ssl_cert_identityne_sock_blockne_buffer_alteredne_copyne_md5_reset_ctxSSL_CTX_freeSSL_readne_addr_errorne_get_statusne_hook_close_conntoupperne_sock_prebindne_md5_destroy_ctxne_xml_destroyne_begin_requestne_hook_post_sendfclosene_lockstore_createne_session_proxyX509_STORE_add_certne_iaddr_makene_iso8601_parsene_end_requestSSL_SESSION_freegetpeernamene_ssl_context_set_verifyatoine_ssl_readable_dnamene_acl3744_setntohsstrcatne_sock_proxy_PROCEDURE_LINKAGE_TABLE_ne_iaddr_printSSL_newSSL_CTX_use_certificate_chain_filene_ssl_set_pkcs11_providerne_xml_get_errorne_propfind_set_privatene_ssl_dname_cmpne_debuglibintl_bind_textdomain_codesetSSL_get_peer_certificateSSL_get_sessionne_vsnprintfsetvbufmemchrne_simple_requestne_sock_initne_parse_statuslinegetpidSSL_set_sessionne_callocne_path_parentne_propfind_named_GLOBAL_OFFSET_TABLE_ne_hook_destroy_sessionne_httpdate_parsene_decompress_readerne_ssl_context_set_flagne_addr_nextne_md5_create_ctxne_ssl_clicert_decryptne_path_unescapene_ssl_trust_certgai_strerror_etextne_lock_copyne_postne_get_request_privatene_uri_resolvePEM_write_X509sk_valuene_forget_authSSLv23_client_methodne_set_useragentstrncatXML_GetCurrentLineNumberne_lock_using_resourcene_set_proxy_authne_session_system_proxyne_unhook_post_headersne_accept_207ne_sock_sessidne_rfc1123_parseX509_get_subject_nameSSLv2_server_methodne_ssl_set_verifyDES_ecb_encryptstrncpyne_path_childofmemsetX509_STORE_CTX_get_errorne_207_set_response_handlerstimezonene_has_supportne_add_proxy_authlibintl_bindtextdomainstrtolSSL_load_error_stringsne_sock_accept_sslne_version_stringCRYPTO_set_mem_functionsOPENSSL_add_all_algorithms_noconfne_sock_connect_timeout_xstat_fxstatX509_cmpMD4_Initd2i_X509ne_sock_connect_sslhtonsX509_NAME_ENTRY_get_datamemcmpX509_get_ext_d2ine_proppatchne_get_sessionne_md5_dup_ctxne_ssl_cert_readne_unhook_destroy_requestX509_NAME_get_index_by_NIDSSL_set_ex_datane_sock_fullwritene_md5_to_asciiSSL_get_errorOBJ_cmpMD4_FinalASN1_STRING_to_UTF8ne_sock_readlineabortstrchrne_unhook_post_sendstrncmpne_unhook_pre_sendne_get_errorne_lock_destroyne_addr_resolvegmtimene_propset_statusfflushX509_alias_get0ne_ssl_cert_validityne_sock_readne_add_depth_headerne_ssl_cert_validity_timene_version_pre_http11ne_ssl_provide_clicertne_propfind_createne_session_destroyne_ssl_cert_signedbyERR_get_errorSSL_library_initinet_ntopne_fill_server_uriPKCS12_get_friendlynamene_xml_parse_vne_session_socks_proxyne_ssl_cert_free__xtolne_qtokenne_sock_errorne_propset_iterateerrnone_ssl_cert_writeSSL_set_fdne_strnqdupsk_numne_unbase64memcpySSL_CTX_load_verify_locations_lxstatne_md5_streamne_propset_langne_md5_finish_asciine_buffer_destroyne_unlocklseek64ne_oom_callbackne_debug_streamne_redirect_locationne_propfind_get_requestne_mkcolne_buffer_ncreatePKCS12_parsene_sock_fullreadSSL_shutdownne_propfind_current_privateSSL_CTX_use_PrivateKey_filestrcmpne_debug_initne_movene_ssl_context_trustcertne_set_request_body_fdX509_NAME_get_entryne_md5_read_ctxXML_ErrorStringne_add_request_headerne_set_progressmemmovene_buffer_finishRAND_pseudo_bytesne_lockstore_firstX509_NAME_entry_countXML_ParseSSL_get_verify_resultne_sock_cipherne_set_localaddrne_path_has_trailing_slashinflateEndne_asctime_parsene_sock_acceptPKCS12_unpack_authsafesne_strerrorne_lockstore_destroyne_lockstore_addPEM_read_X509ERR_reason_error_stringne_getne_ssl_pkcs11_provider_pinXML_SetXmlDeclHandlerX509_dupne_buffer_snprintfX509_digestPKCS12_freeX509_STORE_CTX_get_ex_datane_add_response_body_readersk_new_nullne_set_request_flagne_uri_freeOBJ_nid2objne_rfc1123_dateMD4_Updatene_ssl_trust_default_cane_ssl_clicert_freene_get_content_typene_strcasecmpne_debug_maskX509_verify_cert_error_stringne_lockstore_removene_iaddr_reversene_unhook_create_requestERR_clear_errorne_lock_using_parentne_lock_freerecvne_snprintfne_sock_connectne_path_comparene_uri_unparsene_propset_privatene_getmodtimestrcpy%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMI%Z%%M% %I% %E% SMIacomp: Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15as: Sun Compiler Common 12.1 SunOS_i386 Patch 141858-03 2009/09/21ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1689Cne_request.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.. -g -c -KPIC -DPIC -o .libs/ne_request.o ne_request.c -W0,-xp.XAKk4Dpq2SvM162.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpq2SvM162.;backend;raw;cd;DBG_GEN 5.2.7statNU_path%_buf intcharunsigned longdev_tlong  ino_tmode_tnlink_tunsigned#uid_t#gid_tX off_ttime_t timespec tv_secd# tv_nsec#qtimestruc_tblksize_tblkcnt_t    stat% st_dev# st_pad1# st_ino# st_mode# st_nlink# st_uid/# st_gid;# st_rdev#$ st_pad2G#( st_sizeX#0 st_pad3#4 st_atim#8 st_mtim#@ st_ctim#H st_blksize#P st_blocks#T st_fstype#X st_pad4#hlstatPUhm_path%_buf hfstatήU_fd%_buf mknodЮU_path_mode _devhash_and_lower U#ddname pntd hash#abortedFUIreqSdoing Xcode sess# ret#size_t  datad# used# length#ne_buffervoid1Y9d#>Yne_provide_bodylong longtne_off_t fd# offset# length# remain# buffer# pnt# length# remain# 9 file# buf# LR_TILLEOFR_NO_BODYR_CHUNKEDR_CLENGTH total# remain# total# remain# clen# chunk#ne_response+ modeL# body# progress#+3B hook  fn.# userdata9# id8# next=# field named# valued# vlen# next#  * 9# ne_block_readerne_request_s4!o methodd# urid# headers,# body_cb^# body_ud9# body# body_length#0 respbuf9#8 resp#@ private=#@ response_headers#@ current_index##B body_readers #B method_is_head##B can_persist##B flags #B session##B status(#B  major_version# minor_version# code# klass# reason_phrased#t   9o    ne_accept_response! body_reader handler # accept_response # use## userdata9# next # ne_socket_s ne_socket  proxy_type PROXY_NONEPROXY_HTTPPROXY_SOCKSne_sock_addr_s ne_sock_addr  ne_inet_addr_s ne_inet_addr / B / L host_info proxy # port## hostnamed# hostportd# address # currentG # networkQ # next #V /  ne_sock_sversion A NE_SOCK_SOCKSV4NE_SOCK_SOCKSV4ANE_SOCK_SOCKSV5R i 9ttR i ne_progress  ne_status_lookupne_status_connectingne_status_connectedne_status_sendingne_status_recvingne_status_disconnected   , hostname#,/ 6  i hostname1# address;#i   hostnamen#   progress# total#ne_session_status_info_u  lu# ci@# cds# sr#!9  !ne_notify_status ne_ssl_client_cert_s=ne_ssl_client_cert Tne_ssl_certificate_srne_ssl_certificate ne_ssl_context_sne_ssl_context r9ne_ssl_verify_fn ne_session_s  socket # connected# persisted# is_http11# schemed# serverV # proxies #4 prev_proxy #8 nexthop #< local_addr #@ use_ssl#D in_connect#H any_proxy_http#L socks_ver #P socks_userd#T socks_passwordd#X flagsA #\ progress_cbn #x progress_ud9#| notify_cb&# notify_ud9# rdtimeout# cotimeout# create_req_hooks=# pre_send_hooks=# post_send_hooks=# post_headers_hooks=# destroy_req_hooks=# destroy_sess_hooks=# close_conn_hooks=# private=# user_agentd# client_certm# server_cert# ssl_context# ssl_cc_requested# ssl_verify_fn# ssl_verify_ud9# ssl_provide_fn# ssl_provide_ud9# status# error#ne_ssl_dname_s9ne_ssl_provide_fn ne_session_status_info ne_session t ne_status  ne_request8Nssize_tnotify_status`U#sessstatus  ne_session_status get_private,U9hkid B  ne_get_request_private0rU9`Ireqeid ` ne_get_session_private²U9#sessid !ne_set_request_privateв{UAIreqFid 9userdata hk= pos=A"body_string_send5UX#9userdata#dbuffer #count$reqI"body_fd_send@UXJ#9userdata#dbuffer #count$reqI%|%ȵ%ȵ$retX%%(%(%\%\%d%d$errJ4$errnum5%ȵ%ȵ$newoff>%% % $err\F$offstrnF\n "send_request_bodymɹUr#Ireql#retryl $sessrn$bufferwo$bytesXp%q%>%>$ret%6ȸ%Eȸ%Eȸ$aret# &add_fixed_headersйU#Ireq$sess#'ne_accept_always(U8#9userdata#Ireq #=st(8'ne_accept_2xx0SU#9userdata#Ireq #st('ne_request_create`UIg##sess#lmethod #vpath$reqI%޼$hk=%޼%ͼ%ͼ$fngq{o 9ne_create_request_fn&set_body_lengthOU#Ireq#length (ne_set_request_body_bufferPUu#Ireq#zbuffer #sizeu(ne_set_request_body_provider U#Ireq#bodysize #^provider#9ud(ne_set_request_body_fd Ug#Ireq#fd #offset#length(ne_set_request_flagU#Ireq#flag #valuene_request_flag_eNE_REQFLAG_EXPECT100NE_REQFLAG_IDEMPOTENTNE_REQFLAG_LASTne_request_flag'ne_get_request_flagU#Ireq#flag (ne_add_request_header#MU#Ireq!#name! #value"(ne_print_request_header)PҿU#Ireq'#name' #format(#9...($params*$buf+)9va_list "get_response_header_hv8\Ud1 #Ireq6##h6 #6 name7$f91 'ne_get_response_headerC`U  #IreqB# nameB $lcnamedD$hash#E$valuedF  'ne_response_header_iterateOU9!#IreqM#9iteratorM #!nameN#!valueN$fP$n#Q!!!!&remove_response_headerjuU>"#Ireqh#C"nameh ##hashi$ptrH"k%p%e%e$fM"n>"&free_response_headers~/U##Ireq}$n%*%%$ptrH"%%%$f#(ne_add_response_body_reader0U##Ireq# acpt # rdr#9userdata$new (ne_request_destroyUQ$#Ireq$rdr $next_rdr $hk=$next_hk=%L%f%f$fnh$c$o 9Q$c$ne_destroy_req_fn"read_response_block -U(&#Ireq#(&resp #dbuffer#-&buflen$sock2&$willread$readlenX%V%\%\%\Z%kZ%kZ$chunk_len$ptrd%k%k%k$sretX%%%%+%:%:$crlfbuf7& H& 'ne_read_response_block!@jUX&#Ireq #dbuffer  #buflen $rdr "$readlen#$resp&$(&"build_request:pU,'#Ireq9$hk=;$buf,<%4%Nn%Nn$fn'J'o 9'''ne_pre_send_fn&dump_requestVUM(#R(requestU%%%%%$reqdebugd\$pntd\M(&strip_eolo\U(#dbufn#(lenn $pntdpX"read_status_linez`Ui)#Ireqy#i)statusy #retryy$bufferd{$retX|%%%$aret("discard_headersRU)#Ireq%C%$%$% % % $sretX"send_request`U*#Ireq#*request $sess+$status+$sentbody$ret$retry$sretX%x% x% x$aret*#i)"read_message_headerU+#Ireq#dbuf #buflen$nX$sock %%%$ch%%%$sretX&add_response_header, U,#Ireq*##hash* #dname+#dvalue+$nextfH"-$vlen.%b8%q)%q)$f,1"read_response_headersIWU-#IreqH$hdr-J$retK$countK% %%$pntdO$hash#P -"lookup_host|`U.##sess{# info{ %x%l%l$buf.!.'ne_begin_requestU;0#Ireq$rdr $data,$stE0$valueO0$hk=$ret$forced_closure%%%$vcopyd$ptrd%%%$tokend$hash#%3]%p]%p]%]%]%T]%T]%xL%xL$endptrd $len %n%%$fnz0t ;0@0J0t T0u0o 9Y0^0u0ne_post_headers_fn'ne_end_request/U$1#Ireq.$hk=0$ret1%s%2Z%2Z$fnN1>t $1I1o 9)1.1I1ne_post_send_fn'ne_read_response_to_fdM>Us2#IreqL#fdL $lenXN% %'%'$blockx2R%0%0%0$retXU%G%`%`%h%h$err}2Ys2ȏ2'ne_discard_responsei@U2#Ireqh$lenXj'ne_request_dispatchtiU33#Ireqs$retu'ne_get_statuspUp3k3#z3req(k38u3'ne_get_sessionU#3#3req83"proxy_tunnelUh4##sess$reqI$ret$rurih4%X%y%y$errdz4"resolve_firstZU44# host/ 4"resolve_next`U44# host/ 4"do_connectU5##sess# host $ret%%v%v% V%V%V$buf5%P%P%P$msg555"socks_origin_lookupUY6##sess$ia^6$ret / Y6"open_connection(U6##sess'$ret)% %h %h $hi 5*B+ne__negotiate_ssl77,ne_set_error<77),ne_close_connection_7  d7n7x77+ne_sock_proxy7_7 i7s7#}77,ne_sock_connect_timeout7_7,ne_sock_read_timeout 8_7  8*8+ne_sock_error/8U8%8+ne_sock_closev8_7 +ne_sock_fullreadX8v8{8#+ne_sock_readlineX8v8{8#8+ne_sock_fullwrite9_78#+ne_sock_peekX?9v8{8#+ne_sock_readXi9v8{8# i9+ne_sock_connect9_7n9# 9,ne_sock_prebind9_79#-ne_sock_create  9+ne_iaddr_printd!:9d# !: S:ne_iaddr_ipv4ne_iaddr_ipv6+:ne_iaddr_type +ne_iaddr_typeofS::&: ,ne_addr_destroy:: :+ne_addr_errord::d# / :+ne_addr_next:;:/ ;+ne_addr_first;=;: =;+ne_addr_resulti;B;i;+ne_addr_resolve ;n;unsigned char;;-ne_tolower_array;;;+ne_strcasecmp <;;<1+ne_vsnprintfM< <<<M<+ne_snprintf< <R<)<+ne_concatd<<)+ne_strerrord<d#,ne_buffer_destroy<'<,ne_buffer_append'='<#'=,ne_buffer_zappendW=',=,ne_buffer_concatx=')-ne_buffer_create,+ne_strcleand=d=+ne_shaved=d=d+ne_tokend>=>t +ne_parse_statusline=>> >=>,ne_debuge>B>)e>+ne_strdupd>j>+ne_realloc9>9#+ne_calloc9>#+ne_malloc9>#>>+libintl_dgettextd&?>>+__posix_ttyname_rU?d#+__posix_getlogin_r?dtoff64_t+lseek64???1?+writeX?X?#1+readX@X?#@+strtollt6@ @=6@+strtoule@;@=,freey@9y@+atoi@~@@@+strstrd@@@@@+strncmpA@@#A+strlen+A A+A+strcpydTAd0ATA^A+strcmpAYAcA+memset9A9#1A+memcpy9A9A#A+_xmknodBAAB+_lxstatFBBB%KB+_xstatyBFBPB%+_fxstatByB%B+__posix_ctime_rdBBd tm$nC tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# BnC.__posix_asctime_rdsCd#+ne_session.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.. -g -c -KPIC -DPIC -o .libs/ne_session.o ne_session.c -W0,-xp.XAKk4Dpq2SvM192.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpq2SvM192.;backend;raw;cd;DBG_GEN 5.2.7destroy_hooks1Uhooks0nexthk2voidchar hook& fn# userdata# id# next# free_hostinfo<jUVhi; proxy_type PROXY_NONE PROXY_HTTP PROXY_SOCKSunsigned ne_sock_addr_sne_sock_addr ne_inet_addr_sne_inet_addr host_info  proxyV# port# hostname# hostport# address# current# network# next#free_proxiesDpUw sessChiEnexthiE ne_socket_sne_socketint ne_sock_sversionq NE_SOCK_SOCKSV4 NE_SOCK_SOCKSV4A NE_SOCK_SOCKSV5longqlong longne_progressN ne_status_lookup ne_status_connecting ne_status_connected ne_status_sending ne_status_recving ne_status_disconnectedNq hostnameS#q{ hostnamev# address# hostname#ne_off_t progress# total#ne_session_status_info_uT luX# ci# cd# sr#TuY^une_notify_status ne_ssl_client_cert_sne_ssl_client_cert ne_ssl_certificate_sne_ssl_certificate ne_ssl_context_sne_ssl_context(M-2Mne_ssl_verify_fnne_session_s socket # connected# persisted# is_http11# scheme# server# proxies#4 prev_proxy#8 nexthop#< local_addr#@ use_ssl#D in_connect#H any_proxy_http#L socks_ver!#P socks_user#T socks_password#X flagsy#\ progress_cb#x progress_ud#| notify_cbz# notify_ud# rdtimeout# cotimeout# create_req_hooks# pre_send_hooks# post_send_hooks# post_headers_hooks# destroy_req_hooks# destroy_sess_hooks# close_conn_hooks# private# user_agent# client_cert# server_cert# ssl_context## ssl_cc_requested# ssl_verify_fnR# ssl_verify_ud# ssl_provide_fn # ssl_provide_ud# status6 # errorS #i ne_ssl_dname_s         ne_ssl_provide_fnne_session_status_infof qine_sessionf ne_session_destroyQU w sessPhkR"a6P6Pfn X   ne_destroy_sess_fnne_version_pre_http11 UU] w sset_hostport`U hostdefaultport len size_tset_hostinfoNU$ hiVtype ) hostnameport$ ne_session_createPUw   scheme hostname portsessw :IIia   ne_session_proxy UBw sessGhostname portBne_session_socks_proxyܐ:Uw sess!vers hostnameportusernamepasswordne_session_system_proxy@NUJw sessflags ne_set_addrlistDPUw sessCaddrsC  nChiElasthiEi Fne_set_localaddrXU7w sessW<addrW 7ne_set_error] oUw sess\format\ ...\params^ va_list ne_set_session_flagfpU"w 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_flagrUPw sessqflagq "progress_notifier{Uuserdataystatusy infozsessw |ne_session_status6 ne_set_progressUDw sessprogress userdatane_set_notifier&Uw sesszstatus userdatane_set_read_timeout0JUw sesstimeout ne_set_connect_timeoutPjU@w sesstimeout ne_set_useragentpOUw sesstoken !ne_get_server_hostportPjUw sess!ne_get_schemepUw sessne_fill_server_uriUkw sessuri   scheme# host# userinfo# port# path# query# fragment#kne_uri ne_fill_proxy_uriUdw sessuri !,,hi!ne_get_errorUw sessne_close_connectionUCw sesshk4sHbHbfnUPCPne_close_conn_fnne_ssl_set_verifyUw sessRfn userdatane_ssl_provide_clicert&U'w sess fn userdatane_ssl_trust_cert0zUpw sessucert pne_ssl_cert_validityUcertfrom untiltftudateRRRRne__nm1 RRRRRne__nm1 R^^^ffwwwne__nm1 ne__nm1 qtime_t ne__ssl_set_verify_err% ULw sess$failures$ # bit# strQ#reasons[)n2flag2LV8lq!ne__ssl_match_hostnameBUUcnA cnlenA %hostnameAdot/CQ   ia J *"add_hookl`Uhookskidk fnkudkhkmposm$void_fnne_hook_create_requestVU9w sess}fn~ userdata~ ne_request_s9MW}HR\a}ne_create_request_fnne_hook_pre_send`Uw sessIfn userdata ( data# used # length #DH(-Dne_pre_send_fnne_hook_post_sendUw sessHfn userdata  major_version# minor_version# code# klass# reason_phrase#CH#(Cne_post_send_fnne_hook_post_headersFUw sessfn userdataHne_post_headers_fnne_hook_destroy_requestPU\ w sesss fn userdatan H\ n ne_destroy_req_fnne_hook_destroy_sessionU w sess fn userdatane_hook_close_conn6UH!w sessUfn userdatane_set_session_private@U!w sess!id userdata!"remove_hook$Ud"hooksfn udpnextne_unhook_create_request0pU"w sessfn userdatane_unhook_pre_sendpU"#w sessIfn userdatane_unhook_post_headersU#w sessfn userdatane_unhook_post_send0U#w sessHfn userdatane_unhook_destroy_request0pUB$w sesss fn userdatane_unhook_destroy_sessionpU$w sess fn userdatane_unhook_close_connU%w sessUfn userdata%ne_rfc1123_date&%q&%0%%ne_strcasecmp`%+%5%e%%ne_vsnprintf %`% j%o%%%ne_snprintf %`% % %%%libintl_dgettext&%%&&ne_debug<&& <&%ne_strdupc&A&%ne_calloc&%ne_malloc&%ne_sock_close&&&ne_iaddr_free&&&' ne_iaddr_ipv4 ne_iaddr_ipv6%ne_iaddr_parse >'&&&ne_addr_destroyb'>'&ne_ssl_context_destroy'b'&ne_ssl_context_set_flag'b''&ne_ssl_context_trustcert'b''%ne_ssl_context_create#(&ne_ssl_clicert_freeF((&ne_ssl_cert_freek(F(k(q&ne_ssl_cert_validity_time(p(u(u(q(%__posix_ctime_r(( tm$x) tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# (x)%__posix_asctime_r)})&free))%strchr)))%strncpy*)*"*%strncmpQ**'*Q*%strncat*V**%strlen ***%strcpy****%strcmp+**+'strcat+ne_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.. -g -c -KPIC -DPIC -o .libs/ne_basic.o ne_basic.c -W0,-xp.XAKk4Dpq2SvM1A3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpq2SvM1A3.;backend;raw;cd;DBG_GEN 5.2.7h)stat.U_path_buf intcharunsigned longdev_tlong  ino_tmode_tnlink_tunsigneduid_tgid_tR off_ttime_t timespec tv_sec^# tv_nsec#ktimestruc_tblksize_tblkcnt_t    stat st_dev# st_pad1# st_ino# st_mode# st_nlink# st_uid)# st_gid5# st_rdev#$ st_pad2A#( st_sizeR#0 st_pad3#4 st_atim#8 st_mtim#@ st_ctim#H st_blksize#P st_blocks#T st_fstype#X st_pad4#hlstat0nUbg_path_buf bfstatpU_fd_buf mknodU_path_mode _dev ne_getmodtime6  Usess5uri5 modtime5 req7 value8 ret9ne_session_sne_session^ne_request_sne_request ne_putY M UsessXuriX fdX reqZ st[ ret\  (  (   errnum_ buf`  unsigned long longino64_t long longoff64_tblkcnt64_tL  ]  stat64 st_dev# st_pad1# st_ino# st_mode# st_nlink# st_uid)# st_gid5#$ st_rdev#( st_pad2#, st_size#4 st_atim#< st_mtim#D st_ctim#L st_blksize#T st_blocks*#X st_fstype;#` st_pad4L#p]struct_statȣdispatch_to_fd~P $ Uv req}fd} { range} sess  st  ret rlen        value v  major_version# minor_version# code# klass# reason_phrase #   size_t get_range_common0 U sess uri  brangefd req status  ret   ne_status  ne_get_rangeːIU[ sess` uri  rangefd brange [ ne_off_t  starte # ende # totale #t ne_content_range  @ ? ne_getPUB sessG uri fd req retB ne_postU sess uri fd buffer req ret  ne_get_content_typeU reqct valuesep stype stok    type # subtype # charset # value #  ne_content_type  options_mapS name"# cap#'Sgoptions_mapX9Sx options_map9parse_dav_headerLUejvalueKocapsK tokens Mpnt Mwkktok RnSene_options2dKU sesscuric ocapscreqeretfheaderg ne_optionsvPUsesstpatht  capsuretwcapmaskx  dav_class1# dav_class2# dav_executable#ne_server_capabilities ne_add_depth_header Uqreqdepth valuevqcopy_or_moveU#sessis_move overwritedepth(src2destreqB#-ne_copy jUsessoverwrite depthsrcdestne_movepU*sessoverwrite /src9dest*4ne_delete8Usessuri reqne_mkcol@ U$sess)uri reqreal_uri ret$.8libintl_dgettext k3=kne_httpdate_parse^pne_lock_using_parentne_lock_using_resource ne_simple_request;  ne_request_flag_e!NE_REQFLAG_EXPECT100!NE_REQFLAG_IDEMPOTENT!NE_REQFLAG_LASTne_set_request_flag;ne_read_response_to_fdne_discard_responsene_end_request;ne_begin_request_ne_request_destroyne_get_session ne_get_statusne_request_dispatch  ne_print_request_headerO"OYne_add_request_headerT^ne_get_response_headerne_set_request_body_fd  ne_set_request_body_bufferHMWne_request_createHR\ne_set_error "ne_get_scheme ne_get_server_hostport  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_LASTne_get_session_flag ne_path_has_trailing_slashHHRne_strcasecmpMWne_snprintf  "ne_concat "ne_strerror    ne_shave 7  <ne_qtoken m7Amne_strdup rvoidfree__posix_ttyname_r __posix_getlogin_r strstr BBstrchr kGkustrncmppzstrlen strcmpmemset$_xmknodX)]_lxstatXb_xstat_fxstat]fstat64__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  5ne_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.. -g -c -KPIC -DPIC -o .libs/ne_string.o ne_string.c -W0,-xp.XAKk4Dpq2SvM1D3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpq2SvM1D3.;backend;raw;cd;DBG_GEN 5.2.71ne_token+Ustr*separator* ret,pnt,charne_qtoken:Ustr9separator9 quotes9pnt;ret;s\\quot>\""qcloseAne_shaveYUCstrXHwhitespaceX pntZretZC ne_buffer_clearlUbufkunsigned size_t  data# used# length# ne_buffer ne_buffer_growsAU%bufrnewsizer count_concatPUap~totalnextvoid va_listdo_concatU strap next!M{M{len ne_buffer_concatGUbuf... aptotalint ssize_tne_concatPU/4str... aptotalslenret/ ne_buffer_zappendEU}bufstr } ne_buffer_appendPUbufdata lenne_buffer_snprintfU Unbufmax sfmt...apretnne_buffer_create`  Une_buffer_ncreate !Usbuf ne_buffer_destroy !e!Ubufne_buffer_finishp!!Ukbufret ne_buffer_altered!!Ubufunsigned charlongascii_quote~ hex_charsqappend_count"l"U  s send p ret   quoted_append*p"m#U dest(# s( - send)p7 +q, ( 2 ne_buffer_qappendAp#$U buf@ data@ len@dend BqCqsC  ne_strnqdupR${$UQ V dataQlenQ dend` SdestTQ [ e y b64_alphabetj [e B Ab64_alphabet [ne_base64a$&UL Q text`inlen` bufferdpointdoutleneL ne_unbase64&-,U  data out inlenoutp in% *',@',@',tmp   * B ascii_clean/ ne_strclean0,,U strpnt ne_strerror,P-U_errnumbuf buflentmp_,?-,-,-,-,-ne__nm1rne_snprintfP--Ustrsize fmt...apne_vsnprintf-%.UXstrsize ]fmtapXbzascii_tolowergրne_tolower_array@0.b.Une_strcasecmpEp./UY^s1Dhs2D p1rFp2|Gc1Hc2HYcmwne_strncasecmpX //U %s1W/s2W nWp19Yp2CZc1[c2[ *4>ne_reallockne_mallocvsnprintf__posix_ttyname_r__posix_getlogin_rstrerror_r@@strchriEistrncpynstrlenmemsetmemcpy__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 malloc' freene_uri.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.. -g -c -KPIC -DPIC -o .libs/ne_uri.o ne_uri.c -W0,-xp.XAKk4Dpq2SvM1G3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpq2SvM1G3.;backend;raw;cd;DBG_GEN 5.2.7X;unsigneddlongpuuri_chars}_؁ne_path_parentv/0U uriulenwpnt.xchar   dsize_t )ne_path_has_trailing_slash0)1Uurilenint ne_uri_defaultport011Udscheme ne_uri_parse16Uzuriparsed p s  y2z4 2z4 2z4pa z  scheme # host # userinfo # portd# path # query # fragment # ne_uri   merge_paths 6+7U basepath p 6 7 6 7 6 7len#ret $   remove_dot_segments/079U %*path.in 0inc 0out 0 7}9 7m9 7m9 7m9 7m9 7m9 7m9 7m9 8m9 8m9 @8m9 @8m9 r88 r88p I 8m9 8m9 9m9 9m9p f %copy_authorityz9:Usdestyxsrcy  sne_uri_resolve :<Ulqbase{relative target Q:b< :b< :b< :>< (;>< (;>< (;.< ;.< ;.< ; < ; < ; <merged  l vne_uri_copy<=Udestsrc  ne_uri_free=^>Uune_path_unescape`>?U uripntret retpos bufC  une_path_escape?$AU E J pathpnte ret p count E unsigned charO ` ne_uri_cmp0ACU  u1  u2  n  ne_path_compare!CDU  a  b  ret" $DD 0DD 0DDtraila'trailb(lena)lenb)  ne_uri_unparse6EFU R W uri5buf 7 TEF cEF cEF EF EF EFstr G R  data # used# length# \ ne_buffer  une_path_childof]FVGU* / parent\9 child\ root ^ret_ *  4  >  H ne_strcasecmpx C M  } ne_snprintf x   ne_concat    \ ne_buffer_finish     ne_buffer_append6   d 6 ne_buffer_zappendf  ; ne_buffer_concat  ne_buffer_create  ne_strndup   d ne_strdup   void ne_malloc d sprintfJ $ J strtolu}OTfree  atoiabs__posix_ttyname_r d__posix_getlogin_r$ u $__posix_ctime_r V) tm$ tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# V __posix_asctime_r #  # -strncasecmp`(2d `strrchr e strchr   strncmpd strncat  d strlen?  ? IstrcmprDNmemset  d memcpy  dw ne_dates.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.. -g -c -KPIC -DPIC -o .libs/ne_dates.o ne_dates.c -W0,-xp.XAKk4Dpr2SvM1J3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpr2SvM1J3.;backend;raw;cd;DBG_GEN 5.2.7Dcharjlongrwwrfc1123_weekdays;jw0w short_months>ne_rfc1123_dateg`GKHUqqvanytimeggmt#hretqi B j wtime_tint tm$# tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# ne_iso8601_parsezPHJUvdateygmt{off_hour|off_min|sec}fix~nresultv C j double woff_tne_rfc1123_parseJKUvdategmtwkdaymonnresultv C j jwjwne_rfc1036_parseKMUvdategmtnwkdaymonresultv C j j w jwne_asctime_parse MGNUvmrdategmtnwkdaywmonresultv C j mjwjwne_httpdate_parsePNNUvdatetmpvj  junsigned size_tj ne_snprintfCvoid Cne_mallocKmj mj wstrcmpr|j j sscanfw __posix_ctime_rqq __posix_asctime_rq: q mktimevY:w Ygmtime#^z 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.. -g -c -KPIC -DPIC -o .libs/ne_alloc.o ne_alloc.c -W0,-xp.XAKk4Dpr2SvM1M3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpr2SvM1M3.;backend;raw;cd;DBG_GEN 5.2.7Hne_oom_callback'NOUcallback&ne_oom_callback_fnne_malloc7OvOU "len6ptr8 void  unsignedsize_tne_calloc>OOUt"len=ptr?ne_reallocEPhPUptrD"lenD retFne_strdupXpPPU sWretY char  ne_strndup_PyQUrws^"n^ new` room$ long  __posix_ctime_r   int tm$htm_sec#tm_min#tm_hour#tm_mday# tm_mon#tm_year#tm_wday#tm_yday#tm_isdst# h __posix_asctime_r m  realloc   malloc abort  strlen"   strcpy.   memsetR    Rmemcpy  W ~ ne_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.. -g -c -KPIC -DPIC -o .libs/ne_md5.o ne_md5.c -W0,-xp.XAKk4Dpr2SvM1P3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpr2SvM1P3.;backend;raw;cd;DBG_GEN 5.2.7Iunsigned chardlongu@z?fillbufImd5_init_ctxPQQUctxOunsigned md5_uint32zcharz ne_md5_ctx A# B# C# D# total# buflen# buffer#  ne_md5_create_ctx\Q/RUctx]ne_md5_reset_ctxd0RdRUctxc ne_md5_dup_ctxjpRRU5ctxine_md5_destroy_ctxpRRUlctxo ne_md5_read_ctx{SGSUctxzresbufz void   ne_md5_finish_ctxPS]TU?ctxresbuf bytespad?size_t ne_md5_stream`TUUstreamresblock ctxbuffersum?TXUTSUTSUn?int d__FILE _cnt# _ptr # _base # _flagd# _magicd# __orientation# __ionolock#  __seekable#  __extendedfd#  __xf_nocheck#  __filler#  FILE HzGne_md5_process_bytes۰UWUbuffer?len ctxUVUVUVleft_over?add? ne_md5_process_block WkUv { buffer?len ctxcorrect_words words endp ABCDWmkWakWakcwp &A_save'B_save(C_save)D_save*W4XW4XW4XWORD_J4XX4XX4XXWORD_KXBYXBYXBYWORD_LBYYBYYBYYWORD_MYPZYPZYPZWORD_NPZZPZZPZZWORD_OZ^[Z^[Z^[WORD_P^[[^[[^[[WORD_Q[l\[l\[l\WORD_Rl\\l\\l\\WORD_S\z]\z]\z]WORD_Tz]^z]^z]^WORD_U^^^^^^WORD_V^_^_^_WORD_W______WORD_X_`_`_`WORD_Y v @ zd d ne_md5_to_asciikolU  md5_buf buffer countd ne_ascii_to_md5plUmU}  buffer md5_buf count } ne_md5_finish_ascii`mmU  ctx buffer result  zd ne_tolower_array ne_malloc@   fread?r @ ??E  r memcpy w free z __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  FEne_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.. -g -c -KPIC -DPIC -o .libs/ne_utils.o ne_utils.c -W0,-xp.XAKk4Dpr2SvM1S3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpr2SvM1S3.;backend;raw;cd;DBG_GEN 5.2.7Pintne_debug_maskj8unsigned charunsigned__FILE_cntj#_ptr#_base#_flag# _magic# __orientation# __ionolock#  __seekable#  __extendedfd#  __xf_nocheck#  __filler#  FILEne_debug_stream9 ne_debug_init 8H 8R  9 C M W S\       dh_method$! name# generate_key# compute_key# bn_mod_exp # init # finish # flags# app_data# generate_params #  DH_METHOD!!ec_key_st!! ptr# rsah# dsa.# dh# ec!# evp_pkey_stz" type# save_type# references# pkey!# save_parameters# attributes #!EVP_PKEYz" X509_pubkey_st " algor;# public_key# pkey"#"X509_PUBKEY" x509_cinf_st(# version# serialNumber# signature;# issuer# validityO# 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%(%%%&%&$&A&!&%&&&a&%&&F&w&%f& ASN1_ENCODING_st & enc6 # len# modified#|&ASN1_ENCODING X509_crl_info_st(o' version# sig_alg;# issuer# lastUpdate# nextUpdate# revoked # extensions # enc&#&X509_CRL_INFOo' X509_crl_st' crl'# sig_alg;# signature# references# ''(%'&'(%'(=(%'&"(S(%B(i(%X(X509_POLICY_TREE_stn(X509_POLICY_TREE('X509_CRL( x509_store_ctx_stt * ctxm# current_method# cert%# untrusted # crls # param7 # other_ctx# verify%# verify_cb&# get_issuerA&#$ check_issueda&#( check_revocationw&#, get_crl(#0 check_crl(#4 cert_crl=(#8 check_policyS(#< cleanupi(#@ 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*%**%* +!&%&*-+%&&+C+%2+c+%'&H+~+%'h++%'&++%+< + lhash_node_st , data# next+# hash#+,,/, ,,,/,LHASH_COMP_FN_TYPEM,h,R,W,h,LHASH_HASH_FN_TYPE lhash_st`f. b,# comp4,# hashm,# 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_argk.# 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_tick6 # tlsext_ticklen$ # tlsext_tick_lifetime_hint#1 /1YA21/2/72 6  2, E3 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%E33`3pem_password_cb3!33 !&333 6 34 6  35EVP_MD44 env_md_ctx_stn4 digest4# engine# flags# md_data# 44n4s444n44 44n46 4444n4445n44%  5=55 6 5% B5% L55G5 Q5 V55  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 # rbiopM# wbiopM# bbiopM# 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 packet6 #L packet_length #P s2=== evp_cipher_st4? nid# block_size# key_len# iv_len# flags# initv=# do_cipher=# cleanup=# ctx_size# set_asn1_parameters=#$ get_asn1_parameters=#( ctrl>#, app_data#0 >EVP_CIPHER?)?% D? % U? % f? % w?  evp_cipher_ctx_stu@ cipher.?# engine# encrypt# buf_len# oiv3?# ivD?# bufU?#0 num#P app_data#T key_len#X flags#\ cipher_data#` final_used#d block_mask#h finalf?#l4u@4EVP_MD_CTX% @  hmac_ctx_st A mdz@# md_ctx@# i_ctx@# o_ctx@#$ key_length #4 key@#8@9A 6 6 == AATA >Assl_ctx_st@ MF method # cipher_list # cipher_list_by_id # cert_store+# sessionsf.# session_cache_size# session_cache_head/# session_cache_tail/# session_cache_mode# session_timeout#$ new_session_cb1#( remove_session_cb2#, get_session_cb72#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_callback1<# client_CA # options# mode# max_cert_list# cert@<# read_ahead# msg_callbackz<# msg_callback_arg# verify_mode# sid_ctx_length # sid_ctx<# default_verify_callback<# generate_session_id<# param7 # 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_cb9A# tlsext_status_cbTA# tlsext_status_arg#mF1MF% rF.|FFwFF.FFF6 F6FFFFF|FF F ssl_method_stt ~I version# ssl_new # ssl_clear # ssl_free # ssl_accept* # ssl_connect@ # ssl_read` # ssl_peek # ssl_write # ssl_shutdown #$ ssl_renegotiate #( ssl_renegotiate_check #, ssl_get_message #0 ssl_read_bytes` #4 ssl_write_bytes #8 ssl_dispatch_alert #< ssl_ctrl #@ ssl_ctx_ctrlmF#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#pF~IIIIssl3_enc_methodIIII IIIJ1IIFSSL_METHOD )J bio_st@2K method(M# callbackaM# cb_arg# init# shutdown# flags# retry_reason# num# ptr# next_bio2K#$ prev_bio2K#( references#, num_read#0 num_write#4 ex_data#83J7K\K2KgxbsockVsecsV error_ossl_|~Uthxbsock^sret^ errnum` erra" }h}"}h}"}h}"}\}"}\}"}\} ne__nm1$ d"p}P~"|}P~"|}P~"|}P~"}}"}}"}}"}}"}} ne__nm1$ nread_osslUbhxbsockbuffer $ len retwrite_ossl6UbZixbsock_idata $ len ret ilenZi iofns_ssldixne_sock_fullwrite@̀Uixbsockidata $ len retbine_sock_fullwritev+ЀفUqjxbsock*vjvector* count* retb,1 qjne_sock_readlineEăUbkxbsockDbufD $ buflenD lfF len$ G""<"<"p"pÂ"p retbU"p"p"p"f"f"f ne__nm1$ cne_sock_fullreadpЃIUblxbsockobuffero $ bufleno lenbqne_addr_resolvePU8mlBmhostnameflags addr8m hints pnt"q"D"D hn#Cne_sock_addr_s %m result# cursor# errnum#lne_sock_addr %m=mne_addr_resultUmmaddr%mmne_addr_firstɅUmm8maddrmne_addr_nextЅ Unn8maddr retnne_addr_errorUnnaddrbuf $ bufsiz errn"l"l"l ne__nm1$ %mnnne_iaddr_printUppiabuf $ bufsiz retp"цG"܆"܆ in6Lq"G"G"<"< in{r "G{"O{"O{"O{"O{ ne__nm1$ p pin_port_t% uint32_t&% uint8_t&3pRp $pcp p _S6_u8Ap# _S6_u32Rp# __S6_align$p# in6_addrp _S6_uncp# sockaddr_in6 Lq sin6_family# sin6_portp# sin6_flowinfo$p# sin6_addrp# sin6_scope_id$p# __sin6_src_id$p#pq s_b13p# s_b23p# s_b33p# s_b43p#uint16_t&q s_w1q# s_w2q#q S_un_bQq# S_un_wq# S_addr$p# in_addrr S_unq#!r  sockaddr_in{r sin_family# sin_portp# sin_addrq# sin_zeror#!rne_iaddr_raw U6 s#sia6 buf """ in6Lq""" in{r'sne_iaddr_parse0Usssaddr/stype/ dsts2 af3s$ s%ne_iaddr_ipv4%ne_iaddr_ipv6sne_iaddr_type s ne_iaddr_reversekUPtUtiajbufj $ bufsizjPt&ne_addr_destroy|0Ut8maddr{raw_connect0Utfdtsa $ salen retttimed_connectU{uxbsockfd usa$ salen ret{uconnect_socketUYvxbsockfd ^vaddr port"1"<"< in6p"""Њ"Њ in!rYvne_sock_create wUxbv sockxb &ne_sock_prebindӋUvxbsockvaddr  portvdo_bind'Uwfd%peer_family% waddr& port&"".". in6p7"" in!rEwne_sock_connectbUxxbsock`xaddra  porta fdc retc typed"X"X"X"X"X"X errnumxne_sock_peerŏUsyxbsockport 'saun sa# sin!r# sin6p# sauny len ias sadne_iaddr_makeЏUs:zstype?zraw ias""U"U in4{r"X"X in6Lq% :zne_iaddr_typeofUs}zzia}zne_iaddr_cmp БUa{f{i1p{i2 "Dȑ"O"O in1{r in2{r"ȑ"ȑ"" in1Lq in2Lqa{k{&ne_iaddr_free#БU{saddr"ne_sock_accept+ U |xbsock*listener* fd,ne_sock_fd6UA|F|sock5hbA|&ne_sock_read_timeout;U|xbsock:timeout: &ne_sock_connect_timeout@גU|xbsock?timeout? ne_sock_accept_ssl~Ua}xbsock}}ctx} ret ssl/ba} ne_ssl_context_s#} ctxa# sess\# hostnamef}# failures# k}ne_ssl_context'}ne_sock_connect_sslU_xbsock}ctx userdata ret ssli"ԓ4"ޓ4"ޓ4"ޓ%"ޓ%"ޓ% ne__nm1$ "4"H"H"H"H"H ne__nm1$ """""" ne__nm1$ 6SSL_ne__sock_sslsock*U/bxbsockne_sock_sessid!0Uxbsock 6 buf  buflen  sess\*$ ne_sock_cipherEdUxbsockD"\"P"P nameIne_sock_errorXpUԀπހsockWπhbـ&ne_sock_set_error]ߗUUxbsock\Zformat\ ...\ params_^(Uva_list(ne_sock_closeftUxbsocke retg)dummy_laddrށ*ne_vsnprintf$ ف$ *ne_snprintf$ Pف$ !(*ne_strerrory y*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\7*SSL_shutdownW 6W*SSL_get_error\*SSL_ctrl *SSL_write *SSL_read  *SSL_connect( *SSL_acceptF +SSL_free^ YA*SSL_newi~^*SSL_set_session /*SSL_set_fdɅ 6Ʌ*SSL_pending΅.*SSL_CIPHER_get_name-6-*SSL_get_current_cipher/a2-SSLeay*fcntl(+free  )φ __sigbits#φ*__posix_sigwaitԆ  *signal D*__posix_ttyname_rs *__posix_getlogin_r*close*strchr*memchr *strncpy= *memseta a*memmovef *memcpy Ȉ*memcmpÈ͈ *getnameinfo=   =*gai_strerrorBg+freeaddrinfo*getaddrinfoԉԉމ*inet_ntopى *inet_ptonE*socketii*sendbbn b*recvbƊb b*getpeername*connect *bindJ# *acceptn*ntohsqq*htonsqq*pollNj;fNj*writevbb̋b*_xmknod.3*_lxstatb.8"g*_xstatbl"*_fxstat"*__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-,-ne_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.. -g -c -KPIC -DPIC -o .libs/ne_auth.o ne_auth.c -W0,-xp.XAKk4Dpr2SvM1Y3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpr2SvM1Y3.;backend;raw;cd;DBG_GEN 5.2.7gchargointgauth_classidt#req_hdrt#resp_hdrt#resp_info_hdrt# status_codey#fail_codey#error_noauth#ah_server_classah_proxy_classfree_domains U sess ne_session_s ne_session  AUTH_ANY AUTH_CONNECT AUTH_NOTCONNECTunsignedghAsess#context#spec#protocol# handlers(#username#basic#ntlm_context6#realm#nonce#cnonce#opaque#domains;#ndomains#qopg#alg#nonce_count#h_a1u#stored_rdig#auth_protocolid#strengthy#name#challenge# response#verify#flagsy#Fvoidggyy ne_auth_creds-auth_handlerprotomask#creds#userdata#attempty# next(#g  auth_alg_md5 auth_alg_md5_sess auth_alg_unknownauth_algorithmauth_challenge,protocol#handler(#realm#nonce# opaque#domain#stale#got_qop#qop_auth# alg#$next#( size_t data#used#length#yAy ne_request_s ne_request$g:gDauth_requestrequest5#uri?#methodI#attempty# NAgyAFlongg  ne_ntlm_context_s ne_ntlm_context  g auth_qop_none auth_qop_auth@auth_qopg! ne_md5_ctxauth_sessionclean_session U sess get_cnonce6ЛU ret 7data 8hash9((Cmt Wmpid _g!  unsigned char   time_t pid_tget_credentialsqЛUym sesso m errmsgo yattempto challp pwbufpbasic_challengeUy sess~ yattempt~ parms m errmsgtmppassword g" request_basicBUi sess req parse_domainPVUye sess j domain cppbase invalidytokenrel absolute ge  scheme#host#userinfo#port# path#query#fragment# o ne_urirequest_ntlm`U| sess request tokenreqntlm_challenge&Uy9 sess yattempt parms m errmsgstatusy;ddpassword9gLdigest_challenge0 UyW sess yattempt parms m errmsgpasswordWtmp?a1Ltmp_md5_asciijMgjg!{ inside_domainl 4Uy3 sessk 8req_urik insideymnnuri oިިdByg3g=request_digest@UU sess req a2rdiga2_md5_asciiUrdig_md5_asciifnc_valuewqop_valueretB C g!f g!w g g ne_buffertokenize3Uyq ;hdr ;key ;value sep yischallpnt BEFORE_EQ AFTER_EQ AFTER_EQ_QUOTEDstate.verify_digest_response(@Uy req& sess& value'hdr)pnt)key)val)qopg*nextnonce+rspauth+cnonce+nc+qop_value+nonce_count,rety-sss\s\sssssptrZsa2na2_md5_asciiordig_md5_asciiogg! g! Fprotocolsp!protocolsinsert_challenge`U list proto retchallprevFchallenge_error`Uf m errbuf kfmt ...errpaplengfg va_list auth_challenge XUy sess yattempt valuepntkeyvalhdrsepgchallchallengeserrmsgpʻ̹protohdl(n00XX   t l ltokBgFgah_creates`oU 5reqq sessionq methodq urirsesstis_connectyuj߽j߽jareqzhdl({ggah_pre_sendp7U 5r cookie requestsessreq2þ2þ2valueah_post_send@0UyU 5req cookie statussessareqauth_hdrauth_info_hdrretyB major_versiony#minor_versiony#codey#klassy# reason_phrase# Une_status gah_destroy0UK 5req session sessareqfree_authU cookiesesshdl(next(auth_registerGU sess yisproxy protomask ahc id creds userdata ahshdlg(ne_set_server_auth]PU sess\ creds\ userdata\ne_set_proxy_authcUW sessb credsb userdatabne_add_server_authj>U sessh protocolh credsi userdataine_add_proxy_authq@U< sesso protocolo credsp userdatapne_forget_authwU sessvasx  ne__ntlm_getRequestTokeng ne__ntlm_authenticatey!ne__ntlm_destroy_context g g ne__ntlm_create_context6Z  % gZ gd libintl_dgettext _ i g ne_get_request_private   g !ne_set_request_private!  "!!!!ne_hook_destroy_sessionW!!!!"i! W!!ne_hook_destroy_request!!i!U!y! !!!ne_hook_post_send!!!" " !!ne_hook_pre_send:"! "g:"gD""j" ?"I"N"!ne_hook_create_request"!j"g"g" ne_get_response_header"" "g"!ne_set_error#!"o !ne_fill_server_uri:#!#g:# ne_get_scheme?#e#!ge# ne_get_session_private#!j#g#!ne_set_session_private#!##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_set_session_flag$!#y!ne_uri_free$#o $o $ ne_uri_cmpy %$$  % *% ne_uri_resolve4%e%%%/%4%ge% ne_uri_parsey%j%#g%g% ne_strcasecmpy%%%gg% ne_vsnprintf&%%%g& ne_snprintfE&%&gE& ne_concatm&J&!ne_buffer_destroy& ne_buffer_finish&g&!ne_buffer_append&&g&!ne_buffer_zappend'&!ne_buffer_concat7'$ne_buffer_create Q' ne_base64}'V'g}' ne_shave'' ne_token';gg' ne_strdup'' ne_realloc( ne_calloc0( ne_mallocM(gM(!ne_debugu(yR( ne_md5_finish_ascii(!ne_md5_destroy_ctx( ne_md5_dup_ctx((!ne_md5_process_bytes)($ne_md5_create_ctx$RAND_statusy RAND_pseudo_bytesy|)M)y __posix_ttyname_ry)y __posix_getlogin_ry)y$getpid g) strchr*)yg*g* strncmpyH***gH* strlenl*M*gl*gv* strcmpy*q*{* memset*yg*unsigned long strtoul*+*;y!free++ __posix_ctime_rI++%tm$ +tm_secy#tm_miny#tm_houry#tm_mdayy# tm_mony#tm_yeary#tm_wdayy#tm_ydayy#tm_isdsty# I++ __posix_asctime_r,+ &time , 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.. -g -c -KPIC -DPIC -o .libs/ne_redirect.o ne_redirect.c -W0,-xp.XAKk4Dpr2SvM1b3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpr2SvM1b3.;backend;raw;cd;DBG_GEN 5.2.7^{create2nUreq1session1  method1*uri1red-3ne_request_sne_requestvoidchar  %intunsigned  scheme/# host/# userinfo/# port;# path/# query/# fragment/#Gne_urine_session_sne_session redirect(- requri/# valid4# uri# sess#$ post_sendpath?ret4@((pnt/G n major_version4# minor_version4# code4# klass4# reason_phrase/# ne_status n~ ;size_t  data/# used# length#ne_bufferfree_redirectopU,cookienred-pne_redirect_registerxzUysesswred-yne_redirect_locationUsessred-   libintl_dgettext/#ne_hook_destroy_sessionY# ^4Ychne_hook_post_send  Yne_hook_create_request  "ne_get_response_header'[Yne_buffer_destroy[ne_buffer_altered[ ne_buffer_zappend[ne_buffer_create ne_strdup/ne_calloc0; 0ne_set_error\5Gne_fill_server_uri\ ne_get_session_private ne_set_session_privatene_uri_free \  ne_uri_parse4E  \ E O strstr/x J T x strrchr/ } 4long  __posix_ctime_r/  /tm$u tm_sec4# tm_min4# tm_hour4# tm_mday4# tm_mon4# tm_year4# tm_wday4# tm_yday4# tm_isdst4# u __posix_asctime_r/ z /freene_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.. -g -c -KPIC -DPIC -o .libs/ne_compress.o ne_compress.c -W0,-xp.XAKk4Dpr2SvMFf3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpr2SvMFf3.;backend;raw;cd;DBG_GEN 5.2.7}parse_headerlUctxkB intne_request_sne_requestne_session_sne_sessioncharlong  ) unsigned char)Bytef:unsignedKuIntunsigned longbuLong internal_state dummy#void KKalloc_funcfree_funcvoidpf z_stream_s8 next_inF# avail_inW# total_ins# next_outF# avail_outW# total_outs# msg# state# zalloc# zfree#$ opaque#( data_type#, adlers#0 reserveds#4 z_stream  E%K*Ene_block_reader major_version# minor_version# code# klass# reason_phrase#e `ne_accept_response)  Ksize_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#@ readerJ#@ acceptor#@ userdata#@ header #@ hdrcount#@ footer+#@ footcount#@ checksums#@ state<#@ne_decompressprocess_footerUctxbuf len@RRcrcsB)set_zlib_error )Uctxmsg codeD!!!err do_inflate@.Uctxbuf lenretpp!p/p/prretgz_reader0mU ud buf lenctxzbuf counthdr ^ < <x==ret   gz_pre_sendzVUI ryudy  reqyctx{ z data# used# length#I ne_buffer z gz_acceptor`U userdatareq  stctxene_status  ne_decompress_readerU reqacpt Jrdruserdatactxne_decompress_destroyU ctx  inflateInit2_   ) crc32sB s K inflateEnd`  inflate   __posix_ttyname_r K __posix_getlogin_r   libintl_dgettext   I 8 ` ! !ne_unhook_pre_sendi  8 !ne_hook_pre_send  8  ne_get_session    !ne_add_request_header`    ne_get_response_headerE`!ne_add_response_body_reader`E!ne_set_error " ne_strcasecmp ne_callocK!ne_debug*"* __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)!free== memchrkBKk#memcpypKKne_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.. -g -c -KPIC -DPIC -o .libs/ne_i18n.o ne_i18n.c -W0,-xp.XAKk4Dps2SvMFi3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMFi3.;backend;raw;cd;DBG_GEN 5.2.7mne_i18n_init wUencodingcharlibintl_bind_textdomain_codeset libintl_bindtextdomainClongCK__posix_ctime_r}Pint tm$ tm_sec}# tm_min}# tm_hour}# tm_mday}# tm_mon}# tm_year}# tm_wday}# tm_yday}# tm_isdst}#  __posix_asctime_r"5ne_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.. -g -c -KPIC -DPIC -o .libs/ne_pkcs11.o ne_pkcs11.c -W0,-xp.XAKk4Dps2SvMFl3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMFl3.;backend;raw;cd;DBG_GEN 5.2.7ne_ssl_pkcs11_provider_initZUproviderXnameY intne_ssl_pkcs11_provider_scharne_ssl_pkcs11_nss_provider_initcUprovider^name_ directory_cert_prefix`key_prefixasecmod_dbbne_ssl_pkcs11_provider_destroygU8Uproviderg ne_ssl_pkcs11_provider8ne_ssl_pkcs11_provider_pinkUUprovideri#fnj userdatakvoidunsigned        ne_ssl_pkcs11_pin_fnne_ssl_set_pkcs11_providernUsessmUprovidern 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  1 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.. -g -c -KPIC -DPIC -o .libs/ne_socks.o ne_socks.c -W0,-xp.XAKk4Dps2SvMFo3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMFo3.;backend;raw;cd;DBG_GEN 5.2.7v5fail<yUsock;code; context;err=intne_socket_sne_socketunsignedchar   fail`U\sock_aerror_ \sofailgiUsockfretf contextferrhssize_t v5_proxyrpUsocko'addro 1hostnamepportp;usernameqEpasswordqmsgcspvslentretunv D % %raw{ Bne_inet_addr_sne_inet_addr " , 6 @unsigned charlong Jv [JJ[v4fail09Usockcode contexterr  v4_proxy P2UWsockWvers addrhostnameportusernamemsg!raw!pv!n"ret# T \ \len9 $ $ $len@ne_sock_sversionNE_SOCK_SOCKSV4NE_SOCK_SOCKSV4ANE_SOCK_SOCKSV5    J [J[ne_sock_proxy[@UsockWWversW addrXhostnameXportYusernameZpasswordZ     size_tstrlenvoid memcpy" 'ne_sock_set_errorX", X bne_sock_errorg]ne_sock_fullread ne_sock_fullwrite"ne_sock_read(  ( ne_iaddr_rawvW - v W  ne_iaddr_ipv4ne_iaddr_ipv6a ne_iaddr_typene_iaddr_typeof  \  ne_strdup  free    libintl_dgettext8   [8 __posix_ctime_rj = tm$ tm_sec#tm_min#tm_hour#tm_mday# tm_mon#tm_year#tm_wday#tm_yday#tm_isdst# j  __posix_asctime_r  ne_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.. -g -c -KPIC -DPIC -o .libs/ne_ntlm.o ne_ntlm.c -W0,-xp.XAKk4Dps2SvMFr3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMFr3.;backend;raw;cd;DBG_GEN 5.2.7Cne_input_ntlmuU?jctxtresponseToken fCCbufferysize~?NTLM_NONENTLM_BADNTLM_FIRSTNTLM_FINENTLM_LASTntlmNTLMSTATE_NONENTLMSTATE_TYPE1NTLMSTATE_TYPE2NTLMSTATE_TYPE3NTLMSTATE_LASTINTLMState unsigned char long   char  ne_ntlm_context_sTstate#nonce#user# passwd#requestToken#ne_ntlm_context T o  intsetup_des_keyUykey_56ks key  DES_cblock unsigned long  Dcblock#deslong # U DES_ksoksD#UDES_key_schedule ocalc_resplUykeysyplaintext yresultsksomkhash,pUpassword%ynonce& ylmresp'yntresp)lmbuffer-ntbuffer(/pwy1magic>2\i~5len~6XksoHmd4Z (  9  9O  unsigned O@l MD4state_st\AO#BO#CO#DO# NlO#NhO#data[#numO#XlMD4_CTXne_output_ntlmvU~jctxudomainwhost xdomlen~yhostlen~zhostoff~{domoff~|size~}ntlmbuf ~LTTzlmrespoff~ntrespoff~useroff~lmresp ntresp- userC userlen~BO    -  >  > ne__ntlm_create_contextvtUj  userNameu passwordu ctxjw  ne__ntlm_destroy_contextU jcontextne__ntlm_authenticateU~ jcontext responseToken 1DDallntlmstatus? ne__ntlm_getRequestToken-U' jcontextret lMD4_Final~N y' voidN V MD4_Update~ ' [ OMD4_Init~ '   UDES_set_key~   DES_set_odd_parity  DES_ecb_encrypt8    ~toupper~S ~ S strchr| X ~ | Osize_tstrlen   N memset   ~ON memcpy    O  ne_snprintf =     = yne_unbase64 p B G  p ne_base64 u O ne_strdup  ne_calloc  One_malloc  Ofree  __posix_ctime_rCtm$tm_sec~#tm_min~#tm_hour~#tm_mday~# tm_mon~#tm_year~#tm_wday~#tm_yday~#tm_isdst~# C !__posix_asctime_rne_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.. -g -c -KPIC -DPIC -o .libs/ne_207.o ne_207.c -W0,-xp.XAKk4Dps2SvMFu3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMFu3.;backend;raw;cd;DBG_GEN 5.2.7]chardlintne_xml_idmap nspaceq#nameq#idv#}long map207G0 T  map207G0 ne_207_set_response_handlersU0PUm 3pR 5startS endTvoidmdunsignedschemez#hostz#userinfoz#port# pathz#queryz#fragmentz#uune_207_start_responsemajor_versionv#minor_versionv#codev#klassv# reason_phrasez#:duune_207_end_responseuuune_207_start_propstat:%d/Uuu*49ne_207_end_propstatUne_xml_parser_stne_xml_parserne_urisize_t dataz#used#length#ne_buffer:ne_statusne_207_parser_s`start_response5#end_response#start_propstat #end_propstato# parser#userdatau#base#cdata#4in_responsev#8responseu#<propstatu#@status#Ddescriptionz#Xhrefz#\ne_207_parser ne_207_set_propstat_handlers]PpU 3pZ start[ oend\ne_207_get_current_responsecpUu 3pbne_207_get_current_propstathUu 3pgcan_handlenAUv^ vparentm vchildm cdata_207zPUv uuserdatay vstatey bufy leny p3{dstart_elementUv{ uuserdata vparent nspace name atts p3 statevd{ddend_elementUv uuserdata vstate nspace name p3 cdata "(`(`p ref resolved.FF buf d d d d ne_207_create]U3 parser base uuserdata p3 ne_207_destroy`U 3pne_accept_207Uv uuserdata8 req B statusne_request_s ne_request' = start_responsexUu uuserdata uri ctx  context hrefz#buf#is_error# handle_errorqU  ctx status  descriptionfffbuf  B d d2 1end_response0U. uuserdata.uresponse. 3 status/= description/ctx 1. d8 end_propstat8U uuserdata6upropstat6  status7 description7ctx 9 d ne_simple_request@4Uvsess?8 req? retvActx Bp2073CpDbaseEC ne_session_sne_session dd libintl_dgettextz !ne_request_destroy$ $. ne_get_status3Y) ne_request_dispatchv:vudvu!ne_add_response_body_readerud!ne_set_error?"!ne_fill_server_urik?!ne_uri_free? ne_uri_copy ne_uri_resolve ne_uri_unparsez%d% ne_uri_parsevT*?ddY ne_snprintfT^"!ne_buffer_destroy!ne_buffer_cleard!ne_buffer_append!ne_buffer_concat'"#ne_buffer_createdA ne_shavezlzF}ldvd ne_xml_mapidvq{t!ne_xml_destroy ne_xml_currentlinevd ne_xml_parse_vv8ud8 ne_xml_get_error=fdf!ne_xml_set_errork ne_xml_failedvdddvuvdv-uv d2d<vfuv7AF!ne_xml_push_handler-fu#ne_xml_created: ne_parse_statuslinevd!ne_debugv"d sprintfvGz!"dG ne_strdupznL ne_callocu __posix_ctime_rzztm$ Vtm_secv#tm_minv#tm_hourv#tm_mdayv# tm_monv#tm_yearv#tm_wdayv#tm_ydayv#tm_isdstv# V __posix_asctime_rz[z$freeumne_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.. -g -c -KPIC -DPIC -o .libs/ne_xml.o ne_xml.c -W0,-xp.XAKk4Dps2SvMFx3.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMFx3.;backend;raw;cd;DBG_GEN 5.2.7decl_handler@Uuserdata version encodingstandalonepbvoidcharXML_Charint ne_xml_char#4#H namespace  name># uri># nextC#      ne_xml_startelm_cb     ne_xml_endelm_cb5unsigned k   : ?Kne_xml_cdata_cbk handler startelm_cb# endelm_cb0# cdata_cb# userdata# next# elemento nspace9# name># state# default_ns># nspacesC# handler# parent#XML_ParserStructoXML_Parserlongne_xml_parser_sN root# current# top_handlers# failure# prune# parser# encoding# error#ne_xml_parserNne_xml_currentlineUbpne_xml_doc_encodingUpNdeclare_nspacesUbpelm attsn<<<||nsCexpand_qnameYUbpelm qnamepfx DGGe LDLDDDuri##start_element.` Ubuserdata,gname, vatts-pb/elm0hand1state2B#blqdestroy_element[  UelmZthis_nsC\next_nsC\char_datan  UY userdatam^ datam lenmpboelmp#Y end_element}  U userdata| name| pb~elm# entity_declaration 9 U userData entityName is_parameter_entity valuevalue_length base systemId  publicId$ notationName(parserb      resolve_nspace@  U   elm prefix  pfxlens a  o  o  ns    ?size_t H ne_xml_resolve_nspace  U  bparser prefix  length! | H | H | e  ne_xml_create Ub pbne_xml_push_handlerbU| bpstartelm_cb cdata_cb0endelm_cbuserdatahand ne_xml_parse_vpU userdata block  lenpb ne_xml_parse$;Uybp#~block#  len#ret%flag%Byne_xml_failedf@ZUbpene_xml_destroyk`GUAbpjelmlparentlhandmnextmne_xml_set_errorPUbpmsg ne_xml_get_errorUbpne_xml_get_attrUbpattrs nspacenamenpntTTddd||uriB ne_xml_mapidUmap 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 ounsigned longXML_SizeXML_GetCurrentLineNumber G XML_GetErrorCodek unsigned charXML_StatusXML_STATUS_ERRORXML_STATUS_OKXML_STATUS_SUSPENDEDXML_StopParser|  kXML_Parse|&     XML_SetUserDataJ  J!k  O T XML_SetCharacterDataHandler  k!   !   XML_SetElementHandler%   %/9CMW!  *  4  > H R \a XML_SetEntityDeclHandler  XML_ParserCreate !&      XML_SetXmlDeclHandlerU  &Zne_snprintf  U _" ne_debug  "ne_strdup ne_calloc ?libintl_dgettext7  7strchr` < `jstrncmp e o ?strlen  strcpy  strcmp  #memcmpQ  ( ?Q__posix_ctime_r V tm$ tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# __posix_asctime_rP !  freed #abort" ne_props.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.. -g -c -KPIC -DPIC -o .libs/ne_props.o ne_props.c -W0,-xp.XAKk4Dps2SvMF03.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMF03.;backend;raw;cd;DBG_GEN 5.2.78chardatag5Uuserdatafstatef dataflenfhdl1hintvoidcharunsignedsize_t ne_session_sne_session- ne_request_sCne_requestR  datah# used# length#mne_buffer ne_207_parser_sne_207_parser ne_xml_parser_sne_xml_parser w schemeh# hosth# userinfoh# port# pathh# queryh# fragmenth# w   |ne_props_create_complex   ne_props_destroy_complex    nspace# name#ne_propname prop nameh# nspaceh# valueh# langh# pname#0   major_version# minor_version# code# klass# reason_phraseh#ne_status propstat9 props# numprops# status# ne_urine_prop_result_set_s, pstats9# numpstats# counter# private# uri>#Kne_prop_result_set  K   ne_props_result ne_propfind_handler_s8 sess># requestc# has_props# body# parser207# parser# creator# destructor# cd_userdata# current#$ value#( depth#, callback#0 userdata#4ne_propfind_handler ne_propfind_get_parserq@ZUy1handlerpne_propfind_get_requestv`zUc1handlerupropfind|U<1handlerzresults{ userdata{ret}reqc~set_bodyU1hdlnames bodynne_propfind_allprop(U 1handlerresults userdatane_propfind_named0U 1handler props resultsuserdata ne_proppatch;UY >sess^ uri  itemsreqcbodynret##elm Y c ne_proppatch_optype ne_propsetne_propremove nameh # typem # value # ne_proppatch_operation    pnamecmp@$UO T pn1^ pn2 O Y findprop0uUC H setR pname W pstat_ret\ prop_retpspTcjMjMjM  propC M 9ne_propset_valueU   set pname prop   ne_propset_lang$@UE @ O set"Y pname# prop%@ J T ne_propfind_current_private/@yU 1handler.ne_propset_private4U  set3 ne_propset_iterate:Uset80iterator9 userdata9ps;p;  prop?ret@B +     +ne_propset_iterator ne_propset_statusMP UsetKpnameL pstat9Nstart_response\P  U?userdata[Duri[ set]hdl1^>?start_propstatl "Uuserdatakresponsek setmhdl1npstat9onpstartelm"&Uguserdataparent lnspacevnameattshdl1pstat9propnlangx"$"$"$" $" $" $a"#"#"#nseppfxBgq{endelm&&UQuserdatastate Vnspace`namehdl1pstat9nQ[end_propstat''U&userdatapstat_v +status5descriptionpstat98''C''C''nC&0free_propset'[*U1handlerset nC(*Y(*Y(*m p9!end_response;`**Ususerdata8resource8 xstatus9description:handler1<set=s}ne_propfind_createJ*`,U1>sessIuriI depthIret1Kbase>LCne_propfind_destroyl`,-U`1handlerkne_simple_propfindz--U>sessw$hrefw depthw.propsxresultsyuserdatayhdl1{ret|)ne_propnames-3.U>sesshref depthresultsuserdatahdl1retne_propfind_set_private@.i.U`1hdlcreator destructoruserdata`jlibintl_dgettexth e oCne_lock_using_resource   ne_add_depth_header  ne_simple_request3  ne_207_get_current_propstatg 3gne_accept_207   lne_207_destroy 3       ne_207_set_propstat_handlers@ 3   @ `  EJeo   j tyne_207_set_response_handlers 3 `  ne_207_create   ne_request_destroy1 C1;ne_get_status@f 6ne_request_dispatch ne_add_request_header           ne_add_response_body_reader^    ^ne_set_request_body_buffer  c ne_request_createc   ne_set_error   ne_fill_server_uri<  ne_uri_freeW >>\ne_uri_copyW W amne_buffer_destroy ne_buffer_finishh ne_buffer_append   ne_buffer_concat) ne_buffer_createCne_debugk  Hne_xml_destroy kne_xml_resolve_nspace k  ne_xml_get_attr4 k   4ne_xml_parse_vj  9 jne_xml_get_erroro kne_xml_set_error k ne_xml_failed k 0       5 _   : ? d n    i s x ne_xml_push_handler k 0 _ ne_xml_create ne_strduph! ne_realloc5!  ne_callocR! R!strchrh{! W! {!!strcmp! ! !memset!   long!!__posix_ctime_rh " ! h tm$ " tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst#  ""__posix_asctime_rh" " h!free k&"ne_locks.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.. -g -c -KPIC -DPIC -o .libs/ne_locks.o ne_locks.c -W0,-xp.XAKk4Dps2SvMF33.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMF33.;backend;raw;cd;DBG_GEN 5.2.7_charjrintne_xml_idmap nspacew#namew#id|#long element_maph   element_maphj  Nnspace%#name%# *ne_propnameN`t lock_propser `  lock_propsrlk_createzp..U(HreqxUsessionx _methodyiuriy lrc{ne_request_s (ne_request7voidMjZjdjunsigned schemen#hostn#userinfon#ports# pathn#queryn#fragmentn# ne_urine_lock_type#ne_locktype_writene_lock_scopehne_lockscope_exclusivene_lockscope_sharedne_lock4uri#depth|#type# scope##$tokenn#(ownern#,timeout#0hlock_list lock#next#prev#ne_lock_store_sOlocks#cursor# ne_lock_storeOclh_req_cookiestoreh#submit#mlk_pre_send./UhHrUuserdata req lrc ////// item.//?//?// urin ssize_t datan#usedh#lengthh# une_bufferinsert_lock/40Ulistlock itemfree_list@00Uglist|destroy nextlk_destroy0 1UHreqUuserdata lrcne_lockstore_destroy1U1UstoreOne_lockstore_create`11Une_lockstore_firstà11Uastorene_lockstore_next192Ustorene_lockstore_register@22Ustore sess ne_session_s ne_session submit_lockذ2-3U_ lrclock itemne_lockstore_findbyuri033U store uri cur ne_lock_using_parent3R5Uk Hreqp path lrc u item parentnCjk ne_lock_using_resource`56U Hreq uri |depthlrcitemmatch|j ne_lockstore_addC67Ud storeBlockB ne_lockstore_removeH77U storeGlockG itemIne_lock_copy\7{8U  lock[ret]h ne_lock_createk88UZ locklne_lock_freeu8p9U locktne_lock_destroyp99U lockne_unlock9:U|2  sess7 lock reqHret|h2 parse_depth:;U|s x depthjs parse_timeout ;;U timeoutA;;d;;d;;~;;~;;toj discover_results;<UUuserdatauri setctx(lockstatusBne_prop_result_set_s ne_prop_result_setne_propfind_handler_s ne_propfind_handlerh%  major_version|#minor_version|#code|#klass|# reason_phrasen#/ U  *  ne_lock_resultdiscover_ctx(phandler#results#userdataU#cdata#  /ne_status -=end_element_common<>U|l|state cdatajend_element_ldisc@>>U|IUuserdata|state NnspaceXnamectx(lockjIjScan_accept>?U||parent|id ld_startelm?,@U|GUuserdata |parent  Lnspace Vname eattsctx(id|jGjQj[`lk_cdata 0@@U|Uuserdata|state cdatahlenctx!jne_xml_parser_s ne_xml_parserlock_ctxHactiveh#reqH#4parser#8tokenn#<found|#@cdata#Dld_cdata+@@U|Uuserdata)|state) cdata*hlen*ctx(,jlk_startelm7@BU|Uuserdata4|parent4 nspace5name5atts6ctx8id|9lA3BA3BA3Btoken Cjjjjlk_endelmfBmCU|Uuserdatad|stated nspaceenameectxgjjld_createzpCCUUUuserdatayuriy lk{ld_destroyCCUbUuserdataUprivate lkne_lock_discoverDEU| sess!uri callbackUuserdatahandlerctxret|Cjadd_timeout_header EEUqHreqtimeout ne_lockEIU| sesslock reqHbodyparserret|ctxne_lock_refreshIJU| sesslock reqHparser ret| ctx (!ne_xml_dispatch_request|  jj!libintl_dgettextn1  "ne_propfind_destroyY 1*Ycm U h rw!ne_propfind_named| 1 ^  U#U U  U U"ne_propfind_set_private9 1   U!ne_propfind_get_parserh 9jm!ne_propfind_create h r |!ne_propfind_current_privateU 1!ne_propset_privateU *-!ne_propset_statusN  "ne_add_depth_headerv  |vjj!ne_xml_mapid| { s  "ne_xml_destroy j"ne_xml_set_error  jjj$)#|X U |   .3j]#| U | b sgjj#| U |  "ne_xml_push_handler  X   U$ne_xml_createj!ne_get_request_privateUL  jL"ne_set_request_private  Q U  U"ne_hook_destroy_request   Uu  U "ne_hook_pre_send   Ujj(N  U # -2"ne_hook_create_request  N Une_request_flag_eNE_REQFLAG_EXPECT100NE_REQFLAG_IDEMPOTENTNE_REQFLAG_LAST"ne_set_request_flag    |"ne_request_destroy- (-!ne_get_session Y 2(Y-c!ne_get_statush ^!ne_request_dispatch| jj"ne_print_request_header   %jj "ne_add_request_header>  j> jH !ne_get_response_headerM   C j "ne_set_request_body_buffer  sj j !ne_request_createH! j!"ne_set_error3!  !%"ne_fill_server_uri_!  3!"ne_uri_freez! 3!!!ne_uri_copyz!! z! !!!!ne_uri_cmp|! ! !!!ne_uri_unparsen" !j"j"!ne_path_childof|L" " "jL"jV"!ne_path_compare|" Q" ["j"!ne_path_parentn" "j"j"!ne_strcasecmp|" " ""ne_buffer_destroy# "ne_buffer_clear.# j.#"ne_buffer_appendb#  3# s"ne_buffer_concat# %$ne_buffer_createj#!ne_shaven# n #j#"ne_debug# | #%j#!ne_strdupn$ #!ne_callocU4$ s!ne_mallocUQ$ sjQ$!strdupnu$ V$ju$j$!strncasecmp|$ z$ $ sj$j$!strcmp|$ $ $!memsetU % U | s %!__posix_ctime_rn;% % ntm$ %tm_sec|#tm_min|#tm_hour|#tm_mday|# tm_mon|#tm_year|#tm_wday|#tm_yday|#tm_isdst|# ;%%!__posix_asctime_rn& % nj&n!strtol;& & & |"freeO& UjO&&atoi| T&$%ne_xmlreq.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.. -g -c -KPIC -DPIC -o .libs/ne_xmlreq.o ne_xmlreq.c -W0,-xp.XAKk4Dps2SvMF63.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMF63.;backend;raw;cd;DBG_GEN 5.2.7 parse_error#J8KUsess"parser" intne_session_sne_sessionne_xml_parser_sne_xml_parserne_xml_parse_response+@KLUreq*parser* buf, bytes- ret.ne_request_sne_requestcharlong @ ?ssize_tmedia_type_is_xmlDLiMU9ctypeC stlenE 9 C type>#subtype>#charsetH#valueM# Rne_content_type unsignedsize_tne_xml_dispatch_requestQpMdNUreqPparserP retRMVNMJNMJN parseitUMNMNMN ctype[Rne_get_content_type ne_xml_parse   ne_xml_get_error7ne_discard_response^ne_read_response_block^cne_end_requestne_begin_request ne_get_session  }major_version#minor_version#code#klass# reason_phraseM#ne_status }ne_get_status ne_set_errorne_close_connection    ne_strcasecmpF F Plibintl_dgettextMKU __posix_ctime_rMMtm$ Ntm_sec#tm_min#tm_hour#tm_mday# tm_mon#tm_year#tm_wday#tm_yday#tm_isdst# N__posix_asctime_rMSMvoidfree strlenlE&ne_oldacl.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.. -g -c -KPIC -DPIC -o .libs/ne_oldacl.o ne_oldacl.c -W0,-xp.XAKk4Dps2SvMF93.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dps2SvMF93.;backend;raw;cd;DBG_GEN 5.2.7-acl_body1pNPUmuright0count0 bodym2m3NPNPNPtype:charunsignedsize_t ] data# used# length#,ne_buffer]  ne_acl_href ne_acl_property ne_acl_all  ne_acl_grant ne_acl_denyint ] applyr# type# principal# read# read_acl# write# write_acl# read_cuprivset#ne_acl_entry ]p zne_acl_setoQRU'GsessmQurim [entriesnnumentriesnretpreqqbodymrne_session_s'ne_session6 L ]Vne_request_s`ne_requesto` ne_lock_using_resourcene_request_destroy ` U major_version# minor_version# code# klass# reason_phrase#ne_status Uene_get_statusjne_request_dispatch  ne_add_request_header ne_set_request_body_buffer8' = Gne_request_create8BL,ne_buffer_destroy ne_buffer_zappendne_buffer_concatne_buffer_createm__posix_ttyname_r@__posix_getlogin_rklong ks__posix_ctime_rxtm$> tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# >__posix_asctime_rCx'ne_acl3744.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.. -g -c -KPIC -DPIC -o .libs/ne_acl3744.o ne_acl3744.c -W0,-xp.XAKk4Dpt2SvMFA4.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpt2SvMFA4.;backend;raw;cd;DBG_GEN 5.2.7acl_body3RVUp right2count2 bodyp4m5ORUbRUbRUtype<char unsignedsize_t ` data# used"# length"#/ne_buffer` ne_acl_target ne_acl_href ne_acl_property ne_acl_all ne_acl_authenticated ne_acl_unauthenticated ne_acl_self ne_acl_optype) ne_acl_grant ne_acl_deny n targetu# type# tname# privileges# )ne_acl_entry nint ne_acl3744_set0V'WUCcsessmuri wentriesnumentriesretreqbodypne_session_sCne_sessionR h nrne_request_s|ne_request| ne_lock_using_resourcene_request_destroy | q major_version# minor_version# code# klass# reason_phrase# ne_status qne_get_statusne_request_dispatch  ne_add_request_header ne_set_request_body_bufferTC Y cne_request_createT^h/ne_buffer_destroy ne_buffer_append ne_buffer_zappend&ne_buffer_concatGne_buffer_createp__posix_ttyname_r__posix_getlogin_rlong __posix_ctime_rtm$ tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# __posix_asctime_r(ne_openssl.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.. -g -c -KPIC -DPIC -o .libs/ne_openssl.o ne_openssl.c -W0,-xp.XAKk4Dpt2SvMFD4.Xa;g;P;R=Sun C 5.10 SunOS_i386 Patch 142363-01 2009/07/15;G=.XAKk4Dpt2SvMFD4.;backend;raw;cd;DBG_GEN 5.2.7zappend_dirstring[0WXUJbufZstrZ tmp`\len]intcharunsignedsize_t : data# used# length# ne_buffer:unsigned charOlong asn1_string_st length# type# data`# flagse# mASN1_STRINGdup_ia5stringX2YU asmASN1_IA5STRING  ne_ssl_readable_dname@YZUnamenflagdumpJcname#email( YuZ YbZ YbZent    ;  % stack_st num# data# sorted# num_alloc# comp;#@STACK buf_mem_st  length# data# max#BUF_MEMunsigned long X509_name_stY entries# modified# bytes# hash# X509_NAMEYne_ssl_dname_s dni#nne_ssl_dname   asn1_object_st sn# ln# nid# length# data`# flags#   ASN1_OBJECT- X509_name_entry_st object?# value# set# size# DX509_NAME_ENTRY ne_ssl_dname_cmpZZUdn1dn2  ne_ssl_clicert_freeZ[UB&ccmASN1_INTEGERBASN1_BOOLEANmASN1_ENUMERATEDmmASN1_BIT_STRINGmASN1_OCTET_STRINGmASN1_PRINTABLESTRINGmASN1_T61STRINGmASN1_GENERALSTRINGmASN1_BMPSTRINGmASN1_UNIVERSALSTRING7mASN1_UTCTIMEWmASN1_GENERALIZEDTIMEomASN1_VISIBLESTRINGmASN1_UTF8STRINGASN1_VALUE_stASN1_VALUE} ptr# booleanZ# asn1_string# object?# integerU# enumerated# bit_string# octet_string# printablestring# t61string# ia5string# generalstring# bmpstring2# universalstringR# utctimej# generalizedtime# visiblestring# utf8string# set# sequence# asn1_value# asn1_type_st type# value#} ASN1_TYPE X509_algor_st algorithm?# parameter # X509_ALGOR X509_sig_stC algor # digest# X509_SIGC  dinfoR # salt# iterU#W PKCS12_MAC_DATA  pkcs7_st  asn1`# lengthe# state# detached# type?# di# pkcs7_signed_st versionU# md_algs# cert# crl# signer_info# contents # PKCS7_SIGNED  EVP_CIPHER  engine_st ENGINE O eO eO  evoid O " e evp_cipher_ctx_st  cipher # engine # encrypt# buf_len# oiv # iv # buf #0 num#P app_data #T key_len#X flags#\ cipher_data #` final_used#d block_mask#h final #l" O% O/Y *49 O^ `ch }      evp_cipher_st4  nid# block_size# key_len# iv_len# flags# initY# do_cipher# cleanup# ctx_size# set_asn1_parameters#$ get_asn1_parameters#( ctrl#, app_data #0  pkcs7_enc_content_st i content_type?# algorithm # enc_data# cipher# PKCS7_ENC_CONTENT i pkcs7_enveloped_st  versionU# recipientinfo# enc_data#PKCS7_ENVELOPE  pkcs7_signedandenveloped_st  versionU# md_algs# cert# crl# signer_info# enc_data# recipientinfo#PKCS7_SIGN_ENVELOPE  pkcs7_digest_st  versionU# md # contents # digest# PKCS7_DIGEST  pkcs7_encrypted_st P versionU# enc_data#PKCS7_ENCRYPT P  ptr# data# sign # enveloped# signed_and_enveloped# digest# encryptedd# other # PKCS7  < versionU# mac # authsafes#PKCS12 <mASN1_TIMEN X509_val_st notBefore^# notAfter^#cX509_VAL  O` O ` O%T*`/ OY^`c bignum_st d# top# dmax# neg# flags# bignum_ctx" ' 1 ;BIGNUM bn_mont_ctx_stH ri# RRE# NE# NiE#, n0#@ flags#DR,6@ O  rsa_stX h pad# versione# meth# 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 blindingQ#P mt_blindingQ#T h`mr O ` G G cb_1# cb_2 # bn_gencb_st ~ ver# arg # cb%#~ rsa_meth_st8  name# rsa_pub_enc# rsa_pub_dec # rsa_priv_encT# rsa_priv_dec# rsa_mod_exp"# bn_mod_exp# init# finish# flags#$ app_data#( rsa_sign#, rsa_verify#0 rsa_keygen#4RSA_METHOD E crypto_ex_data_st sk# dummy#CRYPTO_EX_DATARBN_MONT_CTXbn_blinding_st.BN_BLINDING? V O` DSA_SIG_st r# s#oejj OjMj R \jWafjjj`j dsa_method0 name[# dsa_do_sign# dsa_sign_setup# dsa_do_verify# dsa_mod_expM# bn_mod_exp# init# finish# flags# app_data#$ dsa_paramgen#( dsa_keygen#,DSA_METHOD  dsa_stD pad# versione# write_params# p# q# g# pub_key# priv_key# kinv# r#$ flags#( method_mont_p)#, references#0 ex_data#4 meth#< engine #@ c4# 9^`>C dh_stLu pad# version# p# g# lengthe# pub_key# priv_key# flags# method_mont_p)# q#$ j#( seed`#, seedlen#0 counter#4 references#8 ex_data#< meth #D engine #H cu   z  dh_method$ name# generate_key4# compute_key^# bn_mod_exp# init# finish# flags# app_data# generate_params # " DH_METHOD  ec_key_st  =! ptr# rsa# dsaj# 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(" versionU# serialNumberU# signature # issueri# validity# subjecti# key&"# issuerUID# subjectUID# extensions#$+"X509_CINF"@GENERAL_NAMES# AUTHORITY_KEYID_st `# keyid# issuer## serialU##X509_POLICY_CACHE_ste#X509_POLICY_CACHE|#O#e x509_cert_aux_st $ trust# reject# alias# keyid# other##X509_CERT_AUX $ x509_st\b% cert_info"# sig_alg # signature# valid# references# name# ex_data# ex_pathlene# ex_pcpathlene#$ ex_flags#( ex_kusage#, ex_xkusage#0 ex_nscert#4 skid#8 akid`##< policy_cache##@ sha1_hash##D aux$#X#$X509b%%ne_ssl_certificate r%ne_ssl_certificate_s% subj_dn# issuer_dn# subjectm%# issuer%# identity#ne_ssl_client_cert_s$h& p12I# decrypted# certr%# pkey!# friendly_name# %ne_ssl_client_cert h&asn1time_to_timet[?]U&&'atmtm'iC etime_t N& tm$' tm_sec# tm_min# tm_hour# tm_mday# tm_mon# tm_year# tm_wday# tm_yday# tm_isdst# ne_ssl_cert_validity_time@]]U'(cert(from (until r%'&check_identity]xbU*I+serverm%cert identitynamesmatchfoundhostnameS+ 4^` @^` @^`n @^` l^` l^`nmH- ^` ^^ ^^name _` _` __ __iaq- k__ s__ s__bufv-  _` _` _` _`nameuri7+ `` ,`` ,``tmp7+ `b ab absubji7entry8cnameJ9idx:lastidx:7+ scheme# host# userinfo# port# path# query# fragment#*ne_uri 7+D+ N+ otherName_st+ type_id?# value #X+OTHERNAME+ EDIPartyName_st+ nameAssigner# partyName#+EDIPARTYNAME+- ptr# otherName+# rfc822Name# dNSName# x400Address # directoryNamei# ediPartyName+# uniformResourceIdentifier# iPAddress# registeredID?# ip# dirni# ia5# rid?# other # GENERAL_NAME_st5- type# d+#-GENERAL_NAME5-ne_inet_addr_sM-ne_inet_addr^--epopulate_certZb cU%-%certYm%x5Y verify_callbackicMeU.okhU6ctxh sslkmsessDtodepthperrqfailuresr X509_VERIFY_PARAM_st / name# check_time&# inh_flags# flags# purpose# trust# depth# policies#.X509_VERIFY_PARAM/ x509_store_ctx_sttD1 ctx4# current_method# certm%# untrusted# crls# param2/# other_ctx # verify4# verify_cb5# get_issuer85#$ check_issuedX5#( check_revocationn5#, get_crl5#0 check_crl5#4 cert_crl5#8 check_policy5#< cleanup5#@ valid#D last_untrusted#H chain#L tree'6#P explicit_policy#T error_depth#X error#\ current_certm%#` current_issuerm%#d current_crl;6#h ex_data#l7/Z1D1I1u1D1_1#$z111D1z111D1z1z111D11 ASN1_ENCODING_st 2 enc`# lene# modified#1ASN1_ENCODING X509_crl_info_st(2 versionU# sig_alg # issueri# lastUpdate^# nextUpdate^# revoked# extensions# enc2#02X509_CRL_INFO2 X509_crl_st;3 crl2# sig_alg # signature# references# 2;3`3D1@3z1E3{3D1;3e33D1;3z133D13 x509_store_st@4 cache# objs# get_cert_methods# param2/# verifyZ1# verify_cbu1# get_issuer1# check_issued1# check_revocation1# get_crl`3#$ check_crl{3#( cert_crl3#, cleanup3#0 ex_data#4 references#<3X509_STORE44D145D15851D1z15X5D1z1z1=5n5D1]55D1@3z1s55D1;355D1;3z155D155D15X509_POLICY_TREE_st5X509_POLICY_TREE62X509_CRL,67/X509_STORE_CTX@6ssl_st8; version# type# method=# rbioV# wbioV# bbioV# rwstate# in_handshake# handshake_funcV# server#$ new_session#( quiet_shutdown#, shutdown#0 state#4 rstate#8 init_buf#< init_msg #@ init_num#D init_off#H packet`#L packet_length#P s2Z#T s3d#X d1j#\ read_ahead#` msg_callbackj#d msg_callback_arg #h hit#l param2/#p cipher_list#t cipher_list_by_id#x enc_read_ctxe#| read_hashj# expande# enc_write_ctxe# write_hashj# compresse# certH# sid_ctx_length# sid_ctxj# sessione# generate_session_idUI# verify_mode# verify_callbackk# info_callback+k# error# error_code# ctx>k# debug# verify_resulte# ex_data# client_CA# references# options# mode# max_cert_liste# first_packet# client_version# tlsext_debug_cbik# tlsext_debug_arg # tlsext_hostname# servername_done# tlsext_status_type# tlsext_status_expected# tlsext_ocsp_ids# tlsext_ocsp_extsk# tlsext_ocsp_resp`# tlsext_ocsp_resplen# tlsext_ticket_expected# initial_ctx>k#Z6;;;;;;;;;<;<+<;<K<; 0<k<; P<  p<<;u<z<<;<<;<<;<e=;e<0=;` =  5=_=;:=?=u=;d=e=;e z=`S3= lhash_node_st = data # next=# hash#=  =  =>==>>LHASH_COMP_FN_TYPE  8>S>=>B>S>LHASH_HASH_FN_TYPE lhash_st`Q@ b=# comp># hashX># 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#\q>Og@eO0x@e/O @eO @esess_cert_st@ @ ssl_cipher_st(zA valid# name@# id# algorithms# algo_strength# algorithm2# strength_bits# alg_bits# mask# mask_strength#$@SSL_CIPHERzAA ssl_session_stC ssl_version# key_arg_length# key_argV@# master_key_length# master_keyg@# session_id_length#D session_idx@#H sid_ctx_length#h sid_ctx@#l not_resumable# sess_cert@# peerm%# verify_resulte# references# timeoute# timee# compress_meth# cipherA# cipher_id# ciphers# ex_data# prevA# nextA# tlsext_hostname# tlsext_tick`# tlsext_ticklen# tlsext_tick_lifetime_hinte#C;ACJCCACA"D;`D,0E 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#(FED1 0EkE KEpem_password_cbkE=!EE;1EEE;`EE;`EGEVP_MD EE env_md_ctx_st YF digestF# engine # flags# md_data # FoFYF^F  tFFYFyF~FFYF`F FFFYFFFFYFF OF(GF` F O-G O7GkG2GoMo hook#o fn9o# userdata # idCo# nextHo# o ne_ssl_context_s&o ctx>k# sesse# hostnameo# failures# one_ssl_context o %p+p  pp+pne_ssl_verify_fn$ne_session_s#s socketk# connected# persisted# is_http11# scheme# server3l# proxiesl#4 prev_proxyl#8 nexthopl#< local_addrl#@ use_ssl#D in_connect#H any_proxy_http#L socks_verl#P socks_user#T socks_password#X flagsm#\ progress_cbXm#x progress_ud #| notify_cbo# notify_ud # rdtimeout# cotimeout# create_req_hooksHo# pre_send_hooksHo# post_send_hooksHo# post_headers_hooksHo# destroy_req_hooksHo# destroy_sess_hooksHo# close_conn_hooksHo# privateHo# user_agent# client_cert&# server_cert%# ssl_contextp# ssl_cc_requested# ssl_verify_fn0p# ssl_verify_ud # ssl_provide_fns# ssl_provide_ud # statust# error t#Gp ns sss ssssne_ssl_provide_fn$nne_session_status_info$3t eGpne_session$3tmake_chain`efU%uchainncounttop%current% ef esf esfcert%check_certificatef6hUuDtsesskssl %chaincertm%retfailuresserver7+ f8g f8g f8gresultedup_client_cert@hiU&>vCvccnewcc& h&>vprovide_client_certiGkUxwksslxwcert }wpkeysessw 5ij Yij Yijdnameswdnarraywncountca_list jH v,ne_set_errors{-*,ne_fill_server_uriΈsko+ne_sock_connect_ssl Έӈ k +ne_sock_error>M-,ne_iaddr_free`> M-`+ne_iaddr_printe#"ne_iaddr_ipv4"ne_iaddr_ipv6 O+ne_iaddr_makeq-É,ne_uri_free  * *+ne_uri_cmp@ @+ne_uri_parseoE Oo+ne_strnqdupt ,ne_buffer_destroyÊ+ne_buffer_finish O,ne_buffer_qappend ,ne_buffer_appendP!+ne_buffer_ncreateJu.ne_buffer_createJ `+ne_unbase64‹ O‹+ne_base64Nj +ne_strndup +ne_strdupB +ne_calloc _+ne_malloc |-,GENERAL_NAME_free|<I+d2i_PKCS12_fpIҌ ׌@+PKCS12_parseҌ܌E1,PKCS12_SAFEBAG_freeG,PKCS12_freebҌ+PKCS12_get_friendlyname+PKCS12_unpack_authsafes +PKCS12_unpack_p7data +ERR_reason_error_string/ERR_clear_error.ERR_get_error.SSL_get_ex_data_X509_STORE_CTX_idx Z6w+SSL_get_ex_data | Z6+SSL_get_verify_resulte܎Z6+SSL_get1_sessione܎ Z6+SSL_get_sessione2 2 <+SSL_CTX_load_verify_locationsC7A.SSL_library_init Z6+SSL_get_client_CA_listϏ,SSL_CTX_set_client_CA_listC.SSLv23_client_method=.SSLv23_server_method=.SSLv2_server_method=+SSL_CTX_ctrleCe D1,SSL_CTX_set_verify͐C Z6͐+SSL_get_peer_cert_chainҐ Z6+SSL_get_peer_certificatem%8,SSL_SESSION_freeXA AX Ab+SSL_SESSION_cmp]g/SSL_load_error_strings +SSL_load_client_CA_file +SSL_CTX_use_certificate_chain_file*C *+SSL_CTX_use_PrivateKey_filemC/ Jm+SSL_CTX_get_cert_store4r,SSL_CTX_freeCFP+SSL_CTX_new>k;1E,SSL_CTX_set_client_cert_cb0C<+PEM_write_X509\0z1<KE +PEM_read_X509m%\xwaf+X509_get_ext_d2i Γz1D+X509_NAME_ENTRY_get_dataΓ+X509_NAME_get_entry0+X509_NAME_get_index_by_NIDm0+X509_NAME_entry_count0+X509_print_fp0z1  Ɣ+X509_NAME_cmp˔ #$ #$+X509_cmp++X509_check_private_keyZz1E#$+X509_get_subject_nameiZ+X509_get_issuer_nameiZ+X509_alias_get0`ؕz1`+i2d_X509z1ؕ O+d2i_X509m%3xwe,X509_freeLz1+X509_dupm%hm% #$h Gr+X509_digestmw` +X509_verify_cert_error_stringe,PKCS7_free +X509_STORE_CTX_get_error_depth1D1+X509_STORE_CTX_get_error]D1+X509_STORE_CTX_get_ex_data D1+X509_STORE_set_default_paths=+X509_STORE_add_cert=z1,EVP_PKEY_free E/OPENSSL_add_all_algorithms_noconf E0.EVP_sha15 L V+OBJ_cmpQ[ +OBJ_obj2nid+OBJ_nid2obj?Șm+ASN1_STRING_to_UTF8ؕȘ,CRYPTO_free  % @ *R E+CRYPTO_set_mem_functions%@R+sk_push ,sk_pop_freeߙ,sk_free.sk_new_null @ +sk_value6 @6+sk_numZ;+realloc z +malloc ,free +fprintfӚ0- Ӛ ݚ+fopen$ؚ+fclose0 +strlenC$ C M+strcmpvHR+memset   e+__posix_ctime_r̛ '̛+__posix_asctime_rћ'0mktime&! /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.h1F Pq Ʈ Ю  AH Z u ~    * X       k'5 ; `     ~$ 0Qj  в  9 D PY c l v    ̳׳    '- @v|  Ǵ д    ( 0 \ d sȵ    6 X ~ @L] ~  ŷ ӷ  6 E w ȸ0 >sq|    й  '2 P f к  09K `   ˻ٻ < x   ͼ~޼ # G Pqz        1: I X d m    ɾѾ   !H Pz   ʿ  1 <~MT `        & @ G a i t         ) : K Y \eup        {}* 0Q` i r {       ~* ; L f o x }  ~     GV\k    < Q Z     Z(  - D_ p }      + :O W        @dj u      + ? H}Y_ p  #4 N W n~     ( F g r      * 7~W`   1 A ] m     $ @ U    $ C J `      8 x    # * H  v  * 2 d y        . <S [   b!   AQ b q z        )t8L e ~    'E s    5 b~   7U b  _ $ C L `    F W a l x    , = P X i |   CQb x       4 D m      & 3 O \ p    Tx     P]n   ~  & y        " 2 ; Z~s     ' 0G ] ` h      o - @a |       X ^ py      ) 3 D N X y      ! R `     ,E h t        Vv      / P^ w          , G [ v~      + A I S hs    ~ )q y      # 1 B J [ c qw   /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   }<- I e p   } "6 ? P~al z        + < J l          )M `     !7 @ I Pq  :I` j{       AO c m       5 @IPq       y    AG j j p      7= M w       ! 09E PYe p  D PYb py    !, S ^ w     4H Q b~s         ! 0Q_ u     R^ f w  $+ T p    |1Q          M `        1Q `  !A Pq  1 @a        y 0Qk p  + 0Qk p  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& 0Qf p   ! 6; L  b                  (  7 x             %  3  <  P q          t                0 Q k              ( K T _ ft z  > Pq    +; Z o      & : L X b s         E ` p|    % C \~kw       ( /= C Pqx         AD M P Y \ e hwx    . @ Pc |    Ab p    0 @at        /var/tmp/neon-0.29.4/src/usr/include/iso/usr/include/sysne_string.cne_string.hstdlib_iso.hstdarg_iso.htypes.htime_iso.h1+Q Y d pz :       $ 3 > G Q \os|      . O V w      < Pqx   !M^ r {z      % % . ? Pq         !@ Pq        8  8  G  M  `              !  !  !A!R! `! p!!! ! ! !!! "!"6" O" ^"d" p""" " " "" "  # A#xT# _# e# p##### ## $1$:$ Y$ m$ s$ $$$ $ $ $% )% [% % %|%% % B& & && & &&&' *' @',) =) L)n* * * .+ F+ V+ + ,p,%, 0,Q,c, }, ,, ,,,  - ?-E- P-q-w-- - - - ---  . . 0.Q.Z. p... .. .. . . . /  /  /A/G/ M/]/ h// / / / / /   /var/tmp/neon-0.29.4/src/usr/include/isone_uri.cstring_iso.hne_uri.hne_string.htime_iso.h/0"0 ,0 @0 G0 [0 b0 v0 0 0 0 000 !1 01Q1i1 t1 1 1 1 111 1 2 '2 .2 K2W2 r2 y222 2 2 22  3 3 63B3 ]3 d3p3 w3 3 3 33 333 3 3 44 $4 -4 D4 _4 e4 q4 z44 4 4 44 4 4 5 5 :5F5 e5 q5 ~5 5 5 55 5 6 66  6D6^6 |66 6 6 6 6 6 7  7 07Q7h7 7 7 7 7 7 7 7 8 8 08 @8r8~8 8 888 8 8 89 9 79 P9 g9 m9G}9=9 9 999 9 :  :A:Q: \: u: : : : : : : (; 7; P; [; x; ; ;; ; ; ;  < .< >< b<< < <<< < = )= M= q= w= === = = > -> I> Y> `>>> > > > 1? ?? L? n? ? ?u?? ? ?@@ @ 7@ J@R@ h@@ @ @ @ @ @z A A A 0AQAA (B B C hC C C CD$D 0DAD RD tD DD DD E!E)E 4E TEcE xE E E EE F F*F 5F UF`F FF FFF F GG 7G EG KG  r /var/tmp/neon-0.29.4/src/usr/include/sys/usr/include/isone_dates.ctypes.htime_iso.h`GGG G G G7H =H PHwHH H H 8IvI I II I JJJ &J -J CJ sJ JJJ!K ,K ;K YK \K~kKqK xK K K KK-LaL iL xLL L L~LL L L L L M  MAM}MM M M M~MM M  N ?N PNqNN N N N N N t /var/tmp/neon-0.29.4/src/usr/include/isone_alloc.cne_alloc.hstring_iso.htime_iso.hNN'N O1O8hO nO OO?O O P!P4P