I'm also glad I selected this too at this time for SentryPeer. Congratulations!
On Mon, 20 Dec 2021, 00:44 silvioprog, <silviop...@gmail.com> wrote: > Thanks a lot for this new release! 🍻 > > On Sun, Dec 19, 2021 at 1:13 PM Evgeny Grin <k...@yandex.ru> wrote: > >> Dear all, >> >> I'm very glad to finally announce the new release of GNU libmicrohttpd >> library version 0.9.74. >> This release brings a lot of fixes and improvements, and >> important new features. >> The most significant addition is the new experimental >> implementation of WebSockets contributed by David Gausmann. This >> implementation is not fully tested yet so currently it is disabled >> by default. >> Other changes include a lot of improvements and clarifications >> in doxy comments in microhttpd.h header file, improved compliance >> with the RFC HTTP specifications, the new implementation of reply >> header forming, the new implementation of request chunked encoding >> parsing, new automatic error replies, internal optimisations, and >> many important fixes, including fixes for long-standing bugs. >> >> More detailed list of notable changes: >> >> API changes: >> + Added new function MHD_get_reason_phrase_len_for(). >> + Added MHD_CONNECTION_INFO_HTTP_STATUS type of information >> queried by MHD_get_connection_info(). >> + Added new response flag MHD_RF_SEND_KEEP_ALIVE_HEADER to force >> sending of "keep-alive" header even if not required by RFC. >> + Added new response creation function >> MHD_create_response_from_buffer_with_free_callback_cls() with >> custom cleanup callback. >> + Added new response flag MHD_RF_HTTP_1_0_COMPATIBLE_STRICT with >> the same functionality as existing MHD_RF_HTTP_VERSION_1_0_ONLY >> flag. The old flag will be deprecated. >> + Added new response flag MHD_RF_HTTP_1_0_SERVER with the same >> functionality as existing MHD_RF_HTTP_VERSION_1_0_RESPONSE flag. >> The old flag will be deprecated. >> >> New features: >> + Added experimental WebSockets extension with separate header. >> Disabled by default as it is not fully tested yet. >> + Added '--enable-sanitizers[=address,undefined,leak,user-poison]' >> configure parameter (instead of '--enable-sanitizer'), >> implemented custom memory poisoning for memory pools. >> >> Improvements and enhancements: >> * Doxy function descriptions was corrected, clarified, extended, >> and improved. Now it should be much easier to learn MHD just by >> reading the headers. >> * Completely rewritten reply header forming. New implementation is >> more robust, simpler maintainable and expandable, and better >> follows RFC HTTP specifications. >> * Performance improvements: now HTTP version and request method are >> decoded one time only (previously MHD used string comparison many >> times during processing the data). >> * Rewritten request chunked payload decoding. The new >> implementation better conforms to the HTTP RFC, detects format >> problems earlier, replies to the clients with description of >> detected problems, handles untypical (but syntactically correct) >> values properly. >> * Added special replies for wrong/unsupported HTTP versions in >> requests, broken HTTP chunked encoding in requests, >> * As required by HTTP RFC, added automatic error replies if client >> used broken chunked encoding, too large chunk size, too large >> payload size, or broken Content-Length header. >> * Optimized connection's memory pool handling. >> * Changed timeout precision from one second to one millisecond. >> * Added some checks for incorrect user data, reporting problems in >> MHD log. >> * Improved performance of hash calculations functions by using >> compiler built-ins (if available). >> * Implemented SHA-1 calculations (required for WebSockets). >> * Added universal MSVC project that works with any (sufficiently >> new) version of MSVC. >> * Developed simple HTTP client to test MHD under very special >> conditions. >> * Implemented 45 new tests. >> * Improved existing tests to test more aspects of MHD. >> * Added check for correct results of system and libcurl functions. >> * Response headers are checked during forming of responses. >> * HTTPS tests were improved. >> * Added rebuild on W32 of all required files if files are missing. >> * Many internal optimisations and improvements. >> >> Functional changes: >> * Keep-alive header is omitted by default for HTTP/1.1 connections. >> Use of header can be enforced by response flag. >> * Chunked encoding is used for HTTP/1.1 non-keep-alive connections >> for responses with unknown size. Previously MHD used "indication >> of the end of the response by closing connection" in such cases, >> however it is not correct for HTTP/1.1 connections as per HTTP >> RFC. >> * As required by HTTP RFC, use HTTP/1.1 version instead of HTTP/1.0 >> in reply headers when client is HTTP/1.0 . HTTP/1.0 version can >> be enforced by response flag. >> * User response headers are used in replies in the same order as >> was added by application. >> * Allowed tab characters in response header values. >> * All custom "Connection:" response headers are automatically >> combined into single "Connection:" header. >> * "keep-alive" token silently dropped from custom "Connection:" >> response header. "Keep-alive" cannot be enforced and used >> automatically if possible. >> * Allow tab character in custom response header value. >> * Disallow space character in custom response header value. >> * Do not allow responses with 1xx codes for HTTP/1.0 requests. >> * Detected and reported incorrect "Upgrade" responses. >> * W32 targets are changed to Vista+ by default. XP is supported >> still. >> >> Fixes: >> # Fixed short busy-waiting (up to one second) when connection is >> going to be expired and closed. >> # Fixed handling of errors during start of new connection, fixed >> inability to accept new connections in thread-per-connection mode >> due to the missing decrement of number of daemon's connections if >> start of new thread is failed. >> # Fixed incorrect parsing of LFLF, LFCR, CRCR, and bare CR as >> single linefeed in request header and request chunked payload. >> Now only CRLF or bare LF are recognized as linefeed. >> # Fixed response chunked encoding handling. Now it works properly >> with non-keep-alive connection, with fixed size replies (if >> chunked was enforced by header), and in other situations. >> # Other fixes for chunked replies. >> # Fixed handling of custom connection timeout in thread-per- >> connection mode. >> # Fixed wrongly used MHD_REQUEST_TERMINATED_COMPLETED_OK code for >> application notification when MHD_REQUEST_TERMINATED_WITH_ERROR >> code must be used. >> # Fixed code MHD_REQUEST_TERMINATED_READ_ERROR not reported (code >> MHD_REQUEST_TERMINATED_WITH_ERROR was incorrectly used instead). >> # Fixed handling of request chunked encoding with untypical >> formatting. >> # Fixed processing of last part of hex-encoded values under >> certain conditions. >> # Fixed value returned for MHD_CONNECTION_INFO_REQUEST_HEADER_SIZE. >> # Fixed returned value for MHD_FEATURE_AUTOSUPPRESS_SIGPIPE on W32, >> now it is MHD_YES as W32 does not need SIGPIPE suppression. >> # Fixed portability of bitwise NOT for enums values. >> # Fixed SHA-256 and MD5 calculations with unaligned data. >> # Fixed incorrect caseless matching for HTTP version. >> # Fixed incorrect caseless matching for request method. >> # Fixed compatibility with old GnuTLS versions. >> # Fixed compiler warnings on 32-bits platforms. >> # Fixed blocking sockets setting in tests and examples for W32. >> # Fixed examples to really use libmagic if present. >> # HTTPS tests were fixed. >> # Fixed libcurl test with case-insensitive match for HTTP methods, >> method names must use case-sensitive match. >> # Fixed tests compatibility with old libcurl versions. >> # Fixed build on W32 with llvm-dlltool (this tool is too >> oversimplified) >> >> >> You can download GNU libmicrohttpd from >> >> * https://ftp.gnu.org/gnu/libmicrohttpd/ and all GNU FTP mirrors. >> * Our git repository at https://gnunet.org/git/libmicrohttpd.git >> >> Please report bugs to our bugtracker at >> https://bugs.gnunet.org/set_project.php?project_id=10. >> >> The documentation (including a reference manual and tutorial) can be >> found at https://gnu.org/s/libmicrohttpd. >> >> -- >> Best Wishes, >> Evgeny >> >> > > -- > Silvio Clécio >