summaryrefslogtreecommitdiff
path: root/man/v1.2/nng_http_handler_collect_body.3http.html
blob: 2ba6da471a5d2fe19ae92765c0389d90a5f4ba39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
---
version: v1.2
layout: refman
---
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.10">
<title>nng_http_handler_collect_body(3http)</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<link rel="stylesheet" href="./asciidoctor.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body class="manpage toc2 toc-left">
<div id="header">
<h1>nng_http_handler_collect_body(3http) Manual Page</h1>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#_synopsis">SYNOPSIS</a></li>
<li><a href="#_description">DESCRIPTION</a></li>
<li><a href="#_return_values">RETURN VALUES</a></li>
<li><a href="#_errors">ERRORS</a></li>
<li><a href="#_see_also">SEE ALSO</a></li>
</ul>
</div>
<h2 id="_name">NAME</h2>
<div class="sectionbody">
<p>nng_http_handler_collect_body - set HTTP handler to collect request body</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="c"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;nng/nng.h&gt;</span><span class="tok-cp"></span>
<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;nng/supplemental/http/http.h&gt;</span><span class="tok-cp"></span>

<span class="tok-kt">int</span> <span class="tok-nf">nng_http_handler_collect_body</span><span class="tok-p">(</span><span class="tok-n">nng_http_handler</span> <span class="tok-o">*</span><span class="tok-n">handler</span><span class="tok-p">,</span> <span class="tok-kt">bool</span> <span class="tok-n">want</span><span class="tok-p">,</span> <span class="tok-kt">size_t</span> <span class="tok-n">maxsz</span><span class="tok-p">);</span></code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <code>nng_http_handler_collect_data()</code> function causes the <em>handler</em> to
collect any request body that was submitted with the request, and attach
it to the <code>nng_http_req</code> before the handler is called.</p>
</div>
<div class="paragraph">
<p>Subsequently the data can be retrieved by the handler from the request with the
<a href="nng_http_req_get_data.3http.html"><code>nng_http_req_get_data()</code></a> function.</p>
</div>
<div class="paragraph">
<p>The collection is enabled if <em>want</em> is true.
Furthermore, the data that the client may sent is limited by the
value of <em>maxsz</em>.
If the client attempts to send more data than <em>maxsz</em>, then the
request will be terminated with a 400 &#8220;Bad Request&#8221; status.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
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.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>In order to provide an unlimited size, use <code>(size_t)-1</code> for <em>maxsz</em>.
The value <code>0</code> for <em>maxsz</em> can be used to prevent any data from being passed
by the client.</p>
</div>
<div class="paragraph">
<p>The built-in handlers for files, directories, and static data limit the
<em>maxsz</em> to zero by default.
Otherwise the default setting is to enable this capability with a default
value of <em>maxsz</em> of 1 megabyte.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The handler looks for data indicated by the <code>Content-Length:</code> HTTP
header.
If this header is absent, the request is assumed not to contain any data.
</td>
</tr>
</table>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
This specifically does not support the <code>Chunked</code> 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
create few limitations.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_return_values">RETURN VALUES</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This function returns 0 on success, and non-zero otherwise.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_errors">ERRORS</h2>
<div class="sectionbody">
<div class="hdlist">
<table>
<tr>
<td class="hdlist1">
<code>NNG_ENOTSUP</code>
</td>
<td class="hdlist2">
<p>No support for HTTP in the library.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph text-left">
<p><a href="nng_http_handler_alloc.3http.html">nng_http_handler_alloc(3http)</a>,
<a href="nng_http_server_add_handler.3http.html">nng_http_server_add_handler(3http)</a>,
<a href="nng_http_req_get_data.3http.html">nng_http_req_get_data(3http)</a>,
<a href="nng.7.html">nng(7)</a></p>
</div>
</div>
</div>
</div>
<link rel="stylesheet" href="./pygments-default.css">
</body>
</html>