Skip to content

Commit a4ae51f

Browse files
committed
Released GNU libmicrohttpd 0.9.74
1 parent fb25f5f commit a4ae51f

5 files changed

Lines changed: 473 additions & 230 deletions

File tree

ChangeLog

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
Web 19 Dec 2021 18:30:00 MSK
2+
Releasing GNU libmicrohttpd 0.9.74 -EG
3+
14
December 2021
25
Fixed doxy for MHD_suspend_connection().
36
Some code improvements for new test test_client_put_stop.

NEWS

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
1153
Sun 25 Apr 2021 14:00:00 MSK
2154
Released GNU libmicrohttpd 0.9.73
3155

configure.ac

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@
2323
#
2424
AC_PREREQ([2.64])
2525
LT_PREREQ([2.4.0])
26-
AC_INIT([GNU Libmicrohttpd],[0.9.73],[libmicrohttpd@gnu.org])
26+
AC_INIT([GNU Libmicrohttpd],[0.9.74],[libmicrohttpd@gnu.org])
2727
AC_CONFIG_AUX_DIR([build-aux])
2828
AM_INIT_AUTOMAKE([silent-rules] [subdir-objects])
2929
AC_CONFIG_HEADERS([MHD_config.h])
3030
AC_CONFIG_MACRO_DIR([m4])
3131

32-
LIB_VERSION_CURRENT=70
32+
LIB_VERSION_CURRENT=71
3333
LIB_VERSION_REVISION=0
34-
LIB_VERSION_AGE=58
34+
LIB_VERSION_AGE=59
3535
AC_SUBST(LIB_VERSION_CURRENT)
3636
AC_SUBST(LIB_VERSION_REVISION)
3737
AC_SUBST(LIB_VERSION_AGE)

0 commit comments

Comments
 (0)