aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-12-24 15:33:05 +0100
committerChristian Grothoff <christian@grothoff.org>2019-12-24 15:33:05 +0100
commitf5d59eb3a7c54cd13550ed906a67f1bff630b2c6 (patch)
tree015b7ea665c413d4932de3bcfb799f7efa7312cd
parent878c8c7e019b95aaace6a4a9edf1e584abc5ceae (diff)
downloadlibmicrohttpd-f5d59eb3a7c54cd13550ed906a67f1bff630b2c6.tar.gz
libmicrohttpd-f5d59eb3a7c54cd13550ed906a67f1bff630b2c6.zip
Given post body "a&b=1", how should MHD interpret the data?
I'm at the end of a long investigation and it's come down to that question for post_process_urlencoded() in MHD. MHD currently calls back with ("a&b", "1"). The app I'm working breaks when it doesn't receive a callback for "b". The http client in this case (that did the urlencoding) is google-http-java-client 1.23.0. The client behavior may be questionable, but MHD's behavior doesn't seem right either. Isn't there some principle, "clients should strive for conformance, servers should strive for forgiveness". I've attached a patch to MHD to add a failing test, but without a fix. As for relevant standards, the W3C[1] is not detailed enough to cover it. The WhatWG[2] is more specific and allows for empty values and even empty keys. I'd like to callout uriparser[3], another C library I've patched in as a work-around. Uriparser documents their handling of these cases well: * NULL in the value member means there was no '=' in the item text as with "?abc&def". * An empty string in the value member means there was '=' in the item as with "?abc=&def". [1] https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 [2] https://url.spec.whatwg.org/#urlencoded-parsing [3] https://uriparser.github.io/doc/api/latest/#querystrings commit aa0534af56d135e1b261d127af09c22015c1ff87 Author: Ethan Tuttle <ethan@ethantuttle.com> Date: Tue Dec 24 03:50:59 2019 -0800 urlencoding post-processor: add failing tests for keys without values
-rw-r--r--ChangeLog4
-rw-r--r--po/libmicrohttpd.pot326
-rw-r--r--src/microhttpd/test_postprocessor.c39
3 files changed, 198 insertions, 171 deletions
diff --git a/ChangeLog b/ChangeLog
index ee64b3af..6118da9b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
1Tue 24 Dec 2019 03:32:18 PM CET
2 Adding patch from Ethan Tuttle with test case for urlencoding
3 in post-processor for keys without values. -CG/ET
4
1Sun 15 Dec 2019 02:12:02 PM CET 5Sun 15 Dec 2019 02:12:02 PM CET
2 Fix send() call (affects Mac OS X). #5977 -CG/fbrault 6 Fix send() call (affects Mac OS X). #5977 -CG/fbrault
3 Releasing libmicrohttpd 0.9.69. -CG 7 Releasing libmicrohttpd 0.9.69. -CG
diff --git a/po/libmicrohttpd.pot b/po/libmicrohttpd.pot
index 0daa66b9..299813aa 100644
--- a/po/libmicrohttpd.pot
+++ b/po/libmicrohttpd.pot
@@ -6,9 +6,9 @@
6#, fuzzy 6#, fuzzy
7msgid "" 7msgid ""
8msgstr "" 8msgstr ""
9"Project-Id-Version: GNU libmicrohttpd 0.9.68\n" 9"Project-Id-Version: GNU libmicrohttpd 0.9.69\n"
10"Report-Msgid-Bugs-To: libmicrohttpd@gnu.org\n" 10"Report-Msgid-Bugs-To: libmicrohttpd@gnu.org\n"
11"POT-Creation-Date: 2019-10-26 19:30+0200\n" 11"POT-Creation-Date: 2019-12-15 14:18+0100\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n" 14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -37,53 +37,53 @@ msgstr ""
37msgid "Failed to close FD.\n" 37msgid "Failed to close FD.\n"
38msgstr "" 38msgstr ""
39 39
40#: src/microhttpd/digestauth.c:602 40#: src/microhttpd/digestauth.c:601
41msgid "" 41msgid ""
42"Stale nonce received. If this happens a lot, you should probably increase " 42"Stale nonce received. If this happens a lot, you should probably increase "
43"the size of the nonce array.\n" 43"the size of the nonce array.\n"
44msgstr "" 44msgstr ""
45 45
46#: src/microhttpd/digestauth.c:808 46#: src/microhttpd/digestauth.c:807
47msgid "Failed to allocate memory for copy of URI arguments\n" 47msgid "Failed to allocate memory for copy of URI arguments\n"
48msgstr "" 48msgstr ""
49 49
50#: src/microhttpd/digestauth.c:951 50#: src/microhttpd/digestauth.c:949
51msgid "Authentication failed, invalid timestamp format.\n" 51msgid "Authentication failed, invalid timestamp format.\n"
52msgstr "" 52msgstr ""
53 53
54#: src/microhttpd/digestauth.c:1014 54#: src/microhttpd/digestauth.c:1009
55msgid "Authentication failed, invalid format.\n" 55msgid "Authentication failed, invalid format.\n"
56msgstr "" 56msgstr ""
57 57
58#: src/microhttpd/digestauth.c:1024 58#: src/microhttpd/digestauth.c:1019
59msgid "Authentication failed, invalid nc format.\n" 59msgid "Authentication failed, invalid nc format.\n"
60msgstr "" 60msgstr ""
61 61
62#: src/microhttpd/digestauth.c:1050 62#: src/microhttpd/digestauth.c:1044
63msgid "Failed to allocate memory for auth header processing\n" 63msgid "Failed to allocate memory for auth header processing\n"
64msgstr "" 64msgstr ""
65 65
66#: src/microhttpd/digestauth.c:1110 66#: src/microhttpd/digestauth.c:1104
67msgid "Authentication failed, URI does not match.\n" 67msgid "Authentication failed, URI does not match.\n"
68msgstr "" 68msgstr ""
69 69
70#: src/microhttpd/digestauth.c:1129 70#: src/microhttpd/digestauth.c:1123
71msgid "Authentication failed, arguments do not match.\n" 71msgid "Authentication failed, arguments do not match.\n"
72msgstr "" 72msgstr ""
73 73
74#: src/microhttpd/digestauth.c:1286 74#: src/microhttpd/digestauth.c:1279
75msgid "digest size missmatch" 75msgid "digest size missmatch"
76msgstr "" 76msgstr ""
77 77
78#: src/microhttpd/digestauth.c:1379 78#: src/microhttpd/digestauth.c:1372
79msgid "Could not register nonce (is the nonce array size zero?).\n" 79msgid "Could not register nonce (is the nonce array size zero?).\n"
80msgstr "" 80msgstr ""
81 81
82#: src/microhttpd/digestauth.c:1404 82#: src/microhttpd/digestauth.c:1397
83msgid "Failed to allocate memory for auth response header\n" 83msgid "Failed to allocate memory for auth response header\n"
84msgstr "" 84msgstr ""
85 85
86#: src/microhttpd/digestauth.c:1440 86#: src/microhttpd/digestauth.c:1433
87msgid "Failed to add Digest auth header\n" 87msgid "Failed to add Digest auth header\n"
88msgstr "" 88msgstr ""
89 89
@@ -92,535 +92,535 @@ msgstr ""
92msgid "Fatal error in GNU libmicrohttpd %s:%u: %s\n" 92msgid "Fatal error in GNU libmicrohttpd %s:%u: %s\n"
93msgstr "" 93msgstr ""
94 94
95#: src/microhttpd/daemon.c:449 95#: src/microhttpd/daemon.c:451
96msgid "Failed to add IP connection count node\n" 96msgid "Failed to add IP connection count node\n"
97msgstr "" 97msgstr ""
98 98
99#: src/microhttpd/daemon.c:507 99#: src/microhttpd/daemon.c:509
100msgid "Failed to find previously-added IP address\n" 100msgid "Failed to find previously-added IP address\n"
101msgstr "" 101msgstr ""
102 102
103#: src/microhttpd/daemon.c:513 103#: src/microhttpd/daemon.c:515
104msgid "Previously-added IP address had counter of zero\n" 104msgid "Previously-added IP address had counter of zero\n"
105msgstr "" 105msgstr ""
106 106
107#: src/microhttpd/daemon.c:623 107#: src/microhttpd/daemon.c:625
108msgid "" 108msgid ""
109"Failed to setup x509 certificate/key: pre 3.X.X version of GnuTLS does not " 109"Failed to setup x509 certificate/key: pre 3.X.X version of GnuTLS does not "
110"support setting key password" 110"support setting key password"
111msgstr "" 111msgstr ""
112 112
113#: src/microhttpd/daemon.c:681 113#: src/microhttpd/daemon.c:684
114#, c-format 114#, c-format
115msgid "Error: invalid credentials type %d specified.\n" 115msgid "Error: invalid credentials type %d specified.\n"
116msgstr "" 116msgstr ""
117 117
118#: src/microhttpd/daemon.c:1080 118#: src/microhttpd/daemon.c:1088
119#, c-format 119#, c-format
120msgid "Maximum socket in select set: %d\n" 120msgid "Maximum socket in select set: %d\n"
121msgstr "" 121msgstr ""
122 122
123#: src/microhttpd/daemon.c:1141 123#: src/microhttpd/daemon.c:1149
124msgid "" 124msgid ""
125"MHD_get_fdset2() called with except_fd_set set to NULL. Such behavior is " 125"MHD_get_fdset2() called with except_fd_set set to NULL. Such behavior is "
126"unsupported.\n" 126"unsupported.\n"
127msgstr "" 127msgstr ""
128 128
129#: src/microhttpd/daemon.c:1348 src/microhttpd/daemon.c:6704 129#: src/microhttpd/daemon.c:1356 src/microhttpd/daemon.c:6728
130msgid "" 130msgid ""
131"Initiated daemon shutdown while \"upgraded\" connection was not closed.\n" 131"Initiated daemon shutdown while \"upgraded\" connection was not closed.\n"
132msgstr "" 132msgstr ""
133 133
134#: src/microhttpd/daemon.c:1363 src/microhttpd/daemon.c:1602 134#: src/microhttpd/daemon.c:1371 src/microhttpd/daemon.c:1606
135msgid "Failed to forward to application " 135msgid "Failed to forward to application "
136msgstr "" 136msgstr ""
137 137
138#: src/microhttpd/daemon.c:1532 src/microhttpd/daemon.c:1658 138#: src/microhttpd/daemon.c:1536 src/microhttpd/daemon.c:1662
139msgid "Failed to forward to remote client " 139msgid "Failed to forward to remote client "
140msgstr "" 140msgstr ""
141 141
142#: src/microhttpd/daemon.c:1724 142#: src/microhttpd/daemon.c:1730
143msgid "Error preparing select\n" 143msgid "Error preparing select\n"
144msgstr "" 144msgstr ""
145 145
146#: src/microhttpd/daemon.c:1758 src/microhttpd/daemon.c:1910 146#: src/microhttpd/daemon.c:1764 src/microhttpd/daemon.c:1918
147#: src/microhttpd/daemon.c:2054 147#: src/microhttpd/daemon.c:2062
148#, c-format 148#, c-format
149msgid "Error during select (%d): `%s'\n" 149msgid "Error during select (%d): `%s'\n"
150msgstr "" 150msgstr ""
151 151
152#: src/microhttpd/daemon.c:1807 src/microhttpd/daemon.c:1931 152#: src/microhttpd/daemon.c:1813 src/microhttpd/daemon.c:1939
153#: src/microhttpd/daemon.c:2123 153#: src/microhttpd/daemon.c:2131
154#, c-format 154#, c-format
155msgid "Error during poll: `%s'\n" 155msgid "Error during poll: `%s'\n"
156msgstr "" 156msgstr ""
157 157
158#: src/microhttpd/daemon.c:1894 src/microhttpd/daemon.c:2036 158#: src/microhttpd/daemon.c:1902 src/microhttpd/daemon.c:2044
159msgid "Failed to add FD to fd_set\n" 159msgid "Failed to add FD to fd_set\n"
160msgstr "" 160msgstr ""
161 161
162#: src/microhttpd/daemon.c:2176 162#: src/microhttpd/daemon.c:2184
163msgid "Processing thread terminating. Closing connection\n" 163msgid "Processing thread terminating. Closing connection\n"
164msgstr "" 164msgstr ""
165 165
166#: src/microhttpd/daemon.c:2206 166#: src/microhttpd/daemon.c:2214
167msgid "" 167msgid ""
168"Failed to signal thread termination via inter-thread communication channel." 168"Failed to signal thread termination via inter-thread communication channel."
169msgstr "" 169msgstr ""
170 170
171#: src/microhttpd/daemon.c:2277 171#: src/microhttpd/daemon.c:2289
172msgid "Internal server error. This should be impossible.\n" 172msgid "Internal server error. This should be impossible.\n"
173msgstr "" 173msgstr ""
174 174
175#: src/microhttpd/daemon.c:2287 src/microhttpd/daemon.c:2325 175#: src/microhttpd/daemon.c:2299 src/microhttpd/daemon.c:2337
176msgid "PSK not supported by this server.\n" 176msgid "PSK not supported by this server.\n"
177msgstr "" 177msgstr ""
178 178
179#: src/microhttpd/daemon.c:2302 179#: src/microhttpd/daemon.c:2314
180msgid "PSK authentication failed: gnutls_malloc failed to allocate memory\n" 180msgid "PSK authentication failed: gnutls_malloc failed to allocate memory\n"
181msgstr "" 181msgstr ""
182 182
183#: src/microhttpd/daemon.c:2311 183#: src/microhttpd/daemon.c:2323
184msgid "PSK authentication failed: PSK too long\n" 184msgid "PSK authentication failed: PSK too long\n"
185msgstr "" 185msgstr ""
186 186
187#: src/microhttpd/daemon.c:2407 src/microhttpd/daemon.c:6341 187#: src/microhttpd/daemon.c:2421 src/microhttpd/daemon.c:6365
188#, c-format 188#, c-format
189msgid "Socket descriptor larger than FD_SETSIZE: %d > %d\n" 189msgid "Socket descriptor larger than FD_SETSIZE: %d > %d\n"
190msgstr "" 190msgstr ""
191 191
192#: src/microhttpd/daemon.c:2423 192#: src/microhttpd/daemon.c:2437
193#, c-format 193#, c-format
194msgid "Failed to set SO_NOSIGPIPE on accepted socket: %s\n" 194msgid "Failed to set SO_NOSIGPIPE on accepted socket: %s\n"
195msgstr "" 195msgstr ""
196 196
197#: src/microhttpd/daemon.c:2440 src/microhttpd/daemon.c:3299 197#: src/microhttpd/daemon.c:2454 src/microhttpd/daemon.c:3313
198#, c-format 198#, c-format
199msgid "Accepted connection on socket %d\n" 199msgid "Accepted connection on socket %d\n"
200msgstr "" 200msgstr ""
201 201
202#: src/microhttpd/daemon.c:2453 src/microhttpd/daemon.c:2650 202#: src/microhttpd/daemon.c:2467 src/microhttpd/daemon.c:2664
203msgid "Server reached connection limit. Closing inbound connection.\n" 203msgid "Server reached connection limit. Closing inbound connection.\n"
204msgstr "" 204msgstr ""
205 205
206#: src/microhttpd/daemon.c:2471 206#: src/microhttpd/daemon.c:2485
207msgid "Connection rejected by application. Closing connection.\n" 207msgid "Connection rejected by application. Closing connection.\n"
208msgstr "" 208msgstr ""
209 209
210#: src/microhttpd/daemon.c:2504 src/microhttpd/daemon.c:2524 210#: src/microhttpd/daemon.c:2518 src/microhttpd/daemon.c:2538
211#: src/microhttpd/daemon.c:3886 211#: src/microhttpd/daemon.c:3901
212#, c-format 212#, c-format
213msgid "Error allocating memory: %s\n" 213msgid "Error allocating memory: %s\n"
214msgstr "" 214msgstr ""
215 215
216#: src/microhttpd/daemon.c:2602 216#: src/microhttpd/daemon.c:2616
217#, c-format 217#, c-format
218msgid "Failed to setup TLS credentials: unknown credential type %d\n" 218msgid "Failed to setup TLS credentials: unknown credential type %d\n"
219msgstr "" 219msgstr ""
220 220
221#: src/microhttpd/daemon.c:2611 221#: src/microhttpd/daemon.c:2625
222msgid "Unknown credential type" 222msgid "Unknown credential type"
223msgstr "" 223msgstr ""
224 224
225#: src/microhttpd/daemon.c:2714 src/microhttpd/daemon.c:4378 225#: src/microhttpd/daemon.c:2728 src/microhttpd/daemon.c:4397
226#: src/microhttpd/daemon.c:4411 src/microhttpd/daemon.c:5622 226#: src/microhttpd/daemon.c:4430 src/microhttpd/daemon.c:5644
227#: src/microhttpd/daemon.c:5639 src/microhttpd/connection.c:3796 227#: src/microhttpd/daemon.c:5661 src/microhttpd/connection.c:3798
228#: src/microhttpd/response.c:1052 src/microhttpd/response.c:1078 228#: src/microhttpd/response.c:1053 src/microhttpd/response.c:1079
229#, c-format 229#, c-format
230msgid "Call to epoll_ctl failed: %s\n" 230msgid "Call to epoll_ctl failed: %s\n"
231msgstr "" 231msgstr ""
232 232
233#: src/microhttpd/daemon.c:2741 233#: src/microhttpd/daemon.c:2755
234msgid "Failed to signal new connection via inter-thread communication channel." 234msgid "Failed to signal new connection via inter-thread communication channel."
235msgstr "" 235msgstr ""
236 236
237#: src/microhttpd/daemon.c:2846 src/microhttpd/daemon.c:3383 237#: src/microhttpd/daemon.c:2860 src/microhttpd/daemon.c:3396
238#: src/microhttpd/daemon.c:6591 src/microhttpd/connection.c:802 238#: src/microhttpd/daemon.c:6615 src/microhttpd/connection.c:805
239#: src/microhttpd/connection.c:821 239#: src/microhttpd/connection.c:824
240msgid "Failed to remove FD from epoll set\n" 240msgid "Failed to remove FD from epoll set\n"
241msgstr "" 241msgstr ""
242 242
243#: src/microhttpd/daemon.c:2896 243#: src/microhttpd/daemon.c:2910
244msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" 244msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n"
245msgstr "" 245msgstr ""
246 246
247#: src/microhttpd/daemon.c:2903 247#: src/microhttpd/daemon.c:2917
248msgid "Error: connection scheduled for \"upgrade\" cannot be suspended" 248msgid "Error: connection scheduled for \"upgrade\" cannot be suspended"
249msgstr "" 249msgstr ""
250 250
251#: src/microhttpd/daemon.c:2927 251#: src/microhttpd/daemon.c:2941
252msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" 252msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n"
253msgstr "" 253msgstr ""
254 254
255#: src/microhttpd/daemon.c:2942 255#: src/microhttpd/daemon.c:2956
256msgid "Failed to signal resume via inter-thread communication channel." 256msgid "Failed to signal resume via inter-thread communication channel."
257msgstr "" 257msgstr ""
258 258
259#: src/microhttpd/daemon.c:3077 259#: src/microhttpd/daemon.c:3091
260msgid "" 260msgid ""
261"Failed to signal resume of connection via inter-thread communication channel." 261"Failed to signal resume of connection via inter-thread communication channel."
262msgstr "" 262msgstr ""
263 263
264#: src/microhttpd/daemon.c:3124 264#: src/microhttpd/daemon.c:3138
265#, c-format 265#, c-format
266msgid "Failed to set nonblocking mode on new client socket: %s\n" 266msgid "Failed to set nonblocking mode on new client socket: %s\n"
267msgstr "" 267msgstr ""
268 268
269#: src/microhttpd/daemon.c:3137 269#: src/microhttpd/daemon.c:3151
270msgid "Failed to set noninheritable mode on new client socket.\n" 270msgid "Failed to set noninheritable mode on new client socket.\n"
271msgstr "" 271msgstr ""
272 272
273#: src/microhttpd/daemon.c:3146 273#: src/microhttpd/daemon.c:3160
274msgid "Failed to reset buffering mode on new client socket.\n" 274msgid "Failed to reset buffering mode on new client socket.\n"
275msgstr "" 275msgstr ""
276 276
277#: src/microhttpd/daemon.c:3219 277#: src/microhttpd/daemon.c:3233
278#, c-format 278#, c-format
279msgid "Error accepting connection: %s\n" 279msgid "Error accepting connection: %s\n"
280msgstr "" 280msgstr ""
281 281
282#: src/microhttpd/daemon.c:3237 282#: src/microhttpd/daemon.c:3251
283msgid "" 283msgid ""
284"Hit process or system resource limit at FIRST connection. This is really bad " 284"Hit process or system resource limit at FIRST connection. This is really bad "
285"as there is no sane way to proceed. Will try busy waiting for system " 285"as there is no sane way to proceed. Will try busy waiting for system "
286"resources to become magically available.\n" 286"resources to become magically available.\n"
287msgstr "" 287msgstr ""
288 288
289#: src/microhttpd/daemon.c:3252 289#: src/microhttpd/daemon.c:3266
290#, c-format 290#, c-format
291msgid "" 291msgid ""
292"Hit process or system resource limit at %u connections, temporarily " 292"Hit process or system resource limit at %u connections, temporarily "
293"suspending accept(). Consider setting a lower MHD_OPTION_CONNECTION_LIMIT.\n" 293"suspending accept(). Consider setting a lower MHD_OPTION_CONNECTION_LIMIT.\n"
294msgstr "" 294msgstr ""
295 295
296#: src/microhttpd/daemon.c:3268 296#: src/microhttpd/daemon.c:3282
297#, c-format 297#, c-format
298msgid "Failed to disable TCP Nagle on socket: %s\n" 298msgid "Failed to disable TCP Nagle on socket: %s\n"
299msgstr "" 299msgstr ""
300 300
301#: src/microhttpd/daemon.c:3279 301#: src/microhttpd/daemon.c:3293
302#, c-format 302#, c-format
303msgid "Failed to set nonblocking mode on incoming connection socket: %s\n" 303msgid "Failed to set nonblocking mode on incoming connection socket: %s\n"
304msgstr "" 304msgstr ""
305 305
306#: src/microhttpd/daemon.c:3292 306#: src/microhttpd/daemon.c:3306
307msgid "Failed to set noninheritable mode on incoming connection socket.\n" 307msgid "Failed to set noninheritable mode on incoming connection socket.\n"
308msgstr "" 308msgstr ""
309 309
310#: src/microhttpd/daemon.c:3340 src/microhttpd/daemon.c:6748 310#: src/microhttpd/daemon.c:3354 src/microhttpd/daemon.c:6772
311#: src/microhttpd/daemon.c:6780 src/microhttpd/daemon.c:6882 311#: src/microhttpd/daemon.c:6804 src/microhttpd/daemon.c:6906
312msgid "Failed to join a thread\n" 312msgid "Failed to join a thread\n"
313msgstr "" 313msgstr ""
314 314
315#: src/microhttpd/daemon.c:3444 315#: src/microhttpd/daemon.c:3457
316msgid "Illegal call to MHD_get_timeout\n" 316msgid "Illegal call to MHD_get_timeout\n"
317msgstr "" 317msgstr ""
318 318
319#: src/microhttpd/daemon.c:3641 319#: src/microhttpd/daemon.c:3654
320msgid "" 320msgid ""
321"MHD_run_from_select() called with except_fd_set set to NULL. Such behavior " 321"MHD_run_from_select() called with except_fd_set set to NULL. Such behavior "
322"is deprecated.\n" 322"is deprecated.\n"
323msgstr "" 323msgstr ""
324 324
325#: src/microhttpd/daemon.c:3721 325#: src/microhttpd/daemon.c:3734
326msgid "Could not obtain daemon fdsets" 326msgid "Could not obtain daemon fdsets"
327msgstr "" 327msgstr ""
328 328
329#: src/microhttpd/daemon.c:3738 329#: src/microhttpd/daemon.c:3751
330msgid "Could not add listen socket to fdset" 330msgid "Could not add listen socket to fdset"
331msgstr "" 331msgstr ""
332 332
333#: src/microhttpd/daemon.c:3767 333#: src/microhttpd/daemon.c:3780
334msgid "Could not add control inter-thread communication channel FD to fdset" 334msgid "Could not add control inter-thread communication channel FD to fdset"
335msgstr "" 335msgstr ""
336 336
337#: src/microhttpd/daemon.c:3823 337#: src/microhttpd/daemon.c:3838
338#, c-format 338#, c-format
339msgid "select failed: %s\n" 339msgid "select failed: %s\n"
340msgstr "" 340msgstr ""
341 341
342#: src/microhttpd/daemon.c:3968 src/microhttpd/daemon.c:4116 342#: src/microhttpd/daemon.c:3983 src/microhttpd/daemon.c:4131
343#, c-format 343#, c-format
344msgid "poll failed: %s\n" 344msgid "poll failed: %s\n"
345msgstr "" 345msgstr ""
346 346
347#: src/microhttpd/daemon.c:4247 src/microhttpd/daemon.c:4478 347#: src/microhttpd/daemon.c:4264 src/microhttpd/daemon.c:4497
348#, c-format 348#, c-format
349msgid "Call to epoll_wait failed: %s\n" 349msgid "Call to epoll_wait failed: %s\n"
350msgstr "" 350msgstr ""
351 351
352#: src/microhttpd/daemon.c:4430 src/microhttpd/daemon.c:4888 352#: src/microhttpd/daemon.c:4449 src/microhttpd/daemon.c:4910
353msgid "Failed to remove listen FD from epoll set\n" 353msgid "Failed to remove listen FD from epoll set\n"
354msgstr "" 354msgstr ""
355 355
356#: src/microhttpd/daemon.c:4897 356#: src/microhttpd/daemon.c:4919
357msgid "Failed to signal quiesce via inter-thread communication channel" 357msgid "Failed to signal quiesce via inter-thread communication channel"
358msgstr "" 358msgstr ""
359 359
360#: src/microhttpd/daemon.c:4920 360#: src/microhttpd/daemon.c:4942
361msgid "failed to signal quiesce via inter-thread communication channel" 361msgid "failed to signal quiesce via inter-thread communication channel"
362msgstr "" 362msgstr ""
363 363
364#: src/microhttpd/daemon.c:5034 364#: src/microhttpd/daemon.c:5056
365msgid "Warning: Too large timeout value, ignored.\n" 365msgid "Warning: Too large timeout value, ignored.\n"
366msgstr "" 366msgstr ""
367 367
368#: src/microhttpd/daemon.c:5079 368#: src/microhttpd/daemon.c:5101
369msgid "" 369msgid ""
370"Warning: Zero size, specified for thread pool size, is ignored. Thread pool " 370"Warning: Zero size, specified for thread pool size, is ignored. Thread pool "
371"is not used.\n" 371"is not used.\n"
372msgstr "" 372msgstr ""
373 373
374#: src/microhttpd/daemon.c:5088 374#: src/microhttpd/daemon.c:5110
375msgid "" 375msgid ""
376"Warning: \"1\", specified for thread pool size, is ignored. Thread pool is " 376"Warning: \"1\", specified for thread pool size, is ignored. Thread pool is "
377"not used.\n" 377"not used.\n"
378msgstr "" 378msgstr ""
379 379
380#: src/microhttpd/daemon.c:5101 380#: src/microhttpd/daemon.c:5123
381#, c-format 381#, c-format
382msgid "Specified thread pool size (%u) too big\n" 382msgid "Specified thread pool size (%u) too big\n"
383msgstr "" 383msgstr ""
384 384
385#: src/microhttpd/daemon.c:5112 385#: src/microhttpd/daemon.c:5134
386msgid "" 386msgid ""
387"MHD_OPTION_THREAD_POOL_SIZE option is specified but " 387"MHD_OPTION_THREAD_POOL_SIZE option is specified but "
388"MHD_USE_INTERNAL_POLLING_THREAD flag is not specified.\n" 388"MHD_USE_INTERNAL_POLLING_THREAD flag is not specified.\n"
389msgstr "" 389msgstr ""
390 390
391#: src/microhttpd/daemon.c:5121 391#: src/microhttpd/daemon.c:5143
392msgid "" 392msgid ""
393"Both MHD_OPTION_THREAD_POOL_SIZE option and MHD_USE_THREAD_PER_CONNECTION " 393"Both MHD_OPTION_THREAD_POOL_SIZE option and MHD_USE_THREAD_PER_CONNECTION "
394"flag are specified.\n" 394"flag are specified.\n"
395msgstr "" 395msgstr ""
396 396
397#: src/microhttpd/daemon.c:5139 src/microhttpd/daemon.c:5152 397#: src/microhttpd/daemon.c:5161 src/microhttpd/daemon.c:5174
398#: src/microhttpd/daemon.c:5165 src/microhttpd/daemon.c:5178 398#: src/microhttpd/daemon.c:5187 src/microhttpd/daemon.c:5200
399#: src/microhttpd/daemon.c:5230 src/microhttpd/daemon.c:5259 399#: src/microhttpd/daemon.c:5252 src/microhttpd/daemon.c:5281
400#: src/microhttpd/daemon.c:5280 src/microhttpd/daemon.c:5302 400#: src/microhttpd/daemon.c:5302 src/microhttpd/daemon.c:5324
401#, c-format 401#, c-format
402msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set\n" 402msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set\n"
403msgstr "" 403msgstr ""
404 404
405#: src/microhttpd/daemon.c:5198 405#: src/microhttpd/daemon.c:5220
406msgid "Error initializing DH parameters\n" 406msgid "Error initializing DH parameters\n"
407msgstr "" 407msgstr ""
408 408
409#: src/microhttpd/daemon.c:5208 409#: src/microhttpd/daemon.c:5230
410msgid "Diffie-Hellman parameters string too long\n" 410msgid "Diffie-Hellman parameters string too long\n"
411msgstr "" 411msgstr ""
412 412
413#: src/microhttpd/daemon.c:5219 413#: src/microhttpd/daemon.c:5241
414msgid "Bad Diffie-Hellman parameters format\n" 414msgid "Bad Diffie-Hellman parameters format\n"
415msgstr "" 415msgstr ""
416 416
417#: src/microhttpd/daemon.c:5247 417#: src/microhttpd/daemon.c:5269
418#, c-format 418#, c-format
419msgid "Setting priorities to `%s' failed: %s\n" 419msgid "Setting priorities to `%s' failed: %s\n"
420msgstr "" 420msgstr ""
421 421
422#: src/microhttpd/daemon.c:5268 422#: src/microhttpd/daemon.c:5290
423msgid "" 423msgid ""
424"MHD_OPTION_HTTPS_CERT_CALLBACK requires building MHD with GnuTLS >= 3.0\n" 424"MHD_OPTION_HTTPS_CERT_CALLBACK requires building MHD with GnuTLS >= 3.0\n"
425msgstr "" 425msgstr ""
426 426
427#: src/microhttpd/daemon.c:5290 427#: src/microhttpd/daemon.c:5312
428msgid "" 428msgid ""
429"MHD_OPTION_HTTPS_CERT_CALLBACK2 requires building MHD with GnuTLS >= 3.6.3\n" 429"MHD_OPTION_HTTPS_CERT_CALLBACK2 requires building MHD with GnuTLS >= 3.6.3\n"
430msgstr "" 430msgstr ""
431 431
432#: src/microhttpd/daemon.c:5325 432#: src/microhttpd/daemon.c:5347
433msgid "" 433msgid ""
434"MHD_OPTION_LISTEN_SOCKET specified for daemon with MHD_USE_NO_LISTEN_SOCKET " 434"MHD_OPTION_LISTEN_SOCKET specified for daemon with MHD_USE_NO_LISTEN_SOCKET "
435"flag set.\n" 435"flag set.\n"
436msgstr "" 436msgstr ""
437 437
438#: src/microhttpd/daemon.c:5361 438#: src/microhttpd/daemon.c:5383
439msgid "TCP fastopen is not supported on this platform\n" 439msgid "TCP fastopen is not supported on this platform\n"
440msgstr "" 440msgstr ""
441 441
442#: src/microhttpd/daemon.c:5380 442#: src/microhttpd/daemon.c:5402
443msgid "" 443msgid ""
444"Flag MHD_USE_PEDANTIC_CHECKS is ignored because another behavior is " 444"Flag MHD_USE_PEDANTIC_CHECKS is ignored because another behavior is "
445"specified by MHD_OPTION_STRICT_CLIENT.\n" 445"specified by MHD_OPTION_STRICT_CLIENT.\n"
446msgstr "" 446msgstr ""
447 447
448#: src/microhttpd/daemon.c:5515 448#: src/microhttpd/daemon.c:5537
449#, c-format 449#, c-format
450msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3\n" 450msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3\n"
451msgstr "" 451msgstr ""
452 452
453#: src/microhttpd/daemon.c:5529 453#: src/microhttpd/daemon.c:5551
454#, c-format 454#, c-format
455msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support\n" 455msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support\n"
456msgstr "" 456msgstr ""
457 457
458#: src/microhttpd/daemon.c:5536 458#: src/microhttpd/daemon.c:5558
459#, c-format 459#, c-format
460msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?)\n" 460msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?)\n"
461msgstr "" 461msgstr ""
462 462
463#: src/microhttpd/daemon.c:5566 463#: src/microhttpd/daemon.c:5588
464#, c-format 464#, c-format
465msgid "Call to epoll_create1 failed: %s\n" 465msgid "Call to epoll_create1 failed: %s\n"
466msgstr "" 466msgstr ""
467 467
468#: src/microhttpd/daemon.c:5576 468#: src/microhttpd/daemon.c:5598
469msgid "Failed to set noninheritable mode on epoll FD.\n" 469msgid "Failed to set noninheritable mode on epoll FD.\n"
470msgstr "" 470msgstr ""
471 471
472#: src/microhttpd/daemon.c:5826 472#: src/microhttpd/daemon.c:5850
473msgid "" 473msgid ""
474"Warning: MHD_USE_THREAD_PER_CONNECTION must be used only with " 474"Warning: MHD_USE_THREAD_PER_CONNECTION must be used only with "
475"MHD_USE_INTERNAL_POLLING_THREAD. Flag MHD_USE_INTERNAL_POLLING_THREAD was " 475"MHD_USE_INTERNAL_POLLING_THREAD. Flag MHD_USE_INTERNAL_POLLING_THREAD was "
476"added. Consider setting MHD_USE_INTERNAL_POLLING_THREAD explicitly.\n" 476"added. Consider setting MHD_USE_INTERNAL_POLLING_THREAD explicitly.\n"
477msgstr "" 477msgstr ""
478 478
479#: src/microhttpd/daemon.c:5874 479#: src/microhttpd/daemon.c:5898
480msgid "Using debug build of libmicrohttpd.\n" 480msgid "Using debug build of libmicrohttpd.\n"
481msgstr "" 481msgstr ""
482 482
483#: src/microhttpd/daemon.c:5888 483#: src/microhttpd/daemon.c:5912
484#, c-format 484#, c-format
485msgid "Failed to create inter-thread communication channel: %s\n" 485msgid "Failed to create inter-thread communication channel: %s\n"
486msgstr "" 486msgstr ""
487 487
488#: src/microhttpd/daemon.c:5905 488#: src/microhttpd/daemon.c:5929
489msgid "" 489msgid ""
490"file descriptor for inter-thread communication channel exceeds maximum " 490"file descriptor for inter-thread communication channel exceeds maximum "
491"value\n" 491"value\n"
492msgstr "" 492msgstr ""
493 493
494#: src/microhttpd/daemon.c:5925 494#: src/microhttpd/daemon.c:5949
495msgid "Specified value for NC_SIZE too large\n" 495msgid "Specified value for NC_SIZE too large\n"
496msgstr "" 496msgstr ""
497 497
498#: src/microhttpd/daemon.c:5939 498#: src/microhttpd/daemon.c:5963
499#, c-format 499#, c-format
500msgid "Failed to allocate memory for nonce-nc map: %s\n" 500msgid "Failed to allocate memory for nonce-nc map: %s\n"
501msgstr "" 501msgstr ""
502 502
503#: src/microhttpd/daemon.c:5956 503#: src/microhttpd/daemon.c:5980
504msgid "MHD failed to initialize nonce-nc mutex\n" 504msgid "MHD failed to initialize nonce-nc mutex\n"
505msgstr "" 505msgstr ""
506 506
507#: src/microhttpd/daemon.c:5977 507#: src/microhttpd/daemon.c:6001
508msgid "MHD thread pooling only works with MHD_USE_INTERNAL_POLLING_THREAD\n" 508msgid "MHD thread pooling only works with MHD_USE_INTERNAL_POLLING_THREAD\n"
509msgstr "" 509msgstr ""
510 510
511#: src/microhttpd/daemon.c:6001 511#: src/microhttpd/daemon.c:6025
512#, c-format 512#, c-format
513msgid "Failed to create socket for listening: %s\n" 513msgid "Failed to create socket for listening: %s\n"
514msgstr "" 514msgstr ""
515 515
516#: src/microhttpd/daemon.c:6022 src/microhttpd/daemon.c:6041 516#: src/microhttpd/daemon.c:6046 src/microhttpd/daemon.c:6065
517#: src/microhttpd/daemon.c:6064 src/microhttpd/daemon.c:6102 517#: src/microhttpd/daemon.c:6088 src/microhttpd/daemon.c:6126
518#: src/microhttpd/daemon.c:6180 src/microhttpd/daemon.c:6211 518#: src/microhttpd/daemon.c:6204 src/microhttpd/daemon.c:6235
519#, c-format 519#, c-format
520msgid "setsockopt failed: %s\n" 520msgid "setsockopt failed: %s\n"
521msgstr "" 521msgstr ""
522 522
523#: src/microhttpd/daemon.c:6075 523#: src/microhttpd/daemon.c:6099
524msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined\n" 524msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined\n"
525msgstr "" 525msgstr ""
526 526
527#: src/microhttpd/daemon.c:6111 527#: src/microhttpd/daemon.c:6135
528msgid "" 528msgid ""
529"Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n" 529"Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n"
530msgstr "" 530msgstr ""
531 531
532#: src/microhttpd/daemon.c:6191 532#: src/microhttpd/daemon.c:6215
533#, c-format 533#, c-format
534msgid "Failed to bind to port %u: %s\n" 534msgid "Failed to bind to port %u: %s\n"
535msgstr "" 535msgstr ""
536 536
537#: src/microhttpd/daemon.c:6222 537#: src/microhttpd/daemon.c:6246
538#, c-format 538#, c-format
539msgid "Failed to listen for connections: %s\n" 539msgid "Failed to listen for connections: %s\n"
540msgstr "" 540msgstr ""
541 541
542#: src/microhttpd/daemon.c:6253 542#: src/microhttpd/daemon.c:6277
543#, c-format 543#, c-format
544msgid "Failed to get listen port number: %s\n" 544msgid "Failed to get listen port number: %s\n"
545msgstr "" 545msgstr ""
546 546
547#: src/microhttpd/daemon.c:6264 547#: src/microhttpd/daemon.c:6288
548msgid "" 548msgid ""
549"Failed to get listen port number (`struct sockaddr_storage` too small!?)\n" 549"Failed to get listen port number (`struct sockaddr_storage` too small!?)\n"
550msgstr "" 550msgstr ""
551 551
552#: src/microhttpd/daemon.c:6305 552#: src/microhttpd/daemon.c:6329
553msgid "Unknown address family!\n" 553msgid "Unknown address family!\n"
554msgstr "" 554msgstr ""
555 555
556#: src/microhttpd/daemon.c:6318 556#: src/microhttpd/daemon.c:6342
557#, c-format 557#, c-format
558msgid "Failed to set nonblocking mode on listening socket: %s\n" 558msgid "Failed to set nonblocking mode on listening socket: %s\n"
559msgstr "" 559msgstr ""
560 560
561#: src/microhttpd/daemon.c:6361 561#: src/microhttpd/daemon.c:6385
562msgid "" 562msgid ""
563"Combining MHD_USE_THREAD_PER_CONNECTION and MHD_USE_EPOLL is not supported.\n" 563"Combining MHD_USE_THREAD_PER_CONNECTION and MHD_USE_EPOLL is not supported.\n"
564msgstr "" 564msgstr ""
565 565
566#: src/microhttpd/daemon.c:6375 src/microhttpd/daemon.c:6388 566#: src/microhttpd/daemon.c:6399 src/microhttpd/daemon.c:6412
567msgid "MHD failed to initialize IP connection limit mutex\n" 567msgid "MHD failed to initialize IP connection limit mutex\n"
568msgstr "" 568msgstr ""
569 569
570#: src/microhttpd/daemon.c:6407 570#: src/microhttpd/daemon.c:6431
571msgid "Failed to initialize TLS support\n" 571msgid "Failed to initialize TLS support\n"
572msgstr "" 572msgstr ""
573 573
574#: src/microhttpd/daemon.c:6435 574#: src/microhttpd/daemon.c:6459
575#, c-format 575#, c-format
576msgid "Failed to create listen thread: %s\n" 576msgid "Failed to create listen thread: %s\n"
577msgstr "" 577msgstr ""
578 578
579#: src/microhttpd/daemon.c:6484 579#: src/microhttpd/daemon.c:6508
580#, c-format 580#, c-format
581msgid "Failed to create worker inter-thread communication channel: %s\n" 581msgid "Failed to create worker inter-thread communication channel: %s\n"
582msgstr "" 582msgstr ""
583 583
584#: src/microhttpd/daemon.c:6496 584#: src/microhttpd/daemon.c:6520
585msgid "" 585msgid ""
586"File descriptor for worker inter-thread communication channel exceeds " 586"File descriptor for worker inter-thread communication channel exceeds "
587"maximum value\n" 587"maximum value\n"
588msgstr "" 588msgstr ""
589 589
590#: src/microhttpd/daemon.c:6521 590#: src/microhttpd/daemon.c:6545
591msgid "MHD failed to initialize cleanup connection mutex\n" 591msgid "MHD failed to initialize cleanup connection mutex\n"
592msgstr "" 592msgstr ""
593 593
594#: src/microhttpd/daemon.c:6535 594#: src/microhttpd/daemon.c:6559
595#, c-format 595#, c-format
596msgid "Failed to create pool thread: %s\n" 596msgid "Failed to create pool thread: %s\n"
597msgstr "" 597msgstr ""
598 598
599#: src/microhttpd/daemon.c:6690 src/microhttpd/daemon.c:6723 599#: src/microhttpd/daemon.c:6714 src/microhttpd/daemon.c:6747
600msgid "MHD_stop_daemon() called while we have suspended connections.\n" 600msgid "MHD_stop_daemon() called while we have suspended connections.\n"
601msgstr "" 601msgstr ""
602 602
603#: src/microhttpd/daemon.c:6733 src/microhttpd/daemon.c:6864 603#: src/microhttpd/daemon.c:6757 src/microhttpd/daemon.c:6888
604msgid "Failed to signal shutdown via inter-thread communication channel" 604msgid "Failed to signal shutdown via inter-thread communication channel"
605msgstr "" 605msgstr ""
606 606
607#: src/microhttpd/daemon.c:6826 607#: src/microhttpd/daemon.c:6850
608msgid "Failed to signal shutdown via inter-thread communication channel." 608msgid "Failed to signal shutdown via inter-thread communication channel."
609msgstr "" 609msgstr ""
610 610
611#: src/microhttpd/daemon.c:7302 611#: src/microhttpd/daemon.c:7326
612msgid "Failed to initialize winsock\n" 612msgid "Failed to initialize winsock\n"
613msgstr "" 613msgstr ""
614 614
615#: src/microhttpd/daemon.c:7305 615#: src/microhttpd/daemon.c:7329
616msgid "Winsock version 2.2 is not available\n" 616msgid "Winsock version 2.2 is not available\n"
617msgstr "" 617msgstr ""
618 618
619#: src/microhttpd/daemon.c:7313 src/microhttpd/daemon.c:7317 619#: src/microhttpd/daemon.c:7337 src/microhttpd/daemon.c:7341
620msgid "Failed to initialise multithreading in libgcrypt\n" 620msgid "Failed to initialise multithreading in libgcrypt\n"
621msgstr "" 621msgstr ""
622 622
623#: src/microhttpd/daemon.c:7323 623#: src/microhttpd/daemon.c:7347
624msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer\n" 624msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer\n"
625msgstr "" 625msgstr ""
626 626
@@ -628,68 +628,68 @@ msgstr ""
628msgid "Close socket failed.\n" 628msgid "Close socket failed.\n"
629msgstr "" 629msgstr ""
630 630
631#: src/microhttpd/connection.c:928 631#: src/microhttpd/connection.c:932
632msgid "Closing connection (application reported error generating data)\n" 632msgid "Closing connection (application reported error generating data)\n"
633msgstr "" 633msgstr ""
634 634
635#: src/microhttpd/connection.c:977 635#: src/microhttpd/connection.c:981
636msgid "Closing connection (out of memory)\n" 636msgid "Closing connection (out of memory)\n"
637msgstr "" 637msgstr ""
638 638
639#: src/microhttpd/connection.c:1025 639#: src/microhttpd/connection.c:1029
640msgid "Closing connection (application error generating response)\n" 640msgid "Closing connection (application error generating response)\n"
641msgstr "" 641msgstr ""
642 642
643#: src/microhttpd/connection.c:1654 643#: src/microhttpd/connection.c:1657
644#, c-format 644#, c-format
645msgid "" 645msgid ""
646"Error processing request (HTTP response code is %u (`%s')). Closing " 646"Error processing request (HTTP response code is %u (`%s')). Closing "
647"connection.\n" 647"connection.\n"
648msgstr "" 648msgstr ""
649 649
650#: src/microhttpd/connection.c:1681 src/microhttpd/connection.c:2719 650#: src/microhttpd/connection.c:1684 src/microhttpd/connection.c:2719
651msgid "Closing connection (failed to queue response)\n" 651msgid "Closing connection (failed to queue response)\n"
652msgstr "" 652msgstr ""
653 653
654#: src/microhttpd/connection.c:1692 src/microhttpd/connection.c:3527 654#: src/microhttpd/connection.c:1695 src/microhttpd/connection.c:3529
655#: src/microhttpd/connection.c:3636 655#: src/microhttpd/connection.c:3638
656msgid "Closing connection (failed to create response header)\n" 656msgid "Closing connection (failed to create response header)\n"
657msgstr "" 657msgstr ""
658 658
659#: src/microhttpd/connection.c:1738 src/microhttpd/connection.c:2879 659#: src/microhttpd/connection.c:1741 src/microhttpd/connection.c:2879
660#: src/microhttpd/connection.c:2947 src/microhttpd/connection.c:3300 660#: src/microhttpd/connection.c:2947 src/microhttpd/connection.c:3300
661#, c-format 661#, c-format
662msgid "In function %s handling connection at state: %s\n" 662msgid "In function %s handling connection at state: %s\n"
663msgstr "" 663msgstr ""
664 664
665#: src/microhttpd/connection.c:1956 665#: src/microhttpd/connection.c:1958
666msgid "Not enough memory in pool to allocate header record!\n" 666msgid "Not enough memory in pool to allocate header record!\n"
667msgstr "" 667msgstr ""
668 668
669#: src/microhttpd/connection.c:2003 669#: src/microhttpd/connection.c:2005
670msgid "Not enough memory in pool to parse cookies!\n" 670msgid "Not enough memory in pool to parse cookies!\n"
671msgstr "" 671msgstr ""
672 672
673#: src/microhttpd/connection.c:2234 src/microhttpd/connection.c:2436 673#: src/microhttpd/connection.c:2236 src/microhttpd/connection.c:2438
674msgid "Application reported internal error, closing connection.\n" 674msgid "Application reported internal error, closing connection.\n"
675msgstr "" 675msgstr ""
676 676
677#: src/microhttpd/connection.c:2301 src/microhttpd/connection.c:2380 677#: src/microhttpd/connection.c:2303 src/microhttpd/connection.c:2382
678msgid "" 678msgid ""
679"Received malformed HTTP request (bad chunked encoding). Closing connection.\n" 679"Received malformed HTTP request (bad chunked encoding). Closing connection.\n"
680msgstr "" 680msgstr ""
681 681
682#: src/microhttpd/connection.c:2444 682#: src/microhttpd/connection.c:2446
683msgid "libmicrohttpd API violation" 683msgid "libmicrohttpd API violation"
684msgstr "" 684msgstr ""
685 685
686#: src/microhttpd/connection.c:2460 686#: src/microhttpd/connection.c:2462
687msgid "" 687msgid ""
688"WARNING: incomplete upload processing and connection not suspended may " 688"WARNING: incomplete upload processing and connection not suspended may "
689"result in hung connection.\n" 689"result in hung connection.\n"
690msgstr "" 690msgstr ""
691 691
692#: src/microhttpd/connection.c:2532 692#: src/microhttpd/connection.c:2534
693msgid "Received malformed line (no colon). Closing connection.\n" 693msgid "Received malformed line (no colon). Closing connection.\n"
694msgstr "" 694msgstr ""
695 695
@@ -750,43 +750,43 @@ msgid ""
750"Failed to signal end of connection via inter-thread communication channel" 750"Failed to signal end of connection via inter-thread communication channel"
751msgstr "" 751msgstr ""
752 752
753#: src/microhttpd/connection.c:3985 753#: src/microhttpd/connection.c:3989
754msgid "Attempted to queue response on wrong thread!\n" 754msgid "Attempted to queue response on wrong thread!\n"
755msgstr "" 755msgstr ""
756 756
757#: src/microhttpd/connection.c:3997 757#: src/microhttpd/connection.c:4001
758msgid "" 758msgid ""
759"Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n" 759"Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n"
760msgstr "" 760msgstr ""
761 761
762#: src/microhttpd/connection.c:4007 762#: src/microhttpd/connection.c:4011
763msgid "Application used invalid status code for 'upgrade' response!\n" 763msgid "Application used invalid status code for 'upgrade' response!\n"
764msgstr "" 764msgstr ""
765 765
766#: src/microhttpd/response.c:914 766#: src/microhttpd/response.c:915
767msgid "" 767msgid ""
768"Invalid response for upgrade: application failed to set the 'Upgrade' " 768"Invalid response for upgrade: application failed to set the 'Upgrade' "
769"header!\n" 769"header!\n"
770msgstr "" 770msgstr ""
771 771
772#: src/microhttpd/response.c:955 772#: src/microhttpd/response.c:956
773msgid "Failed to make loopback sockets non-blocking.\n" 773msgid "Failed to make loopback sockets non-blocking.\n"
774msgstr "" 774msgstr ""
775 775
776#: src/microhttpd/response.c:974 776#: src/microhttpd/response.c:975
777msgid "Failed to set SO_NOSIGPIPE on loopback sockets.\n" 777msgid "Failed to set SO_NOSIGPIPE on loopback sockets.\n"
778msgstr "" 778msgstr ""
779 779
780#: src/microhttpd/response.c:994 780#: src/microhttpd/response.c:995
781#, c-format 781#, c-format
782msgid "Socketpair descriptor larger than FD_SETSIZE: %d > %d\n" 782msgid "Socketpair descriptor larger than FD_SETSIZE: %d > %d\n"
783msgstr "" 783msgstr ""
784 784
785#: src/microhttpd/response.c:1075 785#: src/microhttpd/response.c:1076
786msgid "Error cleaning up while handling epoll error" 786msgid "Error cleaning up while handling epoll error"
787msgstr "" 787msgstr ""
788 788
789#: src/microhttpd/mhd_itc.h:354 789#: src/microhttpd/mhd_itc.h:355
790msgid "Failed to destroy ITC.\n" 790msgid "Failed to destroy ITC.\n"
791msgstr "" 791msgstr ""
792 792
diff --git a/src/microhttpd/test_postprocessor.c b/src/microhttpd/test_postprocessor.c
index 75b5ba33..6f8ce6f5 100644
--- a/src/microhttpd/test_postprocessor.c
+++ b/src/microhttpd/test_postprocessor.c
@@ -17,13 +17,11 @@
17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA. 18 Boston, MA 02110-1301, USA.
19*/ 19*/
20
21/** 20/**
22 * @file test_postprocessor.c 21 * @file test_postprocessor.c
23 * @brief Testcase for postprocessor 22 * @brief Testcase for postprocessor
24 * @author Christian Grothoff 23 * @author Christian Grothoff
25 */ 24 */
26
27#include "platform.h" 25#include "platform.h"
28#include "microhttpd.h" 26#include "microhttpd.h"
29#include "internal.h" 27#include "internal.h"
@@ -42,8 +40,18 @@
42 * five NULL-entries. 40 * five NULL-entries.
43 */ 41 */
44const char *want[] = { 42const char *want[] = {
43#define URL_NOVALUE1_DATA "abc&x=5"
44#define URL_NOVALUE1_START 0
45 "abc", NULL, NULL, NULL, NULL,
46 "x", NULL, NULL, NULL, "5",
47#define URL_NOVALUE1_END (URL_NOVALUE1_START + 10)
48#define URL_NOVALUE2_DATA "abc=&x=5"
49#define URL_NOVALUE2_START URL_NOVALUE1_END
50 "abc", NULL, NULL, NULL, "",
51 "x", NULL, NULL, NULL, "5",
52#define URL_NOVALUE2_END (URL_NOVALUE2_START + 10)
45#define URL_DATA "abc=def&x=5" 53#define URL_DATA "abc=def&x=5"
46#define URL_START 0 54#define URL_START URL_NOVALUE2_END
47 "abc", NULL, NULL, NULL, "def", 55 "abc", NULL, NULL, NULL, "def",
48 "x", NULL, NULL, NULL, "5", 56 "x", NULL, NULL, NULL, "5",
49#define URL_END (URL_START + 10) 57#define URL_END (URL_START + 10)
@@ -125,12 +133,14 @@ value_checker (void *cls,
125 133
126 134
127static int 135static int
128test_urlencoding (void) 136test_urlencoding_case (unsigned int want_start,
137 unsigned int want_end,
138 const char *url_data)
129{ 139{
130 struct MHD_Connection connection; 140 struct MHD_Connection connection;
131 struct MHD_HTTP_Header header; 141 struct MHD_HTTP_Header header;
132 struct MHD_PostProcessor *pp; 142 struct MHD_PostProcessor *pp;
133 unsigned int want_off = URL_START; 143 unsigned int want_off = want_start;
134 size_t i; 144 size_t i;
135 size_t delta; 145 size_t delta;
136 size_t size; 146 size_t size;
@@ -147,21 +157,34 @@ test_urlencoding (void)
147 pp = MHD_create_post_processor (&connection, 157 pp = MHD_create_post_processor (&connection,
148 1024, &value_checker, &want_off); 158 1024, &value_checker, &want_off);
149 i = 0; 159 i = 0;
150 size = strlen (URL_DATA); 160 size = strlen (url_data);
151 while (i < size) 161 while (i < size)
152 { 162 {
153 delta = 1 + MHD_random_ () % (size - i); 163 delta = 1 + MHD_random_ () % (size - i);
154 MHD_post_process (pp, &URL_DATA[i], delta); 164 MHD_post_process (pp, &url_data[i], delta);
155 i += delta; 165 i += delta;
156 } 166 }
157 MHD_destroy_post_processor (pp); 167 MHD_destroy_post_processor (pp);
158 if (want_off != URL_END) 168 if (want_off != want_end)
159 return 1; 169 return 1;
160 return 0; 170 return 0;
161} 171}
162 172
163 173
164static int 174static int
175test_urlencoding (void)
176{
177 unsigned int errorCount = 0;
178 errorCount += test_urlencoding_case (URL_START, URL_END, URL_DATA);
179 errorCount += test_urlencoding_case (URL_NOVALUE1_START, URL_NOVALUE1_END,
180 URL_NOVALUE1_DATA);
181 errorCount += test_urlencoding_case (URL_NOVALUE2_START, URL_NOVALUE2_END,
182 URL_NOVALUE2_DATA);
183 return errorCount;
184}
185
186
187static int
165test_multipart_garbage (void) 188test_multipart_garbage (void)
166{ 189{
167 struct MHD_Connection connection; 190 struct MHD_Connection connection;