diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2021-12-19 18:30:00 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2021-12-19 18:36:21 +0300 |
commit | a4ae51f5812603feff10e536aa05cb00808bc7d5 (patch) | |
tree | f398d378a440358ceebf0782cfa6ec53a0db8936 /NEWS | |
parent | fb25f5f301530d3aa424aa98802f0875dd72fde5 (diff) | |
download | libmicrohttpd-a4ae51f5812603feff10e536aa05cb00808bc7d5.tar.gz libmicrohttpd-a4ae51f5812603feff10e536aa05cb00808bc7d5.zip |
Released GNU libmicrohttpd 0.9.74v0.9.74
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 152 |
1 files changed, 152 insertions, 0 deletions
@@ -1,3 +1,155 @@ | |||
1 | Web 19 Dec 2021 18:30:00 MSK | ||
2 | Released GNU libmicrohttpd 0.9.74 | ||
3 | |||
4 | This release brings a lot of fixes and improvements, and | ||
5 | important new features. | ||
6 | The most significant addition is the new experimental | ||
7 | implementation of WebSockets contributed by David Gausmann. This | ||
8 | implementation is not fully tested yet so currently it is disabled | ||
9 | by default. | ||
10 | Other changes include a lot of improvements and clarifications | ||
11 | in doxy comments in microhttpd.h header file, improved compliance | ||
12 | with the RFC HTTP specifications, the new implementation of reply | ||
13 | header forming, the new implementation of request chunked encoding | ||
14 | parsing, new automatic error replies, internal optimisations, and | ||
15 | many important fixes, including fixes for long-standing bugs. | ||
16 | |||
17 | More detailed list of notable changes: | ||
18 | |||
19 | API changes: | ||
20 | + Added new function MHD_get_reason_phrase_len_for(). | ||
21 | + Added MHD_CONNECTION_INFO_HTTP_STATUS type of information | ||
22 | queried by MHD_get_connection_info(). | ||
23 | + Added new response flag MHD_RF_SEND_KEEP_ALIVE_HEADER to force | ||
24 | sending of "keep-alive" header even if not required by RFC. | ||
25 | + Added new response creation function | ||
26 | MHD_create_response_from_buffer_with_free_callback_cls() with | ||
27 | custom cleanup callback. | ||
28 | + Added new response flag MHD_RF_HTTP_1_0_COMPATIBLE_STRICT with | ||
29 | the same functionality as existing MHD_RF_HTTP_VERSION_1_0_ONLY | ||
30 | flag. The old flag will be deprecated. | ||
31 | + Added new response flag MHD_RF_HTTP_1_0_SERVER with the same | ||
32 | functionality as existing MHD_RF_HTTP_VERSION_1_0_RESPONSE flag. | ||
33 | The old flag will be deprecated. | ||
34 | |||
35 | New features: | ||
36 | + Added experimental WebSockets extension with separate header. | ||
37 | Disabled by default as it is not fully tested yet. | ||
38 | + Added '--enable-sanitizers[=address,undefined,leak,user-poison]' | ||
39 | configure parameter (instead of '--enable-sanitizer'), | ||
40 | implemented custom memory poisoning for memory pools. | ||
41 | |||
42 | Improvements and enhancements: | ||
43 | * Doxy function descriptions was corrected, clarified, extended, | ||
44 | and improved. Now it should be much easier to learn MHD just by | ||
45 | reading the headers. | ||
46 | * Completely rewritten reply header forming. New implementation is | ||
47 | more robust, simpler maintainable and expandable, and better | ||
48 | follows RFC HTTP specifications. | ||
49 | * Performance improvements: now HTTP version and request method are | ||
50 | decoded one time only (previously MHD used string comparison many | ||
51 | times during processing the data). | ||
52 | * Rewritten request chunked payload decoding. The new | ||
53 | implementation better conforms to the HTTP RFC, detects format | ||
54 | problems earlier, replies to the clients with description of | ||
55 | detected problems, handles untypical (but syntactically correct) | ||
56 | values properly. | ||
57 | * Added special replies for wrong/unsupported HTTP versions in | ||
58 | requests, broken HTTP chunked encoding in requests, | ||
59 | * As required by HTTP RFC, added automatic error replies if client | ||
60 | used broken chunked encoding, too large chunk size, too large | ||
61 | payload size, or broken Content-Length header. | ||
62 | * Optimized connection's memory pool handling. | ||
63 | * Changed timeout precision from one second to one millisecond. | ||
64 | * Added some checks for incorrect user data, reporting problems in | ||
65 | MHD log. | ||
66 | * Improved performance of hash calculations functions by using | ||
67 | compiler built-ins (if available). | ||
68 | * Implemented SHA-1 calculations (required for WebSockets). | ||
69 | * Added universal MSVC project that works with any (sufficiently | ||
70 | new) version of MSVC. | ||
71 | * Developed simple HTTP client to test MHD under very special | ||
72 | conditions. | ||
73 | * Implemented 45 new tests. | ||
74 | * Improved existing tests to test more aspects of MHD. | ||
75 | * Added check for correct results of system and libcurl functions. | ||
76 | * Response headers are checked during forming of responses. | ||
77 | * HTTPS tests were improved. | ||
78 | * Added rebuild on W32 of all required files if files are missing. | ||
79 | * Many internal optimisations and improvements. | ||
80 | |||
81 | Functionality changes: | ||
82 | * Keep-alive header is omitted by default for HTTP/1.1 connections. | ||
83 | Use of header can be enforced by response flag. | ||
84 | * Chunked encoding is used for HTTP/1.1 non-keep-alive connections | ||
85 | for responses with unknown size. Previously MHD used "indication | ||
86 | of the end of the response by closing connection" in such cases, | ||
87 | however it is not correct for HTTP/1.1 connections as per HTTP | ||
88 | RFC. | ||
89 | * As required by HTTP RFC, use HTTP/1.1 version instead of HTTP/1.0 | ||
90 | in reply headers when client is HTTP/1.0 . HTTP/1.0 version can | ||
91 | be enforced by response flag. | ||
92 | * User response headers are used in replies in the same order as | ||
93 | was added by application. | ||
94 | * Allowed tab characters in response header values. | ||
95 | * All custom "Connection:" response headers are automatically | ||
96 | combined into single "Connection:" header. | ||
97 | * "keep-alive" token silently dropped from custom "Connection:" | ||
98 | response header. "Keep-alive" cannot be enforced and used | ||
99 | automatically if possible. | ||
100 | * Allow tab character in custom response header value. | ||
101 | * Disallow space character in custom response header value. | ||
102 | * Do not allow responses with 1xx codes for HTTP/1.0 requests. | ||
103 | * Detected and reported incorrect "Upgrade" responses. | ||
104 | * W32 targets are changed to Vista+ by default. XP is supported | ||
105 | still. | ||
106 | |||
107 | Fixes: | ||
108 | # Fixed short busy-waiting (up to one second) when connection is | ||
109 | going to be expired and closed. | ||
110 | # Fixed handling of errors during start of new connection, fixed | ||
111 | inability to accept new connections in thread-per-connection mode | ||
112 | due to the missing decrement of number of daemon's connections if | ||
113 | start of new thread is failed. | ||
114 | # Fixed incorrect parsing of LFLF, LFCR, CRCR, and bare CR as | ||
115 | single linefeed in request header and request chunked payload. | ||
116 | Now only CRLF or bare LF are recognized as linefeed. | ||
117 | # Fixed response chunked encoding handling. Now it works properly | ||
118 | with non-keep-alive connection, with fixed size replies (if | ||
119 | chunked was enforced by header), and in other situations. | ||
120 | # Other fixes for chunked replies. | ||
121 | # Fixed handling of custom connection timeout in thread-per- | ||
122 | connection mode. | ||
123 | # Fixed wrongly used MHD_REQUEST_TERMINATED_COMPLETED_OK code for | ||
124 | application notification when MHD_REQUEST_TERMINATED_WITH_ERROR | ||
125 | code must be used. | ||
126 | # Fixed code MHD_REQUEST_TERMINATED_READ_ERROR not reported (code | ||
127 | MHD_REQUEST_TERMINATED_WITH_ERROR was incorrectly used instead). | ||
128 | # Fixed handling of request chunked encoding with untypical | ||
129 | formatting. | ||
130 | # Fixed processing of last part of hex-encoded values under | ||
131 | certain conditions. | ||
132 | # Fixed value returned for MHD_CONNECTION_INFO_REQUEST_HEADER_SIZE. | ||
133 | # Fixed returned value for MHD_FEATURE_AUTOSUPPRESS_SIGPIPE on W32, | ||
134 | now it is MHD_YES as W32 does not need SIGPIPE suppression. | ||
135 | # Fixed portability of bitwise NOT for enums values. | ||
136 | # Fixed SHA-256 and MD5 calculations with unaligned data. | ||
137 | # Fixed incorrect caseless matching for HTTP version. | ||
138 | # Fixed incorrect caseless matching for request method. | ||
139 | # Fixed compatibility with old GnuTLS versions. | ||
140 | # Fixed compiler warnings on 32-bits platforms. | ||
141 | # Fixed blocking sockets setting in tests and examples for W32. | ||
142 | # Fixed examples to really use libmagic if present. | ||
143 | # HTTPS tests were fixed. | ||
144 | # Fixed libcurl test with case-insensitive match for HTTP methods, | ||
145 | method names must use case-sensitive match. | ||
146 | # Fixed tests compatibility with old libcurl versions. | ||
147 | # Fixed build on W32 with llvm-dlltool (this tool is too | ||
148 | oversimplified) | ||
149 | |||
150 | -- Evgeny Grin (Karlson2k) | ||
151 | |||
152 | |||
1 | Sun 25 Apr 2021 14:00:00 MSK | 153 | Sun 25 Apr 2021 14:00:00 MSK |
2 | Released GNU libmicrohttpd 0.9.73 | 154 | Released GNU libmicrohttpd 0.9.73 |
3 | 155 | ||