NEWS 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. Sun 26 Feb 2023 17:49:30 CET
  2. Released GNU libmicrohttpd 0.9.76 hotfix. -CG
  3. This is a hotfix release.
  4. This only change since previous release is fixed potential DoS vector
  5. in MHD_PostProcessor discovered by Gynvael Coldwind and Dejan
  6. Alvadzijevic (CVE-2023-27371).
  7. While the researchers have not been able to exploit this attack vector
  8. when libmicrohttpd is compiled with the standard GNU C library, it is
  9. recommended that you update MHD as soon as possible if your
  10. applications are using (optional) MHD_PostProcessor functionality.
  11. -- Evgeny Grin (Karlson2k)
  12. Sun 26 Dec 2021 20:30:00 MSK
  13. Released GNU libmicrohttpd 0.9.75 -EG
  14. This is a correction release.
  15. The main improvement is the implementation of workaround for some
  16. OSes (like OpenBSD 7) where "monotonic" clock may jump back. Now
  17. MHD is able to automatically detect such situation and recover if
  18. the jump is small. This workaround is needed with increased
  19. accuracy of connection timeout introduced in previous version, as
  20. with lower accuracy (v0.9.73 and before) these jumpbacks were
  21. unnoticeable.
  22. Other changes: fixed some compiler, Makefile, and configure
  23. warnings on specific platforms; one test further improved.
  24. -- Evgeny Grin (Karlson2k)
  25. Sun 19 Dec 2021 18:30:00 MSK
  26. Released GNU libmicrohttpd 0.9.74
  27. This release brings a lot of fixes and improvements, and
  28. important new features.
  29. The most significant addition is the new experimental
  30. implementation of WebSockets contributed by David Gausmann. This
  31. implementation is not fully tested yet so currently it is disabled
  32. by default.
  33. Other changes include a lot of improvements and clarifications
  34. in doxy comments in microhttpd.h header file, improved compliance
  35. with the RFC HTTP specifications, the new implementation of reply
  36. header forming, the new implementation of request chunked encoding
  37. parsing, new automatic error replies, internal optimisations, and
  38. many important fixes, including fixes for long-standing bugs.
  39. More detailed list of notable changes:
  40. API changes:
  41. + Added new function MHD_get_reason_phrase_len_for().
  42. + Added MHD_CONNECTION_INFO_HTTP_STATUS type of information
  43. queried by MHD_get_connection_info().
  44. + Added new response flag MHD_RF_SEND_KEEP_ALIVE_HEADER to force
  45. sending of "keep-alive" header even if not required by RFC.
  46. + Added new response creation function
  47. MHD_create_response_from_buffer_with_free_callback_cls() with
  48. custom cleanup callback.
  49. + Added new response flag MHD_RF_HTTP_1_0_COMPATIBLE_STRICT with
  50. the same functionality as existing MHD_RF_HTTP_VERSION_1_0_ONLY
  51. flag. The old flag will be deprecated.
  52. + Added new response flag MHD_RF_HTTP_1_0_SERVER with the same
  53. functionality as existing MHD_RF_HTTP_VERSION_1_0_RESPONSE flag.
  54. The old flag will be deprecated.
  55. New features:
  56. + Added experimental WebSockets extension with separate header.
  57. Disabled by default as it is not fully tested yet.
  58. + Added '--enable-sanitizers[=address,undefined,leak,user-poison]'
  59. configure parameter (instead of '--enable-sanitizer'),
  60. implemented custom memory poisoning for memory pools.
  61. Improvements and enhancements:
  62. * Doxy function descriptions was corrected, clarified, extended,
  63. and improved. Now it should be much easier to learn MHD just by
  64. reading the headers.
  65. * Completely rewritten reply header forming. New implementation is
  66. more robust, simpler maintainable and expandable, and better
  67. follows RFC HTTP specifications.
  68. * Performance improvements: now HTTP version and request method are
  69. decoded one time only (previously MHD used string comparison many
  70. times during processing the data).
  71. * Rewritten request chunked payload decoding. The new
  72. implementation better conforms to the HTTP RFC, detects format
  73. problems earlier, replies to the clients with description of
  74. detected problems, handles untypical (but syntactically correct)
  75. values properly.
  76. * Added special replies for wrong/unsupported HTTP versions in
  77. requests, broken HTTP chunked encoding in requests,
  78. * As required by HTTP RFC, added automatic error replies if client
  79. used broken chunked encoding, too large chunk size, too large
  80. payload size, or broken Content-Length header.
  81. * Optimized connection's memory pool handling.
  82. * Changed timeout precision from one second to one millisecond.
  83. * Added some checks for incorrect user data, reporting problems in
  84. MHD log.
  85. * Improved performance of hash calculations functions by using
  86. compiler built-ins (if available).
  87. * Implemented SHA-1 calculations (required for WebSockets).
  88. * Added universal MSVC project that works with any (sufficiently
  89. new) version of MSVC.
  90. * Developed simple HTTP client to test MHD under very special
  91. conditions.
  92. * Implemented 45 new tests.
  93. * Improved existing tests to test more aspects of MHD.
  94. * Added check for correct results of system and libcurl functions.
  95. * Response headers are checked during forming of responses.
  96. * HTTPS tests were improved.
  97. * Added rebuild on W32 of all required files if files are missing.
  98. * Many internal optimisations and improvements.
  99. Functionality changes:
  100. * Keep-alive header is omitted by default for HTTP/1.1 connections.
  101. Use of header can be enforced by response flag.
  102. * Chunked encoding is used for HTTP/1.1 non-keep-alive connections
  103. for responses with unknown size. Previously MHD used "indication
  104. of the end of the response by closing connection" in such cases,
  105. however it is not correct for HTTP/1.1 connections as per HTTP
  106. RFC.
  107. * As required by HTTP RFC, use HTTP/1.1 version instead of HTTP/1.0
  108. in reply headers when client is HTTP/1.0 . HTTP/1.0 version can
  109. be enforced by response flag.
  110. * User response headers are used in replies in the same order as
  111. was added by application.
  112. * Allowed tab characters in response header values.
  113. * All custom "Connection:" response headers are automatically
  114. combined into single "Connection:" header.
  115. * "keep-alive" token silently dropped from custom "Connection:"
  116. response header. "Keep-alive" cannot be enforced and used
  117. automatically if possible.
  118. * Allow tab character in custom response header value.
  119. * Disallow space character in custom response header value.
  120. * Do not allow responses with 1xx codes for HTTP/1.0 requests.
  121. * Detected and reported incorrect "Upgrade" responses.
  122. * W32 targets are changed to Vista+ by default. XP is supported
  123. still.
  124. Fixes:
  125. # Fixed short busy-waiting (up to one second) when connection is
  126. going to be expired and closed.
  127. # Fixed handling of errors during start of new connection, fixed
  128. inability to accept new connections in thread-per-connection mode
  129. due to the missing decrement of number of daemon's connections if
  130. start of new thread is failed.
  131. # Fixed incorrect parsing of LFLF, LFCR, CRCR, and bare CR as
  132. single linefeed in request header and request chunked payload.
  133. Now only CRLF or bare LF are recognized as linefeed.
  134. # Fixed response chunked encoding handling. Now it works properly
  135. with non-keep-alive connection, with fixed size replies (if
  136. chunked was enforced by header), and in other situations.
  137. # Other fixes for chunked replies.
  138. # Fixed handling of custom connection timeout in thread-per-
  139. connection mode.
  140. # Fixed wrongly used MHD_REQUEST_TERMINATED_COMPLETED_OK code for
  141. application notification when MHD_REQUEST_TERMINATED_WITH_ERROR
  142. code must be used.
  143. # Fixed code MHD_REQUEST_TERMINATED_READ_ERROR not reported (code
  144. MHD_REQUEST_TERMINATED_WITH_ERROR was incorrectly used instead).
  145. # Fixed handling of request chunked encoding with untypical
  146. formatting.
  147. # Fixed processing of last part of hex-encoded values under
  148. certain conditions.
  149. # Fixed value returned for MHD_CONNECTION_INFO_REQUEST_HEADER_SIZE.
  150. # Fixed returned value for MHD_FEATURE_AUTOSUPPRESS_SIGPIPE on W32,
  151. now it is MHD_YES as W32 does not need SIGPIPE suppression.
  152. # Fixed portability of bitwise NOT for enums values.
  153. # Fixed SHA-256 and MD5 calculations with unaligned data.
  154. # Fixed incorrect caseless matching for HTTP version.
  155. # Fixed incorrect caseless matching for request method.
  156. # Fixed compatibility with old GnuTLS versions.
  157. # Fixed compiler warnings on 32-bits platforms.
  158. # Fixed blocking sockets setting in tests and examples for W32.
  159. # Fixed examples to really use libmagic if present.
  160. # HTTPS tests were fixed.
  161. # Fixed libcurl test with case-insensitive match for HTTP methods,
  162. method names must use case-sensitive match.
  163. # Fixed tests compatibility with old libcurl versions.
  164. # Fixed build on W32 with llvm-dlltool (this tool is too
  165. oversimplified)
  166. -- Evgeny Grin (Karlson2k)
  167. Sun 25 Apr 2021 14:00:00 MSK
  168. Released GNU libmicrohttpd 0.9.73
  169. This release brings new features, improvements, and a few fixes.
  170. The most important addition is the new function for vector-backed
  171. responses, based on the patch contributed by NASA engineers.
  172. Other changes include compatibility with autoconf 2.70+, improved
  173. testsuite compatibility with CI systems, fixed and improved MSVC
  174. builds, and implementation of ALPN support.
  175. More detailed list of notable changes:
  176. API changes:
  177. + Added new function MHD_create_response_from_iovec(), based on the
  178. patch provided by Lawrence Sebald and Damon N. Earp from NASA.
  179. + Added MHD_OPTION_SIGPIPE_HANDLED_BY_APP daemon option.
  180. + Added new function MHD_run_wait().
  181. + Added MHD_OPTION_TLS_NO_ALPN to disable usage of ALPN even if
  182. it is supported by TLS library.
  183. New features:
  184. + Added '--enable-heavy-tests' configure parameter (disabled by
  185. default).
  186. + Implemented support for ALPN.
  187. Improvements and enhancements:
  188. * Return timeout of zero also for connections awaiting cleanup.
  189. * Compatibility with autoconf >=2.70, used new autoconf features.
  190. * Warn user when custom logger option is not the first option.
  191. * Added information to the header about minimal MHD version when
  192. particular symbols were introduced.
  193. * Updated test certificates to be compatible with modern browsers.
  194. * Added on-fly detection of UNIX domain sockets and pipes, MHD does
  195. not try to use TCP/IP-specific socket options on them.
  196. * Report more detailed error description in the MHD log for send
  197. and receive errors.
  198. * Enabled bind port autodetection for MSVC builds.
  199. Fixes:
  200. # Fix PostProcessor to always properly stop iteration when
  201. application callback tells it to do so.
  202. # Fixed MD5 digest authorization broken when compiled without
  203. variable length arrays support (notably with MSVC).
  204. # Fixed detection of type of send errors on W32.
  205. -- Evgeny Grin (Karlson2k)
  206. Mon 28 Dec 2020 21:36:00 MSK
  207. Released GNU libmicrohttpd 0.9.72
  208. This release is mostly a bugfix release, with greatly improved
  209. compatibility with various OSes/kernels, including FreeBSD, Windows,
  210. OpenBSD, NetBSD, Darwin (macOS), Solaris. Performance is improved,
  211. especially with HTTPS connections and stay-alive HTTP connections.
  212. Notable changes since version 0.9.71:
  213. API changes:
  214. + New function MHD_create_response_from_pipe()
  215. Improvements and enhancements:
  216. * Fully rewritten code for buffering/pushing from kernel network buffers
  217. for compatibility with various OSes. Reduced number of additional
  218. sys-calls, network is better utilized, responses are delivered faster.
  219. * Restored optimal sendfile() usage on FreeBSD.
  220. * MHD now takes care about SIGPIPE handling by blocking it in internal
  221. threads and avoiding functions (like sendfile()) that could generate
  222. SIGPIPE when blocking of this signal is not possible.
  223. Fixes:
  224. # Fixed crash in PostProcessor.
  225. # Fixed several resources leaks in corner cases.
  226. # Improved thread sync, thread safety and fixed one use-after-free under
  227. special conditions during stopping of daemon.
  228. # Updated HTTP status codes, header names and methods from the
  229. registries.
  230. # Fixed functioning without listen socket and with internal threads.
  231. # Fixed streaming of chunked responses for both HTTP and HTTPS.
  232. # Various compatibility fixes.
  233. -- Evgeny Grin (Karlson2k)
  234. Tue Jan 9 20:52:48 MST 2007
  235. Project posted.