diff options
author | Christian Grothoff <christian@grothoff.org> | 2019-12-24 15:33:05 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2019-12-24 15:33:05 +0100 |
commit | f5d59eb3a7c54cd13550ed906a67f1bff630b2c6 (patch) | |
tree | 015b7ea665c413d4932de3bcfb799f7efa7312cd | |
parent | 878c8c7e019b95aaace6a4a9edf1e584abc5ceae (diff) | |
download | libmicrohttpd-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-- | ChangeLog | 4 | ||||
-rw-r--r-- | po/libmicrohttpd.pot | 326 | ||||
-rw-r--r-- | src/microhttpd/test_postprocessor.c | 39 |
3 files changed, 198 insertions, 171 deletions
@@ -1,3 +1,7 @@ | |||
1 | Tue 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 | |||
1 | Sun 15 Dec 2019 02:12:02 PM CET | 5 | Sun 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 |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
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 "" | |||
37 | msgid "Failed to close FD.\n" | 37 | msgid "Failed to close FD.\n" |
38 | msgstr "" | 38 | msgstr "" |
39 | 39 | ||
40 | #: src/microhttpd/digestauth.c:602 | 40 | #: src/microhttpd/digestauth.c:601 |
41 | msgid "" | 41 | msgid "" |
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" |
44 | msgstr "" | 44 | msgstr "" |
45 | 45 | ||
46 | #: src/microhttpd/digestauth.c:808 | 46 | #: src/microhttpd/digestauth.c:807 |
47 | msgid "Failed to allocate memory for copy of URI arguments\n" | 47 | msgid "Failed to allocate memory for copy of URI arguments\n" |
48 | msgstr "" | 48 | msgstr "" |
49 | 49 | ||
50 | #: src/microhttpd/digestauth.c:951 | 50 | #: src/microhttpd/digestauth.c:949 |
51 | msgid "Authentication failed, invalid timestamp format.\n" | 51 | msgid "Authentication failed, invalid timestamp format.\n" |
52 | msgstr "" | 52 | msgstr "" |
53 | 53 | ||
54 | #: src/microhttpd/digestauth.c:1014 | 54 | #: src/microhttpd/digestauth.c:1009 |
55 | msgid "Authentication failed, invalid format.\n" | 55 | msgid "Authentication failed, invalid format.\n" |
56 | msgstr "" | 56 | msgstr "" |
57 | 57 | ||
58 | #: src/microhttpd/digestauth.c:1024 | 58 | #: src/microhttpd/digestauth.c:1019 |
59 | msgid "Authentication failed, invalid nc format.\n" | 59 | msgid "Authentication failed, invalid nc format.\n" |
60 | msgstr "" | 60 | msgstr "" |
61 | 61 | ||
62 | #: src/microhttpd/digestauth.c:1050 | 62 | #: src/microhttpd/digestauth.c:1044 |
63 | msgid "Failed to allocate memory for auth header processing\n" | 63 | msgid "Failed to allocate memory for auth header processing\n" |
64 | msgstr "" | 64 | msgstr "" |
65 | 65 | ||
66 | #: src/microhttpd/digestauth.c:1110 | 66 | #: src/microhttpd/digestauth.c:1104 |
67 | msgid "Authentication failed, URI does not match.\n" | 67 | msgid "Authentication failed, URI does not match.\n" |
68 | msgstr "" | 68 | msgstr "" |
69 | 69 | ||
70 | #: src/microhttpd/digestauth.c:1129 | 70 | #: src/microhttpd/digestauth.c:1123 |
71 | msgid "Authentication failed, arguments do not match.\n" | 71 | msgid "Authentication failed, arguments do not match.\n" |
72 | msgstr "" | 72 | msgstr "" |
73 | 73 | ||
74 | #: src/microhttpd/digestauth.c:1286 | 74 | #: src/microhttpd/digestauth.c:1279 |
75 | msgid "digest size missmatch" | 75 | msgid "digest size missmatch" |
76 | msgstr "" | 76 | msgstr "" |
77 | 77 | ||
78 | #: src/microhttpd/digestauth.c:1379 | 78 | #: src/microhttpd/digestauth.c:1372 |
79 | msgid "Could not register nonce (is the nonce array size zero?).\n" | 79 | msgid "Could not register nonce (is the nonce array size zero?).\n" |
80 | msgstr "" | 80 | msgstr "" |
81 | 81 | ||
82 | #: src/microhttpd/digestauth.c:1404 | 82 | #: src/microhttpd/digestauth.c:1397 |
83 | msgid "Failed to allocate memory for auth response header\n" | 83 | msgid "Failed to allocate memory for auth response header\n" |
84 | msgstr "" | 84 | msgstr "" |
85 | 85 | ||
86 | #: src/microhttpd/digestauth.c:1440 | 86 | #: src/microhttpd/digestauth.c:1433 |
87 | msgid "Failed to add Digest auth header\n" | 87 | msgid "Failed to add Digest auth header\n" |
88 | msgstr "" | 88 | msgstr "" |
89 | 89 | ||
@@ -92,535 +92,535 @@ msgstr "" | |||
92 | msgid "Fatal error in GNU libmicrohttpd %s:%u: %s\n" | 92 | msgid "Fatal error in GNU libmicrohttpd %s:%u: %s\n" |
93 | msgstr "" | 93 | msgstr "" |
94 | 94 | ||
95 | #: src/microhttpd/daemon.c:449 | 95 | #: src/microhttpd/daemon.c:451 |
96 | msgid "Failed to add IP connection count node\n" | 96 | msgid "Failed to add IP connection count node\n" |
97 | msgstr "" | 97 | msgstr "" |
98 | 98 | ||
99 | #: src/microhttpd/daemon.c:507 | 99 | #: src/microhttpd/daemon.c:509 |
100 | msgid "Failed to find previously-added IP address\n" | 100 | msgid "Failed to find previously-added IP address\n" |
101 | msgstr "" | 101 | msgstr "" |
102 | 102 | ||
103 | #: src/microhttpd/daemon.c:513 | 103 | #: src/microhttpd/daemon.c:515 |
104 | msgid "Previously-added IP address had counter of zero\n" | 104 | msgid "Previously-added IP address had counter of zero\n" |
105 | msgstr "" | 105 | msgstr "" |
106 | 106 | ||
107 | #: src/microhttpd/daemon.c:623 | 107 | #: src/microhttpd/daemon.c:625 |
108 | msgid "" | 108 | msgid "" |
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" |
111 | msgstr "" | 111 | msgstr "" |
112 | 112 | ||
113 | #: src/microhttpd/daemon.c:681 | 113 | #: src/microhttpd/daemon.c:684 |
114 | #, c-format | 114 | #, c-format |
115 | msgid "Error: invalid credentials type %d specified.\n" | 115 | msgid "Error: invalid credentials type %d specified.\n" |
116 | msgstr "" | 116 | msgstr "" |
117 | 117 | ||
118 | #: src/microhttpd/daemon.c:1080 | 118 | #: src/microhttpd/daemon.c:1088 |
119 | #, c-format | 119 | #, c-format |
120 | msgid "Maximum socket in select set: %d\n" | 120 | msgid "Maximum socket in select set: %d\n" |
121 | msgstr "" | 121 | msgstr "" |
122 | 122 | ||
123 | #: src/microhttpd/daemon.c:1141 | 123 | #: src/microhttpd/daemon.c:1149 |
124 | msgid "" | 124 | msgid "" |
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" |
127 | msgstr "" | 127 | msgstr "" |
128 | 128 | ||
129 | #: src/microhttpd/daemon.c:1348 src/microhttpd/daemon.c:6704 | 129 | #: src/microhttpd/daemon.c:1356 src/microhttpd/daemon.c:6728 |
130 | msgid "" | 130 | msgid "" |
131 | "Initiated daemon shutdown while \"upgraded\" connection was not closed.\n" | 131 | "Initiated daemon shutdown while \"upgraded\" connection was not closed.\n" |
132 | msgstr "" | 132 | msgstr "" |
133 | 133 | ||
134 | #: src/microhttpd/daemon.c:1363 src/microhttpd/daemon.c:1602 | 134 | #: src/microhttpd/daemon.c:1371 src/microhttpd/daemon.c:1606 |
135 | msgid "Failed to forward to application " | 135 | msgid "Failed to forward to application " |
136 | msgstr "" | 136 | msgstr "" |
137 | 137 | ||
138 | #: src/microhttpd/daemon.c:1532 src/microhttpd/daemon.c:1658 | 138 | #: src/microhttpd/daemon.c:1536 src/microhttpd/daemon.c:1662 |
139 | msgid "Failed to forward to remote client " | 139 | msgid "Failed to forward to remote client " |
140 | msgstr "" | 140 | msgstr "" |
141 | 141 | ||
142 | #: src/microhttpd/daemon.c:1724 | 142 | #: src/microhttpd/daemon.c:1730 |
143 | msgid "Error preparing select\n" | 143 | msgid "Error preparing select\n" |
144 | msgstr "" | 144 | msgstr "" |
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 |
149 | msgid "Error during select (%d): `%s'\n" | 149 | msgid "Error during select (%d): `%s'\n" |
150 | msgstr "" | 150 | msgstr "" |
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 |
155 | msgid "Error during poll: `%s'\n" | 155 | msgid "Error during poll: `%s'\n" |
156 | msgstr "" | 156 | msgstr "" |
157 | 157 | ||
158 | #: src/microhttpd/daemon.c:1894 src/microhttpd/daemon.c:2036 | 158 | #: src/microhttpd/daemon.c:1902 src/microhttpd/daemon.c:2044 |
159 | msgid "Failed to add FD to fd_set\n" | 159 | msgid "Failed to add FD to fd_set\n" |
160 | msgstr "" | 160 | msgstr "" |
161 | 161 | ||
162 | #: src/microhttpd/daemon.c:2176 | 162 | #: src/microhttpd/daemon.c:2184 |
163 | msgid "Processing thread terminating. Closing connection\n" | 163 | msgid "Processing thread terminating. Closing connection\n" |
164 | msgstr "" | 164 | msgstr "" |
165 | 165 | ||
166 | #: src/microhttpd/daemon.c:2206 | 166 | #: src/microhttpd/daemon.c:2214 |
167 | msgid "" | 167 | msgid "" |
168 | "Failed to signal thread termination via inter-thread communication channel." | 168 | "Failed to signal thread termination via inter-thread communication channel." |
169 | msgstr "" | 169 | msgstr "" |
170 | 170 | ||
171 | #: src/microhttpd/daemon.c:2277 | 171 | #: src/microhttpd/daemon.c:2289 |
172 | msgid "Internal server error. This should be impossible.\n" | 172 | msgid "Internal server error. This should be impossible.\n" |
173 | msgstr "" | 173 | msgstr "" |
174 | 174 | ||
175 | #: src/microhttpd/daemon.c:2287 src/microhttpd/daemon.c:2325 | 175 | #: src/microhttpd/daemon.c:2299 src/microhttpd/daemon.c:2337 |
176 | msgid "PSK not supported by this server.\n" | 176 | msgid "PSK not supported by this server.\n" |
177 | msgstr "" | 177 | msgstr "" |
178 | 178 | ||
179 | #: src/microhttpd/daemon.c:2302 | 179 | #: src/microhttpd/daemon.c:2314 |
180 | msgid "PSK authentication failed: gnutls_malloc failed to allocate memory\n" | 180 | msgid "PSK authentication failed: gnutls_malloc failed to allocate memory\n" |
181 | msgstr "" | 181 | msgstr "" |
182 | 182 | ||
183 | #: src/microhttpd/daemon.c:2311 | 183 | #: src/microhttpd/daemon.c:2323 |
184 | msgid "PSK authentication failed: PSK too long\n" | 184 | msgid "PSK authentication failed: PSK too long\n" |
185 | msgstr "" | 185 | msgstr "" |
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 |
189 | msgid "Socket descriptor larger than FD_SETSIZE: %d > %d\n" | 189 | msgid "Socket descriptor larger than FD_SETSIZE: %d > %d\n" |
190 | msgstr "" | 190 | msgstr "" |
191 | 191 | ||
192 | #: src/microhttpd/daemon.c:2423 | 192 | #: src/microhttpd/daemon.c:2437 |
193 | #, c-format | 193 | #, c-format |
194 | msgid "Failed to set SO_NOSIGPIPE on accepted socket: %s\n" | 194 | msgid "Failed to set SO_NOSIGPIPE on accepted socket: %s\n" |
195 | msgstr "" | 195 | msgstr "" |
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 |
199 | msgid "Accepted connection on socket %d\n" | 199 | msgid "Accepted connection on socket %d\n" |
200 | msgstr "" | 200 | msgstr "" |
201 | 201 | ||
202 | #: src/microhttpd/daemon.c:2453 src/microhttpd/daemon.c:2650 | 202 | #: src/microhttpd/daemon.c:2467 src/microhttpd/daemon.c:2664 |
203 | msgid "Server reached connection limit. Closing inbound connection.\n" | 203 | msgid "Server reached connection limit. Closing inbound connection.\n" |
204 | msgstr "" | 204 | msgstr "" |
205 | 205 | ||
206 | #: src/microhttpd/daemon.c:2471 | 206 | #: src/microhttpd/daemon.c:2485 |
207 | msgid "Connection rejected by application. Closing connection.\n" | 207 | msgid "Connection rejected by application. Closing connection.\n" |
208 | msgstr "" | 208 | msgstr "" |
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 |
213 | msgid "Error allocating memory: %s\n" | 213 | msgid "Error allocating memory: %s\n" |
214 | msgstr "" | 214 | msgstr "" |
215 | 215 | ||
216 | #: src/microhttpd/daemon.c:2602 | 216 | #: src/microhttpd/daemon.c:2616 |
217 | #, c-format | 217 | #, c-format |
218 | msgid "Failed to setup TLS credentials: unknown credential type %d\n" | 218 | msgid "Failed to setup TLS credentials: unknown credential type %d\n" |
219 | msgstr "" | 219 | msgstr "" |
220 | 220 | ||
221 | #: src/microhttpd/daemon.c:2611 | 221 | #: src/microhttpd/daemon.c:2625 |
222 | msgid "Unknown credential type" | 222 | msgid "Unknown credential type" |
223 | msgstr "" | 223 | msgstr "" |
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 |
230 | msgid "Call to epoll_ctl failed: %s\n" | 230 | msgid "Call to epoll_ctl failed: %s\n" |
231 | msgstr "" | 231 | msgstr "" |
232 | 232 | ||
233 | #: src/microhttpd/daemon.c:2741 | 233 | #: src/microhttpd/daemon.c:2755 |
234 | msgid "Failed to signal new connection via inter-thread communication channel." | 234 | msgid "Failed to signal new connection via inter-thread communication channel." |
235 | msgstr "" | 235 | msgstr "" |
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 |
240 | msgid "Failed to remove FD from epoll set\n" | 240 | msgid "Failed to remove FD from epoll set\n" |
241 | msgstr "" | 241 | msgstr "" |
242 | 242 | ||
243 | #: src/microhttpd/daemon.c:2896 | 243 | #: src/microhttpd/daemon.c:2910 |
244 | msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" | 244 | msgid "Cannot suspend connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" |
245 | msgstr "" | 245 | msgstr "" |
246 | 246 | ||
247 | #: src/microhttpd/daemon.c:2903 | 247 | #: src/microhttpd/daemon.c:2917 |
248 | msgid "Error: connection scheduled for \"upgrade\" cannot be suspended" | 248 | msgid "Error: connection scheduled for \"upgrade\" cannot be suspended" |
249 | msgstr "" | 249 | msgstr "" |
250 | 250 | ||
251 | #: src/microhttpd/daemon.c:2927 | 251 | #: src/microhttpd/daemon.c:2941 |
252 | msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" | 252 | msgid "Cannot resume connections without enabling MHD_ALLOW_SUSPEND_RESUME!\n" |
253 | msgstr "" | 253 | msgstr "" |
254 | 254 | ||
255 | #: src/microhttpd/daemon.c:2942 | 255 | #: src/microhttpd/daemon.c:2956 |
256 | msgid "Failed to signal resume via inter-thread communication channel." | 256 | msgid "Failed to signal resume via inter-thread communication channel." |
257 | msgstr "" | 257 | msgstr "" |
258 | 258 | ||
259 | #: src/microhttpd/daemon.c:3077 | 259 | #: src/microhttpd/daemon.c:3091 |
260 | msgid "" | 260 | msgid "" |
261 | "Failed to signal resume of connection via inter-thread communication channel." | 261 | "Failed to signal resume of connection via inter-thread communication channel." |
262 | msgstr "" | 262 | msgstr "" |
263 | 263 | ||
264 | #: src/microhttpd/daemon.c:3124 | 264 | #: src/microhttpd/daemon.c:3138 |
265 | #, c-format | 265 | #, c-format |
266 | msgid "Failed to set nonblocking mode on new client socket: %s\n" | 266 | msgid "Failed to set nonblocking mode on new client socket: %s\n" |
267 | msgstr "" | 267 | msgstr "" |
268 | 268 | ||
269 | #: src/microhttpd/daemon.c:3137 | 269 | #: src/microhttpd/daemon.c:3151 |
270 | msgid "Failed to set noninheritable mode on new client socket.\n" | 270 | msgid "Failed to set noninheritable mode on new client socket.\n" |
271 | msgstr "" | 271 | msgstr "" |
272 | 272 | ||
273 | #: src/microhttpd/daemon.c:3146 | 273 | #: src/microhttpd/daemon.c:3160 |
274 | msgid "Failed to reset buffering mode on new client socket.\n" | 274 | msgid "Failed to reset buffering mode on new client socket.\n" |
275 | msgstr "" | 275 | msgstr "" |
276 | 276 | ||
277 | #: src/microhttpd/daemon.c:3219 | 277 | #: src/microhttpd/daemon.c:3233 |
278 | #, c-format | 278 | #, c-format |
279 | msgid "Error accepting connection: %s\n" | 279 | msgid "Error accepting connection: %s\n" |
280 | msgstr "" | 280 | msgstr "" |
281 | 281 | ||
282 | #: src/microhttpd/daemon.c:3237 | 282 | #: src/microhttpd/daemon.c:3251 |
283 | msgid "" | 283 | msgid "" |
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" |
287 | msgstr "" | 287 | msgstr "" |
288 | 288 | ||
289 | #: src/microhttpd/daemon.c:3252 | 289 | #: src/microhttpd/daemon.c:3266 |
290 | #, c-format | 290 | #, c-format |
291 | msgid "" | 291 | msgid "" |
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" |
294 | msgstr "" | 294 | msgstr "" |
295 | 295 | ||
296 | #: src/microhttpd/daemon.c:3268 | 296 | #: src/microhttpd/daemon.c:3282 |
297 | #, c-format | 297 | #, c-format |
298 | msgid "Failed to disable TCP Nagle on socket: %s\n" | 298 | msgid "Failed to disable TCP Nagle on socket: %s\n" |
299 | msgstr "" | 299 | msgstr "" |
300 | 300 | ||
301 | #: src/microhttpd/daemon.c:3279 | 301 | #: src/microhttpd/daemon.c:3293 |
302 | #, c-format | 302 | #, c-format |
303 | msgid "Failed to set nonblocking mode on incoming connection socket: %s\n" | 303 | msgid "Failed to set nonblocking mode on incoming connection socket: %s\n" |
304 | msgstr "" | 304 | msgstr "" |
305 | 305 | ||
306 | #: src/microhttpd/daemon.c:3292 | 306 | #: src/microhttpd/daemon.c:3306 |
307 | msgid "Failed to set noninheritable mode on incoming connection socket.\n" | 307 | msgid "Failed to set noninheritable mode on incoming connection socket.\n" |
308 | msgstr "" | 308 | msgstr "" |
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 |
312 | msgid "Failed to join a thread\n" | 312 | msgid "Failed to join a thread\n" |
313 | msgstr "" | 313 | msgstr "" |
314 | 314 | ||
315 | #: src/microhttpd/daemon.c:3444 | 315 | #: src/microhttpd/daemon.c:3457 |
316 | msgid "Illegal call to MHD_get_timeout\n" | 316 | msgid "Illegal call to MHD_get_timeout\n" |
317 | msgstr "" | 317 | msgstr "" |
318 | 318 | ||
319 | #: src/microhttpd/daemon.c:3641 | 319 | #: src/microhttpd/daemon.c:3654 |
320 | msgid "" | 320 | msgid "" |
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" |
323 | msgstr "" | 323 | msgstr "" |
324 | 324 | ||
325 | #: src/microhttpd/daemon.c:3721 | 325 | #: src/microhttpd/daemon.c:3734 |
326 | msgid "Could not obtain daemon fdsets" | 326 | msgid "Could not obtain daemon fdsets" |
327 | msgstr "" | 327 | msgstr "" |
328 | 328 | ||
329 | #: src/microhttpd/daemon.c:3738 | 329 | #: src/microhttpd/daemon.c:3751 |
330 | msgid "Could not add listen socket to fdset" | 330 | msgid "Could not add listen socket to fdset" |
331 | msgstr "" | 331 | msgstr "" |
332 | 332 | ||
333 | #: src/microhttpd/daemon.c:3767 | 333 | #: src/microhttpd/daemon.c:3780 |
334 | msgid "Could not add control inter-thread communication channel FD to fdset" | 334 | msgid "Could not add control inter-thread communication channel FD to fdset" |
335 | msgstr "" | 335 | msgstr "" |
336 | 336 | ||
337 | #: src/microhttpd/daemon.c:3823 | 337 | #: src/microhttpd/daemon.c:3838 |
338 | #, c-format | 338 | #, c-format |
339 | msgid "select failed: %s\n" | 339 | msgid "select failed: %s\n" |
340 | msgstr "" | 340 | msgstr "" |
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 |
344 | msgid "poll failed: %s\n" | 344 | msgid "poll failed: %s\n" |
345 | msgstr "" | 345 | msgstr "" |
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 |
349 | msgid "Call to epoll_wait failed: %s\n" | 349 | msgid "Call to epoll_wait failed: %s\n" |
350 | msgstr "" | 350 | msgstr "" |
351 | 351 | ||
352 | #: src/microhttpd/daemon.c:4430 src/microhttpd/daemon.c:4888 | 352 | #: src/microhttpd/daemon.c:4449 src/microhttpd/daemon.c:4910 |
353 | msgid "Failed to remove listen FD from epoll set\n" | 353 | msgid "Failed to remove listen FD from epoll set\n" |
354 | msgstr "" | 354 | msgstr "" |
355 | 355 | ||
356 | #: src/microhttpd/daemon.c:4897 | 356 | #: src/microhttpd/daemon.c:4919 |
357 | msgid "Failed to signal quiesce via inter-thread communication channel" | 357 | msgid "Failed to signal quiesce via inter-thread communication channel" |
358 | msgstr "" | 358 | msgstr "" |
359 | 359 | ||
360 | #: src/microhttpd/daemon.c:4920 | 360 | #: src/microhttpd/daemon.c:4942 |
361 | msgid "failed to signal quiesce via inter-thread communication channel" | 361 | msgid "failed to signal quiesce via inter-thread communication channel" |
362 | msgstr "" | 362 | msgstr "" |
363 | 363 | ||
364 | #: src/microhttpd/daemon.c:5034 | 364 | #: src/microhttpd/daemon.c:5056 |
365 | msgid "Warning: Too large timeout value, ignored.\n" | 365 | msgid "Warning: Too large timeout value, ignored.\n" |
366 | msgstr "" | 366 | msgstr "" |
367 | 367 | ||
368 | #: src/microhttpd/daemon.c:5079 | 368 | #: src/microhttpd/daemon.c:5101 |
369 | msgid "" | 369 | msgid "" |
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" |
372 | msgstr "" | 372 | msgstr "" |
373 | 373 | ||
374 | #: src/microhttpd/daemon.c:5088 | 374 | #: src/microhttpd/daemon.c:5110 |
375 | msgid "" | 375 | msgid "" |
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" |
378 | msgstr "" | 378 | msgstr "" |
379 | 379 | ||
380 | #: src/microhttpd/daemon.c:5101 | 380 | #: src/microhttpd/daemon.c:5123 |
381 | #, c-format | 381 | #, c-format |
382 | msgid "Specified thread pool size (%u) too big\n" | 382 | msgid "Specified thread pool size (%u) too big\n" |
383 | msgstr "" | 383 | msgstr "" |
384 | 384 | ||
385 | #: src/microhttpd/daemon.c:5112 | 385 | #: src/microhttpd/daemon.c:5134 |
386 | msgid "" | 386 | msgid "" |
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" |
389 | msgstr "" | 389 | msgstr "" |
390 | 390 | ||
391 | #: src/microhttpd/daemon.c:5121 | 391 | #: src/microhttpd/daemon.c:5143 |
392 | msgid "" | 392 | msgid "" |
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" |
395 | msgstr "" | 395 | msgstr "" |
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 |
402 | msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set\n" | 402 | msgid "MHD HTTPS option %d passed to MHD but MHD_USE_TLS not set\n" |
403 | msgstr "" | 403 | msgstr "" |
404 | 404 | ||
405 | #: src/microhttpd/daemon.c:5198 | 405 | #: src/microhttpd/daemon.c:5220 |
406 | msgid "Error initializing DH parameters\n" | 406 | msgid "Error initializing DH parameters\n" |
407 | msgstr "" | 407 | msgstr "" |
408 | 408 | ||
409 | #: src/microhttpd/daemon.c:5208 | 409 | #: src/microhttpd/daemon.c:5230 |
410 | msgid "Diffie-Hellman parameters string too long\n" | 410 | msgid "Diffie-Hellman parameters string too long\n" |
411 | msgstr "" | 411 | msgstr "" |
412 | 412 | ||
413 | #: src/microhttpd/daemon.c:5219 | 413 | #: src/microhttpd/daemon.c:5241 |
414 | msgid "Bad Diffie-Hellman parameters format\n" | 414 | msgid "Bad Diffie-Hellman parameters format\n" |
415 | msgstr "" | 415 | msgstr "" |
416 | 416 | ||
417 | #: src/microhttpd/daemon.c:5247 | 417 | #: src/microhttpd/daemon.c:5269 |
418 | #, c-format | 418 | #, c-format |
419 | msgid "Setting priorities to `%s' failed: %s\n" | 419 | msgid "Setting priorities to `%s' failed: %s\n" |
420 | msgstr "" | 420 | msgstr "" |
421 | 421 | ||
422 | #: src/microhttpd/daemon.c:5268 | 422 | #: src/microhttpd/daemon.c:5290 |
423 | msgid "" | 423 | msgid "" |
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" |
425 | msgstr "" | 425 | msgstr "" |
426 | 426 | ||
427 | #: src/microhttpd/daemon.c:5290 | 427 | #: src/microhttpd/daemon.c:5312 |
428 | msgid "" | 428 | msgid "" |
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" |
430 | msgstr "" | 430 | msgstr "" |
431 | 431 | ||
432 | #: src/microhttpd/daemon.c:5325 | 432 | #: src/microhttpd/daemon.c:5347 |
433 | msgid "" | 433 | msgid "" |
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" |
436 | msgstr "" | 436 | msgstr "" |
437 | 437 | ||
438 | #: src/microhttpd/daemon.c:5361 | 438 | #: src/microhttpd/daemon.c:5383 |
439 | msgid "TCP fastopen is not supported on this platform\n" | 439 | msgid "TCP fastopen is not supported on this platform\n" |
440 | msgstr "" | 440 | msgstr "" |
441 | 441 | ||
442 | #: src/microhttpd/daemon.c:5380 | 442 | #: src/microhttpd/daemon.c:5402 |
443 | msgid "" | 443 | msgid "" |
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" |
446 | msgstr "" | 446 | msgstr "" |
447 | 447 | ||
448 | #: src/microhttpd/daemon.c:5515 | 448 | #: src/microhttpd/daemon.c:5537 |
449 | #, c-format | 449 | #, c-format |
450 | msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3\n" | 450 | msgid "MHD HTTPS option %d passed to MHD compiled without GNUtls >= 3\n" |
451 | msgstr "" | 451 | msgstr "" |
452 | 452 | ||
453 | #: src/microhttpd/daemon.c:5529 | 453 | #: src/microhttpd/daemon.c:5551 |
454 | #, c-format | 454 | #, c-format |
455 | msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support\n" | 455 | msgid "MHD HTTPS option %d passed to MHD compiled without HTTPS support\n" |
456 | msgstr "" | 456 | msgstr "" |
457 | 457 | ||
458 | #: src/microhttpd/daemon.c:5536 | 458 | #: src/microhttpd/daemon.c:5558 |
459 | #, c-format | 459 | #, c-format |
460 | msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?)\n" | 460 | msgid "Invalid option %d! (Did you terminate the list with MHD_OPTION_END?)\n" |
461 | msgstr "" | 461 | msgstr "" |
462 | 462 | ||
463 | #: src/microhttpd/daemon.c:5566 | 463 | #: src/microhttpd/daemon.c:5588 |
464 | #, c-format | 464 | #, c-format |
465 | msgid "Call to epoll_create1 failed: %s\n" | 465 | msgid "Call to epoll_create1 failed: %s\n" |
466 | msgstr "" | 466 | msgstr "" |
467 | 467 | ||
468 | #: src/microhttpd/daemon.c:5576 | 468 | #: src/microhttpd/daemon.c:5598 |
469 | msgid "Failed to set noninheritable mode on epoll FD.\n" | 469 | msgid "Failed to set noninheritable mode on epoll FD.\n" |
470 | msgstr "" | 470 | msgstr "" |
471 | 471 | ||
472 | #: src/microhttpd/daemon.c:5826 | 472 | #: src/microhttpd/daemon.c:5850 |
473 | msgid "" | 473 | msgid "" |
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" |
477 | msgstr "" | 477 | msgstr "" |
478 | 478 | ||
479 | #: src/microhttpd/daemon.c:5874 | 479 | #: src/microhttpd/daemon.c:5898 |
480 | msgid "Using debug build of libmicrohttpd.\n" | 480 | msgid "Using debug build of libmicrohttpd.\n" |
481 | msgstr "" | 481 | msgstr "" |
482 | 482 | ||
483 | #: src/microhttpd/daemon.c:5888 | 483 | #: src/microhttpd/daemon.c:5912 |
484 | #, c-format | 484 | #, c-format |
485 | msgid "Failed to create inter-thread communication channel: %s\n" | 485 | msgid "Failed to create inter-thread communication channel: %s\n" |
486 | msgstr "" | 486 | msgstr "" |
487 | 487 | ||
488 | #: src/microhttpd/daemon.c:5905 | 488 | #: src/microhttpd/daemon.c:5929 |
489 | msgid "" | 489 | msgid "" |
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" |
492 | msgstr "" | 492 | msgstr "" |
493 | 493 | ||
494 | #: src/microhttpd/daemon.c:5925 | 494 | #: src/microhttpd/daemon.c:5949 |
495 | msgid "Specified value for NC_SIZE too large\n" | 495 | msgid "Specified value for NC_SIZE too large\n" |
496 | msgstr "" | 496 | msgstr "" |
497 | 497 | ||
498 | #: src/microhttpd/daemon.c:5939 | 498 | #: src/microhttpd/daemon.c:5963 |
499 | #, c-format | 499 | #, c-format |
500 | msgid "Failed to allocate memory for nonce-nc map: %s\n" | 500 | msgid "Failed to allocate memory for nonce-nc map: %s\n" |
501 | msgstr "" | 501 | msgstr "" |
502 | 502 | ||
503 | #: src/microhttpd/daemon.c:5956 | 503 | #: src/microhttpd/daemon.c:5980 |
504 | msgid "MHD failed to initialize nonce-nc mutex\n" | 504 | msgid "MHD failed to initialize nonce-nc mutex\n" |
505 | msgstr "" | 505 | msgstr "" |
506 | 506 | ||
507 | #: src/microhttpd/daemon.c:5977 | 507 | #: src/microhttpd/daemon.c:6001 |
508 | msgid "MHD thread pooling only works with MHD_USE_INTERNAL_POLLING_THREAD\n" | 508 | msgid "MHD thread pooling only works with MHD_USE_INTERNAL_POLLING_THREAD\n" |
509 | msgstr "" | 509 | msgstr "" |
510 | 510 | ||
511 | #: src/microhttpd/daemon.c:6001 | 511 | #: src/microhttpd/daemon.c:6025 |
512 | #, c-format | 512 | #, c-format |
513 | msgid "Failed to create socket for listening: %s\n" | 513 | msgid "Failed to create socket for listening: %s\n" |
514 | msgstr "" | 514 | msgstr "" |
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 |
520 | msgid "setsockopt failed: %s\n" | 520 | msgid "setsockopt failed: %s\n" |
521 | msgstr "" | 521 | msgstr "" |
522 | 522 | ||
523 | #: src/microhttpd/daemon.c:6075 | 523 | #: src/microhttpd/daemon.c:6099 |
524 | msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined\n" | 524 | msgid "Cannot allow listening address reuse: SO_REUSEPORT not defined\n" |
525 | msgstr "" | 525 | msgstr "" |
526 | 526 | ||
527 | #: src/microhttpd/daemon.c:6111 | 527 | #: src/microhttpd/daemon.c:6135 |
528 | msgid "" | 528 | msgid "" |
529 | "Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n" | 529 | "Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n" |
530 | msgstr "" | 530 | msgstr "" |
531 | 531 | ||
532 | #: src/microhttpd/daemon.c:6191 | 532 | #: src/microhttpd/daemon.c:6215 |
533 | #, c-format | 533 | #, c-format |
534 | msgid "Failed to bind to port %u: %s\n" | 534 | msgid "Failed to bind to port %u: %s\n" |
535 | msgstr "" | 535 | msgstr "" |
536 | 536 | ||
537 | #: src/microhttpd/daemon.c:6222 | 537 | #: src/microhttpd/daemon.c:6246 |
538 | #, c-format | 538 | #, c-format |
539 | msgid "Failed to listen for connections: %s\n" | 539 | msgid "Failed to listen for connections: %s\n" |
540 | msgstr "" | 540 | msgstr "" |
541 | 541 | ||
542 | #: src/microhttpd/daemon.c:6253 | 542 | #: src/microhttpd/daemon.c:6277 |
543 | #, c-format | 543 | #, c-format |
544 | msgid "Failed to get listen port number: %s\n" | 544 | msgid "Failed to get listen port number: %s\n" |
545 | msgstr "" | 545 | msgstr "" |
546 | 546 | ||
547 | #: src/microhttpd/daemon.c:6264 | 547 | #: src/microhttpd/daemon.c:6288 |
548 | msgid "" | 548 | msgid "" |
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" |
550 | msgstr "" | 550 | msgstr "" |
551 | 551 | ||
552 | #: src/microhttpd/daemon.c:6305 | 552 | #: src/microhttpd/daemon.c:6329 |
553 | msgid "Unknown address family!\n" | 553 | msgid "Unknown address family!\n" |
554 | msgstr "" | 554 | msgstr "" |
555 | 555 | ||
556 | #: src/microhttpd/daemon.c:6318 | 556 | #: src/microhttpd/daemon.c:6342 |
557 | #, c-format | 557 | #, c-format |
558 | msgid "Failed to set nonblocking mode on listening socket: %s\n" | 558 | msgid "Failed to set nonblocking mode on listening socket: %s\n" |
559 | msgstr "" | 559 | msgstr "" |
560 | 560 | ||
561 | #: src/microhttpd/daemon.c:6361 | 561 | #: src/microhttpd/daemon.c:6385 |
562 | msgid "" | 562 | msgid "" |
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" |
564 | msgstr "" | 564 | msgstr "" |
565 | 565 | ||
566 | #: src/microhttpd/daemon.c:6375 src/microhttpd/daemon.c:6388 | 566 | #: src/microhttpd/daemon.c:6399 src/microhttpd/daemon.c:6412 |
567 | msgid "MHD failed to initialize IP connection limit mutex\n" | 567 | msgid "MHD failed to initialize IP connection limit mutex\n" |
568 | msgstr "" | 568 | msgstr "" |
569 | 569 | ||
570 | #: src/microhttpd/daemon.c:6407 | 570 | #: src/microhttpd/daemon.c:6431 |
571 | msgid "Failed to initialize TLS support\n" | 571 | msgid "Failed to initialize TLS support\n" |
572 | msgstr "" | 572 | msgstr "" |
573 | 573 | ||
574 | #: src/microhttpd/daemon.c:6435 | 574 | #: src/microhttpd/daemon.c:6459 |
575 | #, c-format | 575 | #, c-format |
576 | msgid "Failed to create listen thread: %s\n" | 576 | msgid "Failed to create listen thread: %s\n" |
577 | msgstr "" | 577 | msgstr "" |
578 | 578 | ||
579 | #: src/microhttpd/daemon.c:6484 | 579 | #: src/microhttpd/daemon.c:6508 |
580 | #, c-format | 580 | #, c-format |
581 | msgid "Failed to create worker inter-thread communication channel: %s\n" | 581 | msgid "Failed to create worker inter-thread communication channel: %s\n" |
582 | msgstr "" | 582 | msgstr "" |
583 | 583 | ||
584 | #: src/microhttpd/daemon.c:6496 | 584 | #: src/microhttpd/daemon.c:6520 |
585 | msgid "" | 585 | msgid "" |
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" |
588 | msgstr "" | 588 | msgstr "" |
589 | 589 | ||
590 | #: src/microhttpd/daemon.c:6521 | 590 | #: src/microhttpd/daemon.c:6545 |
591 | msgid "MHD failed to initialize cleanup connection mutex\n" | 591 | msgid "MHD failed to initialize cleanup connection mutex\n" |
592 | msgstr "" | 592 | msgstr "" |
593 | 593 | ||
594 | #: src/microhttpd/daemon.c:6535 | 594 | #: src/microhttpd/daemon.c:6559 |
595 | #, c-format | 595 | #, c-format |
596 | msgid "Failed to create pool thread: %s\n" | 596 | msgid "Failed to create pool thread: %s\n" |
597 | msgstr "" | 597 | msgstr "" |
598 | 598 | ||
599 | #: src/microhttpd/daemon.c:6690 src/microhttpd/daemon.c:6723 | 599 | #: src/microhttpd/daemon.c:6714 src/microhttpd/daemon.c:6747 |
600 | msgid "MHD_stop_daemon() called while we have suspended connections.\n" | 600 | msgid "MHD_stop_daemon() called while we have suspended connections.\n" |
601 | msgstr "" | 601 | msgstr "" |
602 | 602 | ||
603 | #: src/microhttpd/daemon.c:6733 src/microhttpd/daemon.c:6864 | 603 | #: src/microhttpd/daemon.c:6757 src/microhttpd/daemon.c:6888 |
604 | msgid "Failed to signal shutdown via inter-thread communication channel" | 604 | msgid "Failed to signal shutdown via inter-thread communication channel" |
605 | msgstr "" | 605 | msgstr "" |
606 | 606 | ||
607 | #: src/microhttpd/daemon.c:6826 | 607 | #: src/microhttpd/daemon.c:6850 |
608 | msgid "Failed to signal shutdown via inter-thread communication channel." | 608 | msgid "Failed to signal shutdown via inter-thread communication channel." |
609 | msgstr "" | 609 | msgstr "" |
610 | 610 | ||
611 | #: src/microhttpd/daemon.c:7302 | 611 | #: src/microhttpd/daemon.c:7326 |
612 | msgid "Failed to initialize winsock\n" | 612 | msgid "Failed to initialize winsock\n" |
613 | msgstr "" | 613 | msgstr "" |
614 | 614 | ||
615 | #: src/microhttpd/daemon.c:7305 | 615 | #: src/microhttpd/daemon.c:7329 |
616 | msgid "Winsock version 2.2 is not available\n" | 616 | msgid "Winsock version 2.2 is not available\n" |
617 | msgstr "" | 617 | msgstr "" |
618 | 618 | ||
619 | #: src/microhttpd/daemon.c:7313 src/microhttpd/daemon.c:7317 | 619 | #: src/microhttpd/daemon.c:7337 src/microhttpd/daemon.c:7341 |
620 | msgid "Failed to initialise multithreading in libgcrypt\n" | 620 | msgid "Failed to initialise multithreading in libgcrypt\n" |
621 | msgstr "" | 621 | msgstr "" |
622 | 622 | ||
623 | #: src/microhttpd/daemon.c:7323 | 623 | #: src/microhttpd/daemon.c:7347 |
624 | msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer\n" | 624 | msgid "libgcrypt is too old. MHD was compiled for libgcrypt 1.6.0 or newer\n" |
625 | msgstr "" | 625 | msgstr "" |
626 | 626 | ||
@@ -628,68 +628,68 @@ msgstr "" | |||
628 | msgid "Close socket failed.\n" | 628 | msgid "Close socket failed.\n" |
629 | msgstr "" | 629 | msgstr "" |
630 | 630 | ||
631 | #: src/microhttpd/connection.c:928 | 631 | #: src/microhttpd/connection.c:932 |
632 | msgid "Closing connection (application reported error generating data)\n" | 632 | msgid "Closing connection (application reported error generating data)\n" |
633 | msgstr "" | 633 | msgstr "" |
634 | 634 | ||
635 | #: src/microhttpd/connection.c:977 | 635 | #: src/microhttpd/connection.c:981 |
636 | msgid "Closing connection (out of memory)\n" | 636 | msgid "Closing connection (out of memory)\n" |
637 | msgstr "" | 637 | msgstr "" |
638 | 638 | ||
639 | #: src/microhttpd/connection.c:1025 | 639 | #: src/microhttpd/connection.c:1029 |
640 | msgid "Closing connection (application error generating response)\n" | 640 | msgid "Closing connection (application error generating response)\n" |
641 | msgstr "" | 641 | msgstr "" |
642 | 642 | ||
643 | #: src/microhttpd/connection.c:1654 | 643 | #: src/microhttpd/connection.c:1657 |
644 | #, c-format | 644 | #, c-format |
645 | msgid "" | 645 | msgid "" |
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" |
648 | msgstr "" | 648 | msgstr "" |
649 | 649 | ||
650 | #: src/microhttpd/connection.c:1681 src/microhttpd/connection.c:2719 | 650 | #: src/microhttpd/connection.c:1684 src/microhttpd/connection.c:2719 |
651 | msgid "Closing connection (failed to queue response)\n" | 651 | msgid "Closing connection (failed to queue response)\n" |
652 | msgstr "" | 652 | msgstr "" |
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 |
656 | msgid "Closing connection (failed to create response header)\n" | 656 | msgid "Closing connection (failed to create response header)\n" |
657 | msgstr "" | 657 | msgstr "" |
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 |
662 | msgid "In function %s handling connection at state: %s\n" | 662 | msgid "In function %s handling connection at state: %s\n" |
663 | msgstr "" | 663 | msgstr "" |
664 | 664 | ||
665 | #: src/microhttpd/connection.c:1956 | 665 | #: src/microhttpd/connection.c:1958 |
666 | msgid "Not enough memory in pool to allocate header record!\n" | 666 | msgid "Not enough memory in pool to allocate header record!\n" |
667 | msgstr "" | 667 | msgstr "" |
668 | 668 | ||
669 | #: src/microhttpd/connection.c:2003 | 669 | #: src/microhttpd/connection.c:2005 |
670 | msgid "Not enough memory in pool to parse cookies!\n" | 670 | msgid "Not enough memory in pool to parse cookies!\n" |
671 | msgstr "" | 671 | msgstr "" |
672 | 672 | ||
673 | #: src/microhttpd/connection.c:2234 src/microhttpd/connection.c:2436 | 673 | #: src/microhttpd/connection.c:2236 src/microhttpd/connection.c:2438 |
674 | msgid "Application reported internal error, closing connection.\n" | 674 | msgid "Application reported internal error, closing connection.\n" |
675 | msgstr "" | 675 | msgstr "" |
676 | 676 | ||
677 | #: src/microhttpd/connection.c:2301 src/microhttpd/connection.c:2380 | 677 | #: src/microhttpd/connection.c:2303 src/microhttpd/connection.c:2382 |
678 | msgid "" | 678 | msgid "" |
679 | "Received malformed HTTP request (bad chunked encoding). Closing connection.\n" | 679 | "Received malformed HTTP request (bad chunked encoding). Closing connection.\n" |
680 | msgstr "" | 680 | msgstr "" |
681 | 681 | ||
682 | #: src/microhttpd/connection.c:2444 | 682 | #: src/microhttpd/connection.c:2446 |
683 | msgid "libmicrohttpd API violation" | 683 | msgid "libmicrohttpd API violation" |
684 | msgstr "" | 684 | msgstr "" |
685 | 685 | ||
686 | #: src/microhttpd/connection.c:2460 | 686 | #: src/microhttpd/connection.c:2462 |
687 | msgid "" | 687 | msgid "" |
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" |
690 | msgstr "" | 690 | msgstr "" |
691 | 691 | ||
692 | #: src/microhttpd/connection.c:2532 | 692 | #: src/microhttpd/connection.c:2534 |
693 | msgid "Received malformed line (no colon). Closing connection.\n" | 693 | msgid "Received malformed line (no colon). Closing connection.\n" |
694 | msgstr "" | 694 | msgstr "" |
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" |
751 | msgstr "" | 751 | msgstr "" |
752 | 752 | ||
753 | #: src/microhttpd/connection.c:3985 | 753 | #: src/microhttpd/connection.c:3989 |
754 | msgid "Attempted to queue response on wrong thread!\n" | 754 | msgid "Attempted to queue response on wrong thread!\n" |
755 | msgstr "" | 755 | msgstr "" |
756 | 756 | ||
757 | #: src/microhttpd/connection.c:3997 | 757 | #: src/microhttpd/connection.c:4001 |
758 | msgid "" | 758 | msgid "" |
759 | "Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n" | 759 | "Attempted 'upgrade' connection on daemon without MHD_ALLOW_UPGRADE option!\n" |
760 | msgstr "" | 760 | msgstr "" |
761 | 761 | ||
762 | #: src/microhttpd/connection.c:4007 | 762 | #: src/microhttpd/connection.c:4011 |
763 | msgid "Application used invalid status code for 'upgrade' response!\n" | 763 | msgid "Application used invalid status code for 'upgrade' response!\n" |
764 | msgstr "" | 764 | msgstr "" |
765 | 765 | ||
766 | #: src/microhttpd/response.c:914 | 766 | #: src/microhttpd/response.c:915 |
767 | msgid "" | 767 | msgid "" |
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" |
770 | msgstr "" | 770 | msgstr "" |
771 | 771 | ||
772 | #: src/microhttpd/response.c:955 | 772 | #: src/microhttpd/response.c:956 |
773 | msgid "Failed to make loopback sockets non-blocking.\n" | 773 | msgid "Failed to make loopback sockets non-blocking.\n" |
774 | msgstr "" | 774 | msgstr "" |
775 | 775 | ||
776 | #: src/microhttpd/response.c:974 | 776 | #: src/microhttpd/response.c:975 |
777 | msgid "Failed to set SO_NOSIGPIPE on loopback sockets.\n" | 777 | msgid "Failed to set SO_NOSIGPIPE on loopback sockets.\n" |
778 | msgstr "" | 778 | msgstr "" |
779 | 779 | ||
780 | #: src/microhttpd/response.c:994 | 780 | #: src/microhttpd/response.c:995 |
781 | #, c-format | 781 | #, c-format |
782 | msgid "Socketpair descriptor larger than FD_SETSIZE: %d > %d\n" | 782 | msgid "Socketpair descriptor larger than FD_SETSIZE: %d > %d\n" |
783 | msgstr "" | 783 | msgstr "" |
784 | 784 | ||
785 | #: src/microhttpd/response.c:1075 | 785 | #: src/microhttpd/response.c:1076 |
786 | msgid "Error cleaning up while handling epoll error" | 786 | msgid "Error cleaning up while handling epoll error" |
787 | msgstr "" | 787 | msgstr "" |
788 | 788 | ||
789 | #: src/microhttpd/mhd_itc.h:354 | 789 | #: src/microhttpd/mhd_itc.h:355 |
790 | msgid "Failed to destroy ITC.\n" | 790 | msgid "Failed to destroy ITC.\n" |
791 | msgstr "" | 791 | msgstr "" |
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 | */ |
44 | const char *want[] = { | 42 | const 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 | ||
127 | static int | 135 | static int |
128 | test_urlencoding (void) | 136 | test_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 | ||
164 | static int | 174 | static int |
175 | test_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 | |||
187 | static int | ||
165 | test_multipart_garbage (void) | 188 | test_multipart_garbage (void) |
166 | { | 189 | { |
167 | struct MHD_Connection connection; | 190 | struct MHD_Connection connection; |