= nng_close(3)
//
// 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_close - close socket

== SYNOPSIS

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

int nng_close(nng_socket s);
----

== DESCRIPTION

The `nng_close()` function closes the supplied socket, _s_.
Messages that have been submitted for sending may be flushed or delivered,
depending upon the transport.

Further attempts to use the socket after this call returns will result
in `NNG_ECLOSED`.
Threads waiting for operations on the socket when this
call is executed may also return with an `NNG_ECLOSED` result.

NOTE: Closing the socket while data is in transmission will likely lead to loss
of that data.
There is no automatic linger or flush to ensure that the socket send buffers
have completely transmitted.
It is recommended to wait a brief period after calling
xref:nng_send.3.adoc[`nng_send()`] or similar functions, before calling this
function.

== RETURN VALUES

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

== ERRORS

[horizontal]
`NNG_ECLOSED`:: The socket _s_ is already closed or was never opened.

== SEE ALSO

[.text-left]
xref:nng_strerror.3.adoc[nng_strerror(3)],
xref:nng_options.5.adoc[nng_options(5)],
xref:nng_socket.5.adoc[nng_socket(5)],
xref:nng.7.adoc[nng(7)]
