= nng_http_handler_set_host(3http)
//
// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This document is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
// file was obtained (LICENSE.txt).  A copy of the license may also be
// found online at https://opensource.org/licenses/MIT.
//

== NAME

nng_http_handler_set_host - set host for HTTP handler

== SYNOPSIS

[source, c]
----
#include <nng/nng.h>
#include <nng/supplemental/http/http.h>

int nng_http_handler_set_host(nng_http_handler *handler, const char *host);
----

== DESCRIPTION

The `nng_http_handler_set_host()` function is used to limit the scope of the
_handler_ so that it will only be called when the specified _host_ matches
the value of the `Host:` HTTP header.

TIP: This can be used to create servers with multiple handlers for virtual
hosting.

The value of the _host_ can include a colon and port, and should match
exactly the value of the `Host` header sent by the client.
(Canonicalization of the host name is performed though.)

TIP: As the server framework does not support listening on multiple
ports, the port number can be elided.
The matching test only considers
the hostname or IP address, and ignores any trailing port number.

== RETURN VALUES

This function returns 0 on success, and non-zero otherwise.

== ERRORS

[horizontal]
`NNG_ENOMEM`:: Insufficient free memory to perform the operation.
`NNG_ENOTSUP`:: No support for HTTP in the library.

== SEE ALSO

[.text-left]
xref:nng_http_handler_alloc.3http.adoc[nng_http_handler_alloc(3http)],
xref:nng_http_server_add_handler.3http.adoc[nng_http_server_add_handler(3http)],
xref:nng.7.adoc[nng(7)]
