diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2021-12-18 15:00:17 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2021-12-19 15:44:53 +0300 |
commit | c229373f236f5e84b3c1c437442f7cc850d26a72 (patch) | |
tree | a7766f359a0cccb23b4a79d8992b0f0e0956b857 | |
parent | 4f019420382b6f1769670a1dcb9cf792924253d6 (diff) | |
download | libmicrohttpd-c229373f236f5e84b3c1c437442f7cc850d26a72.tar.gz libmicrohttpd-c229373f236f5e84b3c1c437442f7cc850d26a72.zip |
ChangeLog updated
-rw-r--r-- | ChangeLog | 307 |
1 files changed, 307 insertions, 0 deletions
@@ -1,6 +1,313 @@ | |||
1 | December 2021 | ||
2 | Fixed doxy for MHD_suspend_connection(). | ||
3 | Some code improvements for new test test_client_put_stop. | ||
4 | Added special log message if thread creation failed due to system limits. | ||
5 | Fully restructured new_connection_process_() to correctly handle errors, | ||
6 | fixed missing decrement of number of daemon connections if any error | ||
7 | encountered, fixed app notification of connection termination when app has | ||
8 | not been notified about connection start, fixed (highly unlikely) reset of | ||
9 | the list of connections if reached daemon's connections limit. | ||
10 | configure: fixed some compiler warnings reported in config.log. | ||
11 | Fixed tests on FreeBSD to support system-limited rate of RST packets and | ||
12 | 'blackhole' system setting. -EG | ||
13 | Fixed tests for libmagic to really use libmagic in examples. -CG | ||
14 | Used tricks in code formatting to workaround uncrustify bugs. | ||
15 | configure: improved compatibility with various shells. | ||
16 | configure: added selective enable of sanitizers. | ||
17 | Fixed compatibility with old GnuTLS versions. | ||
18 | Fixed tests compatibility with old libcurl versions. | ||
19 | Fixed busy-waiting in test_timeout (fixed CPU load spikes in the test). | ||
20 | test_https_time_out: check rewritten, previously it is was no-op. | ||
21 | test_upgrade{,_large}: fixed passing of socket value to GnuTLS on W32. | ||
22 | Simplified Makefile for HTTPS tests. | ||
23 | Added detection of old broken GnuTLS builds (on RHEL6 and clones) and | ||
24 | disabled some tests broken with these builds. | ||
25 | Muted compiler warnings with old libcurl versions. | ||
26 | Reworked dlltool support: added support for weakened oversimplified | ||
27 | half-broken llvm-dlltool | ||
28 | Silenced MS lib tool warning and MS lib tool invocation. | ||
29 | Added Makefiles rules for automatic regeneration of all required files if | ||
30 | anything is missing. | ||
31 | Added Makefile silent rules support for W32 RC and W32 static libs. | ||
32 | Added local patches for autotools (mainly for libtool) to build MHD | ||
33 | correctly on modern MinGW64/Clang. -EG | ||
34 | |||
35 | November 2021 | ||
36 | Clarified comments and doxy for MHD_str* and related tests. | ||
37 | MHD_uint32_to_strx(): rewritten for readability and minor optimization, | ||
38 | used indexes instead of pointers. | ||
39 | Documented in doxy how to use MHD_AccessHandlerCallback. | ||
40 | mhd_sockets: added more network error codes. | ||
41 | W32 socket pair: set TCP_NODELAY to avoid unwanted buffering and delays. | ||
42 | Additional doxy fixes in microhttpd.h. | ||
43 | Fixed blocking sockets setting in tests and examples for W32. | ||
44 | Added checks for fcntl() results in tests and examples. | ||
45 | Added series of tests based on simple HTTP client implementation developed | ||
46 | for testing of MHD. | ||
47 | Renamed 'early_response' connection flag to 'discard_request' and reworked | ||
48 | handling of connection's flags. | ||
49 | Clarified request termination reasons doxy, fixed reporting of | ||
50 | MHD_REQUEST_TERMINATED_READ_ERROR (previously this code was not really used | ||
51 | in reporting). | ||
52 | Enforce all libcurl tests exit code to be zero or one. | ||
53 | Rewritten client upload processing: removed redundant checks, fixed | ||
54 | skipping of chunk closure when not data is not received yet, fixed skipping | ||
55 | of the last LF in termination chunk, handle correctly chunk sizes with more | ||
56 | than 16 digits (leading zeros are valid according to HTTP RFC), fixed | ||
57 | handling of CRCR, LFCR, LFLF, and bare CR as single line delimiters, report | ||
58 | error when invalid chunk format is received without waiting to receive | ||
59 | (possibly missing) end of the line, reply to the client with special error | ||
60 | if chunk size is too large to be handled by MHD (>16 EiB). | ||
61 | Added error reply if client used too large request payload (>16 EiB). | ||
62 | Fixed return value for MHD_FEATURE_AUTOSUPPRESS_SIGPIPE on W32, now it | ||
63 | returns MHD_YES as W32 does not need sigpipe suppression. | ||
64 | configure: reordered and improved headers detection. Some headers require | ||
65 | other headers to be included before, now configure supports it. | ||
66 | Added missing ifdef guard for <stdbool.h>. | ||
67 | mhd_sockets: reordered includes for better compatibility. | ||
68 | Some code readability and formatting improvements. -EG | ||
69 | |||
70 | October 2021 | ||
71 | Added test family test_toolarge to check correct handling of the buffers | ||
72 | when the size of data is larger than free space. | ||
73 | Fixed missing updated of read and write buffers sizes. | ||
74 | Added detection and use of supported "noreturn" keyword for function | ||
75 | declaration. It should help compiler and static analyser. | ||
76 | Added support for leak sanitizer. | ||
77 | Fixed analyser errors on W32. | ||
78 | Partially reworked memory allocation from the pool, more robust | ||
79 | implementation, always track read and write buffers. | ||
80 | Added custom memory poisoning in memory pool with address sanitizer. | ||
81 | Added missing update of the read buffer size. | ||
82 | Addition for doxy for new behaviour of MHD_del_response_header(). | ||
83 | Added two tests with non-standard symbols in requests. | ||
84 | Removed double close of connection with error in headers processing. | ||
85 | Respond to the client with error if chunked request has broken chunked | ||
86 | encoding as required by HTTP RFC instead of just closing the connection. | ||
87 | Fixed request headers processing. Do not recognize bare CR as end of line. | ||
88 | Fixed processing of CRCR, bare CR, LFCR, and LFLF as end of the line for | ||
89 | request chunked encoding. Now only CRLF or bare LF are recognized as end | ||
90 | of line. | ||
91 | Added Lawrence Sebald to the AUTHORS file (iovec-based responses). | ||
92 | Check for PAGESIZE and PAGE_SIZE macros and check whether they can be used | ||
93 | for static variable initialization. | ||
94 | Include "MHD_config.h" before all other includes to set macros required to | ||
95 | be set before standard includes. | ||
96 | Chunked response: abort with error if application returns more data than | ||
97 | requested. | ||
98 | Monotonic clock: use only native clock on W32 as all other clocks are just | ||
99 | wrappers. | ||
100 | W32: fixed builds with MSVC, added projects for VS2022, added MSVC | ||
101 | universal project that use latest available toolset, use C17 if supported. | ||
102 | Chunked response: fixed calculation of number of bytes left to send. | ||
103 | microhttpd.h: doxy clarifications for sockets polling. | ||
104 | Updated HTTP statuses, methods, and headers names from the registries. | ||
105 | Further improved doxy for MHD_add_response_header(). | ||
106 | A few comments improvements and clarifications. | ||
107 | Added internal connection's flag indicating discard of the request. -EG | ||
108 | Websockets update by David Gausmann. -DG | ||
109 | Fixed reported value for MHD_CONNECTION_INFO_CONNECTION_TIMEOUT. | ||
110 | Minor code readability improvements in MHD_set_connection_option(). | ||
111 | Improved doxy for MHD_get_timeout(). | ||
112 | Memorypool: minor code improvements. -EG | ||
113 | |||
114 | September 2021 | ||
115 | Improved system includes headers detection and usage. Removed unused | ||
116 | headers detection. | ||
117 | Added indirect calculation of maximum values at compile time by | ||
118 | using types size detection. These values are used only to mute | ||
119 | compiler warnings. | ||
120 | Fixed pre-compiler errors if various *_MAX macros defined with | ||
121 | non-digits symbols not readable for pre-compiler. | ||
122 | Limit number of used CPU cores in tests to 6, unless heavy tests are | ||
123 | enabled. | ||
124 | Disabled parallel tests with libcurl if heavy tests are enabled. | ||
125 | configure: removed '--enable-sanitizer' and added '--enable-sanitizers' | ||
126 | parameters. Added testing for supported sanitizers and enabling only | ||
127 | supported sanitizers. | ||
128 | Added support for run-time sanitizers settings for tests when | ||
129 | sanitizers are enabled. | ||
130 | Added support for undefined behavior sanitizer without run-time library. | ||
131 | Fixed various undefined behavior sanitizer detected errors, improved | ||
132 | portability. | ||
133 | Fixed how bitwise NOT is used with enum, fixed portability. | ||
134 | microhttpd.h: changed macros MHD_CONTENT_READER_* to use ssize_t. | ||
135 | test_postprocessor: added more check, improved error reporting, added | ||
136 | new test data. | ||
137 | postprocessor: fixed undefined behavior (memcpy(), memmove() with zero | ||
138 | size and NULL pointer). | ||
139 | Updated copyright year in W32 DLLs. | ||
140 | postprocessor: fixed empty key processing. | ||
141 | test_postprocessor: added tests with hex-encoded values. | ||
142 | postprocessor: fixed incomplete processing of the last part of hex-encoded | ||
143 | value if data was broken into certain sized pieces. | ||
144 | Used type specifiers for printf() from inttypes.h to improved compatibility | ||
145 | with various run-time libs. Fallback to standard values if type specifiers | ||
146 | are not defined. | ||
147 | Added detection of used run-time library (MSVCRT/UCRT) on W32. | ||
148 | testcurl: fixed incorrect case-insensitive match for method name. Method | ||
149 | name must be checked by using case-sensitive match. | ||
150 | microhttpd.h: clarified some doxy descriptions. | ||
151 | Prevented potential double sending of error responses. | ||
152 | Fixed application notification with MHD_REQUEST_TERMINATED_COMPLETED_OK | ||
153 | when error response has been sent (MHD_REQUEST_TERMINATED_WITH_ERROR is | ||
154 | used). | ||
155 | Avoid trying to send error response if response is already being sent. | ||
156 | Improved log error message when error response is processing. -EG | ||
157 | |||
158 | August 2021 | ||
159 | Silently drop "keep-alive" token from response "connection" header, | ||
160 | "keep-alive" cannot be enforced and always enabled if possible. | ||
161 | Further improved doxy for MHD_add_response_header(). | ||
162 | Added detection of the "Date:" header in the response headers set by | ||
163 | app at response forming time. | ||
164 | Disallow space in response header name, allow tab in response header | ||
165 | value. | ||
166 | Added internal MHD_uint8_to_str_pad() function. | ||
167 | Used internal MHD_uint8_to_str_pad() in datestamp generation function. | ||
168 | Added detection and reporting of incorrect "Upgrade" responses. -EG | ||
169 | Fixed short busy waiting (up to one second) when connection is going | ||
170 | to be closed. -AI | ||
171 | Minor improvement for test_callback, test_get_chunked | ||
172 | Fixed chunked responses with known size. | ||
173 | Added two more tests for chunked response. | ||
174 | Fixed chunked responses with predefined data (without data callback). | ||
175 | Fixed calculation of the buffer size for the next response chunk. | ||
176 | Completely rewritten reply header build function. The old version | ||
177 | had several levels of hacks, was unmaintainable, did not follow | ||
178 | HTTP specification in details; fixed used caseless header matching | ||
179 | where case-sensitive matching must be used; removed two passes of | ||
180 | header building. New version use clear logic and can be extended | ||
181 | when needed. | ||
182 | Changed behaviour: "Connection: keep-alive" is not being sent | ||
183 | for HTTP/1.1 connection (as per HTTP RFC). | ||
184 | test_get_chunked: fixed error reporting. | ||
185 | HTTPS tests: fixed memory leaks if function failed. | ||
186 | libcurl tests: improved handling of curl multi_*. | ||
187 | Added two tests for correct choice of "Keep-Alive" or "Close". | ||
188 | Simplified Makefile for testcurl. | ||
189 | Fixed select() error handling in tests. | ||
190 | microhttpd.h: minor macro formatting | ||
191 | Changed behaviour: if response size is unknown and chunked encoding is | ||
192 | allowed, chunked encoding is used even for non-keep-alive connection as | ||
193 | required by HTTP RFC. | ||
194 | Added two more tests for chunked replies. | ||
195 | Simplified keepalive_possible(); added new value for MHD_ConnKeepAlive, | ||
196 | added third state "Upgrade". | ||
197 | Changed behaviour: used HTTP/1.1 replies for HTTP/1.0 requests as | ||
198 | required by HTTP RFC. HTTP/1.0 reply still can be enforced by response | ||
199 | flag. | ||
200 | Added more doxy for MHD_ResponseFlags, added new names with the same | ||
201 | values as old names: MHD_RF_HTTP_1_0_COMPATIBLE_STRICT and | ||
202 | MHD_RF_HTTP_1_0_SERVER. | ||
203 | Added new value MHD_RF_SEND_KEEP_ALIVE_HEADER to enforce sending of | ||
204 | "Connection: keep-alive" even for HTTP/1.1 clients when keep-alive is | ||
205 | used. | ||
206 | test_get_close_keep_alive: added more combinations of parameters to | ||
207 | check. | ||
208 | Added separate flag for chunked response in connection instead of | ||
209 | reusing the same flag as for chunked request. | ||
210 | Added new connection's flag "stop_with_error". | ||
211 | Fixed empty first line processing: the request could be not processed | ||
212 | unless something else kicks next processing the same connection again. | ||
213 | Added new connection states: MHD_CONNECTION_REQ_LINE_RECEIVING, | ||
214 | MHD_CONNECTION_FULL_REQ_RECEIVED, MHD_CONNECTION_START_REPLY to | ||
215 | simplify states logic. | ||
216 | Changed write buffer allocation logic: as connection buffer size is | ||
217 | known and fixed, use initially use full buffer for writing and reduce | ||
218 | size of part used for writing if another allocation from the same | ||
219 | buffer needs to be done. Implemented helper function to automatically | ||
220 | reduce the size of read or write part to allocate buffer for other | ||
221 | needs. | ||
222 | Added define of NDEBUG if neither _DEBUG nor NDEBUG are defined. | ||
223 | As accepted sockets inherit non-blocking flag from listening socket | ||
224 | on all platform except Linux, track this state to use less number | ||
225 | of syscalls. | ||
226 | Fixed compiler and static analyser warnings. | ||
227 | Moved HTTPS tests helper file to the HTTPS tests directory. | ||
228 | Minor Makefiles cleanup. | ||
229 | Added support for new monotonic clock ids. | ||
230 | Added new internal monotonic clock function with milliseconds accuracy. | ||
231 | Fixed support of custom connection timeout in thread-per-connection mode. | ||
232 | Added more error checking to test_timeout. | ||
233 | microhttpd.h: removed duplicated macro. | ||
234 | Refined timeouts handling. Switched from seconds resolution to milliseconds | ||
235 | resolution, added automatic detection and support of low-resolution system | ||
236 | clock to avoid busy-waiting at connection expiration. Added log message | ||
237 | for too large timeout period (> 146 million years) with trim to supported | ||
238 | values. -EG | ||
239 | |||
1 | Wed 04 Aug 2021 06:56:52 PM CEST | 240 | Wed 04 Aug 2021 06:56:52 PM CEST |
2 | Introduce new MHD_CONNECTION_INFO_HTTP_STATUS. -CG | 241 | Introduce new MHD_CONNECTION_INFO_HTTP_STATUS. -CG |
3 | 242 | ||
243 | July 2021 | ||
244 | Added automatic response flags with detection when response | ||
245 | is being formed. | ||
246 | Added special processing for response "Connection" headers, combined | ||
247 | multiple "Connection" headers into single header. | ||
248 | Restructured MSVC project files. | ||
249 | Changed MSVC project defaults to Vista+ (WinXP is still supported). | ||
250 | Fixed copy-paste error in mhd_aligh.h, added support for MSVC. | ||
251 | Added internal function for printing hex and decimals numbers. | ||
252 | Reply chunked body handling fixes, used new internal functions | ||
253 | instead of snprintf(). | ||
254 | Added automatic response flag when app sets chunked encoding header. | ||
255 | New internal function for chunked reply footer forming. Unification with | ||
256 | reply header forming function just over-complicated things and made | ||
257 | function hardly maintainable. | ||
258 | Added new function MHD_get_reason_phrase_len_for(), related tests and | ||
259 | updated scripts for response phrases. | ||
260 | Added more tests for chunked replies. | ||
261 | Added function to reset connection state after finishing processing of | ||
262 | request-reply to prepare for the next request. | ||
263 | Added even more tests for chunked replies. | ||
264 | Added internal function for printing uint64_t decimal numbers. -EG | ||
265 | |||
266 | June 2021 | ||
267 | Tests: implemented checking of response footer. | ||
268 | Fixed loss of incoming data if more than half of buffer is | ||
269 | used for the next request data. | ||
270 | Fixed completely broken calculation of request header size. | ||
271 | Chunked response: do not ask app callback for more data then | ||
272 | it is possible to process (more than 16 MBytes). | ||
273 | Check and report if app used wrong response code (>999 or <100) | ||
274 | Refuse to add second "Transfer-Encoding" header. | ||
275 | HTTPS tests: check whether all libcurl function succeeded. | ||
276 | HTTPS tests: implemented new detection of TLS backend. | ||
277 | HTTPS tests: fixed tests with new TLS defaults (SSL forbidden). | ||
278 | Implemented detection of basic HTTP methods, fixed wrong | ||
279 | caseless matching for HTTP method names. | ||
280 | MHD_create_response_*() functions: improved doxy. | ||
281 | MHD_add_response_header: added detailed comment about automatic | ||
282 | headers. | ||
283 | Do not allow responses with 1xx codes for HTTP/1.0 requests. | ||
284 | Fixed used order of headers: now user response headers are used in | ||
285 | the same order as was added by application. | ||
286 | Added new internal function MHD_get_response_element_n_(). | ||
287 | Added detection of more compiler built-ins for bits rotations. | ||
288 | Minor optimisation of caseless strings matching. | ||
289 | Added MHD_str_remove_token_caseless_() function and tests. | ||
290 | Added MHD_str_remove_tokens_caseless_() function and tests. -EG | ||
291 | |||
292 | May 2021 | ||
293 | Doxy description clarifications for MHD_get_timeout() and related | ||
294 | functions. | ||
295 | Added MHD_create_response_from_buffer_with_free_callback_cls(). | ||
296 | Added SHA-1 calculation (required for WebSockets). | ||
297 | Added new internal header mhd_aligh.h for checking alignment of | ||
298 | variables. | ||
299 | Fixed SHA-256 and MD5 calculation with unaligned data. | ||
300 | Added tests for hashes with unaligned data. | ||
301 | Used compiler built-ins for bits rotations. | ||
302 | Added detection of HTTP version at early stage. | ||
303 | Added early response of unsupported HTTP version. | ||
304 | Fixed wrong caseless matches for HTTP version strings. | ||
305 | Added calculation of error responses at compile time (avoided | ||
306 | repeated strlen() for known data). -EG | ||
307 | |||
308 | April 2021 | ||
309 | New test for reply chunked encoding. -EG | ||
310 | |||
4 | Mon 26 Apr 2021 02:09:46 PM CEST | 311 | Mon 26 Apr 2021 02:09:46 PM CEST |
5 | Importing experimental Websocket support by David Gausmann. -CG | 312 | Importing experimental Websocket support by David Gausmann. -CG |
6 | 313 | ||