= nng_stream_free(3str)
//
// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2019 Devolutions <info@devolutions.net>
//
// 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_stream_free - free byte stream

== SYNOPSIS

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

void nng_stream_free(nng_stream *s);
----

== DESCRIPTION

The `nng_stream_free()` function closes the
xref:nng_stream.5.adoc[byte stream] _s_,
and frees the underlying resources associated with it.

If any operations are pending, such as
xref:nng_stream_send.3str.adoc[`nng_stream_send()`]
or
xref:nng_stream_recv.3str.adoc[`nng_stream_recv()`],
they will be terminated with an `NNG_ECLOSED` error condition.

WARNING: It is important that the application ensure that no further accesses
are made to _s_, as the memory backing it will be reclaimed for other uses.

NOTE: Closing the connection 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.

== RETURN VALUES

None.

== ERRORS

None.

== SEE ALSO

[.text-left]
xref:nng_strerror.3.adoc[nng_strerror(3)],
xref:nng_stream_close.3str.adoc[nng_stream_close(3str)],
xref:nng_stream_recv.3str.adoc[nng_stream_recv(3str)],
xref:nng_stream_send.3str.adoc[nng_stream_send(3str)],
xref:nng_stream.5.adoc[nng_stream(5)]
