ne_session_create, ne_close_connection, ne_session_destroy — set up HTTP sessions
#include <ne_session.h>
| ne_session *ne_session_create( | const char *scheme, | 
| const char *host, | |
| unsigned int port ); | 
| void ne_close_connection( | ne_session *session ); | 
| void ne_session_destroy( | ne_session *session ); | 
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 the
ne_session_create function; the 
host and port
parameters specify the origin server to use, along with
the scheme (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, 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).
The host parameter must follow
        the definition of host host in RFC 3986,
        which can be an IP-literal or registered (DNS) hostname. Valid
        examples of each: "198.51.100.42" (IPv4
        literal address), "[2001:db8::42]" (IPv6
        literal, which MUST be enclosed in square
        brackets), or "www.example.com" (DNS
        hostname). The RFC 6874
        syntax for scoped IPv6 link-local literal addresses is also
        permitted, for example "[fe80::1%25eth0]".
        
The scheme parameter is used to
        determine the URI for resources identified during request
        handling. Other than special handling of the string
        "https", no other interpretation or
        checking of the scheme is
        performed. For example, if an HTTP-to-FTP proxy is configured,
        a scheme of "ftp" could be used to access
        resources.
To use a proxy server for the session, it must be configured (see ne_session_proxy) before any requests are created from session object.
Further per-session options may be changed using the ne_set_session_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.  The session object must not be destroyed until
	after all associated request objects have been
	destroyed.
If a hostname is passed to
ne_session_create, it will be 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.