aboutsummaryrefslogtreecommitdiff
path: root/docs/man
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-09-29 21:55:31 -0700
committerGarrett D'Amore <garrett@damore.org>2018-09-29 21:55:31 -0700
commit25490a300910e357ac864a1916a4285e239fbf30 (patch)
tree8d45f90b9cfaff3c038aeadadd219d3edf8acc54 /docs/man
parentc084742b80d6514b39824617a41eb16910c53cf4 (diff)
downloadnng-25490a300910e357ac864a1916a4285e239fbf30.tar.gz
nng-25490a300910e357ac864a1916a4285e239fbf30.tar.bz2
nng-25490a300910e357ac864a1916a4285e239fbf30.zip
fixes #738 http server needs a way to collect request entity data
Diffstat (limited to 'docs/man')
-rw-r--r--docs/man/libnng.3.adoc1
-rw-r--r--docs/man/nng_http_handler_alloc.3http.adoc1
-rw-r--r--docs/man/nng_http_handler_collect_body.3http.adoc78
3 files changed, 80 insertions, 0 deletions
diff --git a/docs/man/libnng.3.adoc b/docs/man/libnng.3.adoc
index 0a62f931..25e8b08d 100644
--- a/docs/man/libnng.3.adoc
+++ b/docs/man/libnng.3.adoc
@@ -356,6 +356,7 @@ These functions are intended for use with HTTP server applications.
|===
|<<nng_http_handler_alloc.3http#,nng_http_handler_alloc()>>|allocate HTTP server handler
+|<<nng_http_handler_collect_body.3http#,nng_http_handler_collect_body()>>|set HTTP handler to collect request body
|<<nng_http_handler_free.3http#,nng_http_handler_free()>>|free HTTP server handler
|<<nng_http_handler_get_data.3http#,nng_http_handler_get_data()>>|return extra data for HTTP handler
|<<nng_http_handler_set_data.3http#,nng_http_handler_set_data()>>|set extra data for HTTP handler
diff --git a/docs/man/nng_http_handler_alloc.3http.adoc b/docs/man/nng_http_handler_alloc.3http.adoc
index 523b5328..d5861d14 100644
--- a/docs/man/nng_http_handler_alloc.3http.adoc
+++ b/docs/man/nng_http_handler_alloc.3http.adoc
@@ -149,6 +149,7 @@ This function returns 0 on success, and non-zero otherwise.
<<nng_aio_finish.3#,nng_aio_finish(3)>>,
<<nng_aio_get_input.3#,nng_aio_get_input(3)>>,
<<nng_aio_set_output.3#,nng_aio_set_output(3)>>,
+<<nng_http_handler_collect_body.3http#,nng_http_handler_collect_body(3http)>>,
<<nng_http_handler_free.3http#,nng_http_handler_free(3http)>>,
<<nng_http_handler_set_host.3http#,nng_http_handler_set_host(3http)>>,
<<nng_http_handler_set_method.3http#,nng_http_handler_set_method(3http)>>,
diff --git a/docs/man/nng_http_handler_collect_body.3http.adoc b/docs/man/nng_http_handler_collect_body.3http.adoc
new file mode 100644
index 00000000..875f32c4
--- /dev/null
+++ b/docs/man/nng_http_handler_collect_body.3http.adoc
@@ -0,0 +1,78 @@
+= nng_http_handler_collect_body(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_collect_body - set HTTP handler to collect request body
+
+== SYNOPSIS
+
+[source, c]
+----
+#include <nng/nng.h>
+#include <nng/supplemental/http/http.h>
+
+int nng_http_handler_collect_body(nng_http_handler *handler, bool want, size_t maxsz);
+----
+
+== DESCRIPTION
+
+The `nng_http_handler_collect_data()` function causes the _handler_ to
+collect any request body that was submitted with the request, and attach
+it to the `nng_http_req` before the handler is called.
+
+Subsequently the data can be retrieved by the handler from the request with the
+`<<nng_http_req_get_data.3http#,nng_http_req_get_data()>>` function.
+
+The collection is enabled if _want_ is true.
+Furthermore, the data that the client may sent is limited by the
+value of _maxsz_.
+If the client attempts to send more data than _maxsz_, then the
+request will be terminated with a 400 "`Bad Request`" status.
+
+TIP: Limiting the size of incoming request data can provide protection
+against denial of service attacks, as a buffer of the client-supplied
+size must be allocated to receive the data.
+
+In order to provide an unlimited size, use `(size_t)-1` for _maxsz_.
+The value `0` for _maxsz_ can be used to prevent any data from being passed
+by the client.
+
+The built-in handlers for files, directories, and static data limit the
+_maxsz_ to zero by default.
+Otherwise the default setting is to enable this capability with a default
+value of _maxsz_ of 1 megabyte.
+
+NOTE: The handler looks for data indicated by the `Content-Length:` HTTP
+header.
+If this header is absent, the request is assumed not to contain any data.
+
+NOTE: This specifically does not support the `Chunked` transfer-encoding.
+This is considered a bug, and is a deficiency for full HTTP/1.1 compliance.
+However, few clients send data in this format, so in practice this should
+not create few limitations.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+[horizontal]
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+[.text-left]
+<<nng_http_handler_alloc.3http#,nng_http_handler_alloc(3http)>>,
+<<nng_http_server_add_handler.3http#,nng_http_server_add_handler(3http)>>,
+<<nng_http_req_get_data.3http#,nng_http_req_get_data(3http)>>,
+<<nng.7#,nng(7)>>