ne_set_useragent
3

# ne_set_useragent

# ne_set_persist

# ne_set_read_timeout

# ne_set_expect100

common settings for HTTP sessions

    	  #include <ne_session.h>

    	    void ne_set_useragent
    	    ne_session *session
    	    const char *product

    	    void ne_set_persist
    	    ne_session *session
    	    int flag

    	    void ne_set_read_timeout
    	    ne_session *session
    	    int timeout

    	    void ne_set_expect100
    	    ne_session *session
    	    int flag

## 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"`.

By default neon will use a persistent connection whenever possible. For specific applications, or for debugging purposes, it is sometimes useful to disable persistent connections. The `ne_set_persist` function will disable persistent connections if passed a `flag` parameter of `0`, and will enable them otherwise.

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.

An extension introduced in the HTTP/1.1 specification was the use of the `Expect: 100-continue` header. This header allows an HTTP client to be informed of the expected response status before the request message body is sent: a useful optimisation for situations where a large message body is to be sent. The `ne_set_expect100` function can be used to enable this feature by passing the `flag` parameter as any non-zero integer.

Unfortunately, if this header is sent to a server which is not fully compliant with the HTTP/1.1 specification, a deadlock occurs resulting in a temporarily "hung" connection. neon will recover gracefully from this situation, but only after a 15 second timeout. It is highly recommended that this option is not enabled unless it is known that the server in use correctly implements `Expect: 100-continue` support.

## Examples

Set a user-agent string:

    &egsess;
    ne_set_useragent(sess, "MyApplication/2.1");

Disable use of persistent connections:

    ne_session *sess = ne_session_create(...);
    ne_set_persist(sess, 0);

Set a 30 second read timeout:

    &egsess;
    ne_set_read_timeout(sess, 30);