aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2021-12-18 15:00:17 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2021-12-19 15:44:53 +0300
commitc229373f236f5e84b3c1c437442f7cc850d26a72 (patch)
treea7766f359a0cccb23b4a79d8992b0f0e0956b857
parent4f019420382b6f1769670a1dcb9cf792924253d6 (diff)
downloadlibmicrohttpd-c229373f236f5e84b3c1c437442f7cc850d26a72.tar.gz
libmicrohttpd-c229373f236f5e84b3c1c437442f7cc850d26a72.zip
ChangeLog updated
-rw-r--r--ChangeLog307
1 files changed, 307 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 728cd156..1d65f182 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,313 @@
1December 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
35November 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
70October 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
114September 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
158August 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
1Wed 04 Aug 2021 06:56:52 PM CEST 240Wed 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
243July 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
266June 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
292May 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
308April 2021
309 New test for reply chunked encoding. -EG
310
4Mon 26 Apr 2021 02:09:46 PM CEST 311Mon 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