aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2018-11-18 13:24:00 +0100
committerChristian Grothoff <christian@grothoff.org>2018-11-18 13:24:00 +0100
commita78bc73beb1c34421659258801569128b256f797 (patch)
tree95021bdd67361554161ec1a9717e86ece86a962d
parent488615cea6ccb5437ebde23c03a5e52fdbc95436 (diff)
downloadlibmicrohttpd-a78bc73beb1c34421659258801569128b256f797.tar.gz
libmicrohttpd-a78bc73beb1c34421659258801569128b256f797.zip
releasing 0.9.61v0.9.61
-rw-r--r--ChangeLog6
-rw-r--r--configure.ac6
-rw-r--r--po/libmicrohttpd.pot286
-rw-r--r--src/examples/suspend_resume_epoll.c3
-rw-r--r--src/include/microhttpd.h6
-rw-r--r--src/microhttpd/connection.c38
-rw-r--r--src/microhttpd/daemon.c9
-rw-r--r--src/microhttpd/digestauth.c26
8 files changed, 200 insertions, 180 deletions
diff --git a/ChangeLog b/ChangeLog
index eae462f8..505b459f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
1Sun Nov 18 13:08:11 CET 2018
2 Parse arguments with (properly) escaped URLs correctly.
3 (making things work with recent cURL changes, #5473).
4 Replace sprintf with snprintf in testcases.
5 Releasing libmicrohttpd 0.9.61. -CG
6
1Wed Nov 14 14:01:21 CET 2018 7Wed Nov 14 14:01:21 CET 2018
2 Fix build issue with GnuTLS < 3.0. -CG 8 Fix build issue with GnuTLS < 3.0. -CG
3 9
diff --git a/configure.ac b/configure.ac
index 02a980a9..3e840234 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,15 +22,15 @@
22# 22#
23AC_PREREQ([2.64]) 23AC_PREREQ([2.64])
24LT_PREREQ([2.4.0]) 24LT_PREREQ([2.4.0])
25AC_INIT([GNU Libmicrohttpd],[0.9.60],[libmicrohttpd@gnu.org]) 25AC_INIT([GNU Libmicrohttpd],[0.9.61],[libmicrohttpd@gnu.org])
26AC_CONFIG_AUX_DIR([build-aux]) 26AC_CONFIG_AUX_DIR([build-aux])
27AM_INIT_AUTOMAKE([silent-rules] [subdir-objects]) 27AM_INIT_AUTOMAKE([silent-rules] [subdir-objects])
28AC_CONFIG_HEADERS([MHD_config.h]) 28AC_CONFIG_HEADERS([MHD_config.h])
29AC_CONFIG_MACRO_DIR([m4]) 29AC_CONFIG_MACRO_DIR([m4])
30 30
31LIB_VERSION_CURRENT=59 31LIB_VERSION_CURRENT=60
32LIB_VERSION_REVISION=0 32LIB_VERSION_REVISION=0
33LIB_VERSION_AGE=47 33LIB_VERSION_AGE=48
34AC_SUBST(LIB_VERSION_CURRENT) 34AC_SUBST(LIB_VERSION_CURRENT)
35AC_SUBST(LIB_VERSION_REVISION) 35AC_SUBST(LIB_VERSION_REVISION)
36AC_SUBST(LIB_VERSION_AGE) 36AC_SUBST(LIB_VERSION_AGE)
diff --git a/po/libmicrohttpd.pot b/po/libmicrohttpd.pot
index 61ea74ab..93487aa6 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.60\n" 9"Project-Id-Version: GNU libmicrohttpd 0.9.61\n"
10"Report-Msgid-Bugs-To: libmicrohttpd@gnu.org\n" 10"Report-Msgid-Bugs-To: libmicrohttpd@gnu.org\n"
11"POT-Creation-Date: 2018-11-18 11:25+0100\n" 11"POT-Creation-Date: 2018-11-18 13:11+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"
@@ -47,39 +47,39 @@ msgstr ""
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:805 50#: src/microhttpd/digestauth.c:807
51msgid "Authentication failed, invalid timestamp format.\n" 51msgid "Authentication failed, invalid timestamp format.\n"
52msgstr "" 52msgstr ""
53 53
54#: src/microhttpd/digestauth.c:866 54#: src/microhttpd/digestauth.c:868
55msgid "Authentication failed, invalid format.\n" 55msgid "Authentication failed, invalid format.\n"
56msgstr "" 56msgstr ""
57 57
58#: src/microhttpd/digestauth.c:876 58#: src/microhttpd/digestauth.c:878
59msgid "Authentication failed, invalid nc format.\n" 59msgid "Authentication failed, invalid nc format.\n"
60msgstr "" 60msgstr ""
61 61
62#: src/microhttpd/digestauth.c:902 62#: src/microhttpd/digestauth.c:904
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:954 66#: src/microhttpd/digestauth.c:956
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:974 70#: src/microhttpd/digestauth.c:976
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:1089 74#: src/microhttpd/digestauth.c:1091
75msgid "Could not register nonce (is the nonce array size zero?).\n" 75msgid "Could not register nonce (is the nonce array size zero?).\n"
76msgstr "" 76msgstr ""
77 77
78#: src/microhttpd/digestauth.c:1112 78#: src/microhttpd/digestauth.c:1114
79msgid "Failed to allocate memory for auth response header\n" 79msgid "Failed to allocate memory for auth response header\n"
80msgstr "" 80msgstr ""
81 81
82#: src/microhttpd/digestauth.c:1146 82#: src/microhttpd/digestauth.c:1148
83msgid "Failed to add Digest auth header\n" 83msgid "Failed to add Digest auth header\n"
84msgstr "" 84msgstr ""
85 85
@@ -122,7 +122,7 @@ msgid ""
122"unsupported.\n" 122"unsupported.\n"
123msgstr "" 123msgstr ""
124 124
125#: src/microhttpd/daemon.c:1258 src/microhttpd/daemon.c:6329 125#: src/microhttpd/daemon.c:1258 src/microhttpd/daemon.c:6332
126msgid "" 126msgid ""
127"Initiated daemon shutdown while \"upgraded\" connection was not closed.\n" 127"Initiated daemon shutdown while \"upgraded\" connection was not closed.\n"
128msgstr "" 128msgstr ""
@@ -139,457 +139,457 @@ msgstr ""
139msgid "Error preparing select\n" 139msgid "Error preparing select\n"
140msgstr "" 140msgstr ""
141 141
142#: src/microhttpd/daemon.c:1660 src/microhttpd/daemon.c:1811 142#: src/microhttpd/daemon.c:1660 src/microhttpd/daemon.c:1812
143#: src/microhttpd/daemon.c:1955 143#: src/microhttpd/daemon.c:1956
144#, c-format 144#, c-format
145msgid "Error during select (%d): `%s'\n" 145msgid "Error during select (%d): `%s'\n"
146msgstr "" 146msgstr ""
147 147
148#: src/microhttpd/daemon.c:1709 src/microhttpd/daemon.c:1832 148#: src/microhttpd/daemon.c:1709 src/microhttpd/daemon.c:1833
149#: src/microhttpd/daemon.c:2024 149#: src/microhttpd/daemon.c:2025
150#, c-format 150#, c-format
151msgid "Error during poll: `%s'\n" 151msgid "Error during poll: `%s'\n"
152msgstr "" 152msgstr ""
153 153
154#: src/microhttpd/daemon.c:1795 src/microhttpd/daemon.c:1937 154#: src/microhttpd/daemon.c:1796 src/microhttpd/daemon.c:1938
155msgid "Failed to add FD to fd_set\n" 155msgid "Failed to add FD to fd_set\n"
156msgstr "" 156msgstr ""
157 157
158#: src/microhttpd/daemon.c:2076 158#: src/microhttpd/daemon.c:2077
159msgid "Processing thread terminating. Closing connection\n" 159msgid "Processing thread terminating. Closing connection\n"
160msgstr "" 160msgstr ""
161 161
162#: src/microhttpd/daemon.c:2105 162#: src/microhttpd/daemon.c:2106
163msgid "" 163msgid ""
164"Failed to signal thread termination via inter-thread communication channel." 164"Failed to signal thread termination via inter-thread communication channel."
165msgstr "" 165msgstr ""
166 166
167#: src/microhttpd/daemon.c:2175 167#: src/microhttpd/daemon.c:2176
168msgid "Internal server error. This should be impossible.\n" 168msgid "Internal server error. This should be impossible.\n"
169msgstr "" 169msgstr ""
170 170
171#: src/microhttpd/daemon.c:2185 src/microhttpd/daemon.c:2213 171#: src/microhttpd/daemon.c:2186 src/microhttpd/daemon.c:2214
172msgid "PSK not supported by this server.\n" 172msgid "PSK not supported by this server.\n"
173msgstr "" 173msgstr ""
174 174
175#: src/microhttpd/daemon.c:2199 175#: src/microhttpd/daemon.c:2200
176msgid "PSK authentication failed: gnutls_malloc failed to allocate memory\n" 176msgid "PSK authentication failed: gnutls_malloc failed to allocate memory\n"
177msgstr "" 177msgstr ""
178 178
179#: src/microhttpd/daemon.c:2291 src/microhttpd/daemon.c:5998 179#: src/microhttpd/daemon.c:2292 src/microhttpd/daemon.c:6001
180#, c-format 180#, c-format
181msgid "Socket descriptor larger than FD_SETSIZE: %d > %d\n" 181msgid "Socket descriptor larger than FD_SETSIZE: %d > %d\n"
182msgstr "" 182msgstr ""
183 183
184#: src/microhttpd/daemon.c:2307 184#: src/microhttpd/daemon.c:2308
185#, c-format 185#, c-format
186msgid "Failed to set SO_NOSIGPIPE on accepted socket: %s\n" 186msgid "Failed to set SO_NOSIGPIPE on accepted socket: %s\n"
187msgstr "" 187msgstr ""
188 188
189#: src/microhttpd/daemon.c:2324 src/microhttpd/daemon.c:3100 189#: src/microhttpd/daemon.c:2325 src/microhttpd/daemon.c:3101
190#, c-format 190#, c-format
191msgid "Accepted connection on socket %d\n" 191msgid "Accepted connection on socket %d\n"
192msgstr "" 192msgstr ""
193 193
194#: src/microhttpd/daemon.c:2336 src/microhttpd/daemon.c:2512 194#: src/microhttpd/daemon.c:2337 src/microhttpd/daemon.c:2513
195msgid "Server reached connection limit. Closing inbound connection.\n" 195msgid "Server reached connection limit. Closing inbound connection.\n"
196msgstr "" 196msgstr ""
197 197
198#: src/microhttpd/daemon.c:2354 198#: src/microhttpd/daemon.c:2355
199msgid "Connection rejected by application. Closing connection.\n" 199msgid "Connection rejected by application. Closing connection.\n"
200msgstr "" 200msgstr ""
201 201
202#: src/microhttpd/daemon.c:2387 src/microhttpd/daemon.c:2407 202#: src/microhttpd/daemon.c:2388 src/microhttpd/daemon.c:2408
203#: src/microhttpd/daemon.c:3678 203#: src/microhttpd/daemon.c:3680
204#, c-format 204#, c-format
205msgid "Error allocating memory: %s\n" 205msgid "Error allocating memory: %s\n"
206msgstr "" 206msgstr ""
207 207
208#: src/microhttpd/daemon.c:2469 208#: src/microhttpd/daemon.c:2470
209#, c-format 209#, c-format
210msgid "Failed to setup TLS credentials: unknown credential type %d\n" 210msgid "Failed to setup TLS credentials: unknown credential type %d\n"
211msgstr "" 211msgstr ""
212 212
213#: src/microhttpd/daemon.c:2478 213#: src/microhttpd/daemon.c:2479
214msgid "Unknown credential type" 214msgid "Unknown credential type"
215msgstr "" 215msgstr ""
216 216
217#: src/microhttpd/daemon.c:2574 src/microhttpd/daemon.c:4167 217#: src/microhttpd/daemon.c:2575 src/microhttpd/daemon.c:4170
218#: src/microhttpd/daemon.c:4200 src/microhttpd/daemon.c:5314 218#: src/microhttpd/daemon.c:4203 src/microhttpd/daemon.c:5317
219#: src/microhttpd/daemon.c:5331 src/microhttpd/connection.c:3828 219#: src/microhttpd/daemon.c:5334 src/microhttpd/connection.c:3836
220#: src/microhttpd/response.c:962 src/microhttpd/response.c:988 220#: src/microhttpd/response.c:962 src/microhttpd/response.c:988
221#, c-format 221#, c-format
222msgid "Call to epoll_ctl failed: %s\n" 222msgid "Call to epoll_ctl failed: %s\n"
223msgstr "" 223msgstr ""
224 224
225#: src/microhttpd/daemon.c:2599 225#: src/microhttpd/daemon.c:2600
226msgid "Failed to signal new connection via inter-thread communication channel." 226msgid "Failed to signal new connection via inter-thread communication channel."
227msgstr "" 227msgstr ""
228 228
229#: src/microhttpd/daemon.c:2696 src/microhttpd/daemon.c:3181 229#: src/microhttpd/daemon.c:2697 src/microhttpd/daemon.c:3182
230#: src/microhttpd/daemon.c:6231 src/microhttpd/connection.c:990 230#: src/microhttpd/daemon.c:6234 src/microhttpd/connection.c:990
231#: src/microhttpd/connection.c:1009 231#: src/microhttpd/connection.c:1009
232msgid "Failed to remove FD from epoll set\n" 232msgid "Failed to remove FD from epoll set\n"
233msgstr "" 233msgstr ""
234 234
235#: src/microhttpd/daemon.c:2743 235#: src/microhttpd/daemon.c:2744
236msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" 236msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n"
237msgstr "" 237msgstr ""
238 238
239#: src/microhttpd/daemon.c:2749 239#: src/microhttpd/daemon.c:2750
240msgid "Error: connection scheduled for \"upgrade\" cannot be suspended" 240msgid "Error: connection scheduled for \"upgrade\" cannot be suspended"
241msgstr "" 241msgstr ""
242 242
243#: src/microhttpd/daemon.c:2772 243#: src/microhttpd/daemon.c:2773
244msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" 244msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n"
245msgstr "" 245msgstr ""
246 246
247#: src/microhttpd/daemon.c:2782 247#: src/microhttpd/daemon.c:2783
248msgid "Failed to signal resume via inter-thread communication channel." 248msgid "Failed to signal resume via inter-thread communication channel."
249msgstr "" 249msgstr ""
250 250
251#: src/microhttpd/daemon.c:2910 251#: src/microhttpd/daemon.c:2911
252msgid "" 252msgid ""
253"Failed to signal resume of connection via inter-thread communication channel." 253"Failed to signal resume of connection via inter-thread communication channel."
254msgstr "" 254msgstr ""
255 255
256#: src/microhttpd/daemon.c:2956 256#: src/microhttpd/daemon.c:2957
257#, c-format 257#, c-format
258msgid "Failed to set nonblocking mode on new client socket: %s\n" 258msgid "Failed to set nonblocking mode on new client socket: %s\n"
259msgstr "" 259msgstr ""
260 260
261#: src/microhttpd/daemon.c:2969 261#: src/microhttpd/daemon.c:2970
262msgid "Failed to set noninheritable mode on new client socket.\n" 262msgid "Failed to set noninheritable mode on new client socket.\n"
263msgstr "" 263msgstr ""
264 264
265#: src/microhttpd/daemon.c:3042 265#: src/microhttpd/daemon.c:3043
266#, c-format 266#, c-format
267msgid "Error accepting connection: %s\n" 267msgid "Error accepting connection: %s\n"
268msgstr "" 268msgstr ""
269 269
270#: src/microhttpd/daemon.c:3059 270#: src/microhttpd/daemon.c:3060
271msgid "" 271msgid ""
272"Hit process or system resource limit at FIRST connection. This is really bad " 272"Hit process or system resource limit at FIRST connection. This is really bad "
273"as there is no sane way to proceed. Will try busy waiting for system " 273"as there is no sane way to proceed. Will try busy waiting for system "
274"resources to become magically available.\n" 274"resources to become magically available.\n"
275msgstr "" 275msgstr ""
276 276
277#: src/microhttpd/daemon.c:3069 277#: src/microhttpd/daemon.c:3070
278#, c-format 278#, c-format
279msgid "" 279msgid ""
280"Hit process or system resource limit at %u connections, temporarily " 280"Hit process or system resource limit at %u connections, temporarily "
281"suspending accept(). Consider setting a lower MHD_OPTION_CONNECTION_LIMIT.\n" 281"suspending accept(). Consider setting a lower MHD_OPTION_CONNECTION_LIMIT.\n"
282msgstr "" 282msgstr ""
283 283
284#: src/microhttpd/daemon.c:3081 284#: src/microhttpd/daemon.c:3082
285#, c-format 285#, c-format
286msgid "Failed to set nonblocking mode on incoming connection socket: %s\n" 286msgid "Failed to set nonblocking mode on incoming connection socket: %s\n"
287msgstr "" 287msgstr ""
288 288
289#: src/microhttpd/daemon.c:3093 289#: src/microhttpd/daemon.c:3094
290msgid "Failed to set noninheritable mode on incoming connection socket.\n" 290msgid "Failed to set noninheritable mode on incoming connection socket.\n"
291msgstr "" 291msgstr ""
292 292
293#: src/microhttpd/daemon.c:3139 src/microhttpd/daemon.c:6370 293#: src/microhttpd/daemon.c:3140 src/microhttpd/daemon.c:6373
294#: src/microhttpd/daemon.c:6400 src/microhttpd/daemon.c:6494 294#: src/microhttpd/daemon.c:6403 src/microhttpd/daemon.c:6497
295msgid "Failed to join a thread\n" 295msgid "Failed to join a thread\n"
296msgstr "" 296msgstr ""
297 297
298#: src/microhttpd/daemon.c:3238 298#: src/microhttpd/daemon.c:3239
299msgid "Illegal call to MHD_get_timeout\n" 299msgid "Illegal call to MHD_get_timeout\n"
300msgstr "" 300msgstr ""
301 301
302#: src/microhttpd/daemon.c:3435 302#: src/microhttpd/daemon.c:3436
303msgid "" 303msgid ""
304"MHD_run_from_select() called with except_fd_set set to NULL. Such behavior " 304"MHD_run_from_select() called with except_fd_set set to NULL. Such behavior "
305"is deprecated.\n" 305"is deprecated.\n"
306msgstr "" 306msgstr ""
307 307
308#: src/microhttpd/daemon.c:3515 308#: src/microhttpd/daemon.c:3516
309msgid "Could not obtain daemon fdsets" 309msgid "Could not obtain daemon fdsets"
310msgstr "" 310msgstr ""
311 311
312#: src/microhttpd/daemon.c:3532 312#: src/microhttpd/daemon.c:3533
313msgid "Could not add listen socket to fdset" 313msgid "Could not add listen socket to fdset"
314msgstr "" 314msgstr ""
315 315
316#: src/microhttpd/daemon.c:3560 316#: src/microhttpd/daemon.c:3561
317msgid "Could not add control inter-thread communication channel FD to fdset" 317msgid "Could not add control inter-thread communication channel FD to fdset"
318msgstr "" 318msgstr ""
319 319
320#: src/microhttpd/daemon.c:3616 320#: src/microhttpd/daemon.c:3617
321#, c-format 321#, c-format
322msgid "select failed: %s\n" 322msgid "select failed: %s\n"
323msgstr "" 323msgstr ""
324 324
325#: src/microhttpd/daemon.c:3760 src/microhttpd/daemon.c:3906 325#: src/microhttpd/daemon.c:3762 src/microhttpd/daemon.c:3909
326#, c-format 326#, c-format
327msgid "poll failed: %s\n" 327msgid "poll failed: %s\n"
328msgstr "" 328msgstr ""
329 329
330#: src/microhttpd/daemon.c:4036 src/microhttpd/daemon.c:4267 330#: src/microhttpd/daemon.c:4039 src/microhttpd/daemon.c:4270
331#, c-format 331#, c-format
332msgid "Call to epoll_wait failed: %s\n" 332msgid "Call to epoll_wait failed: %s\n"
333msgstr "" 333msgstr ""
334 334
335#: src/microhttpd/daemon.c:4219 src/microhttpd/daemon.c:4669 335#: src/microhttpd/daemon.c:4222 src/microhttpd/daemon.c:4672
336msgid "Failed to remove listen FD from epoll set\n" 336msgid "Failed to remove listen FD from epoll set\n"
337msgstr "" 337msgstr ""
338 338
339#: src/microhttpd/daemon.c:4677 339#: src/microhttpd/daemon.c:4680
340msgid "Failed to signal quiesce via inter-thread communication channel" 340msgid "Failed to signal quiesce via inter-thread communication channel"
341msgstr "" 341msgstr ""
342 342
343#: src/microhttpd/daemon.c:4698 343#: src/microhttpd/daemon.c:4701
344msgid "failed to signal quiesce via inter-thread communication channel" 344msgid "failed to signal quiesce via inter-thread communication channel"
345msgstr "" 345msgstr ""
346 346
347#: src/microhttpd/daemon.c:4803 347#: src/microhttpd/daemon.c:4806
348msgid "Warning: Too large timeout value, ignored.\n" 348msgid "Warning: Too large timeout value, ignored.\n"
349msgstr "" 349msgstr ""
350 350
351#: src/microhttpd/daemon.c:4843 351#: src/microhttpd/daemon.c:4846
352msgid "" 352msgid ""
353"Warning: Zero size, specified for thread pool size, is ignored. Thread pool " 353"Warning: Zero size, specified for thread pool size, is ignored. Thread pool "
354"is not used.\n" 354"is not used.\n"
355msgstr "" 355msgstr ""
356 356
357#: src/microhttpd/daemon.c:4851 357#: src/microhttpd/daemon.c:4854
358msgid "" 358msgid ""
359"Warning: \"1\", specified for thread pool size, is ignored. Thread pool is " 359"Warning: \"1\", specified for thread pool size, is ignored. Thread pool is "
360"not used.\n" 360"not used.\n"
361msgstr "" 361msgstr ""
362 362
363#: src/microhttpd/daemon.c:4863 363#: src/microhttpd/daemon.c:4866
364#, c-format 364#, c-format
365msgid "Specified thread pool size (%u) too big\n" 365msgid "Specified thread pool size (%u) too big\n"
366msgstr "" 366msgstr ""
367 367
368#: src/microhttpd/daemon.c:4874 368#: src/microhttpd/daemon.c:4877
369msgid "" 369msgid ""
370"MHD_OPTION_THREAD_POOL_SIZE option is specified but " 370"MHD_OPTION_THREAD_POOL_SIZE option is specified but "
371"MHD_USE_INTERNAL_POLLING_THREAD flag is not specified.\n" 371"MHD_USE_INTERNAL_POLLING_THREAD flag is not specified.\n"
372msgstr "" 372msgstr ""
373 373
374#: src/microhttpd/daemon.c:4883 374#: src/microhttpd/daemon.c:4886
375msgid "" 375msgid ""
376"Both MHD_OPTION_THREAD_POOL_SIZE option and MHD_USE_THREAD_PER_CONNECTION " 376"Both MHD_OPTION_THREAD_POOL_SIZE option and MHD_USE_THREAD_PER_CONNECTION "
377"flag are specified.\n" 377"flag are specified.\n"
378msgstr "" 378msgstr ""
379 379
380#: src/microhttpd/daemon.c:4898 src/microhttpd/daemon.c:4909 380#: src/microhttpd/daemon.c:4901 src/microhttpd/daemon.c:4912
381#: src/microhttpd/daemon.c:4920 src/microhttpd/daemon.c:4931 381#: src/microhttpd/daemon.c:4923 src/microhttpd/daemon.c:4934
382#: src/microhttpd/daemon.c:4973 382#: src/microhttpd/daemon.c:4976
383#, c-format 383#, c-format
384msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set\n" 384msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set\n"
385msgstr "" 385msgstr ""
386 386
387#: src/microhttpd/daemon.c:4950 387#: src/microhttpd/daemon.c:4953
388msgid "Error initializing DH parameters\n" 388msgid "Error initializing DH parameters\n"
389msgstr "" 389msgstr ""
390 390
391#: src/microhttpd/daemon.c:4962 391#: src/microhttpd/daemon.c:4965
392msgid "Bad Diffie-Hellman parameters format\n" 392msgid "Bad Diffie-Hellman parameters format\n"
393msgstr "" 393msgstr ""
394 394
395#: src/microhttpd/daemon.c:4990 395#: src/microhttpd/daemon.c:4993
396#, c-format 396#, c-format
397msgid "Setting priorities to `%s' failed: %s\n" 397msgid "Setting priorities to `%s' failed: %s\n"
398msgstr "" 398msgstr ""
399 399
400#: src/microhttpd/daemon.c:5003 400#: src/microhttpd/daemon.c:5006
401msgid "" 401msgid ""
402"MHD_OPTION_HTTPS_CERT_CALLBACK requires building MHD with GnuTLS >= 3.0\n" 402"MHD_OPTION_HTTPS_CERT_CALLBACK requires building MHD with GnuTLS >= 3.0\n"
403msgstr "" 403msgstr ""
404 404
405#: src/microhttpd/daemon.c:5030 405#: src/microhttpd/daemon.c:5033
406msgid "" 406msgid ""
407"MHD_OPTION_LISTEN_SOCKET specified for daemon with MHD_USE_NO_LISTEN_SOCKET " 407"MHD_OPTION_LISTEN_SOCKET specified for daemon with MHD_USE_NO_LISTEN_SOCKET "
408"flag set.\n" 408"flag set.\n"
409msgstr "" 409msgstr ""
410 410
411#: src/microhttpd/daemon.c:5077 411#: src/microhttpd/daemon.c:5080
412msgid "" 412msgid ""
413"Flag MHD_USE_PEDANTIC_CHECKS is ignored because another behavior is " 413"Flag MHD_USE_PEDANTIC_CHECKS is ignored because another behavior is "
414"specified by MHD_OPTION_STRICT_CLIENT.\n" 414"specified by MHD_OPTION_STRICT_CLIENT.\n"
415msgstr "" 415msgstr ""
416 416
417#: src/microhttpd/daemon.c:5209 417#: src/microhttpd/daemon.c:5212
418#, c-format 418#, c-format
419msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3\n" 419msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3\n"
420msgstr "" 420msgstr ""
421 421
422#: src/microhttpd/daemon.c:5222 422#: src/microhttpd/daemon.c:5225
423#, c-format 423#, c-format
424msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support\n" 424msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support\n"
425msgstr "" 425msgstr ""
426 426
427#: src/microhttpd/daemon.c:5228 427#: src/microhttpd/daemon.c:5231
428#, c-format 428#, c-format
429msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?)\n" 429msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?)\n"
430msgstr "" 430msgstr ""
431 431
432#: src/microhttpd/daemon.c:5258 432#: src/microhttpd/daemon.c:5261
433#, c-format 433#, c-format
434msgid "Call to epoll_create1 failed: %s\n" 434msgid "Call to epoll_create1 failed: %s\n"
435msgstr "" 435msgstr ""
436 436
437#: src/microhttpd/daemon.c:5268 437#: src/microhttpd/daemon.c:5271
438msgid "Failed to set noninheritable mode on epoll FD.\n" 438msgid "Failed to set noninheritable mode on epoll FD.\n"
439msgstr "" 439msgstr ""
440 440
441#: src/microhttpd/daemon.c:5509 441#: src/microhttpd/daemon.c:5512
442msgid "" 442msgid ""
443"Warning: MHD_USE_THREAD_PER_CONNECTION must be used only with " 443"Warning: MHD_USE_THREAD_PER_CONNECTION must be used only with "
444"MHD_USE_INTERNAL_POLLING_THREAD. Flag MHD_USE_INTERNAL_POLLING_THREAD was " 444"MHD_USE_INTERNAL_POLLING_THREAD. Flag MHD_USE_INTERNAL_POLLING_THREAD was "
445"added. Consider setting MHD_USE_INTERNAL_POLLING_THREAD explicitly.\n" 445"added. Consider setting MHD_USE_INTERNAL_POLLING_THREAD explicitly.\n"
446msgstr "" 446msgstr ""
447 447
448#: src/microhttpd/daemon.c:5557 448#: src/microhttpd/daemon.c:5560
449msgid "Using debug build of libmicrohttpd.\n" 449msgid "Using debug build of libmicrohttpd.\n"
450msgstr "" 450msgstr ""
451 451
452#: src/microhttpd/daemon.c:5568 452#: src/microhttpd/daemon.c:5571
453#, c-format 453#, c-format
454msgid "Failed to create inter-thread communication channel: %s\n" 454msgid "Failed to create inter-thread communication channel: %s\n"
455msgstr "" 455msgstr ""
456 456
457#: src/microhttpd/daemon.c:5584 457#: src/microhttpd/daemon.c:5587
458msgid "" 458msgid ""
459"file descriptor for inter-thread communication channel exceeds maximum " 459"file descriptor for inter-thread communication channel exceeds maximum "
460"value\n" 460"value\n"
461msgstr "" 461msgstr ""
462 462
463#: src/microhttpd/daemon.c:5604 463#: src/microhttpd/daemon.c:5607
464msgid "Specified value for NC_SIZE too large\n" 464msgid "Specified value for NC_SIZE too large\n"
465msgstr "" 465msgstr ""
466 466
467#: src/microhttpd/daemon.c:5618 467#: src/microhttpd/daemon.c:5621
468#, c-format 468#, c-format
469msgid "Failed to allocate memory for nonce-nc map: %s\n" 469msgid "Failed to allocate memory for nonce-nc map: %s\n"
470msgstr "" 470msgstr ""
471 471
472#: src/microhttpd/daemon.c:5634 472#: src/microhttpd/daemon.c:5637
473msgid "MHD failed to initialize nonce-nc mutex\n" 473msgid "MHD failed to initialize nonce-nc mutex\n"
474msgstr "" 474msgstr ""
475 475
476#: src/microhttpd/daemon.c:5652 476#: src/microhttpd/daemon.c:5655
477msgid "MHD thread pooling only works with MHD_USE_INTERNAL_POLLING_THREAD\n" 477msgid "MHD thread pooling only works with MHD_USE_INTERNAL_POLLING_THREAD\n"
478msgstr "" 478msgstr ""
479 479
480#: src/microhttpd/daemon.c:5676 480#: src/microhttpd/daemon.c:5679
481#, c-format 481#, c-format
482msgid "Failed to create socket for listening: %s\n" 482msgid "Failed to create socket for listening: %s\n"
483msgstr "" 483msgstr ""
484 484
485#: src/microhttpd/daemon.c:5697 src/microhttpd/daemon.c:5716 485#: src/microhttpd/daemon.c:5700 src/microhttpd/daemon.c:5719
486#: src/microhttpd/daemon.c:5739 src/microhttpd/daemon.c:5776 486#: src/microhttpd/daemon.c:5742 src/microhttpd/daemon.c:5779
487#: src/microhttpd/daemon.c:5853 src/microhttpd/daemon.c:5884 487#: src/microhttpd/daemon.c:5856 src/microhttpd/daemon.c:5887
488#, c-format 488#, c-format
489msgid "setsockopt failed: %s\n" 489msgid "setsockopt failed: %s\n"
490msgstr "" 490msgstr ""
491 491
492#: src/microhttpd/daemon.c:5749 492#: src/microhttpd/daemon.c:5752
493msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined\n" 493msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined\n"
494msgstr "" 494msgstr ""
495 495
496#: src/microhttpd/daemon.c:5784 496#: src/microhttpd/daemon.c:5787
497msgid "" 497msgid ""
498"Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n" 498"Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n"
499msgstr "" 499msgstr ""
500 500
501#: src/microhttpd/daemon.c:5864 501#: src/microhttpd/daemon.c:5867
502#, c-format 502#, c-format
503msgid "Failed to bind to port %u: %s\n" 503msgid "Failed to bind to port %u: %s\n"
504msgstr "" 504msgstr ""
505 505
506#: src/microhttpd/daemon.c:5895 506#: src/microhttpd/daemon.c:5898
507#, c-format 507#, c-format
508msgid "Failed to listen for connections: %s\n" 508msgid "Failed to listen for connections: %s\n"
509msgstr "" 509msgstr ""
510 510
511#: src/microhttpd/daemon.c:5922 511#: src/microhttpd/daemon.c:5925
512#, c-format 512#, c-format
513msgid "Failed to get listen port number: %s\n" 513msgid "Failed to get listen port number: %s\n"
514msgstr "" 514msgstr ""
515 515
516#: src/microhttpd/daemon.c:5932 516#: src/microhttpd/daemon.c:5935
517msgid "" 517msgid ""
518"Failed to get listen port number (`struct sockaddr_storage` too small!?)\n" 518"Failed to get listen port number (`struct sockaddr_storage` too small!?)\n"
519msgstr "" 519msgstr ""
520 520
521#: src/microhttpd/daemon.c:5965 521#: src/microhttpd/daemon.c:5968
522msgid "Unknown address family!\n" 522msgid "Unknown address family!\n"
523msgstr "" 523msgstr ""
524 524
525#: src/microhttpd/daemon.c:5978 525#: src/microhttpd/daemon.c:5981
526#, c-format 526#, c-format
527msgid "Failed to set nonblocking mode on listening socket: %s\n" 527msgid "Failed to set nonblocking mode on listening socket: %s\n"
528msgstr "" 528msgstr ""
529 529
530#: src/microhttpd/daemon.c:6014 530#: src/microhttpd/daemon.c:6017
531msgid "" 531msgid ""
532"Combining MHD_USE_THREAD_PER_CONNECTION and MHD_USE_EPOLL is not supported.\n" 532"Combining MHD_USE_THREAD_PER_CONNECTION and MHD_USE_EPOLL is not supported.\n"
533msgstr "" 533msgstr ""
534 534
535#: src/microhttpd/daemon.c:6027 src/microhttpd/daemon.c:6040 535#: src/microhttpd/daemon.c:6030 src/microhttpd/daemon.c:6043
536msgid "MHD failed to initialize IP connection limit mutex\n" 536msgid "MHD failed to initialize IP connection limit mutex\n"
537msgstr "" 537msgstr ""
538 538
539#: src/microhttpd/daemon.c:6056 539#: src/microhttpd/daemon.c:6059
540msgid "Failed to initialize TLS support\n" 540msgid "Failed to initialize TLS support\n"
541msgstr "" 541msgstr ""
542 542
543#: src/microhttpd/daemon.c:6080 543#: src/microhttpd/daemon.c:6083
544#, c-format 544#, c-format
545msgid "Failed to create listen thread: %s\n" 545msgid "Failed to create listen thread: %s\n"
546msgstr "" 546msgstr ""
547 547
548#: src/microhttpd/daemon.c:6128 548#: src/microhttpd/daemon.c:6131
549#, c-format 549#, c-format
550msgid "Failed to create worker inter-thread communication channel: %s\n" 550msgid "Failed to create worker inter-thread communication channel: %s\n"
551msgstr "" 551msgstr ""
552 552
553#: src/microhttpd/daemon.c:6139 553#: src/microhttpd/daemon.c:6142
554msgid "" 554msgid ""
555"File descriptor for worker inter-thread communication channel exceeds " 555"File descriptor for worker inter-thread communication channel exceeds "
556"maximum value\n" 556"maximum value\n"
557msgstr "" 557msgstr ""
558 558
559#: src/microhttpd/daemon.c:6164 559#: src/microhttpd/daemon.c:6167
560msgid "MHD failed to initialize cleanup connection mutex\n" 560msgid "MHD failed to initialize cleanup connection mutex\n"
561msgstr "" 561msgstr ""
562 562
563#: src/microhttpd/daemon.c:6178 563#: src/microhttpd/daemon.c:6181
564#, c-format 564#, c-format
565msgid "Failed to create pool thread: %s\n" 565msgid "Failed to create pool thread: %s\n"
566msgstr "" 566msgstr ""
567 567
568#: src/microhttpd/daemon.c:6316 src/microhttpd/daemon.c:6347 568#: src/microhttpd/daemon.c:6319 src/microhttpd/daemon.c:6350
569msgid "MHD_stop_daemon() called while we have suspended connections.\n" 569msgid "MHD_stop_daemon() called while we have suspended connections.\n"
570msgstr "" 570msgstr ""
571 571
572#: src/microhttpd/daemon.c:6356 src/microhttpd/daemon.c:6476 572#: src/microhttpd/daemon.c:6359 src/microhttpd/daemon.c:6479
573msgid "Failed to signal shutdown via inter-thread communication channel" 573msgid "Failed to signal shutdown via inter-thread communication channel"
574msgstr "" 574msgstr ""
575 575
576#: src/microhttpd/daemon.c:6441 576#: src/microhttpd/daemon.c:6444
577msgid "Failed to signal shutdown via inter-thread communication channel." 577msgid "Failed to signal shutdown via inter-thread communication channel."
578msgstr "" 578msgstr ""
579 579
580#: src/microhttpd/daemon.c:6892 580#: src/microhttpd/daemon.c:6895
581msgid "Failed to initialize winsock\n" 581msgid "Failed to initialize winsock\n"
582msgstr "" 582msgstr ""
583 583
584#: src/microhttpd/daemon.c:6895 584#: src/microhttpd/daemon.c:6898
585msgid "Winsock version 2.2 is not available\n" 585msgid "Winsock version 2.2 is not available\n"
586msgstr "" 586msgstr ""
587 587
588#: src/microhttpd/daemon.c:6903 src/microhttpd/daemon.c:6907 588#: src/microhttpd/daemon.c:6906 src/microhttpd/daemon.c:6910
589msgid "Failed to initialise multithreading in libgcrypt\n" 589msgid "Failed to initialise multithreading in libgcrypt\n"
590msgstr "" 590msgstr ""
591 591
592#: src/microhttpd/daemon.c:6912 592#: src/microhttpd/daemon.c:6915
593msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer\n" 593msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer\n"
594msgstr "" 594msgstr ""
595 595
@@ -616,17 +616,17 @@ msgid ""
616"connection.\n" 616"connection.\n"
617msgstr "" 617msgstr ""
618 618
619#: src/microhttpd/connection.c:1813 src/microhttpd/connection.c:2794 619#: src/microhttpd/connection.c:1813 src/microhttpd/connection.c:2802
620msgid "Closing connection (failed to queue response)\n" 620msgid "Closing connection (failed to queue response)\n"
621msgstr "" 621msgstr ""
622 622
623#: src/microhttpd/connection.c:1823 src/microhttpd/connection.c:3552 623#: src/microhttpd/connection.c:1823 src/microhttpd/connection.c:3560
624#: src/microhttpd/connection.c:3663 624#: src/microhttpd/connection.c:3671
625msgid "Closing connection (failed to create response header)\n" 625msgid "Closing connection (failed to create response header)\n"
626msgstr "" 626msgstr ""
627 627
628#: src/microhttpd/connection.c:1869 src/microhttpd/connection.c:2941 628#: src/microhttpd/connection.c:1869 src/microhttpd/connection.c:2949
629#: src/microhttpd/connection.c:3009 src/microhttpd/connection.c:3317 629#: src/microhttpd/connection.c:3017 src/microhttpd/connection.c:3325
630#, c-format 630#, c-format
631msgid "In function %s handling connection at state: %s\n" 631msgid "In function %s handling connection at state: %s\n"
632msgstr "" 632msgstr ""
@@ -639,96 +639,96 @@ msgstr ""
639msgid "Not enough memory in pool to parse cookies!\n" 639msgid "Not enough memory in pool to parse cookies!\n"
640msgstr "" 640msgstr ""
641 641
642#: src/microhttpd/connection.c:2340 src/microhttpd/connection.c:2525 642#: src/microhttpd/connection.c:2348 src/microhttpd/connection.c:2533
643msgid "Application reported internal error, closing connection.\n" 643msgid "Application reported internal error, closing connection.\n"
644msgstr "" 644msgstr ""
645 645
646#: src/microhttpd/connection.c:2393 src/microhttpd/connection.c:2470 646#: src/microhttpd/connection.c:2401 src/microhttpd/connection.c:2478
647msgid "" 647msgid ""
648"Received malformed HTTP request (bad chunked encoding). Closing connection.\n" 648"Received malformed HTTP request (bad chunked encoding). Closing connection.\n"
649msgstr "" 649msgstr ""
650 650
651#: src/microhttpd/connection.c:2533 651#: src/microhttpd/connection.c:2541
652msgid "libmicrohttpd API violation" 652msgid "libmicrohttpd API violation"
653msgstr "" 653msgstr ""
654 654
655#: src/microhttpd/connection.c:2548 655#: src/microhttpd/connection.c:2556
656msgid "" 656msgid ""
657"WARNING: incomplete upload processing and connection not suspended may " 657"WARNING: incomplete upload processing and connection not suspended may "
658"result in hung connection.\n" 658"result in hung connection.\n"
659msgstr "" 659msgstr ""
660 660
661#: src/microhttpd/connection.c:2618 661#: src/microhttpd/connection.c:2626
662msgid "Received malformed line (no colon). Closing connection.\n" 662msgid "Received malformed line (no colon). Closing connection.\n"
663msgstr "" 663msgstr ""
664 664
665#: src/microhttpd/connection.c:2772 665#: src/microhttpd/connection.c:2780
666msgid "Received HTTP 1.1 request without `Host' header.\n" 666msgid "Received HTTP 1.1 request without `Host' header.\n"
667msgstr "" 667msgstr ""
668 668
669#: src/microhttpd/connection.c:2783 669#: src/microhttpd/connection.c:2791
670msgid "Closing connection (failed to create response)\n" 670msgid "Closing connection (failed to create response)\n"
671msgstr "" 671msgstr ""
672 672
673#: src/microhttpd/connection.c:2920 673#: src/microhttpd/connection.c:2928
674msgid "Socket disconnected while reading request.\n" 674msgid "Socket disconnected while reading request.\n"
675msgstr "" 675msgstr ""
676 676
677#: src/microhttpd/connection.c:2926 677#: src/microhttpd/connection.c:2934
678msgid "Connection socket is closed due to error when reading request.\n" 678msgid "Connection socket is closed due to error when reading request.\n"
679msgstr "" 679msgstr ""
680 680
681#: src/microhttpd/connection.c:3035 681#: src/microhttpd/connection.c:3043
682#, c-format 682#, c-format
683msgid "Failed to send data in request for %s.\n" 683msgid "Failed to send data in request for %s.\n"
684msgstr "" 684msgstr ""
685 685
686#: src/microhttpd/connection.c:3044 686#: src/microhttpd/connection.c:3052
687#, c-format 687#, c-format
688msgid "Sent 100 continue response: `%.*s'\n" 688msgid "Sent 100 continue response: `%.*s'\n"
689msgstr "" 689msgstr ""
690 690
691#: src/microhttpd/connection.c:3068 691#: src/microhttpd/connection.c:3076
692msgid "Connection was closed while sending response headers.\n" 692msgid "Connection was closed while sending response headers.\n"
693msgstr "" 693msgstr ""
694 694
695#: src/microhttpd/connection.c:3107 695#: src/microhttpd/connection.c:3115
696msgid "Data offset exceeds limit" 696msgid "Data offset exceeds limit"
697msgstr "" 697msgstr ""
698 698
699#: src/microhttpd/connection.c:3116 699#: src/microhttpd/connection.c:3124
700#, c-format 700#, c-format
701msgid "Sent %d-byte DATA response: `%.*s'\n" 701msgid "Sent %d-byte DATA response: `%.*s'\n"
702msgstr "" 702msgstr ""
703 703
704#: src/microhttpd/connection.c:3131 704#: src/microhttpd/connection.c:3139
705#, c-format 705#, c-format
706msgid "Failed to send data in request for `%s'.\n" 706msgid "Failed to send data in request for `%s'.\n"
707msgstr "" 707msgstr ""
708 708
709#: src/microhttpd/connection.c:3159 src/microhttpd/connection.c:3187 709#: src/microhttpd/connection.c:3167 src/microhttpd/connection.c:3195
710msgid "Connection was closed while sending response body.\n" 710msgid "Connection was closed while sending response body.\n"
711msgstr "" 711msgstr ""
712 712
713#: src/microhttpd/connection.c:3210 713#: src/microhttpd/connection.c:3218
714msgid "Internal error\n" 714msgid "Internal error\n"
715msgstr "" 715msgstr ""
716 716
717#: src/microhttpd/connection.c:3279 717#: src/microhttpd/connection.c:3287
718msgid "" 718msgid ""
719"Failed to signal end of connection via inter-thread communication channel" 719"Failed to signal end of connection via inter-thread communication channel"
720msgstr "" 720msgstr ""
721 721
722#: src/microhttpd/connection.c:4010 722#: src/microhttpd/connection.c:4018
723msgid "Attempted to queue response on wrong thread!\n" 723msgid "Attempted to queue response on wrong thread!\n"
724msgstr "" 724msgstr ""
725 725
726#: src/microhttpd/connection.c:4020 726#: src/microhttpd/connection.c:4028
727msgid "" 727msgid ""
728"Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n" 728"Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n"
729msgstr "" 729msgstr ""
730 730
731#: src/microhttpd/connection.c:4029 731#: src/microhttpd/connection.c:4037
732msgid "Application used invalid status code for 'upgrade' response!\n" 732msgid "Application used invalid status code for 'upgrade' response!\n"
733msgstr "" 733msgstr ""
734 734
diff --git a/src/examples/suspend_resume_epoll.c b/src/examples/suspend_resume_epoll.c
index 73ac6e45..0f9f66bf 100644
--- a/src/examples/suspend_resume_epoll.c
+++ b/src/examples/suspend_resume_epoll.c
@@ -123,7 +123,8 @@ connection_done (void *cls,
123 struct Request *req = *con_cls; 123 struct Request *req = *con_cls;
124 124
125 if (-1 != req->timerfd) 125 if (-1 != req->timerfd)
126 close (req->timerfd); 126 if (0 != close (req->timerfd))
127 abort ();
127 free(req); 128 free(req);
128} 129}
129 130
diff --git a/src/include/microhttpd.h b/src/include/microhttpd.h
index 5d51e6d4..7eccccf2 100644
--- a/src/include/microhttpd.h
+++ b/src/include/microhttpd.h
@@ -126,7 +126,7 @@ typedef intptr_t ssize_t;
126 * Current version of the library. 126 * Current version of the library.
127 * 0x01093001 = 1.9.30-1. 127 * 0x01093001 = 1.9.30-1.
128 */ 128 */
129#define MHD_VERSION 0x00096000 129#define MHD_VERSION 0x00096100
130 130
131/** 131/**
132 * MHD-internal return code for "YES". 132 * MHD-internal return code for "YES".
@@ -1176,7 +1176,7 @@ typedef void
1176 * @param psk[out] to be set to the pre-shared-key; should be allocated with malloc(), 1176 * @param psk[out] to be set to the pre-shared-key; should be allocated with malloc(),
1177 * will be freed by MHD 1177 * will be freed by MHD
1178 * @param psk_size[out] to be set to the number of bytes in @a psk 1178 * @param psk_size[out] to be set to the number of bytes in @a psk
1179 * @return 0 on success, -1 on errors 1179 * @return 0 on success, -1 on errors
1180 */ 1180 */
1181typedef int 1181typedef int
1182(*MHD_PskServerCredentialsCallback)(void *cls, 1182(*MHD_PskServerCredentialsCallback)(void *cls,
@@ -1511,7 +1511,7 @@ enum MHD_OPTION
1511 MHD_OPTION_STRICT_FOR_CLIENT = 29, 1511 MHD_OPTION_STRICT_FOR_CLIENT = 29,
1512 1512
1513 /** 1513 /**
1514 * This should be a pointer to callback of type 1514 * This should be a pointer to callback of type
1515 * gnutls_psk_server_credentials_function that will be given to 1515 * gnutls_psk_server_credentials_function that will be given to
1516 * gnutls_psk_set_server_credentials_function. It is used to 1516 * gnutls_psk_set_server_credentials_function. It is used to
1517 * retrieve the shared key for a given username. 1517 * retrieve the shared key for a given username.
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 3e641d15..abc622e2 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -2236,6 +2236,7 @@ parse_initial_message_line (struct MHD_Connection *connection,
2236 uri++; 2236 uri++;
2237 if ((size_t)(uri - line) == line_len) 2237 if ((size_t)(uri - line) == line_len)
2238 { 2238 {
2239 /* No URI and no http version given */
2239 curi = ""; 2240 curi = "";
2240 uri_len = 0; 2241 uri_len = 0;
2241 uri = NULL; 2242 uri = NULL;
@@ -2257,29 +2258,36 @@ parse_initial_message_line (struct MHD_Connection *connection,
2257 http_version--; 2258 http_version--;
2258 if (http_version > uri) 2259 if (http_version > uri)
2259 { 2260 {
2261 /* http_version points to string before HTTP version string */
2260 http_version[0] = '\0'; 2262 http_version[0] = '\0';
2261 connection->version = http_version + 1; 2263 connection->version = http_version + 1;
2262 args = memchr (uri, 2264 uri_len = http_version - uri;
2263 '?',
2264 http_version - uri);
2265 } 2265 }
2266 else 2266 else
2267 { 2267 {
2268 connection->version = ""; 2268 connection->version = "";
2269 args = memchr (uri, 2269 uri_len = line_len - (uri - line);
2270 '?',
2271 line_len - (uri - line));
2272 } 2270 }
2273 uri_len = http_version - uri; 2271 /* check for spaces in URI if we are "strict" */
2274 } 2272 if ( (1 <= daemon->strict_for_client) &&
2275 if ( (1 <= daemon->strict_for_client) && 2273 (NULL != memchr (uri,
2276 (NULL != memchr (curi, 2274 ' ',
2277 ' ', 2275 uri_len)) )
2278 uri_len)) ) 2276 {
2279 { 2277 /* space exists in URI and we are supposed to be strict, reject */
2280 /* space exists in URI and we are supposed to be strict, reject */ 2278 return MHD_NO;
2281 return MHD_NO; 2279 }
2280
2281 /* unescape URI before searching for arguments */
2282 daemon->unescape_callback (daemon->unescape_callback_cls,
2283 connection,
2284 uri);
2285 uri_len = strlen (uri); /* recalculate: may have changed! */
2286 args = memchr (uri,
2287 '?',
2288 uri_len);
2282 } 2289 }
2290
2283 if (NULL != daemon->uri_log_callback) 2291 if (NULL != daemon->uri_log_callback)
2284 { 2292 {
2285 connection->client_aware = true; 2293 connection->client_aware = true;
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 90c09d29..4f6f4128 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -1711,7 +1711,8 @@ thread_main_connection_upgrade (struct MHD_Connection *con)
1711#endif 1711#endif
1712 break; 1712 break;
1713 } 1713 }
1714 urh_from_pollfd(urh, p); 1714 urh_from_pollfd (urh,
1715 p);
1715 process_urh (urh); 1716 process_urh (urh);
1716 } 1717 }
1717 } 1718 }
@@ -3670,7 +3671,8 @@ MHD_poll_all (struct MHD_Daemon *daemon,
3670 struct pollfd *p; 3671 struct pollfd *p;
3671 MHD_socket ls; 3672 MHD_socket ls;
3672 3673
3673 p = MHD_calloc_ ((2 + num_connections), sizeof (struct pollfd)); 3674 p = MHD_calloc_ ((2 + num_connections),
3675 sizeof (struct pollfd));
3674 if (NULL == p) 3676 if (NULL == p)
3675 { 3677 {
3676#ifdef HAVE_MESSAGES 3678#ifdef HAVE_MESSAGES
@@ -3809,7 +3811,8 @@ MHD_poll_all (struct MHD_Daemon *daemon,
3809 if ((p[poll_server+i].fd != urh->connection->socket_fd) || 3811 if ((p[poll_server+i].fd != urh->connection->socket_fd) ||
3810 (p[poll_server+i+1].fd != urh->mhd.socket)) 3812 (p[poll_server+i+1].fd != urh->mhd.socket))
3811 break; 3813 break;
3812 urh_from_pollfd(urh, &(p[poll_server+i])); 3814 urh_from_pollfd (urh,
3815 &p[poll_server+i]);
3813 i += 2; 3816 i += 2;
3814 process_urh (urh); 3817 process_urh (urh);
3815 /* Finished forwarding? */ 3818 /* Finished forwarding? */
diff --git a/src/microhttpd/digestauth.c b/src/microhttpd/digestauth.c
index 0c5baffb..33352bc7 100644
--- a/src/microhttpd/digestauth.c
+++ b/src/microhttpd/digestauth.c
@@ -112,12 +112,12 @@ digest_calc_ha1_from_digest (const char *alg,
112 char sessionkey[HASH_MD5_HEX_LEN + 1]) 112 char sessionkey[HASH_MD5_HEX_LEN + 1])
113{ 113{
114 struct MD5Context md5; 114 struct MD5Context md5;
115 115
116 if (MHD_str_equal_caseless_(alg, 116 if (MHD_str_equal_caseless_(alg,
117 "md5-sess")) 117 "md5-sess"))
118 { 118 {
119 unsigned char ha1[MHD_MD5_DIGEST_SIZE]; 119 unsigned char ha1[MHD_MD5_DIGEST_SIZE];
120 120
121 MD5Init (&md5); 121 MD5Init (&md5);
122 MD5Update (&md5, 122 MD5Update (&md5,
123 digest, 123 digest,
@@ -680,7 +680,9 @@ check_argument_match (struct MHD_Connection *connection,
680 &num_headers); 680 &num_headers);
681 free (argb); 681 free (argb);
682 if (MHD_YES != ret) 682 if (MHD_YES != ret)
683 return MHD_NO; 683 {
684 return MHD_NO;
685 }
684 /* also check that the number of headers matches */ 686 /* also check that the number of headers matches */
685 for (pos = connection->headers_received; NULL != pos; pos = pos->next) 687 for (pos = connection->headers_received; NULL != pos; pos = pos->next)
686 { 688 {
@@ -690,7 +692,7 @@ check_argument_match (struct MHD_Connection *connection,
690 } 692 }
691 if (0 != num_headers) 693 if (0 != num_headers)
692 { 694 {
693 /* argument count mismatch */ 695 /* argument count missmatch */
694 return MHD_NO; 696 return MHD_NO;
695 } 697 }
696 return MHD_YES; 698 return MHD_YES;
@@ -978,8 +980,8 @@ digest_auth_check_all (struct MHD_Connection *connection,
978 } 980 }
979 } 981 }
980 free (uri); 982 free (uri);
981 return (0 == strcmp(response, 983 return (0 == strcmp (response,
982 respexp)) 984 respexp))
983 ? MHD_YES 985 ? MHD_YES
984 : MHD_NO; 986 : MHD_NO;
985 } 987 }
@@ -1006,12 +1008,12 @@ MHD_digest_auth_check (struct MHD_Connection *connection,
1006 const char *password, 1008 const char *password,
1007 unsigned int nonce_timeout) 1009 unsigned int nonce_timeout)
1008{ 1010{
1009 return digest_auth_check_all(connection, 1011 return digest_auth_check_all (connection,
1010 realm, 1012 realm,
1011 username, 1013 username,
1012 password, 1014 password,
1013 NULL, 1015 NULL,
1014 nonce_timeout); 1016 nonce_timeout);
1015} 1017}
1016 1018
1017 1019