ChangeLog (156586B)
1 Mon Jul 14 05:03:07 PM CEST 2025 2 Fix double-close bugs on bind() errors reported by MC on the list. 3 Removed MHD2 draft code, now in libmicrohttpd2.git. 4 Releasing GNU libmicrohttpd 1.0.2 -CG 5 6 Fri 23 Feb 2024 21:00:00 UZT 7 Releasing GNU libmicrohttpd 1.0.1 -EG 8 9 February 2024 10 Fixed builds without messages. -JP & CG 11 Fixed builds with external MD5 calculation. 12 Fixed SHA-512/256 code for hypothetical extra large sizes. 13 Fixed response handling during daemon shutdown. 14 Fixed code logic for builds without messages. 15 Reduced the binary size for builds without messages by removing 16 the strings with filenames used for panic reports. 17 Fixed tests and examples for builds without messages and for builds 18 without basic auth. 19 Fixed some compiler warnings. -EG 20 21 Thu 01 Feb 2024 15:00:00 CET 22 Releasing GNU libmicrohttpd 1.0.0 -EG 23 24 January 2024 25 add missing lock, do not call 'close(-1)' on very rare error path. 26 use correct HTTP header (content type, not content encoding) for mime type 27 in examples. 28 fix memory leak on error path. -CG 29 MHD_OPTION_CONNECTION_MEMORY_{LIMIT,INCREMENT}: added ignore of zero value. 30 test_upgrade{,_large}{,_tls}: unified code, removed workarounds, added new 31 test. 32 digest_auth_example_adv: added new advanced example for the new Digest 33 Auth API use. 34 Fixed compiler warnings in configure, lib, examples, tests. 35 test_digestauth2: supported old libcurl versions. 36 Fixed tests with GnuTLS in non-default path. 37 configure: sorted messages in final config summary. 38 Fixed non-debug build without HTTPS. 39 configure: removed old workaround for Solaris. 40 test_upgrade: adapted for macOS. -EG 41 42 December 2023 43 "Upgraded" TLS connections: fixed data pumping in various edge conditions. 44 'bootstrap': fixes and simplifications. 45 Digest Auth: added default timeout and max nc values, added daemon options 46 for default nonce timeout and max nc values, added testing, implemented 47 setting DAuth defaults by configure parameters. -EG 48 49 November 2023 50 Updated HTTP methods, headers and reason phrases. 51 Renamed one new basic auth function, improved doxy. 52 digest auth: updated header, slightly modified multi-value processing. -EG 53 websocket_threaded_example: fix websocket url string. -Evgeniy Gavrilenko 54 configure: warn if building without threads. -EG 55 configure: added detection of FD_SETSIZE value and ability to override it. 56 internal.h: added macros for polling mode detection. 57 Added use of configure-detected system default FD_SETSIZE value. 58 internal.h: added macros for internal threads modes detection. 59 Added MHD_OPTION_APP_FD_SETSIZE and MHD_FEATURE_FLEXIBLE_FD_SETSIZE. 60 daemon.c: moved processing and checking of app-provided listen socket. 61 MHD_start_daemon(): mark listen as UNIX based on available information. 62 MHD_start_daemon(): added stricter checks for bind() and listen() return 63 values. 64 MHD_start_daemon(): added check for epoll FD to fit fd_set for external 65 polling mode. 66 Implemented and documented MHD_OPTION_LISTEN_SOCKET followed by 67 MHD_INVALID_SOCKET. 68 Fixed ignored daemon port when MHD_OPTION_LISTEN_SOCKET or 69 MHD_OPTION_SOCK_ADDR are used as documented. 70 MHD_start_daemon(): further improved UNIX / IP socket detection. 71 Implemented new option MHD_OPTION_SOCK_ADDR_LEN. 72 MHD_start_daemon(): added check for app-provided socket to fit fd_set. 73 MHD_start_daemon(): fixed leaked listen socket when daemon start failed. 74 MHD_add_connection(): added more checks for correct members of sockaddr. 75 Timeout handling added detection of more conditions to process the data 76 without waiting. 77 MHD_quiesce_daemon(): fixed return value if already quiesced. 78 MHD_start_daemon(): reject INTERNAL_POLLING_THREAD if threads are disabled. 79 test_daemon: fixed to not skip the test if failed. 80 test_digestauth2: fixed order of the initial checks. 81 Improved daemon shutdown handling in external polling mode. 82 Unified and simplified fd_set filling. 83 Added new daemon flag MHD_USE_NO_THREAD_SAFETY and testing. 84 Officially support zero for MHD_OPTION_THREAD_POOL_SIZE. 85 test_upgrade: used sized send and receive, removed VLA, other improvements. 86 test_upgrade: implemented proper timeout detection and handling. -EG 87 88 September 2023 89 fix #7928: correct tutorial direntry. 90 proper fix for #7757. -CG 91 W32 VS projects: added perf_replies. 92 W32 VS projects: added .editorconfig. 93 perf_replies improvements for W32. 94 mhd_threads: muted compiler warning on W32. 95 mhd_threads: fixed check for error when starting a new thread on W32. 96 Renamed 'pid' -> 'tid' when used for threads. 97 mhd_str: fixed possible compiler and run-time sanitizers warnings. 98 Muted and fixed some compiler warnings. 99 W32 VS project: corrected compiler settings. 100 W32 VS: really muted run-time false warnings about data truncation. 101 examples/sessions.c: fixes. 102 Fixed missing <errno.h> includes. 103 Refactored threads support to handle platforms without "invalid" ID value. 104 Fixed MHD_CONNECTION_INFO_DAEMON: return master daemon. -EG 105 check rvalues from pthread_mutex_, MHD_add_response_header, 106 MHD_post_process in examples. 107 Theoretical use-after-free in test on error path. -CG 108 Do no use internal magic number if it is used by the remote client. 109 Refactoring: store "request target" original length. 110 Detect error earlier if request HTTP version is bad. 111 Added calculation of request headers total size. 112 Rewritten handling of exhaustion of memory pool when receiving. 113 tests: fixed compiler warnings, copy-paste error, added error reporting. 114 test_long_header: re-use the same port for all checks. 115 Control acceptance of LF as CRLF in chunked encoding in the same way as 116 in headers parsing. 117 Improved compatibility with old compilers. 118 Fixed more compiler warnings. -EG 119 120 Sun Sep 3 12:23:18 AM CEST 2023 121 Prevent queueing of responses if connection is not currently in the 122 access handler callback (which was always not allowed per API spec, 123 but is now met with an appropriate error response). Fixes #7757. -CG 124 125 August 2023 126 Improved CPU cores detection in perf_replies. -EG 127 128 July 2023 129 Added new tool perf_replies with automatic detection of number of available 130 CPU on system and for the program. -EG 131 132 June 2023 133 Bump version numbers as v0.9.77 was released on parallel branch. 134 Added test for MHD_get_version{,_bin} function and related macros. 135 base64 decoding: added more compact code version. 136 Refactoring: check whether memory pool block is resizeable. 137 Re-implemented parsing of the request line from scratch with strict 138 conformance with RFC 9110 and 9112 requirements. 139 Re-implemented parsing of the request headers and footers from scratch with 140 strict conformance with RFC 9110 and 9112 requirements. 141 Fuzzing tests: almost completely re-implemented. The new version is unified 142 and much easier to maintain. 143 Added new tests for folded headers. 144 Corrected HTTP error responses for clients. 145 connection: fixed pipelined requests processing. 146 Added checks for correct values specified for connection memory limits. 147 process new connection: fixed missing mutex unlock in error handling path. 148 W32 VS Projects: fixed code parsing by GUI. 149 Focused all read-buffer grows in a single point, related improvements. -EG 150 151 May 2023 152 Improved portability of boostrap (and autogen.sh) 153 Muted more compiler warnings in configure. 154 Tests: updated to support new libcurl APIs and fixed deprecation 155 warnings with new versions (the old versions are supported still). 156 Tests: minor and cosmetic fixes and improvements. 157 Tests: compiler warnings fixes. 158 configure: bump gettext version. 159 Tests: fixed build with C89 compilers. 160 Tests: fixed tests on Darwin 22.x (Ventura). 161 Tests: redesigned one tests group to avoid stress-testing of the OS. 162 configure: improved portability for exotic platforms. 163 examples: removed non-portable functions, added some checking, 164 fixed compiler warnings, fixed erroneously commented out code. 165 configure: fixed detection of __FUNCTION__ magic macro. 166 Unified function name magic macros usage in code. 167 W32 VS projects: supported ARM and ARM64. 168 Fixed compiler warning on x32. 169 Some minor fixes for W32 VS compilation. -EG 170 171 172 April 2023 173 Implemented and used new function MHD_pool_deallocate(). 174 Updated libtool fixes. 175 Removed some autotools files from git. 176 Added autoconf patches and fixes. 177 {md5,sha256}_ext.c: fixed processing of initialisation error with NULL 178 handler. -EG 179 180 March 2023 181 Upgraded TLS: fixed inefficient communication. 182 Upgraded TLS: use more available memory for pumping the data. -EG 183 184 Web 29 Mar 2023 20:56:00 CEST 185 Bumped version as the hotfix was released based on the separate branch. -EG 186 187 March 2023 188 configure: reordered checks for compiler flags. 189 configure: fixed checks for tsearch() and related changes. 190 Makefile: fixed build with 'make' without nested vars support. 191 configure: fixed compiler warnings. 192 libcurl.m4: patched to fix compiler warning. 193 configure: internal fixes, compiler warning fixes, cosmetics, better 194 POSIX compatibility, fixed compatibility with old autoconf. 195 Upgraded TLS: warn if emergency buffer is used. -EG 196 197 Sun Feb 26 05:49:30 PM CET 2023 198 Fix potential DoS vector in MHD_PostProcessor discovered 199 by Gynvael Coldwind and Dejan Alvadzijevic (CVE-2023-27371). -CG 200 201 February 2023 202 epoll: immediately notice when other side closes the socket, instead of 203 waiting for timeout. -CG 204 205 December 2022 206 Refactored cookies parsing. 207 Always close connection after reply if both Content-Length and chucked are 208 used. This is specified by RFC. 209 Added new daemon option MHD_OPTION_CLIENT_DISCIPLINE_LV with more detailed 210 control of accepted/rejected non-standard requests. 211 Added new M4 helper macro. 212 configure: used better detection of some functions when cross-compiling. 213 configure: try to detect whether eventfd is enabled. 214 Compiler warning fixes. 215 Improved reported strings in tests. -EG 216 217 November 2022 218 connection: refuse requests with unsupported Transfer-Encoding. 219 connection: reject or log requests with both chunked encoding and 220 Content-Length. 221 tests: fixed checking response headers as null-terminated string. 222 Some tests fixes. 223 configure: check fixes. 224 Refactored user-poison: minimized scope of non-sanitized code. 225 digestauth: avoided malloc() repeating by using the new function. 226 MHD_get_version_bin(): added new function. 227 test_parse_cookies: rewritten. -EG 228 229 October 2022 230 Reworked HTTPS tests. Removed hardcoded TLS version and ciphers, updated 231 self-signed certificate. 232 Fixed delayed call of connection notification callback in 233 thread-per-connection mode. 234 Fixed delayed new connection notification in thread-per-connection mode. 235 Minor internal code improvements. 236 Added handling of "DEBUG" preprocessor macro as an alias of "_DEBUG". 237 TLS initialisation: re-implemented. New implementation trying to use 238 "libmicrohttpd" system-wide GnuTLS configuration by default with fallbacks 239 to generic system-wide GnuTLS configuration and default GnuTLS 240 configuration. 241 New daemon option to use addition to default configuration instead of 242 specifying full configuration string. 243 Added relevant tests for GnuTLS initialization. 244 Added reporting of failed part of GnuTLS configuration string. 245 Added MHD_FEATURE_DEBUG_BUILD value. 246 Implemented internal protection from some wild data hypothetically reported 247 by accept4(). 248 Internal refactoring. 249 Prevented sending "100 continue" if request has no body or if any part of 250 request data has been received. 251 Reworked handling of situation when app just partially processed the data: 252 if any data was processed then zero timeout if used for polling sockets, 253 if no data was processed then callback in not called until the new data 254 arrived. 255 Fixed handling of various errors conditions detected in requests. 256 Added test with Content-Length broken value in request. 257 test_head: added check for excess data in reply 258 Improved epoll connection handling. 259 Fuzzing tests: fixed CPPFLAGS. 260 configure: do not pass AM_TESTS_ENVIRONMENT directly. 261 configure: added summary message about heavy and fuzzing tests 262 test-suite: marked some tests as "very heavy" tests 263 configure: improved check for asserts. -EG 264 265 September 2022 266 Added testing of userdigest and userhash calculations. 267 Implemented SHA-512/256 from scratch. 268 Digest Auth: implemented SHA-512/256 support, added 269 MHD_FEATURE_DIGEST_AUTH_SHA512_256 and relevant tests. 270 Made all algorithms (MD5, SHA-256, SHA-512/256) optional with ability 271 to remove by configure parameter. 272 Digest Auth: internal refactoring and improvements. 273 configure: minor improvements. 274 Fixed initialisation of very old GnuTLS versions. 275 Replace public domain MD5 implementation with the new implementation 276 written from scratch. 277 MD5, SHA-256, SHA-512/256: various code improvements, special versions for 278 compact code. 279 Digest Auth: changed internal algorithm for re-use of nonce-nc slot. 280 Digest Auth: used weak pseudo-random generators to avoid slot clashes. 281 Implemented optional ability to use GnuTLS functions for MD5 and SHA-256 282 calculations. 283 Fixed harmless unwanted extra data processing resulting in triggering of 284 the assert. 285 Added testing of HEAD requests. 286 Minor internal changes. 287 Fixed compiler warnings for compact code version. 288 Muted compiler warnings with clang. 289 Configure: more workarounds for clang on W32 with incorrect headers. 290 Removed long-unused "gauger" from tests. 291 Fixed compiler warnings in test. 292 test_add_conn: added reasonable limits. -EG 293 294 August 2022 295 Added testing of userhash parameter parsing. 296 Added testing of the auth type headers in one request. 297 Warn in log if random data has not been initialised. 298 Digest Auth: improved response header in RFC2069 mode. 299 Added more string processing internal functions. 300 Digest Auth: added new option MHD_OPTION_DIGEST_AUTH_NONCE_BIND_TYPE to 301 control nonces generation. 302 Increased testing for Digest Auth. 303 Digest Auth: do not use reproducible nonces generation by default. 304 Minor correction for auth headers processing. 305 Digest Auth: internal refactoring. 306 Digest Auth: added algorithm value to username info (required for userhash 307 values). 308 Digest Auth: added new public functions for userhash and userdigest 309 calculations. -EG 310 311 July 2022 312 Digest Auth: internal optimisations and refactoring, digest_auth_check 313 almost completely rewritten. 314 Digest Auth: removed use of VLA. 315 Digest Auth: added support for username in extended notation and test 316 for extended notation. 317 Digest Auth: implemented userhash support and tests for extended notation. 318 MHD_add_response_entry(): refactoring 319 Digest Auth: implemented DAuth response function 320 MHD_queue_auth_required_response3() from scratch. Removed old 321 implementations, old functions converted to wrappers for the new function. 322 Digest Auth: added new group of tests. 323 Digest Auth: added related MHD_FEATURES_* values. 324 Digest Auth: added detection of the algorithm used by the client and 325 use specified algorithm if allowed by application. 326 Configure: cosmetics and reports improvements, control static and shared 327 enablement by --enable-build-type=. 328 Added new daemon option MHD_OPTION_DIGEST_AUTH_RANDOM_COPY and tests. 329 Digest Auth: implemented support for old RFC 2069 (if allowed by app) and 330 tests for RFC 2069. 331 Internal refactoring: moved all request-related connection struct members 332 to dedicated struct. The same for reply-related struct members. 333 Implemented support for both Basic and Digest headers in the same 334 request. -EG 335 336 June 2022 337 Fixed compiler warnings in main code and examples. 338 Added error checking in examples. 339 Added test for parsing auth headers. 340 Improved parsing of auth headers. 341 Added more internal functions for quoted string processing. 342 Added test for quoting string processing. 343 Digest Auth: internal optimisations. 344 Basic Auth: fixed handling of realms with slashes and/or double quotes. 345 Digest Auth: fixed use of possible maximum client nonce length as maximum 346 server nonce length. Reduced size of internal arrays. 347 Basic Auth: new function MHD_queue_basic_auth_fail_response3() with support 348 for RFC 7617. 349 Basic Auth: added new function MHD_basic_auth_get_username_password3() with 350 more details about username and password. Technically allow binary zero in 351 username and in password. 352 Fixed data races when closing upgraded connection. 353 Replaced public domain Base64 decoder with the new implementation written 354 from scratch. The new implementation has very precise checks for the input 355 data. 356 Added new test for Base64 decoding. 357 Updated examples to use new Basic Auth functions. 358 Fixed and improved postprocessor tests. 359 Ported test to non-VLA compilers. 360 Added configure parameter --enable-compact-code. 361 Removed duplication of "Connection: upgrade" header. Patch by Alexander 362 Irion. 363 Configure: removed some unneeded compiler flags. 364 Digest Auth: improved RFC match (qop value caseless match), check 365 parameters length validity before checking the values validity, correctly 366 compare URLs with binary zeros, check URL arguments only in the same order 367 as specified in DAuth header. 368 Added internal functions for percent-decoding and tests for 369 percent-decoding. 370 Added internal function for hex to bin decoding, tests for hex<->bin 371 decoding. 372 Digest Auth: added new function MHD_digest_auth_get_request_info3() and 373 MHD_digest_auth_get_username3() with detailed information about DAuth 374 request. -EG 375 Fixed memory leaks in tests. 376 Fixed wrong array size for Digest Auth. -CG 377 378 May 2022 379 Improved public doxy. 380 Digest Auth: fixed missing mark on 'nc' value as 'used'. 381 Digest Auth: added internal checks for unrealistically high values. 382 Digest Auth: added check for correct values from application. 383 Digest Auth: nonce timestamps changed to milliseconds to lower conflict 384 probability. 385 Digest Auth: implemented management nonce-nc map array slots so old 386 entries are removed safely while trying to avoid to remove the new entries. 387 configure: added 'debugger' build type. 388 Added more tests for cookies parsing. 389 Digest Auth: use nonce-nc map arrays with locks in master daemon only 390 so works can re-use the nonces and nc information. 391 MHD_set_connection_option(): reduced scope for the lock. 392 Fixed leak of mutexes when daemon creation failed and when closing daemon 393 with thread pool. 394 Digest Auth: fixed stale nonce result value ambiguity. 395 Digest Auth: added special check for fabricated nonces. 396 Added new functions MHD_digest_auth_check3() and 397 MHD_digest_auth_check_digest3() with detailed result of the checks. 398 Added return NULL MHD_CONNECTION_INFO_CLIENT_ADDRESS when information is 399 not available. 400 Improved internal handling of non-IP connections (UNIX sockets or pipes) 401 when processing the client address. 402 Fixed compiler warnings. 403 Increased testing of cookies parsing. 404 Completely re-written cookies parsing. The new code follow RFC 6265. 405 Made cookies parsing functionality optional, can be disabled by configure. 406 Configure: added more warning flags. 407 Configure: internal improvements. 408 Globally changed '#if HAVE_SOMETHING' to '#ifdef HAVE_SOMETHING'. 409 Enabled more compiler warnings in W32 projects. 410 Fixed MHD functionality with blocking sockets. Patch by Kolja Nowak. 411 Moved some macros and declaration to new specialised headers: basicauth.h 412 and digestauth.h. 413 Added new function to process quoted strings. 414 Digest Auth: reworking support for multiple digest algorithms. 415 Response processing: better handle unrealistic but broken situation. 416 Basic and Digest Auth: completely reworked headers parsing, unified code. 417 Added new autoconf macros. 418 Configure: added more workarounds for clang. 419 Fixed possible use of uninitialised variable. 420 Added new test for Basic Auth. 421 Some code readability improvements. -EG 422 423 April 2022 424 Added autoconf macro for checking compiler parameter/flag. 425 Improved -fvisibility compiler flag support detection in configure. 426 Fixed compiler warnings. 427 Moved fixed libtool-specific flags to Makefile from configure. 428 Configure: added reporting of final compiler/linker flags. 429 Fixed ignored user linker flags when building library binary. 430 Improved makefiles dependency specification. 431 Implemented --enable-build-type=TYPE configure parameters for ready-to-use 432 configuration sets (defaults). 433 Separated internal types for request headers and response headers. 434 Fixed many unneeded drops of 'const' qualifier, converted some pointers 435 to 'const'. 436 Added use of _MHD_EXTERN with all external function definitions. 437 Refactored response creation functions. 438 Added new function MHD_create_response_from_buffer_static() to avoid 439 unwanted dropping of 'const' when application is using static strings. 440 Added new API function MHD_create_response_from_buffer_copy(). 441 Public doxy improvements. 442 Improved handling of TLS backends for libcurl when testing HTTPS. 443 Updated TLS certificates for tests and examples. New certificates 444 were generated with SAN fields to match actual requirements. 445 Fixed old style function definitions in examples. 446 Tuned compiler warning flags. 447 Fixed many preprocessor macros (removed space before bracket). 448 Fixed printf() format specifications in examples. 449 Removed non-literal strings for printf in examples. 450 Improved portability of examples. 451 Fixed unaligned access via sockaddr_in pointers. 452 Fixed unaligned access in MHD_get_connection_info() and 453 MHD_get_daemon_info(). 454 Compiler warning fixes. 455 Changed: any negative number returned by response data generation 456 callback function is treated as an error. 457 Fixed setting custom connection timeout value for thread-per-connection 458 mode. 459 Fixed short (lees then one second) busy-waiting when connection is about 460 to expire by switching to milliseconds accuracy instead of seconds. 461 Added new functions MHD_get_timeout64(), MHD_get_timeout64s(), 462 MHD_get_timeout_i(). 463 Added some checks for possible value trim due to width conversion. 464 Digest Auth: continuation of refactoring, optimisations. 465 Digest Auth: do not use nonces provided by the client if they were not 466 generated previously by MHD. -EG 467 468 March 2022 469 Added internal check for suitability of used response. 470 Improved doxy. 471 Improved handling of application-provide "Content-Length" header. 472 Internally separated "Icy" flag from the response code. 473 Fixed Address Sanitizer unpoison of memory when memory pool is destroyed. 474 Improved log messages. 475 Added more checks for "Upgrade" handling. 476 Better internally separated response type handling: 477 headers only without 478 body-specific headers, body-specific headers without body 479 (Content-Length/Transfer-Encoding), 480 all headers with body. 481 Blocked MHD_SIZE_UNKNOWN value for buffer-based responses. 482 Significantly improved doxy for MHD_queue_response(). 483 Added new function MHD_create_response_empty() 484 Fixed compiler flags for UBsan in configure. 485 Added new option for "--enable-sanitizers=" parameter. 486 Improved autoconf macros. -EG 487 488 January 2022 489 Tuned automake options. 490 Fixed compiler warning in examples. 491 Fixed use of initialised variable in tests. 492 Removed unused autotools files. 493 .gitignore: cleanup and update. 494 Autotools: always let user override build flags. 495 Moved 'po' files to separate directory. 496 Fixed missing include file in docs. 497 Fixed 'make distcheck'. 498 Fixed use on GNU/kFreeBSD. 499 Fixed HTTP/1.1 or 1.0 selection in tests. 500 Other tests improvements and fixes. 501 Digest Auth: changed "md5" / "sha-256" to "MD5" / "SHA-256" to better 502 match RFC (while clients should use caseless matching). 503 Initial digest auth refactoring, reject invalid input. 504 Global rename of callback parameter 'con_cls' -> 'req_cls'. 505 Digest auth tests improvements and fixes. 506 Added test for parallel digest auth requests. 507 Minor autoconf macros fixes. -EG 508 509 December 2021 510 configure: fixed unwanted output on Fedora. 511 configure: clarified licence message. 512 Doxy corrections and improvments. -EG 513 514 Sun 26 Dec 2021 20:30:00 MSK 515 Releasing GNU libmicrohttpd 0.9.75 -EG 516 517 December 2021 518 Fixed Makefile warning on MinGW. 519 Fixed compiler warning on MinGW. 520 Fixed "configure" portability (for NetBSD). 521 MSVC project cosmetics. 522 MSVC fixed project to fix linker warning. 523 Fixed compiler warning on some platforms. 524 Further improved test_client_put_stop to get stable results on all 525 platforms. 526 Added workaround for platforms (like OpenBSD) where system monotonic clocks 527 may jump forward and back. 528 Added more checks in test_large_put, increased timeout (was too small for 529 this test). -EG 530 531 Sun 19 Dec 2021 18:30:00 MSK 532 Releasing GNU libmicrohttpd 0.9.74 -EG 533 534 December 2021 535 Fixed doxy for MHD_suspend_connection(). 536 Some code improvements for new test test_client_put_stop. 537 Added special log message if thread creation failed due to system limits. 538 Fully restructured new_connection_process_() to correctly handle errors, 539 fixed missing decrement of number of daemon connections if any error 540 encountered, fixed app notification of connection termination when app has 541 not been notified about connection start, fixed (highly unlikely) reset of 542 the list of connections if reached daemon's connections limit. 543 configure: fixed some compiler warnings reported in config.log. 544 Fixed tests on FreeBSD to support system-limited rate of RST packets and 545 'blackhole' system setting. -EG 546 Fixed tests for libmagic to really use libmagic in examples. -CG 547 Used tricks in code formatting to workaround uncrustify bugs. 548 configure: improved compatibility with various shells. 549 configure: added selective enable of sanitizers. 550 Fixed compatibility with old GnuTLS versions. 551 Fixed tests compatibility with old libcurl versions. 552 Fixed busy-waiting in test_timeout (fixed CPU load spikes in the test). 553 test_https_time_out: check rewritten, previously it is was no-op. 554 test_upgrade{,_large}: fixed passing of socket value to GnuTLS on W32. 555 Simplified Makefile for HTTPS tests. 556 Added detection of old broken GnuTLS builds (on RHEL6 and clones) and 557 disabled some tests broken with these builds. 558 Muted compiler warnings with old libcurl versions. 559 Reworked dlltool support: added support for weakened oversimplified 560 half-broken llvm-dlltool 561 Silenced MS lib tool warning and MS lib tool invocation. 562 Added Makefiles rules for automatic regeneration of all required files if 563 anything is missing. 564 Added Makefile silent rules support for W32 RC and W32 static libs. 565 Added local patches for autotools (mainly for libtool) to build MHD 566 correctly on modern MinGW64/Clang. 567 Updated HTTP headers macros from registry. -EG 568 569 November 2021 570 Clarified comments and doxy for MHD_str* and related tests. 571 MHD_uint32_to_strx(): rewritten for readability and minor optimization, 572 used indexes instead of pointers. 573 Documented in doxy how to use MHD_AccessHandlerCallback. 574 mhd_sockets: added more network error codes. 575 W32 socket pair: set TCP_NODELAY to avoid unwanted buffering and delays. 576 Additional doxy fixes in microhttpd.h. 577 Fixed blocking sockets setting in tests and examples for W32. 578 Added checks for fcntl() results in tests and examples. 579 Added series of tests based on simple HTTP client implementation developed 580 for testing of MHD. 581 Renamed 'early_response' connection flag to 'discard_request' and reworked 582 handling of connection's flags. 583 Clarified request termination reasons doxy, fixed reporting of 584 MHD_REQUEST_TERMINATED_READ_ERROR (previously this code was not really used 585 in reporting). 586 Enforce all libcurl tests exit code to be zero or one. 587 Rewritten client upload processing: removed redundant checks, fixed 588 skipping of chunk closure when not data is not received yet, fixed skipping 589 of the last LF in termination chunk, handle correctly chunk sizes with more 590 than 16 digits (leading zeros are valid according to HTTP RFC), fixed 591 handling of CRCR, LFCR, LFLF, and bare CR as single line delimiters, report 592 error when invalid chunk format is received without waiting to receive 593 (possibly missing) end of the line, reply to the client with special error 594 if chunk size is too large to be handled by MHD (>16 EiB). 595 Added error reply if client used too large request payload (>16 EiB). 596 Fixed return value for MHD_FEATURE_AUTOSUPPRESS_SIGPIPE on W32, now it 597 returns MHD_YES as W32 does not need sigpipe suppression. 598 configure: reordered and improved headers detection. Some headers require 599 other headers to be included before, now configure supports it. 600 Added missing ifdef guard for <stdbool.h>. 601 mhd_sockets: reordered includes for better compatibility. 602 Some code readability and formatting improvements. -EG 603 604 October 2021 605 Added test family test_toolarge to check correct handling of the buffers 606 when the size of data is larger than free space. 607 Fixed missing updated of read and write buffers sizes. 608 Added detection and use of supported "noreturn" keyword for function 609 declaration. It should help compiler and static analyser. 610 Added support for leak sanitizer. 611 Fixed analyser errors on W32. 612 Partially reworked memory allocation from the pool, more robust 613 implementation, always track read and write buffers. 614 Added custom memory poisoning in memory pool with address sanitizer. 615 Added missing update of the read buffer size. 616 Addition for doxy for new behaviour of MHD_del_response_header(). 617 Added two tests with non-standard symbols in requests. 618 Removed double close of connection with error in headers processing. 619 Respond to the client with error if chunked request has broken chunked 620 encoding as required by HTTP RFC instead of just closing the connection. 621 Fixed request headers processing. Do not recognize bare CR as end of line. 622 Fixed processing of CRCR, bare CR, LFCR, and LFLF as end of the line for 623 request chunked encoding. Now only CRLF or bare LF are recognized as end 624 of line. 625 Added Lawrence Sebald to the AUTHORS file (iovec-based responses). 626 Check for PAGESIZE and PAGE_SIZE macros and check whether they can be used 627 for static variable initialization. 628 Include "MHD_config.h" before all other includes to set macros required to 629 be set before standard includes. 630 Chunked response: abort with error if application returns more data than 631 requested. 632 Monotonic clock: use only native clock on W32 as all other clocks are just 633 wrappers. 634 W32: fixed builds with MSVC, added projects for VS2022, added MSVC 635 universal project that use latest available toolset, use C17 if supported. 636 Chunked response: fixed calculation of number of bytes left to send. 637 microhttpd.h: doxy clarifications for sockets polling. 638 Updated HTTP statuses, methods, and headers names from the registries. 639 Further improved doxy for MHD_add_response_header(). 640 A few comments improvements and clarifications. 641 Added internal connection's flag indicating discard of the request. -EG 642 Websockets update by David Gausmann. -DG 643 Fixed reported value for MHD_CONNECTION_INFO_CONNECTION_TIMEOUT. 644 Minor code readability improvements in MHD_set_connection_option(). 645 Improved doxy for MHD_get_timeout(). 646 Memorypool: minor code improvements. -EG 647 648 September 2021 649 Improved system includes headers detection and usage. Removed unused 650 headers detection. 651 Added indirect calculation of maximum values at compile time by 652 using types size detection. These values are used only to mute 653 compiler warnings. 654 Fixed pre-compiler errors if various *_MAX macros defined with 655 non-digits symbols not readable for pre-compiler. 656 Limit number of used CPU cores in tests to 6, unless heavy tests are 657 enabled. 658 Disabled parallel tests with libcurl if heavy tests are enabled. 659 configure: removed '--enable-sanitizer' and added '--enable-sanitizers' 660 parameters. Added testing for supported sanitizers and enabling only 661 supported sanitizers. 662 Added support for run-time sanitizers settings for tests when 663 sanitizers are enabled. 664 Added support for undefined behavior sanitizer without run-time library. 665 Fixed various undefined behavior sanitizer detected errors, improved 666 portability. 667 Fixed how bitwise NOT is used with enum, fixed portability. 668 microhttpd.h: changed macros MHD_CONTENT_READER_* to use ssize_t. 669 test_postprocessor: added more check, improved error reporting, added 670 new test data. 671 postprocessor: fixed undefined behavior (memcpy(), memmove() with zero 672 size and NULL pointer). 673 Updated copyright year in W32 DLLs. 674 postprocessor: fixed empty key processing. 675 test_postprocessor: added tests with hex-encoded values. 676 postprocessor: fixed incomplete processing of the last part of hex-encoded 677 value if data was broken into certain sized pieces. 678 Used type specifiers for printf() from inttypes.h to improved compatibility 679 with various run-time libs. Fallback to standard values if type specifiers 680 are not defined. 681 Added detection of used run-time library (MSVCRT/UCRT) on W32. 682 testcurl: fixed incorrect case-insensitive match for method name. Method 683 name must be checked by using case-sensitive match. 684 microhttpd.h: clarified some doxy descriptions. 685 Prevented potential double sending of error responses. 686 Fixed application notification with MHD_REQUEST_TERMINATED_COMPLETED_OK 687 when error response has been sent (MHD_REQUEST_TERMINATED_WITH_ERROR is 688 used). 689 Avoid trying to send error response if response is already being sent. 690 Improved log error message when error response is processing. -EG 691 692 August 2021 693 Silently drop "keep-alive" token from response "connection" header, 694 "keep-alive" cannot be enforced and always enabled if possible. 695 Further improved doxy for MHD_add_response_header(). 696 Added detection of the "Date:" header in the response headers set by 697 app at response forming time. 698 Disallow space in response header name, allow tab in response header 699 value. 700 Added internal MHD_uint8_to_str_pad() function. 701 Used internal MHD_uint8_to_str_pad() in datestamp generation function. 702 Added detection and reporting of incorrect "Upgrade" responses. -EG 703 Fixed short busy waiting (up to one second) when connection is going 704 to be closed. -AI 705 Minor improvement for test_callback, test_get_chunked 706 Fixed chunked responses with known size. 707 Added two more tests for chunked response. 708 Fixed chunked responses with predefined data (without data callback). 709 Fixed calculation of the buffer size for the next response chunk. 710 Completely rewritten reply header build function. The old version 711 had several levels of hacks, was unmaintainable, did not follow 712 HTTP specification in details; fixed used caseless header matching 713 where case-sensitive matching must be used; removed two passes of 714 header building. New version use clear logic and can be extended 715 when needed. 716 Changed behaviour: "Connection: keep-alive" is not being sent 717 for HTTP/1.1 connection (as per HTTP RFC). 718 test_get_chunked: fixed error reporting. 719 HTTPS tests: fixed memory leaks if function failed. 720 libcurl tests: improved handling of curl multi_*. 721 Added two tests for correct choice of "Keep-Alive" or "Close". 722 Simplified Makefile for testcurl. 723 Fixed select() error handling in tests. 724 microhttpd.h: minor macro formatting 725 Changed behaviour: if response size is unknown and chunked encoding is 726 allowed, chunked encoding is used even for non-keep-alive connection as 727 required by HTTP RFC. 728 Added two more tests for chunked replies. 729 Simplified keepalive_possible(); added new value for MHD_ConnKeepAlive, 730 added third state "Upgrade". 731 Changed behaviour: used HTTP/1.1 replies for HTTP/1.0 requests as 732 required by HTTP RFC. HTTP/1.0 reply still can be enforced by response 733 flag. 734 Added more doxy for MHD_ResponseFlags, added new names with the same 735 values as old names: MHD_RF_HTTP_1_0_COMPATIBLE_STRICT and 736 MHD_RF_HTTP_1_0_SERVER. 737 Added new value MHD_RF_SEND_KEEP_ALIVE_HEADER to enforce sending of 738 "Connection: keep-alive" even for HTTP/1.1 clients when keep-alive is 739 used. 740 test_get_close_keep_alive: added more combinations of parameters to 741 check. 742 Added separate flag for chunked response in connection instead of 743 reusing the same flag as for chunked request. 744 Added new connection's flag "stop_with_error". 745 Fixed empty first line processing: the request could be not processed 746 unless something else kicks next processing the same connection again. 747 Added new connection states: MHD_CONNECTION_REQ_LINE_RECEIVING, 748 MHD_CONNECTION_FULL_REQ_RECEIVED, MHD_CONNECTION_START_REPLY to 749 simplify states logic. 750 Changed write buffer allocation logic: as connection buffer size is 751 known and fixed, use initially use full buffer for writing and reduce 752 size of part used for writing if another allocation from the same 753 buffer needs to be done. Implemented helper function to automatically 754 reduce the size of read or write part to allocate buffer for other 755 needs. 756 Added define of NDEBUG if neither _DEBUG nor NDEBUG are defined. 757 As accepted sockets inherit non-blocking flag from listening socket 758 on all platform except Linux, track this state to use less number 759 of syscalls. 760 Fixed compiler and static analyser warnings. 761 Moved HTTPS tests helper file to the HTTPS tests directory. 762 Minor Makefiles cleanup. 763 Added support for new monotonic clock ids. 764 Added new internal monotonic clock function with milliseconds accuracy. 765 Fixed support of custom connection timeout in thread-per-connection mode. 766 Added more error checking to test_timeout. 767 microhttpd.h: removed duplicated macro. 768 Refined timeouts handling. Switched from seconds resolution to milliseconds 769 resolution, added automatic detection and support of low-resolution system 770 clock to avoid busy-waiting at connection expiration. Added log message 771 for too large timeout period (> 146 million years) with trim to supported 772 values. -EG 773 774 Wed 04 Aug 2021 06:56:52 PM CEST 775 Introduce new MHD_CONNECTION_INFO_HTTP_STATUS. -CG 776 777 July 2021 778 Added automatic response flags with detection when response 779 is being formed. 780 Added special processing for response "Connection" headers, combined 781 multiple "Connection" headers into single header. 782 Restructured MSVC project files. 783 Changed MSVC project defaults to Vista+ (WinXP is still supported). 784 Fixed copy-paste error in mhd_aligh.h, added support for MSVC. 785 Added internal function for printing hex and decimals numbers. 786 Reply chunked body handling fixes, used new internal functions 787 instead of snprintf(). 788 Added automatic response flag when app sets chunked encoding header. 789 New internal function for chunked reply footer forming. Unification with 790 reply header forming function just over-complicated things and made 791 function hardly maintainable. 792 Added new function MHD_get_reason_phrase_len_for(), related tests and 793 updated scripts for response phrases. 794 Added more tests for chunked replies. 795 Added function to reset connection state after finishing processing of 796 request-reply to prepare for the next request. 797 Added even more tests for chunked replies. 798 Added internal function for printing uint64_t decimal numbers. -EG 799 800 June 2021 801 Tests: implemented checking of response footer. 802 Fixed loss of incoming data if more than half of buffer is 803 used for the next request data. 804 Fixed completely broken calculation of request header size. 805 Chunked response: do not ask app callback for more data then 806 it is possible to process (more than 16 MBytes). 807 Check and report if app used wrong response code (>999 or <100) 808 Refuse to add second "Transfer-Encoding" header. 809 HTTPS tests: check whether all libcurl function succeeded. 810 HTTPS tests: implemented new detection of TLS backend. 811 HTTPS tests: fixed tests with new TLS defaults (SSL forbidden). 812 Implemented detection of basic HTTP methods, fixed wrong 813 caseless matching for HTTP method names. 814 MHD_create_response_*() functions: improved doxy. 815 MHD_add_response_header: added detailed comment about automatic 816 headers. 817 Do not allow responses with 1xx codes for HTTP/1.0 requests. 818 Fixed used order of headers: now user response headers are used in 819 the same order as was added by application. 820 Added new internal function MHD_get_response_element_n_(). 821 Added detection of more compiler built-ins for bits rotations. 822 Minor optimisation of caseless strings matching. 823 Added MHD_str_remove_token_caseless_() function and tests. 824 Added MHD_str_remove_tokens_caseless_() function and tests. -EG 825 826 May 2021 827 Doxy description clarifications for MHD_get_timeout() and related 828 functions. 829 Added MHD_create_response_from_buffer_with_free_callback_cls(). 830 Added SHA-1 calculation (required for WebSockets). 831 Added new internal header mhd_aligh.h for checking alignment of 832 variables. 833 Fixed SHA-256 and MD5 calculation with unaligned data. 834 Added tests for hashes with unaligned data. 835 Used compiler built-ins for bits rotations. 836 Added detection of HTTP version at early stage. 837 Added early response of unsupported HTTP version. 838 Fixed wrong caseless matches for HTTP version strings. 839 Added calculation of error responses at compile time (avoided 840 repeated strlen() for known data). -EG 841 842 April 2021 843 New test for reply chunked encoding. -EG 844 845 Mon 26 Apr 2021 02:09:46 PM CEST 846 Importing experimental Websocket support by David Gausmann. -CG 847 848 Sun 25 Apr 2021 14:00:00 MSK 849 Releasing GNU libmicrohttpd 0.9.73. -EG 850 851 Sat 24 Apr 2021 23:00:00 MSK 852 Fixed build with Clang and Visual Studio. 853 MSVS project files updated. 854 Enabled bind port autodetection with MSVS builds. -EG 855 856 Fri 23 Apr 2021 14:27:00 MSK 857 Fixed build without TLS lib. 858 Fixed build without system poll() function. 859 Fixed compiler warnings on 32-bit platforms. 860 Fixed various compiler warnings. -EG 861 862 Thu 22 Apr 2021 12:32:00 MSK 863 Fixed some typos. 864 Force disable TCP_CORK, TCP_NOPUSH, and TCP_NODELAY before switching 865 connection to "upgraded" mode. 866 Improved portability of the test-suite for upgraded connections. -EG 867 868 Tue 20 Apr 2021 17:11:00 MSK 869 Disabled NLS by default in configure. -EG 870 871 Mon 19 Apr 2021 18:58:00 MSK 872 Fixed testzzuf/test_put_chanked to correctly use MHD. 873 Added internal error code for TLS errors. 874 Added all missing messages to the .pot file. 875 Detect more types of errors for receiving data and report 876 error description in the MHD log. 877 Added support for ALPN on TLS connections if supported by 878 used TLS library. -EG 879 880 Sun 18 Apr 2021 20:47:00 MSK 881 Removed dead code. 882 Limited iov-backed responses size to SSIZE_MAX as limited by 883 system calls. 884 Report error message in MHD log for send errors. -EG 885 886 Sat 17 Apr 2021 18:50:00 MSK 887 Unified upgrade test behavior for all platforms. 888 Some code simplification and unification. 889 Compiler warning (false positive) fixed. -EG 890 891 Fri 16 Apr 2021 17:58:00 MSK 892 Used run-time value if IOV_MAX if available. 893 Fixed portability of error handling for sending functions. 894 Detect pipes/unix sockets on fly and do not use TCP/IP specific 895 functions with them. 896 Fixed support of UNIX sockets on non-Linux kernels. -EG 897 898 Fri 16 Apr 2021 10:23:39 AM CEST 899 Detect if a socket is a UNIX domain socket and do not try to play 900 with TCP corking options in this case (avoids useless failed 901 syscalls). -CG 902 903 Thu 15 Apr 2021 18:56:00 MSK 904 Fixed configure '--enable-sanitizer' parameter. 905 Stopped pushing of partial responses when limited by system maximum size 906 for sendmsg(). -EG 907 908 Web 14 Apr 2021 22:20:00 MSK 909 Fixed: use sendmsg() in POSIX-compatible way, do not try to send more 910 than IOV_MAX elements per single call. -EG 911 912 Sun 11 Apr 2021 15:44:00 MSK 913 Updated test TLS certificates to not expired modern versions, restored 914 HTTPS examples compatibility with modern browsers. 915 TCP_NODELAY is not pre-enabled for HTTPS connection as it actually 916 does not speed-up TLS handshakes on moders OSes. -EG 917 918 Thu 01 Apr 2021 21:29:46 MSK 919 Fixed MD5 digest authorization broken when compiled without variable 920 length arrays support (notably with MSVC). 921 Fixed and muted compiler warning. 922 Deeper test with zzuf if configured with --enable-heavy-tests. 923 Removed run-check of assert() in configure to avoid core dumps. -EG 924 925 Thu 01 Apr 2021 17:46:00 MSK 926 Added new function MHD_run_wait() useful for single-threaded applications 927 without other network activity. 928 Added tests for the new function. -EG 929 930 Wed 17 Mar 2021 20:53:33 MSK 931 Re-factored startup log parameters processing. Warn user if wrong logger 932 could be used potentially. 933 Added headers doxy with information about minimal MHD version when 934 particular symbols were introduced. 935 Added new daemon option to indicate SIGPIPE handling by application for 936 daemons being run in application thread. -EG 937 938 Wed 24 Feb 2021 19:23:00 MSK 939 SIGPIPE-related macro minor refactoring for readability. 940 Added new response iov function (and related framework), based on the patch 941 provided by Lawrence Sebald and Damon N. Earp from NASA. -EG 942 943 Thu 04 Feb 2021 06:41:34 PM CET 944 Fix PostProcessor to always properly stop iteration when application callback 945 tells it to do so. -CG 946 947 Sun 24 Jan 2021 21:30:00 MSK 948 Added '--enable-heavy-tests' configure parameter. 949 Minor configure.ac and Makefiles fixes. -EG 950 951 Tue 19 Jan 2021 17:59:00 MSK 952 Fixed compatibility with autoconf. 2.70 953 Updated M4 macros. -EG 954 955 Wed 06 Jan 2021 08:39:58 PM CET 956 Return timeout of zero also for connections awaiting cleanup. -CG 957 958 Tue 29 Dec 2020 15:39:00 MSK 959 Improved speed of TLS handshake by pre-enabling TCP_NODELAY. -EG 960 961 Mon 28 Dec 2020 21:36:00 MSK 962 Releasing libmicrohttpd 0.9.72. -EG 963 964 Mon 28 Dec 2020 09:37:00 MSK 965 Completely reworked and rewritten TCP_CORK, TCP_NOPUSH, TCP_NODELAY and 966 MSG_MORE handling. Reduced number of sys-calls, fixed portability for 967 FreeBSD, OpenBSD, NetBSD, Darwin, W32, Solaris. 968 Removed usage of gnutls_record_cork() as it fully blocks stream until 969 final block is ready. 970 Fixed compatibility with C90 compilers. 971 Really started using sendmsg() for header + body combined single-call 972 response sending. 973 Fixed sending of response body by sendmsg() when it shouldn't be sent, 974 like responses for HEAD requests. 975 Improved error handling for gnutls_record_send(). 976 Updated W32 resources for .DLLs. 977 Fixed building with various disabled features (like messages, HTTPS, 978 http-upgrade, authorization etc.) 979 Fixed possible SIGPIPE generation when sendfile() is used (it was always 980 possible on Linux that sendfile() produce SIGPIPE, now it's fixed). 981 Several compiler warnings muted and/or fixed in the lib code and in 982 the examples. -EG 983 984 Sun 01 Nov 2020 17:17:00 MSK 985 Fixed conflict with system CPU_COUNT macro. 986 Minor improvements of error reporting in MHD daemon. 987 Fixed FTBFS with GnuTLS versions before 3.1.9 988 Fixed test_add_conn for multi-CPU machines. 989 Fixed analyzer warnings. 990 Fixed use-after-free and resources leaks for upgraded connections 991 in TLS mode with thread-per-connection. -EG 992 993 Sun 25 Oct 2020 19:31:00 MSK 994 Fixed epoll mode without listening socket. 995 Minor improvements of thread sync. 996 Fixed broken sendfile on FreeBSD. 997 Fixed broken MHD with thread-pool and without listening socket. 998 Added four tests for MHD_add_connection(). 999 Fixed several resources leaks in error handlers. 1000 Re-implemented scheme of handling of externally added connections, 1001 fixed thread-safety. -EG 1002 1003 Wed 21 Oct 2020 10:00:58 AM CEST 1004 Corking should be OFF when sending the footer (#6610). -AP/CG 1005 1006 Wed 07 Oct 2020 11:07:00 MSK 1007 W32 default target version changed to Vista, XP is still supported. 1008 Minor fixes and additional asserts for memorypool. 1009 IPv6 tests are not used if IPv6 is disabled at run-time. -EG 1010 1011 Sun 27 Sep 2020 10:08:03 PM CEST 1012 Fixed incorrect triggering of epoll edge polling for 1013 "upgraded" TLS connections. Fixed a few cases where 1014 gnutls_record_uncork() return value was still ignored, 1015 possibly causing buffer to not be flushed correctly. -CG 1016 1017 Sat 26 Sep 2020 08:18:02 PM CEST 1018 Make MHD_USE_NO_LISTEN_SOCKET work in conjunction with 1019 MHD internal threads. -CG/DE 1020 1021 Thu 24 Sep 2020 16:55:00 MSK 1022 Fixed compiler warnings on W32. 1023 Minor optimisation of MHD_YES/MHD_NO internal usage. 1024 Refactor and cleanup of internal debugging macros. 1025 Updated HTTP status codes, header names and methods from 1026 the registries. 1027 Fixed portability of test_upgrade_large. 1028 Minor testsuite fixes. 1029 Restored parallel build of libmicrohttpd (except tests). -EG 1030 1031 Fri 11 Sep 2020 10:08:22 PM CEST 1032 Fix crash problem in PostProcessor reported by MD. -CG 1033 Fix GnuTLS configure test to check for gnutls_record_uncork. -CG 1034 1035 Wed 19 Aug 2020 09:40:39 AM CEST 1036 Add logic to check on MHD_pool_reallocate() failure reported on the 1037 mailinglist (will NOT yet fix the issue). -CG 1038 1039 Sun 26 Jul 2020 01:56:54 PM CEST 1040 Add MHD_create_response_from_pipe() to allow creating a response based 1041 on data read from a pipe. -CG 1042 1043 Fri Jul 10 15:04:51 CEST 2020 1044 Fixed Postprocessor URL-encoded parsing if '%' fell on boundary. -CG/MD 1045 1046 Thu 02 Jul 2020 09:56:23 PM CEST 1047 Fixed return type of MHD_queue_basic_auth_fail_response. -CA/CG 1048 1049 Sun 28 Jun 2020 09:36:01 PM CEST 1050 Fix buffer overflow issue in URL parser. 1051 Releasing libmicrohttpd 0.9.71. -CG 1052 1053 Tue 16 Jun 2020 08:44:22 PM CEST 1054 Add logic to try again if GNUtls uncork() fails. -CG 1055 1056 Wed 10 Jun 2020 09:44:29 PM CEST 1057 Fixed PostProcessor bug discovered by MD, which given certain parser 1058 boundaries caused the returned values to be wrong. -CG/MD 1059 1060 Wed 08 Apr 2020 10:53:01 PM CEST 1061 Introduce `enum MHD_Result` for #MHD_YES/#MHD_NO to avoid using 'int' so much. 1062 Note that this change WILL cause compiler warnings until (most) MHD callbacks 1063 in application code change their return type from 'int' to 'enum MHD_Result'. 1064 That said, avoiding possible confusions of different enums is going to make 1065 the code more robust in the future. For conditional compilation, test 1066 for "MHD_VERSION >= 0x00097002". -CG 1067 1068 Tue 07 Apr 2020 02:58:39 PM BRT 1069 Fixed #5501 (Added example for how to provide a tiny threaded websocket server). -SC 1070 1071 Tue 31 Mar 2020 02:36:40 PM BRT 1072 Fixed #6142 (applied several spelling fixes). -DKG/-SC 1073 1074 Sat 07 Mar 2020 05:20:33 PM CET 1075 Fixed #6090 (misc. severe socket handling bugs on OS X). -CG 1076 1077 Sat 08 Feb 2020 09:12:54 PM CET 1078 Fixed 100-continue handling for PATCH method (#6068). 1079 Fixed FTBFS from wrong #endif position for certain builds (#6025). 1080 Fixed connection overflow issue when combining MHD_USE_NO_LISTEN_SOCKET 1081 with MHD_USE_THREAD_PER_CONNECTION (#6036). 1082 Updated m4 script to fix FTBFS when using -Werror=unused-but-set-parameter (#6078). 1083 Releasing libmicrohttpd 0.9.70. -CG 1084 1085 Thu Dec 26 14:43:27 CET 2019 1086 Adding fix for urlencoding of keys without values in 1087 post-processor logic. -CG 1088 1089 Tue 24 Dec 2019 03:32:18 PM CET 1090 Adding patch from Ethan Tuttle with test case for urlencoding 1091 in post-processor for keys without values. -CG/ET 1092 1093 Sun 15 Dec 2019 02:12:02 PM CET 1094 Fix send() call (affects Mac OS X). #5977 -CG/fbrault 1095 Releasing libmicrohttpd 0.9.69. -CG 1096 1097 Fri 29 Nov 2019 11:22:25 PM CET 1098 If application suspends a connection before we could send 100 CONTINUE, 1099 give application another shot at queuing a reply before the upload begins. -CG 1100 1101 Sat 26 Oct 2019 06:53:05 PM CEST 1102 Fix regression where MHD would fail to return an empty response 1103 when used with HTTPS. 1104 Releasing libmicrohttpd 0.9.68. -CG/TR 1105 1106 Fri 25 Oct 2019 02:31:59 PM CEST 1107 Introduce MHD_RF_INSANITY_HEADER_CONTENT_LENGTH. -CG 1108 1109 Thu 17 Oct 2019 04:50:52 PM CEST 1110 Integrate 0-byte send() method for uncorking for old FreeBSD/OS X 1111 systems into new mhd_send.c logic for uncorking. 1112 Releasing libmicrohttpd 0.9.67. -CG 1113 1114 Fri 18 Aug 2019 00:00:00 PM UTC 1115 Fixes and optimizations for the setsockopt handling: 1116 * Added: MHD_UPGRADE_ACTION_CORK_ON and MHD_UPGRADE_ACTION_CORK_OFF 1117 to enum MHD_UpgradeAction (turn corking on/off on the underlying 1118 socket). 1119 * Use calls and flags native to the system for corking and 1120 other operations, tested with performance improvements on 1121 FreeBSD, Debian Linux, NetBSD, and cygwin. In particular, 1122 this adds selective usage of MSG_MORE, NODELAY, TCP_NOPUSH, 1123 TCP_CORK. -ng0 1124 1125 Fri 09 Aug 2019 10:07:27 AM CEST 1126 Copy compiler and linker hardening flags from GNUnet (updating 1127 configure.ac). -CG 1128 1129 Thu 01 Aug 2019 01:23:36 PM CEST 1130 Releasing libmicrohttpd 0.9.66. -CG 1131 1132 Thu 01 Aug 2019 12:53:49 AM CEST 1133 Fix issue with discarding unhandled upload data discovered 1134 by Florian Dold. -CG 1135 1136 Mon 29 Jul 2019 08:01:50 PM CEST 1137 Fix hanging situation with large transmission over upgraded 1138 (i.e. Web socket) connection with epoll() and HTTPS enabled 1139 (as reported by Viet on the mailinglist). -CG 1140 1141 Thu 25 Jul 2019 02:40:12 PM CEST 1142 Fixing regression introduced in cc5032b85 (bit mask matching 1143 of the header kinds in MHD_lookup_connection_value()), as 1144 reported by Jose Bollo on the mailinglist. -CG/JB 1145 1146 Tue Jul 16 19:56:14 CEST 2019 1147 Add MHD_OPTION_HTTPS_CERT_CALLBACK2 to allow OCSP stapling 1148 and MHD_FEATURE_HTTPS_CERT_CALLBACK2 to check for. -TR 1149 1150 Fri Jul 05 2019 22:30:40 MSK 1151 Releasing libmicrohttpd 0.9.65. -EG 1152 1153 Sun Jun 23 2019 21:27:43 MSK 1154 Many fixes and improvements for connection-specific memory pool: 1155 * Added asserts; 1156 * Added testing of reallocation; 1157 * Reallocation code rewritten to avoid extra allocation, when 1158 possible to reuse already allocated memory; 1159 * Large memory pools aligned to system page size; 1160 * Large memory pools on W32 are cleared more securely after use, 1161 optimised usage of system memory. 1162 Better handled connection's memory shortage situations: 1163 * error response could be sent to client even if all buffer space 1164 was used; 1165 * if buffer space become low when receiving, do not allocate last 1166 buffer space and use small receive blocks instead. 1167 Improved sending speed by using all available buffer space for 1168 sending. -EG 1169 1170 Sun Jun 09 2019 20:27:04 MSK 1171 Releasing libmicrohttpd 0.9.64. -EG 1172 1173 Sun Jun 09 2019 20:03:16 MSK 1174 Updated HTTP headers, methods and status codes from registries, 1175 Added scripts to import new headers, methods and status codes from 1176 registries, 1177 Minor doxyget comment fix, 1178 Added missing MSVS project files to tarball. 1179 Reodered includes in microhttpd.h -EG 1180 1181 Mon 03 Jun 2019 11:45:52 PM CEST 1182 Apply MHD_-prefix to hash functions, even if they are not in the 1183 officially exported API. -CG/DB 1184 1185 Sun Jun 02 01:52:11 MSK 2019 1186 Support usage of SOCK_NOSIGPIPE on Solaris 11.4 and NetBSD 7+, 1187 finally avoid SIGPIPE on Solaris. -EG 1188 1189 Sat Jun 01 22:51:50 MSK 2019 1190 Do not report errors if AF_UNIX socket is used on *BSD. -EG 1191 1192 Thu May 30 23:32:09 MSK 2019 1193 Improved detection of 'getsockname()' in configure. 1194 Avoided using 'getsockname()' in code if not detected. -EG 1195 1196 Sun May 26 23:32:49 MSK 2019 1197 Fixed some tests on W32. -EG 1198 1199 Sun May 26 23:05:42 MSK 2019 1200 Better detection of sockaddr member in configure, fixed build on *BSD, 1201 Fixed compiler warnings, 1202 Updated and fixed libcurl tests. -EG 1203 1204 Tue May 21 22:12:43 MSK 2019 1205 Fixed doxygen comments, 1206 Avoid dropping 'const' qualifier in macros, 1207 Fixed some compiler warnings, 1208 Properly support automatic port detections on some platforms, 1209 Added checks for too long TLS parameters strings. -EG 1210 1211 Tue May 21 17:52:48 MSK 2019 1212 Spelling fixes. -EG 1213 1214 Mon May 20 15:39:35 MSK 2019 1215 Compiler warning fixes. -EG/CG 1216 Fixed example for non-64bits platforms. -EG 1217 1218 Wed May 15 23:51:49 MSK 2019 1219 Optimized and improved processing speed by using precalculated and 1220 already calculated lengths of strings. -EG 1221 1222 Wed May 15 14:54:00 MSK 2019 1223 Fixed build from source on GNU Hurd. -EG 1224 1225 Mon May 6 11:58:00 MSK 2019 1226 Updated README and COPYING files. MHD remains LGPLv2.1-licensed. -EG 1227 1228 Fri May 3 20:08:00 MSK 2019 1229 Store connection's keys and values with sizes; 1230 Speedup keys search be comparing key length first; 1231 Added functions for working with keys and values with binary zeros; 1232 Fixed test_postprocessor_amp to fail on problems. -EG 1233 1234 Wed May 1 16:40:00 MSK 2019 1235 Reverted change of MHD_KeyValueIterator, implemented MHD_KeyValueIteratorN 1236 with sizes for connection's key and value to get keys and values 1237 with binary zeros. -EG 1238 1239 Mon 29 Apr 2019 01:26:39 AM BRT 1240 Fixed signed/unsigned comparison in example http_chunked_compression.c. -SC/TR 1241 1242 Sun Apr 21 16:40:00 MSK 2019 1243 Improved compatibility with MSVC compilers; 1244 Fixed MHD compilation by Clang/LLVM in VS; 1245 Used MSVC intrinsics for bit rotations and bytes swap; 1246 Added project files for VS2019. -EG 1247 1248 Fri Apr 19 23:00:00 MSK 2019 1249 Rewritten SHA-256 calculations from scratch to avoid changing LGPL version; 1250 Added usage of GCC/Clang built-ins for bytes swap to significantly improve 1251 speed of MD5 and SHA-256 calculation on platforms with known endianness. 1252 Added test for SHA-256 calculations. -EG 1253 1254 Wed Apr 17 20:52:00 MSK 2019 1255 Refactoring of mhd5.c: optimized, dead code removed; 1256 Faster MD5 calculation on little endian platforms; 1257 Bit manipulations moved to separate header file. 1258 Added tests for MD5 calculations. -EG 1259 1260 Mon 15 Apr 2019 05:33:52 PM CEST 1261 Add MHD_USE_POST_HANDSHAKE_AUTH_SUPPORT and 1262 MHD_USE_INSECURE_TLS_EARLY_DATA flags. -CG 1263 1264 Thu Apr 11 11:37:00 MSK 2019 1265 Fixed MSVC 'Release' builds; 1266 Fixed usage of MSVC's assert. -EG 1267 1268 Wed Apr 10 14:31:00 MSK 2019 1269 Improved shell compatibility for 'bootstrap', removed bash-ism. 1270 Added wrapper script 'autogen.sh'. -EG 1271 1272 Mon 08 Apr 2019 03:06:05 PM CEST 1273 Fix close() checks as suggested by MK on the mailinglist 1274 (#3926). -MK/CG 1275 1276 Wed 20 Mar 2019 10:20:24 AM CET 1277 Adding additional "value_length" argument to MHD_KeyValueIterator 1278 callback to support binary zeros in values. This is done in a 1279 backwards-compatible way, but may require adding a cast to existing 1280 code to avoid a compiler warning. -CG 1281 1282 Sun Feb 10 21:00:37 BRT 2019 1283 Added example for how to compress a chunked HTTP response. -SC 1284 1285 Sun 10 Feb 2019 05:03:44 PM CET 1286 Releasing libmicrohttpd 0.9.63. -CG 1287 1288 Sat 09 Feb 2019 01:51:02 PM CET 1289 Extended test_get to test URI logging and query string parsing 1290 to avoid regression fixed in previous patch in the future. -CG 1291 1292 Thu Feb 7 16:16:12 CET 2019 1293 Preliminary patch for the raw query string issue, to be tested. -CG 1294 1295 Tue Jan 8 02:57:21 BRT 2019 1296 Added minimal example for how to compress HTTP response. -SC 1297 1298 Wed Dec 19 00:06:03 CET 2018 1299 Check for GNUTLS_E_AGAIN instead of GNUTLS_E_INTERRUPTED when 1300 giving up on a TLS connection. -LM/CG 1301 1302 Thu Dec 13 22:48:14 CET 2018 1303 Fix connection timeout logic if in thread-per-connection mode the 1304 working thread takes longer than the timeout to queue the response. -CG 1305 1306 Tue Dec 11 09:58:32 CET 2018 1307 Add logic to avoid VLA arrays with compilers that do not support them. -CG 1308 1309 Sat Dec 8 23:15:53 CET 2018 1310 Fixed missing WSA_FLAG_OVERLAPPED which can cause W32 to block on 1311 socket races when using threadpool. (See very detailed description 1312 of the issue in the libmicrohttpd mailinglist post of today.) -JM 1313 1314 Sat Dec 8 22:53:56 CET 2018 1315 Added test for RFC 7616 and documented new API. 1316 Releasing libmicrohttpd 0.9.62. -CG 1317 1318 Sat Dec 8 17:34:58 CET 2018 1319 Adding support for RFC 7616, experimental, needs 1320 testing and documentation still! -CG 1321 1322 Fri Dec 7 12:37:17 CET 2018 1323 Add option to build MHD without any threads 1324 and MHD_FEATURE_THREADS to test for it. -CG 1325 1326 Thu Dec 6 13:25:08 BRT 2018 1327 Renamed all occurrences from _model(s)_ to _mode(s)_. -SC 1328 1329 Thu Dec 6 12:50:11 BRT 2018 1330 Optimized the function MHD_create_response_from_callback() for 1331 Windows by increasing its internal buffer size and allowed to customize 1332 it via macro MHD_FD_BLOCK_SIZE. -SC 1333 1334 Thu Dec 6 02:11:15 BRT 2018 1335 Referenced the gnutls_load_file() function in the HTTPs examples. -SC 1336 1337 Wed Dec 5 18:08:59 CET 2018 1338 Fix regression causing URLs to be unescaped twice. -CG 1339 1340 Sun Nov 18 13:08:11 CET 2018 1341 Parse arguments with (properly) escaped URLs correctly. 1342 (making things work with recent cURL changes, #5473). 1343 Replace sprintf with snprintf in testcases. 1344 Releasing libmicrohttpd 0.9.61. -CG 1345 1346 Wed Nov 14 14:01:21 CET 2018 1347 Fix build issue with GnuTLS < 3.0. -CG 1348 1349 Mon Nov 12 19:50:43 CET 2018 1350 Fix #5473 (test case failure due to change in libcurl). -eworm 1351 1352 Thu Nov 8 14:53:27 CET 2018 1353 Add MHD_create_response_from_buffer_with_free_callback. -CG 1354 1355 Tue Nov 6 19:43:47 CET 2018 1356 Upgrading to gettext 0.19.8. 1357 Releasing libmicrohttpd 0.9.60. -CG 1358 1359 Thu Nov 1 16:29:59 CET 2018 1360 Enable using epoll() without listen socket. -JB 1361 1362 Sat Oct 20 12:44:16 CEST 2018 1363 In thread-per-connection mode, signal main thread for 1364 thread termination for instant clean-up and application 1365 notification about closed connections. -CG 1366 1367 Tue Oct 16 20:43:41 CEST 2018 1368 Add MHD_RF_HTTP_VERSION_1_0_RESPONSE option to make MHD 1369 act more like an HTTP/1.0 server. -GH 1370 1371 Fri Oct 5 18:44:45 CEST 2018 1372 MHD_add_response_header() now prevents applications from 1373 setting a "Transfer-Encoding" header to values other than 1374 "identity" or "chunked" as other transfer encodings are 1375 not supported by MHD. (Note that usually MHD will pick the 1376 transfer encoding correctly automatically, but applications 1377 can use the header to force a particular behavior.) 1378 Fixing #5411 (never set Content-length if Transfer-Encoding 1379 is given). -CG 1380 1381 Sat Jul 14 11:42:15 CEST 2018 1382 Add MHD_OPTION_GNUTLS_PSK_CRED_HANDLER to allow use of PSK with 1383 TLS connections. -CG/TM 1384 1385 Sat Jul 14 11:03:37 CEST 2018 1386 Integrate patch for checking digest authentication based on 1387 a digest, allowing servers to store passwords only hashed. 1388 Adding new function MHD_digest_auth_check_digest(). -CG/DB 1389 1390 Sat Mar 10 12:15:35 CET 2018 1391 Upgrade to gettext-0.19.8.1. Switching to more canonical 1392 gettext integration. -CG 1393 1394 Fri Mar 2 21:44:24 CET 2018 1395 Ensure MHD_RequestCompletedCallback is always called from 1396 the correct thread (even on shutdown and for upgraded connections). -CG 1397 1398 Tue Feb 27 23:27:02 CET 2018 1399 Ensure MHD_RequestCompletedCallback is also called for 1400 upgraded connections. -CG 1401 1402 Fri Feb 16 03:09:33 CET 2018 1403 Fixing #5278 as suggested by reporter. -CG/texec 1404 1405 Thu Feb 1 10:12:22 CET 2018 1406 Releasing GNU libicrohttpd 0.9.59. -CG 1407 1408 Thu Feb 1 08:39:50 CET 2018 1409 Fix masking operation. -CG/silvioprog 1410 1411 Mon Jan 29 17:33:54 CET 2018 1412 Fix deadlock when failing to prepare chunked response 1413 (#5260). -CG/ghaderer 1414 1415 Thu Jan 4 12:24:33 CET 2018 1416 Fix __clang_major__ related warnings for non-clang 1417 compilers reported by Tim on the mailinglist. -CG 1418 1419 Mon Dec 11 17:11:00 MSK 2017 1420 Fixed tests on platforms with huge number of CPUs. 1421 Doxygen configuration was updated. 1422 Various doxygen fixes. -EG 1423 1424 Mon Dec 07 21:08:00 MSK 2017 1425 Releasing GNU libmicrohttpd 0.9.58. -EG 1426 1427 Mon Dec 07 16:01:00 MSK 2017 1428 Fixed HTTPS tests on modern platforms. -EG 1429 1430 Mon Dec 04 15:43:00 MSK 2017 1431 Minor documentation installation fixes. -EG 1432 1433 Mon Nov 27 22:58:38 CET 2017 1434 Tolerate AF_UNIX when trying to determine our binding port 1435 from socket. Use `sockaddr_storage` instead of trying to 1436 guess the sockaddr type before calling getsockname(). -CG 1437 1438 Mon Nov 27 22:24:00 MSK 2017 1439 Releasing GNU libmicrohttpd 0.9.57. -EG 1440 1441 Mon Nov 27 21:36:00 MSK 2017 1442 Updated README. -EG 1443 1444 Mon Nov 27 18:37:00 MSK 2017 1445 Corrected names in W32 DLL resources. 1446 Reordered and clarified configure summary message. 1447 Additional compiler warning mutes for builds with various configure 1448 parameters. 1449 Fixed tests on Cygwin. 1450 Used larger SETSIZE for Cygwin (same value as for native W32). 1451 Minor fixes for Cygwin. 1452 Added configure parameter to force disable usage of sendfile(). 1453 Minor testsuite fixes. 1454 Really fixed builds with optimisation for size. -EG 1455 1456 Sat Nov 25 18:37:00 MSK 2017 1457 Fixed build with optimisation for size. -EG 1458 1459 Fri Nov 24 20:14:02 CET 2017 1460 Releasing GNU libmicrohttpd 0.9.56. -CG 1461 1462 Thu Nov 23 17:40:00 MSK 2017 1463 Added MHD_FEATURE_SENDFILE enum value and report. -EG 1464 1465 Thu Nov 23 08:56:00 MSK 2017 1466 Fixed receiving large requests in TLS mode with epoll. 1467 Improved GnuTLS and libgcrypt detection in configure, do not ignore 1468 flags in GNUTLS_{CFLAGS,LIBS} variables. 1469 Added special trick for Solaris/Openindiana to find GnuTLS-3 with 1470 right bitness. 1471 Added support for Solaris sendfile(3) function. 1472 Fixed dataraces with thread ID on W32 and pthread. Now check for 1473 correct thread in MHD_queue_response() works correctly. 1474 Fixed and silenced compiler warnings in tests and examples. 1475 Removed usage of TLS flags in examples where TLS is not required. 1476 Added support for MultiSSL in https tests with libcurl >= 7.56.0. 1477 Improved detection of OFF_T_MAX, SIZE_MAX. Added macros for 1478 SSIZE_MAX in mhd_limits.h. There are some platforms that really 1479 require those macros. 1480 Added support for Darwin's sendfile() function. 1481 Updated .gitignore files. 1482 Reworked mhd_sys_extentions.m4 with better support of modern 1483 platforms, more reliable detection of required macros, and 1484 detection of disabling of system-specific features by 1485 _XOPEN_SOURCE macro. -EG 1486 1487 Wed Nov 1 20:43:00 MSK 2017 1488 Mixed and muted many compiler warnings. Now GCC's flags 1489 -Wall -Wextra could be used for building. 1490 Fixed compilation of examples without libmagic. 1491 Better detection of libgnutls in configure. 1492 Reworked launch of nested configure in "po" directory to 1493 prevent useless reconfiguration. 1494 Fixed some wrong asserts. 1495 Enabled "test_options" test. 1496 Use "test_start_stop" without libcurl. 1497 Use chunks with sendfile() to prevent locking thread for 1498 single connection with large file. 1499 Added support for FreeBSD's sendfile with additional 1500 optimisations for FreeBSD 11. 1501 Refactoring and improvements for MHD_start_daemon_va() and 1502 MHD_stop_daemon(). 1503 Fixed testing with GnuTLS >= 3.6.0. -EG 1504 1505 Mon Oct 9 22:38:07 CEST 2017 1506 Add MHD_free() to allow proper free()-ing of username/password 1507 data returned via MHD_digest_auth_get_username() or 1508 MHD_basic_auth_get_username_password() on Windows. -CG 1509 1510 Tue Sep 26 14:00:58 CEST 2017 1511 Fixing race involving setting "at_limit" flag. -CG 1512 1513 Tue Sep 08 21:39:00 MSK 2017 1514 Fixed build of examples when MHD build with non-pthread lib. 1515 MHD_queue_response(): added check for using in correct thread. 1516 Fixed sending responses larger 16 KiB in TLS mode with epoll. 1517 Improved doxy for MHD_get_timeout() and related functions. 1518 Minor internal refactoring. -EG 1519 1520 Tue Jul 23 11:32:00 MSK 2017 1521 Updated chunked_example.c to provide real illustration of usage of 1522 chunked encoding. -EG 1523 1524 Thu Jul 13 21:41:00 MSK 2017 1525 Restored SIGPIPE suppression in TLS mode. 1526 Added new value MHD_FEATURE_AUTOSUPPRESS_SIGPIPE so application could 1527 check whether SIGPIPE handling is required. 1528 Used GNUTLS_NONBLOCK for TLS sessions. -EG 1529 1530 Tue Jun 20 23:52:00 MSK 2017 1531 Libgcrypt is now optional and required only for old GnuTLS versions. -EG 1532 1533 Wed Jun 14 21:42:00 MSK 2017 1534 Added support for debug assert() and new configure parameter 1535 --enable-asserts for debug builds. 1536 Removed non-functional Symbian support. -EG 1537 1538 Mon Jun 05 23:34:00 MSK 2017 1539 More internal refactoring: 1540 merged MHD_tls_connection_handle_read/write() with non-TLS version, 1541 reduced and unified number of layers for network processing (before 1542 refactoring MHD_tls_connection_handle_read->MHD_connection_handle_read-> 1543 do_read->recv_tls_adapter->GnuTLS->recv_param_adapter - 5 MHD layers; 1544 after refactoring MHD_connection_handle_read->recv_tls_adapter->GnuTLS - 1545 2 MHD layers), 1546 simplified and removed dead code from 1547 MHD_connection_handle_read/write() without functional change. -EG 1548 1549 Mon Jun 05 22:20:00 MSK 2017 1550 Internal refactoring: 1551 used TCP sockets directly with GnuTLS (performance improvement), 1552 moved some connection-related code from daemon.c to 1553 connection.c/connection_https.c, 1554 removed hacks around sendfile() and implemented correct support of 1555 sendfile(), 1556 removed do_read() and do_write() to reduce number of layer around send() 1557 and recv() and to improve readability and maintainability of code, 1558 implemented separate tracking of TLS layer state, independent of HTTP 1559 connection stage. -EG 1560 1561 Sun Jun 04 15:02:00 MSK 2017 1562 Improved thread-safety of MHD_add_connection() and 1563 internal_add_connection(), minor optimisations. -EG 1564 1565 Sun May 28 23:26:00 MSK 2017 1566 Releasing GNU libmicrohttpd 0.9.55. -EG 1567 1568 Sun May 21 18:48:00 MSK 2017 1569 Fixed build with disabled "UPGRADE". 1570 Fixed possible null-dereference in HTTPS test. 1571 Fixed compiler warning in process_request_body(), minor optimizations. 1572 Do not allow suspend of "upgraded" connections. 1573 Fixed returned value for MHD_CONNECTION_INFO_CONNECTION_SUSPENDED. 1574 Fixed removal from timeout lists of non-existing connections in 1575 cleanup_connection(). 1576 Fixed double locking of mutex. -EG 1577 1578 Sun May 14 15:05:00 MSK 2017 1579 Fixed resuming connections and closing upgraded connections in select() 1580 mode with thread-per-connection. -EG 1581 1582 Sun May 14 14:49:00 MSK 2017 1583 Removed extra call to resume connections in MHD_run(). 1584 Handle resumed connection without delay in epoll mode. 1585 Update states of resumed connection after resume in thread-per-connection 1586 mode. 1587 Fixed resuming connections and closing upgraded connections in poll() 1588 mode with thread-per-connection. -EG 1589 1590 Thu May 11 22:37:00 MSK 2017 1591 Faster start really processing data in resumed connections. -EG 1592 1593 Thu May 11 14:24:00 MSK 2017 1594 Do not add any "Connection" headers for "upgrade" connections. -EG 1595 1596 Wed May 10 23:09:00 MSK 2017 1597 Resume resuming connection before other processing in external polling 1598 mode. -EG 1599 1600 Tue May 9 23:16:00 MSK 2017 1601 Fixed: Do not add "Connection: Keep-Alive" header for "upgrade" 1602 connections. -EG 1603 1604 Tue May 9 21:01:00 MSK 2017 1605 Fixed: check all "Connection" headers of request for "Close" and "Upgrade" 1606 tokens instead of using only first "Connection" header with full string 1607 match. -EG 1608 1609 Tue May 9 12:28:00 MSK 2017 1610 Revert: continue match footers in MHD_get_response_header() for backward 1611 compatibility. -EG 1612 1613 Mon May 8 19:30:00 MSK 2017 1614 Fixed: use case-insensitive matching for header name in 1615 MHD_get_response_header(), match only headers (not footers). -EG 1616 1617 Fri May 5 20:57:00 MSK 2017 1618 Fixed null dereference when connection has "Upgrade" request and 1619 connection is not upgraded. -JB/EG 1620 Better handle Keep-Alive/Close. -EG 1621 1622 Tue May 2 18:37:53 CEST 2017 1623 Update manual. -CG 1624 Add MHD_CONNECTION_INFO_REQUEST_HEADER_SIZE. 1625 Releasing GNU libmicrohttpd 0.9.54. -CG 1626 1627 Thu Apr 27 22:31:00 CEST 2017 1628 Replaced flags MHD_USE_PEDANTIC_CHECKS and MHD_USE_PERMISSIVE_CHECKS by 1629 single option MHD_OPTION_STRICT_FOR_CLIENT. Flag MHD_USE_PEDANTIC_CHECKS 1630 is still supported. -EG 1631 1632 Tue Apr 26 15:11:00 CEST 2017 1633 Fixed shift in HTTP reasons strings. 1634 Added test for HTTP reasons strings. -EG 1635 1636 Tue Apr 25 19:11:00 CEST 2017 1637 Allow flag MHD_USE_POLL with MHD_USE_THREAD_PER_CONNECTION and without 1638 flag MHD_USE_INTERNAL_POLLING_THREAD for backward compatibility. -EG 1639 1640 Mon Apr 24 17:29:45 CEST 2017 1641 Enforce RFC 7230's rule on no whitespace by default, 1642 introduce new MHD_USE_PERMISSIVE_CHECKS to disable. -CG 1643 1644 Sun Apr 23 20:05:44 CEST 2017 1645 Enforce RFC 7230's rule on no whitespace in HTTP header 1646 field names if MHD_USE_PEDANTIC_CHECKS is set. -CG 1647 1648 Sun Apr 23 19:20:33 CEST 2017 1649 Replace remaining occurrences of sprintf() with 1650 MHD_snprintf_(). Thanks to Ram for pointing this out. -CG 1651 1652 Sat Apr 22 20:39:00 MSK 2017 1653 Fixed builds in Linux without epoll. 1654 Check for invalid --with-thread= configure parameters. 1655 Fixed support for old libgcrypt on W32 with W32 threads. -EG 1656 1657 Tue Apr 11 22:17:00 MSK 2017 1658 Releasing GNU libmicrohttpd 0.9.53. -EG 1659 1660 Mon Apr 10 19:50:20 MSK 2017 1661 HTTPS tests: skip tests instead of failing if HTTPS is not supported by 1662 libcurl. 1663 HTTPS tests: fixed return values so testsuite is able to correctly 1664 interpret it. 1665 Fixed ignored result of epoll test in test_https_get_select. -EG 1666 1667 Thu Apr 06 23:02:07 MSK 2017 1668 Make zzuf tests compatible with *BSD platforms. -EG 1669 1670 Thu Apr 06 22:14:22 MSK 2017 1671 Added warning for hypothetical extra large timeout. 1672 Fixed incorrect timeout calculation under extra rare conditions. 1673 Fixed accidental usage of IPv6 in testsuite in specific conditions. -EG 1674 1675 Wed Apr 05 14:14:22 MSK 2017 1676 Updated autoinit_funcs.h to latest upstream version with proper support of 1677 Oracle/Sun compiler. -EG 1678 1679 Wed Apr 05 12:53:26 MSK 2017 1680 Fixed some compiler warnings. 1681 Fixed error snprintf() errors detection in digestauth.c. 1682 Converted many run-time 'strlen()' to compile-time calculations. -EG 1683 1684 Sun Mar 26 13:49:01 MSK 2017 1685 Internal refactoring for simplification and unification. 1686 Minor optimizations and minor fixes. 1687 MHD_USE_ITC used again in thread pool mode. -EG 1688 1689 Sat Mar 25 20:58:24 CET 2017 1690 Remove dead MHD_strx_to_sizet-functions and associated 1691 test cases from code. -CG 1692 1693 Sat Mar 25 20:40:10 CET 2017 1694 Allow chunk size > 16 MB (up to 2^64-1). Ignore 1695 chunk extensions instead of triggering an error. 1696 (fixes #4967). -CG 1697 1698 Tue Mar 25 20:59:18 MSK 2017 1699 Check for invalid combinations of flags and options in 1700 MHD_start_daemon(). -EG 1701 1702 Tue Mar 21 13:51:04 CET 2017 1703 Use "-lrt" to link libmicrohttpd if we are using 1704 clock_gettime() as needed by glibc < 2.17. -CG 1705 1706 Tue Mar 21 13:42:07 CET 2017 1707 Allow chaining of suspend-resume calls withuot 1708 the application processing data from the network. -CG 1709 1710 Mon Mar 20 0:51:24 MSK 2017 1711 Added autoconf module for detection whatever shutdown of listening socket 1712 trigger select. This is only reliable method to use such feature as some 1713 platforms change behaviour from version to version. -EG 1714 1715 Sun Mar 19 13:57:30 MSK 2017 1716 Rewritten logic of handling "upgraded" TLS connections in epoll mode: 1717 used edge trigger instead of level trigger, 1718 upgraded "ready" connection are stored in DL-list, 1719 fixed handling of more than 128 ready connections, 1720 fixed busy-waiting for idle "upgraded" TLS connections. -EG 1721 1722 Fri Mar 17 10:45:31 MSK 2017 1723 If read buffer is full, MHD need to receive remote data and application 1724 suspended connection, do not fail while connection is suspended and give 1725 application one more chance to read data from buffer once connection is 1726 resumed. -EG 1727 1728 Thu Mar 16 23:45:29 MSK 2017 1729 Allow again to run MHD in external epoll mode by 1730 MHD_run_from_select() - this allow unification of user code 1731 and produce no harm for performance. Especially useful with 1732 MHD_USE_AUTO flag. -EG 1733 1734 Thu Mar 16 23:12:07 MSK 2017 1735 Idle connection should be disconnected *after* "timeout" number of 1736 second, not *before* this number. -EG/VT 1737 1738 Thu Mar 16 22:31:54 MSK 2017 1739 Unified update of last activity on connections. 1740 Update last activity only if something is really transmitted. 1741 Update last activity each time when something is transmitted. 1742 Removed early duplicated check for timeout on HTTPS connections. 1743 Removed update of last active time for connections without timeout. 1744 Fixed reset of timeout timer on resumed connections. 1745 Fixed never-expired timeouts on HTTPS connections. 1746 Fixed thread-safety of MHD_set_connection_option(). -EG 1747 1748 Thu Mar 16 21:05:08 MSK 2017 1749 Fixed minor bug resulted in slight slowdown of HTTPS connection 1750 handshake. -EG 1751 1752 Thu Mar 16 20:35:59 MSK 2017 1753 Improved thread-safety for DL-lists. -EG 1754 1755 Thu Mar 16 17:55:01 MSK 2017 1756 Fixed thread-safety of MHD_get_daemon_info() for 1757 MHD_DAEMON_INFO_CURRENT_CONNECTIONS. -EG 1758 1759 Thu Mar 16 16:49:07 MSK 2017 1760 Added ability to get actual daemon flags via MHD_get_daemon_info(). 1761 Fixed test_upgrade to work in request mode. 1762 Fixed compiler warnings in test_upgrade. -EG 1763 1764 Wed Mar 15 23:29:59 MSK 2017 1765 Prevented socket read/write if connection is suspended. 1766 Added missing resets of 'connection->in_idle'. 1767 Reworked handling of suspended connection: ensure that 1768 connection is not disconnected by timeout, always 1769 updated read/write states right after suspending. -EG 1770 1771 Wed Mar 15 21:02:26 MSK 2017 1772 Added new enum value MHD_CONNECTION_INFO_CONNECTION_TIMEOUT 1773 to get connection timeout by MHD_get_connection_info(). -EG 1774 1775 Sat Mar 11 12:03:45 CET 2017 1776 Fix largepost example from tutorial to properly generate 1777 error pages. -CG 1778 Fix largepost example, must only queue replies either before upload 1779 happens or after upload is done, not while upload is ongoing 1780 1781 Fri Mar 10 16:37:12 CET 2017 1782 Fix hypothetical integer overflow for very, very large 1783 timeout values. -CG 1784 1785 Fri Mar 10 16:22:54 CET 2017 1786 Handle case that we do not listen at all more gracefully 1787 in MHD_start_daemon() and not pass '-1' to helper functions 1788 that expect a valid socket. -CG 1789 1790 Tue Mar 7 12:11:44 BRT 2017 1791 Updates file `.gitignore`. 1792 1793 Tue Mar 7 10:37:45 BRT 2017 1794 Updated the MHD_OPTION_URI_LOG_CALLBACK's documentation. 1795 1796 Mon Mar 6 21:46:59 BRT 2017 1797 Added the i18n example fixing #4924. -SC 1798 1799 Wed Mar 1 23:47:05 CET 2017 1800 Minor internal optimisations. 1801 Changed closure connection monitoring logic: now all connections are 1802 monitored for OOB data (which treated as error), connections are not 1803 monitored any more for incoming data if incoming data is not required for 1804 processing. except_fd_set is not optional now for MHD_get_fdset(), 1805 MHD_get_fdset2() and MHD_run_from_select(). 1806 Improved connection processing in epoll mode: now connection can process 1807 both read and write each turn. 1808 Updated HTTP response codes; updated and added all missing standard HTTP 1809 headers names (and headers categories); updated and added all missing 1810 standard and additional HTTP methods. Now MHD return status 1811 MHD_HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE (431) instead of old 1812 MHD_HTTP_REQUEST_ENTITY_TOO_LARGE (413) for very long header. 1813 Reworked handling of data pending in TLS buffers, resolved busy-waiting 1814 if incoming data is pending in TLS buffers and connection is in 1815 LOOP_INFO_WRITE mode. 1816 Do not clear 'ready' flag in epoll mode if send()/recv() result is 1817 EINTERRUPTED. 1818 Better detection of unready connection state: used less number of calls of 1819 recv()/send() in epoll mode. 1820 Configure: do not run gcrypt and GnuTLS tests if HTTPS is disabled by 1821 configure parameter. 1822 Fixed wrong value returned by MHD_get_timeout(). 1823 All double-linked lists now walked from tail to head. As new items are 1824 added to head, this result in more uniform processing time. 1825 Improved sockets errors handling in epoll mode. 1826 OOB data on 'upgraded' sockets is treated as error. -EG 1827 1828 Thu Feb 16 11:20:05 CET 2017 1829 Replace tsearch configure check with code from gnulib. -CG 1830 1831 Wed Feb 15 13:35:36 CET 2017 1832 Fixing a few very rare race conditions for thread-pool or 1833 thread-per-connection operations during shutdown. 1834 Various minor cosmetic improvements. 1835 Fixed #4884 and #4888 (solaris portability issues). -CG 1836 1837 Wed Feb 08 22:33:10 MSK 2016 1838 Ported test_quiesce_stream to W32. 1839 Improved precompiler flags selection of OpenBSD. 1840 Fixed sending responses backed by files not supported by sendfile(). 1841 Fixed thread safety for responses backed by file FD. 1842 Updated fileserver_example. 1843 Improved handling of 'upgraded' TLS forwarding in select() and poll() 1844 modes. 1845 Fixed processing of incoming TLS data in epoll mode if more than 128 1846 connections are active. 1847 Fixed accepting more than 128 incoming connection in epoll mode. 1848 Improved test_large_put, added poll() and epoll testing. 1849 Added test_large_put_inc for testing of incremental buffer processing. 1850 Rewritten epoll connection processing logic: handle all connection one 1851 time per turn instead of trying to handle all active connection until all 1852 pending data is dried. Result is more uniform connection processing 1853 period. -EG 1854 1855 Wed Nov 23 15:24:10 MSK 2016 1856 Used SO_REUSEADDR (on non-W32) alongside with SO_REUSEPORT if option 1857 MHD_OPTION_LISTENING_ADDRESS_REUSE was set. -EG 1858 1859 Wed Nov 23 12:48:23 MSK 2016 1860 Move all gettext-related staff to 'po' subdirectory. 1861 Excluded gettext files generation from normal build. 1862 Removed generated files from GIT. -EG 1863 1864 Tue Nov 15 19:08:43 MSK 2016 1865 Fixed forwarding "upgraded" TLS connections for 1866 chunks sizes larger than buffer size. -EG 1867 1868 Mon Nov 14 22:18:30 MSK 2016 1869 Fixed unintentional usage of SO_REUSEADDR on W32. 1870 Added support for SO_EXCLBIND on Solaris. 1871 Fixed using MHD with MHD_OPTION_LISTENING_ADDRESS_REUSE 1872 on Linux kernels before 3.9 (longterm 3.2 and 3.4 1873 are still supported). -EG 1874 1875 Sun Nov 13 19:16:38 CET 2016 1876 Fixed a few race issues on suspend-resume in cases where the 1877 application uses threads even though MHD did not (or at least 1878 had no internal need for locking). Also fixed DLL handling of 1879 the timeout list, avoiding manipulating it for suspended 1880 connections. Finally, eliminated calling application logic 1881 on suspended connections (which before could happen under 1882 certain circumstances). -CG 1883 1884 Thu Nov 11 20:49:23 MSK 2016 1885 Added support for various forms of 1886 pthread_attr_setname_np() so thread names will be set 1887 more efficiently on certain platforms (Solaris, NetBSD etc.) -EG 1888 1889 Thu Nov 10 21:50:35 MSK 2016 1890 Added rejection in MHD_start_daemon() of invalid combinations 1891 of daemon flags. 1892 Added MHD_USE_AUTO and MHD_USE_AUTO_INTERNAL_THREAD for 1893 automatic selection of polling function depending on 1894 platform capabilities and requested mode. -EG 1895 1896 Thu Nov 10 17:49:56 MSK 2016 1897 Ported "upgrade" tests to W32 and other platforms, used 1898 "gnutls-cli" instead of "openssl" in tests, minor bugs 1899 fixed, added verbose reporting if requested. 1900 "Upgrade" processing - changed internal handling logic, improved 1901 and refactored, bugs fixed, fixed sigpipe on Darwin, added 1902 printing error to log, fixed compilation without HTTPS. 1903 Added 'configure' parameter "--disable-httpupgrade" for building 1904 minimal-sized MHD versions. 1905 Added feature check "MHD_FEATURE_UPGRADE". 1906 Responses destroyed (freed) earlier if possible. 1907 Added many remarks in code comments about thread safety. 1908 Some data races and other multithread-related issues are fixed, 1909 including usage of closed sockets (may resulted in accidental closing 1910 of wrong socket). 1911 SO_NOSIGPIPE is used on all platform which support it, not only 1912 on Darwin. 1913 Added support for suspending connections in thread-per-connection 1914 mode (itself almost useless, mostly to unify modes support). 1915 Fixed Inter-Thread Communication channel usage in epoll modes. 1916 Reworked daemon cleanups and handling MHD_stop_daemon(): resources 1917 are freed only by specific threads, data races and other fixes. 1918 Started usage of C99 standard 'bool' where supported with 1919 fallback to 'int'. 1920 Renamed many MHD flags. Now they are self-explainable and more 1921 obvious, like MHD_USE_INTERNAL_POLLING_THREAD instead of 1922 MHD_USE_SELECT_INTERNALLY. Old flag names are supported for 1923 backward compatibility. 1924 Improved processing of "fast" connections: now full sequence 1925 "read request - send reply headers - send reply body" is processed 1926 after single select()/poll(). If connection is slow, request is huge 1927 or response in not immediately ready - connection will be processed 1928 in "traditional" way. 1929 Added usage of "calloc()" where supported. 1930 Minor documentation fixes. 1931 Minor improvements and fixes. -EG 1932 "Upgrade" test fixes. 1933 Documentation updated. 1934 Added HTTP "Upgrade" example. -CG 1935 1936 Mon Oct 17 19:08:18 CEST 2016 1937 Fixed misc. issues relating to upgrade. 1938 Releasing experimental 0.9.52. -CG 1939 1940 Wed Oct 12 14:26:20 CEST 2016 1941 Migrated repository from Subversion to Git. -CG 1942 1943 Tue Oct 11 18:09:56 CEST 2016 1944 Deprecated MHD_USE_SSL, use MHD_USE_TLS instead. -CG 1945 1946 Tue Oct 11 18:14:40 MSK 2016 1947 Code internal refactoring: 'pipes' renamed to 'inter-thread 1948 communication (channels)/ITCs', as code can use different types 1949 of communications. 1950 Optimizations: ITCs now always created in non-blocking mode. 1951 Added configure parameter to choose ITC type. 1952 Updated documentation and comments. 1953 Minor errors fixed (related to heavy load). -EG 1954 1955 Thu Sep 22 17:51:04 CEST 2016 1956 Implementing support for eventfd() instead of pipe() for 1957 signaling (on platforms that support it); fixing #3557. -CG 1958 1959 Thu Sep 22 11:03:43 CEST 2016 1960 Simplify internal error handling logic by folding it into the 1961 MHD_socket_close_, MHD_mutex_lock_, MHD_mutex_unlock_ and 1962 MHD_mutex_destroy_ functions. -CG 1963 1964 Tue Sep 13 22:20:26 MSK 2016 1965 Added autoconf macro to enable maximum platform 1966 features. Fixed compiling on Solaris. -EG 1967 1968 Wed Sep 7 12:57:57 CEST 2016 1969 Fixing #4641. -Hawk 1970 1971 Wed Sep 7 00:28:59 CEST 2016 1972 Adding remaining "_"-markups for i18n (#4614). -CG 1973 1974 Tue Sep 6 23:39:56 CEST 2016 1975 Allow out-of-order nonces for digest authentication (#4636). -CG 1976 1977 Tue Sep 6 21:29:09 CEST 2016 1978 Martin was right, "socket_context" should be "void *" 1979 in `union MHD_ConnectionInfo`. -MS 1980 1981 Sun Sep 4 18:16:32 CEST 2016 1982 Fixing potential memory leak (#4634). -CG 1983 1984 Sun Sep 4 17:25:45 CEST 2016 1985 Tests for "Upgrade" logic are now in place and passing. 1986 However, still need to make sure code is portable. -CG 1987 1988 Sat Sep 3 11:56:20 CEST 2016 1989 Adding logic for handling HTTP "Upgrade" in thread-per-connection 1990 mode. Also still untested. -CG 1991 1992 Sat Aug 27 21:01:43 CEST 2016 1993 Adding a few extra safety checks around HTTP "Upgrade" 1994 (against wrong uses of API), and a testcase. -CG 1995 1996 Sat Aug 27 20:07:53 CEST 2016 1997 Adding completely *untested* logic for HTTP "Upgrade" 1998 handling. -CG 1999 2000 Sat Aug 27 18:20:38 CEST 2016 2001 Releasing libmicrohttpd 0.9.51. -CG 2002 2003 Tue Aug 23 22:54:07 MSK 2016 2004 Internal refactoring: W32 compatibility layer was finally 2005 replaced with several specialized abstraction layers for 2006 sockets, control pipes (inter-thread communication) and 2007 generic functions. Now all major platform functions 2008 (including threads and mutex) are implemented in thin 2009 abstraction layers. 2010 Improved performance on W32 due to eliminating 2011 translation of error to POSIX codes and using W32 codes 2012 directly (through macros). 2013 Improved error reporting on all platforms. 2014 Improved error handling and reporting on Darwin. 2015 Minor fixes. -EG 2016 2017 Tue Aug 16 15:14:30 MSK 2016 2018 Minor improvement for monotonic clock. 2019 Minor configure fix for non-bash shells. -EG 2020 2021 Mon Aug 15 13:06:52 CEST 2016 2022 Fixed possible crash due to write to read-only region of 2023 memory given ill-formed HTTP request (write was otherwise 2024 harmless, writing 0 to where there was already a 0). 2025 Fixed issue with closed connection slots not immediately 2026 being available again for new connections if we reached 2027 our connection limit. 2028 Avoid even accept()ing connections in certain thread modes 2029 if we are at the connection limit and 2030 MHD_USE_PIPE_FOR_SHUTDOWN is available. -CG 2031 2032 Wed Aug 10 16:42:57 MSK 2016 2033 Moved threads, locks and mutex abstraction to separate files, 2034 some minor errors fixed, added support for thread name functions 2035 on various platforms, added configure flag for disable thread 2036 naming. -EG 2037 2038 Sat Jul 23 20:45:51 CEST 2016 2039 Added macro detection of speed/size compiler optimization. 2040 Added different implementation of functions in mhd_str.c for 2041 size optimization. Enabled automatically if compiler size 2042 optimization is detected or MHD_FAVOR_SMALL_CODE is defined. 2043 Added unit tests for all mhd_str.c functions. -EG 2044 2045 Sat Jul 16 21:54:49 CEST 2016 2046 Warn user if they sent connection into blocking 2047 state by not processing all POST data, not suspending, 2048 and not running in external select mode. -CG 2049 2050 Fri Jul 8 21:35:07 CEST 2016 2051 Fix FIXME in tutorial. -CG 2052 2053 Fri Jul 8 15:57:06 CEST 2016 2054 Adding support for 308 status code. -CG 2055 2056 Sat Jun 25 13:49:31 CEST 2016 2057 Use shutdown to trigger select on NetBSD. -EG 2058 2059 Thu Jun 2 09:55:50 CEST 2016 2060 Releasing libmicrohttpd 0.9.50. -CG 2061 2062 Wed Jun 1 21:59:34 CEST 2016 2063 Do not send "Content-Length" header for 1xx/204/304 status codes. -CG 2064 2065 Tue May 17 13:32:21 CEST 2016 2066 Allow clients to determine whether a connection is suspended; 2067 introduces MHD_CONNECTION_INFO_CONNECTION_SUSPENDED. -CG/FC 2068 2069 Sun May 15 12:17:25 CEST 2016 2070 Fix handling system or process resource limit exhaustion upon 2071 accept(). -CG/CP 2072 2073 Thu May 12 08:42:19 CEST 2016 2074 Fix handling of partial writes in MHD_USE_EPOLL_LINUX_ONLY; only 2075 consider sockets returning EAGAIN as unready. -CG/CP 2076 2077 Mon May 2 06:08:26 CEST 2016 2078 Adding logic to help address FE performance issue as 2079 discussed on the mailinglist with subject 2080 "single-threaded daemon, multiple pending requests, responses batched". 2081 The new logic is only enabled when MHD_USE_EPOLL_TURBO is set. 2082 Note that some additional refactoring was also done to clean up 2083 the code and avoid code duplication, which may have actually fixed 2084 an unrelated issue with HTTPS and a POLL-style event loop. -CG 2085 2086 Sat Apr 30 10:22:37 CEST 2016 2087 Added clarifications to manual based on questions on list. -CG 2088 2089 Sat Apr 23 20:12:01 CET 2016 2090 Tests perf_get_concurrent and test_concurrent_stop ported to use 2091 pthread instead of fork(). Added more error detections. -EG 2092 2093 Sat Apr 23 16:06:30 CET 2016 2094 Improved test_quiesce test. -EG 2095 2096 Sat Apr 23 15:39:38 CET 2016 2097 Notify other threads in MHD_quiesce_daemon() so listen socket FD 2098 is removed from awaiting select() and poll(). -EG 2099 2100 Sat Apr 23 14:17:15 CET 2016 2101 Revert "shutdown trigger select" on Darwin. Fixed daemon shutdown 2102 on Darwin without "MHD_USE_PIPE_FOR_SHUTDOWN" option. -EG 2103 2104 Fri Apr 22 14:29:28 CET 2016 2105 Fixed race conditions when stopping quiesced daemon with thread 2106 pool. -EG 2107 2108 Wed Apr 20 18:12:30 CET 2016 2109 Fixed macros in sysfdsetsize.c which could prevent compiling with 2110 non-default FD_SETSIZE. 2111 Fixed comments in mhd_str.c. 2112 Updated test_post.c to not ignore specific error on W32 if libcurl 2113 is built with workaround for WinSock bug. -EG 2114 2115 Mon Apr 18 19:35:14 CET 2016 2116 Fixed data races leading to inability in rare situations to 2117 resume suspended connection. -EG 2118 2119 Tue Apr 13 21:46:01 CET 2016 2120 Removed unneeded locking for global timeout list in 2121 MHD_USE_THREAD_PER_CONNECTION mode. 2122 Added 'simplepost' and 'largepost' examples to VS projects. 2123 Added strtoXX() locale-independent replacement functions. 2124 Added more error checking and minor fixes in digest auth 2125 functions - should improve security. 2126 Ignored specific errors in 'test_post' test until libcurl 2127 will implement workaround for WinSock bug. 2128 Fixed handling of caller-supplied socket with 2129 MHD_OPTION_LISTEN_SOCKET (regression in 0.9.49). 2130 Minor fixes. 2131 Various cosmetics and comments fixes. -EG 2132 2133 Sat Apr 09 13:05:42 CET 2016 2134 Releasing libmicrohttpd 0.9.49. -EG 2135 2136 Fri Apr 08 18:32:17 CET 2016 2137 Some minor internal fixes, addition error checking and 2138 micro optimizations. 2139 Reworked usage of sockets shutdown() - now work equally 2140 on all platforms, disconnection should be "more graceful". -EG 2141 2142 Tue Mar 15 21:52:27 CET 2016 2143 Do not crash if pthread_create() fails. -DD 2144 2145 Tue Mar 15 20:29:34 CET 2016 2146 Do not use eready DLL data structure unless 2147 we are actually using epoll(). -DD/CG 2148 2149 Fri Feb 5 20:43:11 CET 2016 2150 Fixed testsuite compile warning on W32. 2151 Added check test for triggering poll() on 2152 listen socket. -EG 2153 2154 Thu Feb 4 11:38:11 CET 2016 2155 Added some buffer overrun protection. 2156 Fixed handling of malformed URI with spaces. -EG 2157 2158 Wed Feb 3 15:41:57 CET 2016 2159 Make signal-pipe non-blocking and drain it. -CG 2160 2161 Sat Jan 30 15:49:07 CET 2016 2162 Fix running select() with empty fdsets on W32. -EG 2163 2164 Mon Jan 25 13:45:50 CET 2016 2165 Added check test for triggering select() on 2166 listen socket. -EG 2167 2168 Thu Jan 21 19:35:18 CET 2016 2169 Fixed old bug with making sockets non-blocking on 2170 various platforms so now sockets are really 2171 non-blocking on all supported platforms. 2172 Reworked and fixed code for using SOCK_CLOEXEC, 2173 SOCK_NONBLOCK and EPOLL_CLOEXEC resulting in 2174 fewer used system calls. -EG 2175 2176 Tue Jan 19 20:59:59 CET 2016 2177 Cleaned up and optimized with minor fixes code for 2178 making sockets non-blocking non-inheritable. -EG 2179 2180 Tue Jan 19 11:14:18 CET 2016 2181 Removed workaround for Cygwin non-blocking sockets: 2182 handling non-blocking sockets were fixed in Cygwin 2183 and libmicrohttpd how uses non-blocking sockets on 2184 all platforms. -EG 2185 2186 Mon Jan 18 23:54:45 CET 2016 2187 Cleaned up examples to avoid giving oversimplified code 2188 that may lead to complications if adopted naively. -CG 2189 2190 Sun Jan 17 11:18:55 CET 2016 2191 Do no refuse to send response if sendfile() failed with 2192 EINVAL (common error for files located on SMB/CIF). -EG 2193 2194 Sat Jan 16 19:14:39 CET 2016 2195 Use US-ASCII only (instead of user locale settings) when 2196 performing caseless string comparison as required by 2197 standard. -EG 2198 2199 Tue Jan 12 16:10:09 CET 2016 2200 Fixed declaraion of MHD_get_reason_phrase_for(). -EG 2201 2202 Mon Jan 11 19:58:50 CET 2016 2203 Configure.ac small fixes and refactoring. -EG 2204 2205 Fri Dec 18 15:54:50 CET 2015 2206 Releasing libmicrohttpd 0.9.48. -CG 2207 2208 Tue Dec 15 18:35:55 CET 2015 2209 Improved compatibility with VS2010 and other older 2210 compilers. -EG 2211 2212 Tue Dec 8 21:48:44 CET 2015 2213 Default backlog size for listen socket was changed from 2214 32 to SOMAXCONN, added new option MHD_OPTION_LISTEN_BACKLOG_SIZE 2215 to override default backlog size. 2216 If not all connections can be handled by MHD_select() than 2217 at least some of connections will be processed instead of 2218 failing without any processing. 2219 Fixed redefenition of FD_SETSIZE on W32 so select() will 2220 work with 2000 connections instead of 64. 2221 Better handled redefenition of FD_SETSIZE on all 2222 platforms. -EG 2223 2224 Sat Dec 5 17:30:45 CET 2015 2225 Close sockets more aggressively in multi-threaded 2226 mode (possibly relevant for idle servers). -CG 2227 2228 Fri Dec 4 13:53:05 CET 2015 2229 Releasing libmicrohttpd 0.9.47. -CG 2230 2231 Thu Dec 3 18:21:44 CET 2015 2232 Reworked VS project files. Used x64 build tools by 2233 default, many optimizations, fixes. 2234 Added project files for VS 2015. -EG 2235 2236 Tue Dec 1 14:05:13 CET 2015 2237 SPDY is dead, killing experimental libmicrospdy. -CG 2238 2239 Tue Dec 1 10:01:12 CET 2015 2240 New logic for controlling socket buffer modes. 2241 Eliminated delay before last packet in response and before 2242 "100 Continue" response on all platforms. Also response 2243 header are pushed to client without waiting for response 2244 body. -EG 2245 2246 Wed Nov 25 17:02:53 CET 2015 2247 Remove 200ms delay observable with keep-alive on Darwin 2248 and *BSD platforms. -EG 2249 2250 Tue Nov 10 15:25:48 CET 2015 2251 Fix issue with shutdown if connection was resumed just 2252 before shutdown. -FC 2253 2254 Fri Nov 6 22:54:38 CET 2015 2255 Fixing the buffer shrinkage issue, this time with test. -CG 2256 Releasing libmicrohttpd 0.9.46. -CG 2257 2258 Tue Nov 3 23:24:52 CET 2015 2259 Undoing change from Sun Oct 25 15:29:23 CET 2015 2260 as the original code was counter-intuitive but 2261 correct, and the new code does break pipelining. 2262 Ignore empty lines at the beginning of an HTTP 2263 request (more tolerant implementation). -CG 2264 2265 Sat Oct 31 15:52:52 CET 2015 2266 Releasing libmicrohttpd 0.9.45. -CG 2267 2268 Tue Oct 27 12:08:02 CET 2015 2269 Rework deprecation maros: fix errors with old GCC versions, 2270 improved support for old clang and new GCC. -EG 2271 2272 Sun Oct 25 23:05:32 CET 2015 2273 Return correct header kind in MHD_get_connection_values() 2274 even if a bitmask is used for the "kind" argument. -FC/CG 2275 2276 Sun Oct 25 15:29:23 CET 2015 2277 Fixing transient resource leak affecting long-lived 2278 connections with a lot of keep-alive and HTTP request 2279 pipelining under certain circumstances (which reduced 2280 the receive window). 2281 Fixed assertion failure triggered by a race in 2282 thread-per-connection mode on shutdown in rare 2283 circumstances. -CG 2284 2285 Mon Oct 5 11:53:52 CEST 2015 2286 Deduplicate code between digestauth and connection 2287 parsing logic for URI arguments, shared code moved 2288 to new MHD_parse_arguments_ function in internal.c. -CG 2289 2290 Thu Oct 1 21:22:05 CEST 2015 2291 Releasing libmicrohttpd 0.9.44. -CG 2292 2293 Wed Sep 30 21:05:38 CEST 2015 2294 Various fixes for W32 VS project files. -EG 2295 2296 Fri Sep 25 09:49:10 CEST 2015 2297 Fix digest authentication with URL arguments where 2298 value-less keys are given before the last argument. 2299 Thanks to MA for reporting. -CG 2300 2301 Tue Sep 22 19:17:54 CEST 2015 2302 Do not use shutdown() on listen socket if MHD_USE_PIPE_FOR_SHUTDOWN 2303 is set. -CG 2304 2305 Wed Sep 16 11:06:02 CEST 2015 2306 Releasing libmicrohttpd 0.9.43. -CG 2307 2308 Wed Sep 2 16:50:31 CEST 2015 2309 Call resume_suspended_connections() when the user is running 2310 its own mainloop and calls MHD_run_from_select() to support 2311 resuming connections with external select. -FC 2312 2313 Sun Aug 30 14:53:51 CEST 2015 2314 Correct documentation as to when MHD_USE_EPOLL_LINUX_ONLY 2315 is allowed. -CG 2316 2317 Thu Aug 27 09:38:44 CEST 2015 2318 Reimplement monotonic clock functions for better 2319 support various platforms. 2320 Print more information during configure. -EG 2321 2322 Fri Aug 14 14:13:55 CEST 2015 2323 Export MHD_get_reason_phrase_for() symbol. -CG 2324 2325 Sat Aug 8 12:19:47 CEST 2015 2326 Added checks for overflows and buffer overruns, fixed 2327 possible buffer overrun. 2328 Updated md5 implementation. 2329 Fixed many compiler warning (mostly for VC compiler). -EG 2330 2331 Tue Aug 4 13:50:23 CEST 2015 2332 Fix failure to properly clean up timed out connections 2333 if running in external select mode without listen socket, 2334 which caused busy waiting until new connections arrived. 2335 (Fixes #3924, thanks to slimp for reporting and testcase). -CG 2336 2337 Sun Aug 2 19:08:20 CEST 2015 2338 Ignore close() errors on sockets except for EBADF, 2339 fixes #3926. -CG 2340 2341 Sat Jun 27 22:16:27 CEST 2015 2342 Make sure to decrement connection counter before 2343 calling connection notifier so that 2344 MHD_DAEMON_INFO_CURRENT_CONNECTIONS does not 2345 present stale information (relevant if this is 2346 used for termination detection of a daemon 2347 stopped via MHD_quiesce_daemon()). Thanks to 2348 Markus Doppelbauer for reporting. -CG 2349 2350 Fri Jun 26 23:17:20 CEST 2015 2351 Fix (automatic) handling of HEAD requests with 2352 MHD_create_response_from_callback() and HTTP/1.1 2353 connection keep-alive. Thanks to Cristian Klein 2354 for reporting. -CG 2355 2356 Tue Jun 09 18:30:17 CEST 2015 2357 Add new functions MHD_create_response_from_fd64() and 2358 MHD_create_response_from_fd_at_offset64(). -EG 2359 2360 Thu Jun 4 13:37:05 CEST 2015 2361 Fixing memory leak in digest authentication. -AW 2362 2363 Wed Jun 03 21:23:47 CEST 2015 2364 Add deprecation compiler messages for deprecated functions 2365 and macros. -EG 2366 2367 Fri May 29 12:23:01 CEST 2015 2368 Fixing digest authentication when used in combination 2369 with escaped characters in URLs. -CG/AW 2370 2371 Wed May 13 11:49:09 CEST 2015 2372 Releasing libmicrohttpd 0.9.42. -CG 2373 2374 Wed May 13 11:33:59 CEST 2015 2375 Fix off-by-one in MHD_start_daemon_va() error handling logic 2376 when initialization of threads for thread pool fails for some 2377 reason. -CG/JC 2378 2379 Thu May 7 17:05:46 CEST 2015 2380 Add support for poll() in W32. -EG 2381 2382 Wed May 6 18:07:38 CEST 2015 2383 Fix #3784: actually implement MHD_CONNECTION_INFO_SOCKET_CONTEXT. -asherkin 2384 2385 Thu Apr 30 00:03::49 CEST 2015 2386 Releasing libmicrohttpd 0.9.41. -CG 2387 2388 Thu Apr 30 00:02:33 CEST 2015 2389 Fix issue where resumed connections would not continue 2390 unless other requests are active in certain 2391 event-loop modes. Thanks to Mike Castillo for reporting. -CG 2392 2393 Wed Apr 15 03:16:18 CEST 2015 2394 Fixing issue #3753 (testcase issue). -CG 2395 2396 Wed Apr 15 00:30:34 CEST 2015 2397 Fix looping issue when using MHD_USE_POLL_INTERNALLY 2398 and a client times out. -LB 2399 2400 Sun Apr 12 21:48:50 CEST 2015 2401 Fix looping issue when combining MHD_USE_EPOLL_LINUX_ONLY 2402 with HTTPS and slow clients. -CG 2403 2404 Fri Apr 10 22:02:27 CEST 2015 2405 Fix logic to add "Connection: Close" that was broken in 0.9.38 2406 when adding MHD_RF_HTTP_VERSION_1_0_ONLY. -CG 2407 2408 Fri Apr 10 00:38:40 CEST 2015 2409 Ensure fast termination in MHD_USE_THREAD_PER_CONNECTION 2410 mode on W32 by using signal pipe. -CG 2411 2412 Thu Apr 9 09:01:15 CEST 2015 2413 Fixing issue with undrained signal pipe when using 2414 MHD_USE_SELECT_INTERNALLY and MHD_USE_POLL in combination 2415 with MHD_resume_connection(), causing 100% CPU usage. -DD 2416 2417 Tue Apr 7 00:12:36 CEST 2015 2418 Releasing libmicrohttpd 0.9.40. -CG 2419 2420 Sat Apr 4 18:28:24 CEST 2015 2421 Fix potential deadlock issue in MHD_USE_THREAD_PER_CONNECTION 2422 mode if shutdown is initiated while connections are active. -CG 2423 2424 Sat Apr 4 17:48:13 CEST 2015 2425 Fix issue in thread-pool mode where a MHD_stop_daemon() 2426 might not reach threads that stopped listening because 2427 we hit the maximum number of concurrent connections and 2428 the option MHD_USE_PIPE_FOR_SHUTDOWN was also not used. 2429 Testcase added as well. -CG 2430 2431 Fri Apr 3 12:55:31 CEST 2015 2432 Update HTTPS testcases to avoid SSLv3, as SSLv3 is dead. 2433 2434 Fri Apr 3 12:25:28 CEST 2015 2435 Do not enforce FD_SETSIZE-limit on worker control 2436 pipe when using MHD_USE_EPOLL_LINUX_ONLY (#3751). -MH/CG 2437 2438 Tue Mar 31 10:28:26 CEST 2015 2439 Adding MHD_OPTION_NOTIFY_CONNECTION, 2440 MHD_CONNECTION_NOTIFY_STARTED, 2441 MHD_CONNECTION_NOTIFY_CLOSED and 2442 MHD_CONNECTION_INFO_SOCKET_CONTEXT to allow 2443 applications to trigger operations when TCP 2444 connections start or end, instead of just 2445 exposing HTTP requests starting and ending. -RG/CG 2446 2447 Thu Feb 26 09:55:43 CET 2015 2448 Fixing bug that prevented MHD_OPTION_HTTPS_MEM_DHPARAMS 2449 from working within a MHD_OPTION_ARRAY. -DD 2450 2451 Sun Feb 8 01:24:38 CET 2015 2452 Adding MHD_OPTION_HTTPS_KEY_PASSWORD as proposed by 2453 Andrew Basile. -CG/AB 2454 2455 Wed Feb 4 20:34:22 CET 2015 2456 Fix issue where for HTTP/1.0-clients that set 2457 Connection: Keep-Alive header a response of 2458 indefinite size was generated with chunked encoding. -CG 2459 2460 Sun Jan 18 20:09:06 CET 2015 2461 Fix potential infinite loop on shutdown in multi-threaded mode 2462 under certain conditions. -CG 2463 2464 Mon Dec 22 16:33:18 CET 2014 2465 Releasing 0.9.39. -CG 2466 2467 Mon Dec 22 13:02:36 CET 2014 2468 Fix generated compiler flags for Solaris Studio linker (#3584). -CG 2469 2470 Sat Dec 20 00:35:40 CET 2014 2471 Adding MHD_http_unescape() to public API (#3585). -CG 2472 Updating documentation to document 2473 MHD_is_feature_supported(). -CG 2474 2475 Thu Dec 4 00:43:10 CET 2014 2476 If "Connection: upgrade" is requested, do not add 2477 "Connection: Keep-Alive" in the response. -GJ 2478 2479 Tue Nov 18 13:52:29 CET 2014 2480 Call MHD_cleanup_connections() during MHD_DAEMON_INFO_CURRENT_CONNECTIONS 2481 processing for more accurate results. -MS 2482 2483 Wed Oct 29 20:45:21 CET 2014 2484 Adding MHD_OPTION_LISTENING_ADDRESS_REUSE option allowing clients 2485 to force allowing re-use of the address:port combination 2486 (SO_REUSEPORT). -MS 2487 2488 Wed Oct 29 16:27:05 CET 2014 2489 Adding MHD_DAEMON_INFO_CURRENT_CONNECTIONS to allow clients 2490 to query the number of active connections. -MS 2491 2492 Fri Oct 3 14:28:58 CEST 2014 2493 Releasing 0.9.38. -CG 2494 2495 Mon Sep 29 22:25:34 CEST 2014 2496 Properly decode '+' in URL-encoded POST data. -CG/KM 2497 2498 Fri Sep 12 17:32:09 CEST 2014 2499 Fix --disable-dauth configure option (#3543). -doostee 2500 2501 Thu Jun 26 21:06:04 CEST 2014 2502 Fix failure to terminate 'instantly' in thread-per-connection 2503 mode if there is a client with open connections. 2504 Thanks to Kenneth Mastro for reporting. -CG 2505 2506 Sun Jun 22 12:22:08 CEST 2014 2507 Actually, avoid locking on response as responses must 2508 not be modified in a connection-specific way; instead 2509 modify the connection's data buffer to add missing 2510 responses headers. If we are forced to add 2511 "Connection: close", suppress output of conflicting 2512 application-provided "Connection: Keep-Alive" header. -CG 2513 2514 Sun Jun 22 00:22:08 CEST 2014 2515 Lock on response if adding headers, needed if response 2516 object is shared across threads and connections. -CG 2517 2518 Thu Jun 19 17:32:32 CEST 2014 2519 Ensure that listen FD is bound to epoll FD even before 2520 MHD_run() is called if running with MHD_USE_EPOLL_LINUX_ONLY 2521 in combination with 'external select' mode. Thanks to 2522 Marcos Pindado Sebastian for reporting. -CG 2523 2524 Sun Jun 8 15:10:44 CEST 2014 2525 Add 'MHD_set_response_options' as a way to set per-response 2526 flags. Add flag to force HTTP 1.0-only conservative 2527 behavior, in particular suppressing adding "Connection" 2528 headers. -CG 2529 2530 Mon Jun 2 00:03:28 CEST 2014 2531 Added back unescaping for URI path (#3413) but without 2532 unescaping '+' (#3371) to remain compatible with 2533 MHD 0.9.34 and before. Note that applications providing 2534 a custom MHD_OPTION_UNESCAPE_CALLBACK are no longer expected 2535 to replace '+' with ' ', as that is now done separately for 2536 the locations where this transformation is appropriate. 2537 Releasing 0.9.37. -CG 2538 2539 Wed May 28 15:30:56 CEST 2014 2540 Properly applying patch that was supposed to be 2541 committed on "May 2 20:22:45 CEST 2014" to address 2542 infinite loop (DoS) when HTTP connection is reset (#3392). -GM 2543 2544 Sun May 25 20:18:27 CEST 2014 2545 Fixed W32 build issues. -EG 2546 Releasing 0.9.36. -CG 2547 2548 Sat May 17 06:47:00 CEST 2014 2549 Fix notifying client about completed request twice 2550 under certain circumstances. -CG 2551 2552 Tue May 13 18:24:37 CEST 2014 2553 Fix accidental transmission of footer termination '\r\n' 2554 for responses with zero byte payload and non-chunked 2555 encoding (#3397). Thanks to amatus for reporting. -CG 2556 2557 Sun May 4 11:05:26 CEST 2014 2558 Fix gnutls header check to make it cross-compile aware. -BK 2559 2560 May 2 20:22:45 CEST 2014 2561 Fix infinite loop (DoS) when HTTP connection is reset (#3392). -GM 2562 Fix possible issue from combination of epoll and suspend/resume 2563 logic if edge trigger event is lost; also simplify logic to 2564 maintain simpler invariants on the epoll state. -CG 2565 Use OpenSSL cipher list "HIGH" in libmicrospdy (#3391). -CG 2566 Releasing 0.9.35. -CG 2567 2568 Thu Apr 10 09:39:38 CEST 2014 2569 Removed unescaping for URI path (#3371) as '+' should not 2570 be converted to space in accordance with 2571 http://www.w3.org/TR/html401/appendix/notes.html#ampersands-in-uris 2572 and http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 2573 Note that we now also no longer convert '#38;' to '&'; if needed, 2574 the application needs to apply unescaping to the path of the URI 2575 itself (before, MHD unescaped '#38;' but not '&', so this 2576 inconsistency was now resolved by simply not unescaping anything 2577 before the first '&'). -CG 2578 2579 Tue Apr 08 15:35:44 CET 2014 2580 Added support for W32 native threads. 2581 Added --with-threads=LIB configure parameter. -EG 2582 2583 Mon Apr 7 13:25:30 CEST 2014 2584 Add MHD_OPTION_HTTPS_MEM_DHPARAMS to allow applications 2585 to enable PFS. -HB/CG 2586 2587 Tue Apr 01 07:10:23 CET 2014 2588 Added usage of native mutex on W32. -EG 2589 2590 Sat Mar 29 16:12:03 CET 2014 2591 Added MHD_is_feature_supported() function. -EG 2592 2593 Thu Mar 27 14:47:54 CET 2014 2594 Used larger FD_SETSIZE internally on W32. 2595 Extended API to work with non-default FD_SETSIZE. -EG 2596 2597 Tue Mar 25 12:53:55 CET 2014 2598 Fix limiting by IPv6 address. -EG 2599 2600 Tue Mar 25 09:06:13 CET 2014 2601 Added more FD_SETSIZE checks. 2602 Implemented FD_SETSIZE checks for W32. -EG 2603 2604 Wed Mar 05 13:15:05 CET 2014 2605 Cleanup and refactoring of configure.ac. 2606 m4 macros updated. 2607 Custom configure macros replaced with autoconf archive macros. 2608 SPDY disabled by default on W32. 2609 Changed configure flag from '--disable-pipe' to 2610 '--enable-socketpair'. 2611 Added configure flags '--disable-doc' and '--disable-examples'. 2612 Narrowed down external lib specific compiler and linker flags 2613 usage. -EG 2614 2615 Wed Feb 26 17:42:34 CET 2014 2616 Refactoring of configure.ac: custom macros replaced with macros 2617 from Autoconf Archive. 2618 Minor corrections of configure.ac. 2619 Excluded pthread flags from global flags, pthread now used only 2620 where required. 2621 W32: fixed .dll resource compilation with '-isystem' CPPFLAG. 2622 W32: improved header compatibility with MSVC. 2623 W32: now tested on Win64, compiled by MinGW-w64. -EG 2624 2625 Mon Feb 24 23:13:53 CET 2014 2626 Added support for TCP FASTOPEN. -SHT 2627 Releasing 0.9.34. -CG 2628 2629 Thu Feb 20 14:17:05 CET 2014 2630 W32: Added creation of libmicrohttpd.lib, libmicrohttpd.def, 2631 libmicrohttpd.exp and libmicrohttpd-static.lib for easy use 2632 compiled MHD with MSVC. 2633 W32: Use MS lib.exe tool if available for creating MSVC staff. 2634 W32: Added .dll information resource. -EG 2635 2636 Tue Feb 18 19:46:45 CET 2014 2637 Removed dependency on plibc for simpler compilation for W32. 2638 Added configure option "--disable-pipes" to use socketpairs 2639 instead of pipes for signalling to child threads. Pipes are 2640 always disabled on W32. 2641 Some code refactoring. -EG 2642 2643 Sat Feb 8 15:08:35 CET 2014 2644 Corrected some uses of 'int' vs. 'size_t'. -EG/CG 2645 2646 Wed Jan 22 09:44:33 CET 2014 2647 MHD_USE_DUAL_STACK in libmicrohttpd currently just *inhibits 2648 setting* the IPV6_V6ONLY socket option, but per Microsoft's 2649 documentation the default on Windows is that this is enabled, thus 2650 MHD_USE_DUAL_STACK will not work (since it leaves the 2651 default). libmicrohttpd should probably just unconditionally set 2652 IPV6_V6ONLY to the desired value when the option is available. -LJ 2653 2654 Wed Jan 1 21:38:18 CET 2014 2655 Allow Keep-Alive with HTTP 1.0 (if explicitly requested), 2656 and automatically set "Connection: Keep-Alive" in response 2657 in this case as well. -CG 2658 2659 Tue Dec 24 12:27:39 CET 2013 2660 Adding explicit annotations to hide symbols that are not for 2661 export in the C code (gcc 4.0 or higher only). -CG 2662 2663 Sun Dec 22 14:54:30 CET 2013 2664 Adding a few lines to avoid warnings from picky compilers. -CG 2665 2666 Sat Dec 21 17:26:08 CET 2013 2667 Fixed an issue with a missing argument in the postexample. 2668 Fixed issue with bogus offset increment involving sendfile 2669 on GNU/Linux. Adding support for SNI. 2670 Releasing 0.9.33. -CG 2671 2672 Mon Dec 9 21:41:57 CET 2013 2673 Fix for per-worker daemon pipes enabled with 2674 MHD_USE_SUSPEND_RESUME that were not closed in 2675 MHD_stop_daemon. -MH 2676 2677 Sat Dec 7 00:44:49 CET 2013 2678 Fixing warnings and build issue if --disable-https is given 2679 to configure. -CG 2680 2681 Tue Dec 3 21:25:56 CET 2013 2682 Security fix: do not read past 0-terminator when unescaping 2683 strings (thanks to Florian Weimer for reporting). 2684 Releasing 0.9.32. -CG 2685 2686 Tue Dec 3 21:05:38 CET 2013 2687 Signaling n times for shutdown works, but for resume we need to 2688 wake up the correct daemon. Even if we signal n times in that 2689 case also, there's no guarantee that some daemon can't run 2690 through its select loop more than once before the daemon we want 2691 to wake up gets a chance to read. Thus we need a signal pipe 2692 per thread in the thread pool IF MHD_suspend_connection is used. 2693 This introduces a new flag MHD_USE_SUSPEND_RESUME to add those 2694 additional pipes and only allow MHD_suspend_connection to be 2695 used in conjunction with this flag. 2696 2697 Also, as MHD_resume_connection() will be called on a non-daemon 2698 thread, but none of the queue insert/delete calls are thread safe, 2699 we need to be concerned about (a) corrupting the queue, and (b) 2700 having to add mutex protection around every access to the queues, 2701 including loops through timer queues, etc. This wasn't a problem 2702 before adding resume; even suspend should be safe since it happens 2703 in a callback from the daemon. 2704 2705 I think it's easier to (a) have MHD_suspend_connection() move the 2706 connection to a suspended queue, (b) have MHD_resume_connection() 2707 mark the connection as resuming, and then (c) do all the actual 2708 queue manipulations in MHD_select (poll, epoll, etc.) to move the 2709 resumed connections back to their normal queues, in response to 2710 the wake up. The changes are simpler & cleaner. There is a cost to 2711 the basic select loop that is avoided by making suspend/resume a 2712 startup option. The per-worker pipes can then also be enabled only 2713 with that option set. -MH 2714 2715 Fri Nov 29 20:17:03 CET 2013 2716 Eliminating theoretical stack overflow by limiting length 2717 of URIs in authentication headers to 32k (only applicable 2718 if the application explicitly raised the memory limits, 2719 and only applies to MHD_digest_auth_check). Issue was 2720 reported by Florian Weimer. -CG 2721 2722 Tue Nov 26 01:26:15 CET 2013 2723 Fix race on shutdown signal with thread pool on non-Linux 2724 systems by signalling n times for n threads. -CG 2725 2726 Sun Nov 24 13:41:15 CET 2013 2727 Introduce state to mark connections in suspended state (with 2728 epoll); add missing locking operations in MHD_suspend_connection. 2729 Fix definition of MHD_TLS_CONNECTION_INIT. -MH/JC 2730 2731 Wed Oct 30 09:34:20 CET 2013 2732 Fixing issue in PostProcessor when getting partial boundary 2733 at the beginning, expanding test suite. -CG 2734 2735 Sun Oct 27 15:19:44 CET 2013 2736 Implementing faster processing of upload data in multipart 2737 encoding (thanks to performance analysis by Adam Homolya). -CG 2738 2739 Thu Oct 24 10:40:03 CEST 2013 2740 Adding support for connection flow control via 2741 MHD_suspend_connection and MHD_resume_connection. -CG 2742 2743 Sat Oct 19 16:40:32 CEST 2013 2744 Releasing libmicrohttpd 0.9.31. -CG 2745 2746 Mon Sep 23 20:24:48 CEST 2013 2747 Fixing build issues on OS X with CLOCK_MONOTONIC not being 2748 implemented on OS X. -CG 2749 2750 Mon Sep 23 14:15:00 CEST 2013 2751 Make libmicrohttpd play nicely with upcoming libgcrypt 1.6.0. -CG 2752 2753 Fri Sep 20 17:01:37 CEST 2013 2754 Improved configure checks for cURL. -CG 2755 2756 Wed Sep 18 18:29:24 CEST 2013 2757 Signal connection termination as OK (and not as ERROR) if the 2758 stream was terminated by the callback returning 2759 MHD_CONTENT_READER_END_OF_STREAM. Also, release response 2760 mutex before calling the termination callback, to avoid 2761 possible deadlock if the client destroys the response in 2762 the termination callback (due to non-recursiveness of the 2763 lock). -CG 2764 2765 Wed Sep 18 14:31:35 CEST 2013 2766 Adding #define MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN. -CG 2767 2768 Tue Sep 17 21:32:47 CEST 2013 2769 Also pass MHD connection handle in URI log callback. -CG 2770 2771 Fri Sep 6 10:00:44 CEST 2013 2772 Improved check for proper OpenSSL version for 2773 libmicrospdy. -CG 2774 2775 Wed Sep 4 17:23:15 CEST 2013 2776 Set IPV6_V6ONLY socket option correctly when IPv6 is 2777 enabled (MHD_USE_IPv6) but not dual stack 2778 (MHD_USE_DUAL_STACK) -MW 2779 2780 Mon Sep 2 22:59:45 CEST 2013 2781 Fix use-after-free in epoll()-mode on read error. 2782 Releasing libmicrohttpd 0.9.30. -CG 2783 2784 Sun Sep 1 21:55:53 CEST 2013 2785 Fixing build issues on FreeBSD. -CG 2786 2787 Fri Aug 30 13:53:04 CEST 2013 2788 Started to implement #3008 (RFC 2616, section 8.1.4 2789 says HTTP server SHOULD terminate connection if the 2790 client closes it for writing via TCP FIN, so we should 2791 continue to try to read and react differently 2792 if recv() returns zero). -CG 2793 2794 Wed Aug 28 18:40:47 CEST 2013 2795 Fix #3007 (build issue if messages are disabled). -CG 2796 2797 Tue Aug 27 18:39:08 CEST 2013 2798 Fix build issue if SOCK_NONBLOCK/EPOLL_CLOEXEC are not 2799 defined (as is the case on older glibc versions). -CG 2800 2801 Fri Aug 23 14:28:02 CEST 2013 2802 Releasing libmicrohttpd 0.9.29. -CG 2803 2804 Mon Aug 12 23:51:18 CEST 2013 2805 Updated manual, documenting W32 select/shutdown issue. -CG 2806 2807 Sat Aug 10 21:01:18 CEST 2013 2808 Fixed #2983. -CG 2809 2810 Sat Aug 10 20:39:27 CEST 2013 2811 Use 'errno' to indicate why 'MHD_add_connection' failed 2812 (#2984). -CG 2813 2814 Sat Aug 10 17:31:31 CEST 2013 2815 Disable use of 'shutdown' on W32 always as winsock 2816 doesn't properly behave with half-closed connections 2817 (see http://www.chilkatsoft.com/p/p_299.asp). -CG/LRN 2818 2819 Thu Aug 8 07:55:07 CEST 2013 2820 Fixing issue with pipelining not working as desired. -CG 2821 2822 Wed Aug 7 08:17:40 CEST 2013 2823 Removing dependency on liberty (on W32). -MC 2824 2825 Fri Aug 2 20:55:47 CEST 2013 2826 Fix HTTP 1.1 compliance with respect to not returning 2827 content-length headers for successful "CONNECT" requests. 2828 Note that for unsuccessful "CONNECT" requests with an 2829 empty response body, users must now explicitly set the 2830 content-length header. -CG 2831 2832 Sun Jul 28 16:35:17 CEST 2013 2833 Fixing build issue (missing #ifdef) in conjunction with 2834 --disable-messages. -blueness 2835 2836 Sat Jul 20 12:35:40 CEST 2013 2837 Fixing combination of MHD_USE_SSL and MHD_USE_EPOLL_LINUX_ONLY. -CG 2838 2839 Fri Jul 19 09:57:27 CEST 2013 2840 Fix issue where connections were not cleaned up when 2841 'MHD_run_from_select' was used. Adding experimental 2842 TURBO mode. 2843 Releasing libmicrohttpd 0.9.28. -CG 2844 2845 Sun Jul 14 19:57:56 CEST 2013 2846 Removing 'shutdown' calls that happen just before close or 2847 that are for read-only and for a client that has already 2848 stopped sending anyway (thus reducing number of system calls 2849 slightly). -CG 2850 2851 Sun Jul 14 19:37:37 CEST 2013 2852 Name MHD worker threads on glibc >= 2.12. -,L4X[o] 2853 2854 Fri Jul 5 12:05:01 CEST 2013 2855 Added MHD_OPTION_CONNECTION_MEMORY_INCREMENT to allow users 2856 to specify a custom value for incrementing read buffer 2857 sizes (#2899). -MH 2858 2859 Fri Jun 28 14:05:15 CEST 2013 2860 If we shutdown connection for reading on POST due to error, 2861 really do not process further requests even if we already 2862 read the next request from the connection. Furthermore, do 2863 not shutdown connections for reading on GET/HEAD/etc. just 2864 because the application queued a response immediately --- 2865 reserve that behavior for PUT/POST. -CG 2866 2867 Tue Jun 25 15:08:30 CEST 2013 2868 Added option 'MHD_USE_DUAL_STACK' to support a single 2869 daemon for IPv4 and IPv6 without the application having 2870 to do the binding. -CG 2871 2872 Mon Jun 24 22:33:34 CEST 2013 2873 Finished integration with epoll, including benchmarking and 2874 documentation. -CG 2875 2876 Sun Jun 23 15:28:13 CEST 2013 2877 Added option 'MHD_USE_PIPE_FOR_SHUTDOWN' to cleanly support 2878 'MHD_quiesce_daemon' with thread pools and per-connection 2879 threads (we then need a pipe for shutdown, but if 2880 'MHD_quiesce_daemon' is not used, we do not want to 2881 require the use of a pipe; introducing the pipe after 2882 the threads have been started can also fail, so the 2883 application needs to tell us early on). -CG 2884 2885 Sat Jun 22 20:24:17 CEST 2013 2886 Removed locking calls for thread modes that do not need them. 2887 Reorganized way to obtain connection's event loop state. 2888 Added sorted XDLL for connections with default timeout to 2889 avoid having to loop over all connections to determine current 2890 timeout (custom per-connection timeouts are in another list 2891 which is iterated each time). -CG 2892 2893 Fri Jun 21 20:55:48 CEST 2013 2894 Preparing build system and tests for epoll support. -CG 2895 2896 Tue May 21 14:34:36 CEST 2013 2897 Improving configure tests for OpenSSL and spdylay to 2898 avoid build errors in libmicrospdy code if those libraries 2899 are not present. -CG 2900 2901 Mon May 20 12:29:35 CEST 2013 2902 Added MHD_CONNECTION_INFO_CONNECTION_FD to allow clients 2903 direct access to connection socket; useful for COMET 2904 applications that need to disable NAGLE (#2886). -CG 2905 2906 Mon May 15 12:49:01 CEST 2013 2907 Fixing #2859. -CG 2908 2909 Sun May 5 21:44:08 CEST 2013 2910 Merged libmicrospdy code with libmicrohttpd build system 2911 (no major changes to libmicrospdy itself yet). -CG 2912 2913 Sun May 5 20:13:59 CEST 2013 2914 Improved documentation and code style a bit. 2915 Releasing libmicrohttpd 0.9.27. -CG 2916 2917 Thu Apr 25 13:08:10 CEST 2013 2918 Added 'MHD_quiesce_daemon' to allow application to stop 2919 processing new incoming connections while finishing 2920 ongoing requests. -CG 2921 2922 Sun Mar 31 23:17:13 CEST 2013 2923 Added MHD demonstration code 'src/examples/demo.c'. -CG 2924 2925 Sun Mar 31 20:27:48 CEST 2013 2926 Adding new API call 'MHD_run_from_select' to allow programs 2927 running in 'external select mode' to reduce the number of 2928 'select' calls by a factor of two. -CG 2929 2930 Sun Mar 31 20:03:48 CEST 2013 2931 Performance improvements, updated documentation. 2932 Make better use of available memory pool memory for 2933 reading (especially important for large POST uploads); 2934 improve post processor speed by internally adjusting the 2935 buffer size by 4 bytes to ensure "round" IO sizes given 2936 a "round" post processor buffer size argument. Note 2937 that applications that previously added 4 bytes to the 2938 post processor buffer size might now perform worse. 2939 Using the new 'demo' example, POST upload speed 2940 increased from ~90 MB/s to ~120 MB/s for a large file 2941 (note that the improvement comes from better aligned 2942 disk IO; without disk IO, the speed was (and remains) 2943 at ~1500 MB/s on this system). -CG 2944 2945 Fri Mar 29 16:44:29 CET 2013 2946 Renaming testcases to consistently begin with test_; 2947 Changing build system to build examples in doc/. 2948 Releasing libmicrohttpd 0.9.26. -CG 2949 2950 Thu Mar 7 10:13:08 CET 2013 2951 Fix bug in postprocessor URL parser (#2818). -jgresula 2952 2953 Mon Mar 4 13:45:35 CET 2013 2954 Fix dropping of SSL connections if uptime is less than 2955 MHD_OPTION_CONNECTION_TIMEOUT due to integer underflow (#2802). -greed 2956 2957 Fri Mar 1 01:11:57 CET 2013 2958 Fully initialize cleanup mutex struct for each thread (#2803). -Ulion 2959 2960 Wed Feb 6 01:51:52 CET 2013 2961 Releasing libmicrohttpd 0.9.25. -CG 2962 2963 Fri Feb 1 10:19:44 CET 2013 2964 Handle case where POST data contains "key=" without value 2965 at the end and is not new-line terminated by invoking the 2966 callback with the "key" during MHD_destroy_post_processor (#2733). -CG 2967 2968 Wed Jan 30 13:09:30 CET 2013 2969 Adding more 'const' to allow keeping of reason phrases in ROM. 2970 (see mailinglist). -CG/MV 2971 2972 Tue Jan 29 21:27:56 CET 2013 2973 Make code work with PlibC 0.1.7 (which removed plibc_init_utf8). 2974 Only relevant for W32. Fixes #2734. -CG 2975 2976 Sat Jan 26 21:26:48 CET 2013 2977 Fixing regression introduced Jan 6 (test on data_size instead 2978 of total_size. -CG 2979 2980 Fri Jan 11 23:21:55 CET 2013 2981 Also return MHD_YES from MHD_destroy_post_processor if 2982 we did not get '\r\n' in the upload. -CG 2983 2984 Sun Jan 6 21:10:13 CET 2013 2985 Enable use of "MHD_create_response_from_callback" with 2986 body size of zero. -CG 2987 2988 Tue Dec 25 16:16:30 CET 2012 2989 Releasing libmicrohttpd 0.9.24. -CG 2990 2991 Tue Dec 18 21:18:11 CET 2012 2992 Given both 'chunked' encoding and 'content-length', 2993 ignore the 'content-length' header as per RFC. -ES 2994 2995 Thu Dec 6 10:14:44 CET 2012 2996 Force adding "Connection: close" header to response if 2997 client asked for connection to be closed (so far, we 2998 did close the connection, but did not send the 2999 "Connection: close" header explicitly, which some clients 3000 seem to dislike. (See discussion on mailinglist). 3001 Also, if there is already a transfer-encoding other 3002 than 'chunked' set by the application, we also now close 3003 the connection if the response is of unknown size. -CG 3004 3005 Wed Dec 5 19:22:26 CET 2012 3006 Fixing parameter loss of POST parameters with IE8 and Chrome 3007 in the PostProcessor as the code failed to properly handle 3008 partial data. -MM 3009 3010 Fri Nov 9 21:36:46 CET 2012 3011 Releasing libmicrohttpd 0.9.23. -CG 3012 3013 Thu Nov 8 22:32:59 CET 2012 3014 Ship our own version of tsearch and friends if not provided by platform, 3015 so that MHD works nicely on Android. -JJ 3016 3017 Mon Oct 22 13:05:01 CEST 2012 3018 Immediately do a second read if we get a full buffer from 3019 TLS as there might be more data in the TLS buffers even if 3020 there is no activity on the socket. -CG 3021 3022 Tue Oct 16 01:33:55 CEST 2012 3023 Consistently use "#ifdef" and "#ifndef" WINDOWS, and not 3024 sometimes "#if". -CG 3025 3026 Sat Sep 1 20:51:21 CEST 2012 3027 Releasing libmicrohttpd 0.9.22. -CG 3028 3029 Sat Sep 1 20:38:35 CEST 2012 3030 Adding configure option to allow selecting support for basic 3031 and digest authentication separately (#2525). -CG 3032 3033 Thu Aug 30 21:12:56 CEST 2012 3034 Fixing URI argument parsing when string contained keys without 3035 equals sign (i.e. '&bar&') in the middle of the argument (#2531). 3036 Also replacing 'strstr' with more efficient 'strchr' when 3037 possible. -CG 3038 3039 Tue Aug 21 14:36:17 CEST 2012 3040 Use "int" instead of "enum X" in 'va_arg' calls to be nice to 3041 compilers that use 'short' (i.e. 8 or 16 bit) enums but pass 3042 enums still as "int" in varargs. (See discussion on mailinglist). -CG/MV 3043 3044 Tue Aug 21 14:31:54 CEST 2012 3045 Reduce default size in post processor buffer (for small systems; 3046 performance impact on large systems should be minimal). -CG/MV 3047 3048 Thu Jul 19 21:48:42 CEST 2012 3049 Releasing libmicrohttpd 0.9.21. -CG 3050 3051 Thu Jul 19 11:34:50 CEST 2012 3052 Consistently use 'panic' function instead of ever directly 3053 calling 'abort ()'. Eliminating unused mutex in SSL mode. 3054 Removing check in testcases that fails depending on which 3055 version of gnuTLS is involved. -CG 3056 3057 Tue Jul 17 23:50:43 CEST 2012 3058 Stylistic code clean up. Allowing lookup up of trailing values 3059 without keys using "MHD_lookup_connection_value" with a key of NULL 3060 (thus achieving consistency with the existing iterator API). -CG 3061 3062 Tue Jul 17 22:37:05 CEST 2012 3063 Adding experimental (!) code for MHD operation without listen socket. -CG 3064 3065 Tue Jul 17 22:15:57 CEST 2012 3066 Making sendfile test pass again on non-W32 systems. -CG 3067 3068 Mon Jul 9 13:43:35 CEST 2012 3069 Misc changes to allow testcases to pass on W32. -LRN 3070 3071 Sun Jul 8 15:05:31 CEST 2012 3072 Misc changes to fix build on W32. -LRN 3073 3074 Fri Jun 22 11:31:25 CEST 2012 3075 Make sure sockets opened by MHD are non-inheritable by default (#2414). -CG 3076 3077 Tue Jun 19 19:44:53 CEST 2012 3078 Change various uses of time(NULL) to new MHD_monotonic_time() function to 3079 make timeouts immune to the system real time clock changing. -MC 3080 3081 Tue Jun 12 21:35:00 CEST 2012 3082 Adding 451 status code. -CG 3083 3084 Thu May 31 13:33:45 CEST 2012 3085 Releasing 0.9.20. -CG 3086 3087 Tue May 29 13:55:03 CEST 2012 3088 Fixed some testcase build issues with disabled post processor. -CG 3089 3090 Tue May 29 13:45:15 CEST 2012 3091 Fixing bug where MHD failed to call connection termination callback 3092 if a connection either was closed due to read errors or if MHD 3093 was terminated with certain threading modes. Added new 3094 termination code MHD_REQUEST_TERMINATED_READ_ERROR for the 3095 read-termination cause. -CG 3096 3097 Thu Mar 15 23:47:53 CET 2012 3098 Eliminating code clone in tls connection read/write handlers. -CG 3099 3100 Fri Mar 2 23:44:56 CET 2012 3101 Making sure that MHD_get_connection_values iterates over the 3102 headers in the order in which they were received. -CG 3103 3104 Wed Feb 1 09:39:12 CET 2012 3105 Fixed compilation problem on MinGW. -BS 3106 3107 Tue Jan 31 17:50:24 CET 2012 3108 Releasing 0.9.19. -CG 3109 3110 Mon Jan 30 20:02:34 CET 2012 3111 Fixed handling of garbage prior to first multipart boundary 3112 (#2126). -woof 3113 3114 Fri Jan 27 11:00:43 CET 2012 3115 Fixed postprocessor failure for applications that enclosed boundary 3116 in quotes (#2120). -woof 3117 3118 Tue Jan 24 16:07:53 CET 2012 3119 Added configure check for sin_len in 'struct sockaddr' and adding 3120 code to initialize this field if it exists now. -CG 3121 3122 Mon Jan 23 14:02:26 CET 2012 3123 Fixed double-free if specified cipher was not valid (during 3124 MHD_daemon_start). Releasing 0.9.18. -CG 3125 3126 Thu Jan 19 22:11:12 CET 2012 3127 Switch to non-blocking sockets for all systems but Cygwin 3128 (we already used non-blocking sockets for GNU/Linux); also 3129 use non-blocking sockets on Cygwin for HTTPS as this is 3130 required to avoid DoS-by-partial-record via gnutls. On 3131 Cygwin, #1824 implies that we need to use blocking sockets 3132 for HTTP on Cygwin for now. -CG 3133 3134 Thu Jan 19 17:46:05 CET 2012 3135 Fixing use of uninitialized 'earliest_deadline' variable in 3136 MHD_get_timeout which can lead to returning an incorrect 3137 (too early) timeout (#2085). -tclaveirole 3138 3139 Thu Jan 19 13:31:27 CET 2012 3140 Fixing digest authentication for GET requests with URI arguments 3141 (#2059). -CG 3142 3143 Sat Jan 7 17:30:48 CET 2012 3144 Digest authentication expects nonce count in base 16, not base 10 3145 (#2061). -tclaveirole 3146 3147 Thu Jan 5 22:01:37 CET 2012 3148 Partial fix for #2059, digest authentication with GET arguments. -CG 3149 3150 Thu Dec 1 15:22:57 CET 2011 3151 Updated authorization_example.c to actually demonstrate the current 3152 MHD API. -SG 3153 3154 Mon Nov 21 18:51:30 CET 2011 3155 Added option to suppress generation of the 'Date:' header to be 3156 used on embedded systems without RTC. Documented the new option 3157 and the configure options. -CG 3158 3159 Sat Nov 19 20:08:40 CET 2011 3160 Releasing 0.9.17. -CG 3161 3162 Fri Nov 18 20:17:22 CET 2011 3163 Fixing return value of MHD_get_timeout if timeouts are not in use. 3164 (#1914). -rboulton 3165 3166 Sun Nov 13 13:34:29 CET 2011 3167 Trying to fix accidental addition of a "Connection: close" footer 3168 under certain (rare) circumstances. -CG 3169 3170 Fri Nov 4 10:03:00 CET 2011 3171 Small updates to the tutorial. 3172 Releasing 0.9.16. -CG 3173 3174 Thu Nov 3 10:14:59 CET 2011 3175 shutdown(RDWR) fails on OS X after shutdown(RD), so only use 3176 shutdown(WR) if we already closed the socket for reading (otherwise 3177 OS X might not do shutdown (WR) at all). -CG 3178 3179 Tue Nov 1 18:51:50 CET 2011 3180 Force adding of 'Connection: close' to the header if we (for whatever 3181 reason) are shutting down the socket for reading (see also 3182 #1760). -CG 3183 3184 Thu Oct 27 14:16:34 CEST 2011 3185 Treat EAGAIN the same way as EINTR (helps on W32). -LRN 3186 3187 Wed Oct 12 10:40:12 CEST 2011 3188 Made sockets blocking again for non-Linux platforms as non-blocking 3189 sockets cause problems (#1824) on Cygwin but offer better performance 3190 on Linux (see change on August 11 2011). -CG/pross 3191 3192 Fri Oct 7 19:50:07 CEST 2011 3193 Fixed problems with testcases on W32. -LRN 3194 3195 Fri Sep 30 17:56:36 CEST 2011 3196 Fixed MHD_CONNECTION_OPTION_TIMEOUT for HTTPS (#1811). -CG 3197 3198 Wed Sep 28 08:37:55 CEST 2011 3199 Releasing libmicrohttpd 0.9.15. -CG 3200 3201 Tue Sep 27 13:07:36 CEST 2011 3202 Added ability to access URL arguments of the form 'url?foo' (without 3203 '='). Added testcase and updated documentation accordingly. -CG 3204 3205 Mon Sep 26 21:24:00 CEST 2011 3206 Only run response cleanup testcase if curl binary was found by 3207 configure. -CG 3208 3209 Wed Sep 21 09:53:18 CEST 2011 3210 Reverting to using pipes for signalling select on non-Linux 3211 platforms where shutdown-on-listen-sockets does not work. -WB/CG 3212 3213 Mon Sep 19 14:06:30 CEST 2011 3214 Fixing problem introduced with prompt response cleanup code. -CG 3215 3216 Wed Sep 14 13:43:26 CEST 2011 3217 Fixing minor memory leak if daemon with HTTPS support failed to 3218 initialize (#1766). -CG 3219 3220 Tue Sep 13 09:47:58 CEST 2011 3221 Try to release responses more promptly upon connection termination. -CG 3222 3223 Mon Sep 12 10:20:28 CEST 2011 3224 Releasing libmicrohttpd 0.9.14. -CG 3225 3226 Mon Sep 12 10:05:36 CEST 2011 3227 Added new function to allow setting of a custom timeout value 3228 for an individual connection (the MHD_set_connection_option is 3229 more generic, but this is currently the only use). -CG 3230 3231 Sat Sep 10 07:30:12 CEST 2011 3232 Documenting that MHD_CONNECTION_INFO_GNUTLS_CLIENT_CERT is not 3233 implemented and will not be implemented, and what to use instead. -CG 3234 3235 Fri Sep 9 13:42:20 CEST 2011 3236 Added testcase to demonstrate that response cleanup calling is 3237 working. No bug was found. -CG 3238 3239 Thu Aug 18 11:05:16 CEST 2011 3240 Fixed bug with wrong state transition if callback returned 3241 MHD_CONTENT_READER_END_OF_STREAM causing spurious extra callbacks 3242 to the handler (thanks to Jan Seeger for pointing it out). -CG/JS 3243 3244 Thu Aug 11 11:40:03 CEST 2011 3245 Changing sockets to be non-blocking as suggested by Eivind Sarto 3246 on the mailinglist. -CG 3247 3248 Mon Jul 25 16:13:15 CEST 2011 3249 Added a logo. -CG 3250 3251 Sat Jul 16 22:42:10 CEST 2011 3252 Change type of nonce to 'unsigned long int' to match return type 3253 from 'strtoul'. Fixes ERANGE check which would have previously 3254 failed. -CG 3255 3256 Wed Jul 13 09:26:17 CEST 2011 3257 Fixing HTTP error status strings for certain high-numbered status codes. 3258 Added support for some more (non-standard) status codes. 3259 Releasing libmicrohttpd 0.9.13. -CG 3260 3261 Thu Jul 7 10:24:20 CEST 2011 3262 Adding performance measurements. -CG 3263 3264 Thu Jun 23 14:21:13 CEST 2011 3265 Releasing libmicrohttpd 0.9.12. -CG 3266 3267 Wed Jun 22 14:32:23 CEST 2011 3268 Force closing connection if either the client asked it or 3269 if the response contains 'Connection: close' (so far, 3270 only the client's request was considered). -CG/RV 3271 3272 Wed Jun 22 10:37:35 CEST 2011 3273 Removing listen socket from poll/select sets in 3274 MHD_USE_THREAD_PER_CONNECTION mode; using 'shutdown' 3275 on connection sockets to signal termination instead. -CG 3276 3277 Wed Jun 22 10:25:13 CEST 2011 3278 Eliminate unnecessary (and badly synchronized) calls to 3279 MHD_get_timeout in MHD_USE_THREAD_PER_CONNECTION mode. 3280 Document that this is not acceptable. -CG 3281 3282 Tue Jun 21 13:54:59 CEST 2011 3283 Fixing tiny memory leak in SSL code from 'gnutls_priority_init'. 3284 Fixing data race between code doing connection shutdown and 3285 connection cleanup. 3286 Changing code to reduce connection cleanup cost from O(n) to O(1). 3287 Cleaning up logging code around 'connection_close_error'. -CG 3288 3289 Sat Jun 11 13:05:12 CEST 2011 3290 Replacing use of sscanf by strtoul (#1688). -CG/bplant 3291 3292 Fri Jun 3 15:26:42 CEST 2011 3293 Adding MHD_CONNECTION_INFO_DAEMON to obtain MHD_Daemon 3294 responsible for a given connection. -CG 3295 3296 Wed May 25 14:23:20 CEST 2011 3297 Trying to fix stutter problem on timeout described by 3298 David Myers on the mailinglist (5/10/2011). -CG 3299 3300 Fri May 20 22:11:55 CEST 2011 3301 Fixed bug in testcase setup code causing crashes in 3302 tls_session_timeout_test on some systems. 3303 Releasing libmicrohttpd 0.9.11. -CG 3304 3305 Fri May 20 19:34:59 CEST 2011 3306 Fixed bug in parsing multipart/form-data with post processor where 3307 the code failed to add a 0-terminator in the correct position. -PP 3308 3309 Thu May 12 14:40:46 CEST 2011 3310 Fixed bug where if multiple HTTP request messages are piped in at once, 3311 microhttpd would call the handler with the wrong upload_data_size. -HZM 3312 3313 Thu May 12 14:40:08 CEST 2011 3314 Documented possible issue with off_t being sometimes 3315 32-bit and sometimes 64-bit depending on #includes. -CG 3316 3317 Sun May 8 21:52:47 CEST 2011 3318 Allow MHD_SIZE_UNKNOWN to be used in conjunction with 3319 MHD_create_response_from_fd (fixing #1679). -TG 3320 3321 Wed Apr 27 16:11:18 CEST 2011 3322 Releasing libmicrohttpd 0.9.10. -CG 3323 3324 Fri Apr 8 11:40:35 CEST 2011 3325 Workaround for cygwin poll brokenness. -TS 3326 3327 Sun Apr 3 13:56:52 CEST 2011 3328 Fixing compile error on OS X. -CG 3329 3330 Wed Mar 30 12:56:09 CEST 2011 3331 Initialize tv_usec in MHD_USE_THREAD_PER_CONNECTION with select 3332 and per-connection timeout. -CG 3333 3334 Tue Mar 29 14:15:13 CEST 2011 3335 Releasing libmicrohttpd 0.9.9. -CG 3336 3337 Tue Mar 29 14:11:19 CEST 2011 3338 Fixed call to mmap for memory pool, extended testcase to cover 3339 POLL. -CG 3340 3341 Wed Mar 23 23:24:25 CET 2011 3342 Do not use POLLIN when we only care about POLLHUP (significantly 3343 improves performance when using MHD_USE_THREAD_PER_CONNECTION 3344 in combination with MHD_USE_POLL). -ES 3345 3346 Sun Mar 20 09:16:53 CET 2011 3347 Fixing race when using MHD_USE_THREAD_PER_CONNECTION in combination 3348 with MHD_USE_POLL. -CG 3349 3350 Fri Mar 18 13:23:47 CET 2011 3351 Removing MSG_DONTWAIT which should not be needed and was presumably 3352 causing problems with EAGAIN under certain circumstances. -ES 3353 3354 Fri Mar 11 22:25:29 CET 2011 3355 Fixing bug in MHD_create_response_from_fd_at_offset with non-zero offsets. -ES 3356 3357 Sat Mar 5 22:00:36 CET 2011 3358 Do not use POLLRDHUP, which causes build errors on OS X / OpenSolaris 3359 (#1667). -CG 3360 3361 Fri Mar 4 10:24:04 CET 2011 3362 Added new API to allow MHD server to initiate connection to 3363 client (special use-case for servers behind NAT), thereby 3364 addressing #1661 (externally created connections). 3365 Releasing libmicrohttpd 0.9.8. -CG 3366 3367 Fri Mar 4 10:07:18 CET 2011 3368 Avoid using a pipe for signalling as well, just use server 3369 socket shutdown (also for thread-per-connection). -CG 3370 3371 Thu Mar 3 21:42:47 CET 2011 3372 Fixing issue where Base64 decode fails when char is defined 3373 as unsigned char (Mantis 1666). -CG/tmayer 3374 3375 Tue Mar 1 13:58:04 CET 2011 3376 Allow use of 'poll' in combination with the external select mode. 3377 Avoid using pthread signals (SIGALRM), use pipe instead. 3378 Corrected timeout calculation (s vs. ms). -CG 3379 3380 Wed Feb 23 14:21:44 CET 2011 3381 Removing useless code pointed out by Eivind Sarto. -CG 3382 3383 Fri Feb 18 11:03:59 CET 2011 3384 Handle large (>2 GB) file transfers with sendfile on 32-bit 3385 systems better; handle odd sendfile failures by libc/kernel 3386 by falling back to standard 'SEND'. -CG 3387 3388 Sun Feb 13 10:52:29 CET 2011 3389 Handle gnutls receive error(s) for interrupted SSL 3390 connections better. -MS 3391 Releasing libmicrohttpd 0.9.7. -CG 3392 3393 Fri Feb 11 10:15:38 CET 2011 3394 Fixing parameter ordering in documentation (#1659). -wellska 3395 3396 Thu Jan 27 10:51:39 CET 2011 3397 Disable 'EXTRA_CHECKS's by default as suggested in #1652 3398 (I guess it is time). -CG/timn 3399 3400 Thu Jan 27 10:48:55 CET 2011 3401 Removing bogus assertion in basic authentication code (#1651). -CG/timn 3402 3403 Tue Jan 25 14:10:45 CET 2011 3404 Releasing libmicrohttpd 0.9.6. -CG 3405 3406 Mon Jan 24 16:36:35 CET 2011 3407 Fixing compilation error if DAUTH_SUPPORT was 0 (#1646). -CG/bplant 3408 3409 Tue Jan 18 23:58:09 CET 2011 3410 Fixing hash calculation in digest auth; old function had 3411 collisions causing the browser to challenge users for 3412 authentication too often. -CG/AW 3413 3414 Fri Jan 14 19:19:45 CET 2011 3415 Removing dead code, adding missing new symbols to export list. 3416 Fixed two missing NULL checks after malloc operations. -CG 3417 3418 Mon Jan 10 14:07:33 CET 2011 3419 Releasing libmicrohttpd 0.9.5. -CG 3420 3421 Wed Jan 5 15:20:11 CET 2011 3422 Fixing double-locking on non-Linux platforms when using 3423 MHD_create_response_from_fd (#1639). -CG 3424 Avoid use of strndup for better portability (#1636). -CG 3425 3426 Tue Jan 4 13:07:21 CET 2011 3427 Added MHD_create_response_from_buffer, deprecating 3428 MHD_create_response_from_data. Deprecating 3429 MHD_create_response_from_fd as well. -CG 3430 3431 Sun Dec 26 00:02:15 CET 2010 3432 Releasing libmicrohttpd 0.9.4. -CG 3433 3434 Sat Dec 25 21:57:14 CET 2010 3435 Adding support for basic authentication. 3436 Documented how to obtain client SSL certificates in tutorial. -MS 3437 3438 Thu Dec 23 15:40:36 CET 2010 3439 Increasing nonce length to 128 to support digest authentication 3440 with Opera (see #1633). 3441 3442 Mon Dec 20 21:22:57 CET 2010 3443 Added macro MHD_LONG_LONG to allow change of MHD's "long long" use 3444 to some other type on platforms that do not support "long long" 3445 (Mantis #1631). -CG/bplant 3446 3447 Sun Dec 19 19:54:15 CET 2010 3448 Added 'MHD_create_response_from_fd_at_offset'. -CG 3449 3450 Sun Dec 19 15:16:16 CET 2010 3451 Fixing --enable and --disable configure options to behave properly. -CG 3452 3453 Sun Dec 19 13:46:52 CET 2010 3454 Added option to specify size of stacks for threads created by MHD. -CG 3455 3456 Tue Nov 23 09:41:00 CET 2010 3457 Releasing libmicrohttpd 0.9.3. -CG 3458 3459 Thu Nov 18 23:10:36 CET 2010 3460 Fixing #1619 (testcases not working with NSS on Fedora). -CG/timn 3461 3462 Thu Nov 18 22:55:58 CET 2010 3463 Fixing #1621 (socket not closed under certain circumstances). -CG/jaredc 3464 3465 Wed Nov 17 12:16:53 CET 2010 3466 Allowing signalling of errors in generating chunked responses to 3467 clients (by closing connectins) using the new 3468 MHD_CONTENT_READER_END_WITH_ERROR ((size_t)-2) return value. Also 3469 introducing MHD_CONTENT_READER_END_OF_STREAM constant instead 3470 of (size_t) -1 / SIZE_MAX. 3471 3472 Sun Nov 14 20:45:45 CET 2010 3473 Adding API call to generate HTTP footers in response. -CG 3474 3475 Sat Oct 16 12:38:43 CEST 2010 3476 Releasing libmicrohttpd 0.9.2. -CG 3477 3478 Tue Oct 12 15:41:51 CEST 2010 3479 Fixed issue with data received via SSL being delayed in the 3480 GNUtls buffer if sender stopped transmitting (but did not close 3481 the connection) and MHD buffer size was smaller than last fragment, 3482 resulting in possibly significantly delayed processing of 3483 incoming data. -CG 3484 3485 Wed Sep 22 09:48:59 CEST 2010 3486 Changed port argument from 'unsigned short' to 'uint16_t'. 3487 Removed dead code when compiling with messages enabled. 3488 Minimal unrelated code cleanup. -CG 3489 3490 Tue Sep 21 15:12:41 CEST 2010 3491 Use "size_t" for buffer size instead of "int". -CG 3492 3493 Sat Sep 18 07:16:30 CEST 2010 3494 Adding support for SHOUTcast. -CG 3495 3496 Wed Sep 15 09:33:46 CEST 2010 3497 Fixed double-free. -CG/ES 3498 3499 Fri Sep 10 14:47:11 CEST 2010 3500 Releasing libmicrohttpd 0.9.1. -CG 3501 3502 Fri Sep 10 14:29:37 CEST 2010 3503 Adding proper nonce counter checking for digest authentication. -CG/AA 3504 3505 Sat Sep 4 21:55:52 CEST 2010 3506 Digest authentication now seems to be working. -CG/AA 3507 3508 Wed Sep 1 13:59:16 CEST 2010 3509 Added ability to specify external unescape function. 3510 "microhttpd.h" now includes the right headers for GNU/Linux 3511 systems unless MHD_PLATFORM_H is defined (in which case it 3512 is assumed that the right headers were already determined by 3513 some configure-like process). -CG 3514 3515 Tue Aug 31 15:39:25 CEST 2010 3516 Fixed bug with missing call to response cleanup in case of 3517 connection handling error (for example, after getting a SIGPIPE). -CG 3518 3519 Tue Aug 24 11:39:25 CEST 2010 3520 Fixed bug in handling EAGAIN from GnuTLS (caused 3521 needlessly dropped SSL connections). -CG 3522 3523 Sun Aug 22 16:49:13 CEST 2010 3524 Initial draft for digest authentication. -AA 3525 3526 Thu Aug 19 14:15:01 CEST 2010 3527 Changed code to enable error messages and HTTPS by default; 3528 added option to disable post processor API (use 3529 breaks binary compatibility, should only be done 3530 for embedded systems that require minimal footprint). -CG 3531 3532 Thu Aug 19 13:26:00 CEST 2010 3533 Patches for Windows to ease compilation trouble. -GT/CG 3534 3535 Sat Aug 14 15:43:30 CEST 2010 3536 Fixed small, largely hypothetical leaks. 3537 Reduced calls to strlen for header processing. -CG 3538 3539 Fri Aug 6 12:51:59 CEST 2010 3540 Fixing (small) memory leak on daemon-shutdown with 3541 SSL enabled. -CG/PG 3542 3543 Thu Aug 5 22:24:37 CEST 2010 3544 Fixing timeout bug on systems that think it's still 3545 1970 (can happen if system time not initialized). -CG 3546 3547 Mon Jul 26 10:46:57 CEST 2010 3548 Releasing libmicrohttpd 0.9.0. -CG 3549 3550 Sun Jul 25 14:57:47 CEST 2010 3551 Adding support for sendfile on Linux. Adding support 3552 for systemd-style passing of an existing listen socket 3553 as an option. IPv6 sockets now only bind to IPv6 3554 (if platform supports this). -CG 3555 3556 Sun Jul 25 11:10:45 CEST 2010 3557 Changed code to use external libgnutls code instead of 3558 the "fork". Minor API changes for setting TLS options. -CG 3559 3560 Sun Jun 13 10:52:34 CEST 2010 3561 Cleaned up example code. -CG 3562 3563 Fri Apr 23 09:56:37 CEST 2010 3564 Do not return HTTP headers for requests without version 3565 numbers. Do return HTTP version 1.0 if client requested 3566 HTTP version 1.1 (previously, we returned HTTP/1.1 even 3567 if the client specified HTTP/1.0). -GM/CG 3568 3569 Sat Mar 13 09:41:01 CET 2010 3570 Releasing libmicrohttpd 0.4.6. -CG 3571 3572 Wed Mar 10 13:18:26 CET 2010 3573 Fixing bug in 100 CONTINUE replacement when handling POSTs 3574 (see report on mailinglist), with testcase. -CG/MC 3575 3576 Tue Feb 23 09:16:15 CET 2010 3577 Added configure check for endianness to define WORDS_BIGENDIAN 3578 which fixes SSL support on big endian architectures. -JA/CG 3579 3580 Sat Feb 20 10:01:09 CET 2010 3581 Added check for inconsistent options (MHD_OPTION_PROTOCOL_VERSION 3582 without MHD_USE_SSL) causing instant segfault. -JA/CG 3583 3584 Tue Feb 9 20:31:51 CET 2010 3585 Fixed issue with poll doing busy waiting. -BK/CG 3586 3587 Thu Jan 28 21:28:56 CET 2010 3588 Releasing libmicrohttpd 0.4.5. -CG 3589 3590 Thu Jan 28 20:35:48 CET 2010 3591 Make sure addresses returned by memory pool are 3592 aligned (fixes bus errors on Sparc). -CG 3593 3594 Thu Dec 17 20:26:52 CET 2009 3595 poll.h is not strictly required anymore. -ND 3596 3597 Fri Dec 4 13:17:50 CET 2009 3598 Adding MHD_OPTION_ARRAY. -CG 3599 3600 Mon Nov 16 14:41:26 CET 2009 3601 Fixed busy-loop in internal select mode for inactive 3602 clients with infinite connection timeout. -CG 3603 3604 Thu Nov 12 16:19:14 CET 2009 3605 Adding support for setting a custom error handler for 3606 fatal errors (previously, the implementation always 3607 called 'abort' in these cases). -CG/ND 3608 3609 Wed Nov 11 12:54:16 CET 2009 3610 Adding support for poll (alternative to select allowing 3611 for more than FD_SETSIZE parallel connections). -JM 3612 3613 Wed Oct 28 20:26:00 CET 2009 3614 Releasing libmicrohttpd 0.4.4. -CG 3615 3616 Wed Oct 14 14:37:37 CEST 2009 3617 Fixing (rare) deadlock due to SELECT missing SIGALRM by 3618 making all SELECT calls block for at most 1s. While this 3619 can in (rare) situations delay the shutdown by 1s, I think 3620 this is preferable (both performance and possibly portability-wise) 3621 over using a pipe for the signal. -CG 3622 3623 Sun Oct 11 14:57:29 CEST 2009 3624 Adding eCos license as an additional license for the 3625 non-HTTPS code of MHD. -CG 3626 3627 Sun Oct 11 11:24:27 CEST 2009 3628 Adding support for Symbian. -MR 3629 3630 Fri Oct 9 15:21:29 CEST 2009 3631 Check for error codes from pthread operations (to help with 3632 error diagnostics) and abort if something went wrong. -CG 3633 3634 Thu Oct 8 10:43:02 CEST 2009 3635 Added check for sockets being '< FD_SETSIZE' (just to be safe). -CG 3636 3637 Mon Oct 5 21:17:26 CEST 2009 3638 Adding "COOKIE" header string #defines. -CG 3639 3640 Mon Oct 5 08:29:06 CEST 2009 3641 Documenting default values. -CG 3642 3643 Fri Aug 28 22:56:47 CEST 2009 3644 Releasing libmicrohttpd 0.4.3. -CG 3645 3646 Sun Aug 23 16:21:35 UTC 2009 3647 Allow MHD_get_daemon_info to return the daemon's listen socket. 3648 Includes a test case that uses this functionality to bind a server to 3649 an OS-assigned port, look the port up with getsockname, and curl it. -DR 3650 3651 Tue Aug 4 00:14:04 CEST 2009 3652 Fixing double-call to read from content-reader callback for first 3653 data segment (as reported by Alex on the mailinglist). -CG 3654 3655 Thu Jul 29 21:41:52 CEST 2009 3656 Fixed issue with the code not using the "block_size" argument 3657 given to MHD_create_response_from_callback causing inefficiencies 3658 for values < 2048 and segmentation faults for values > 2048 3659 (as reported by Andre Colomb on the mailinglist). -CG 3660 3661 Sun May 17 03:29:46 MDT 2009 3662 Releasing libmicrohttpd 0.4.2. -CG 3663 3664 Fri May 15 11:00:20 MDT 2009 3665 Grow reserved read buffer more aggressively so that we are not 3666 needlessly stuck reading only a handful of bytes in each iteration. -CG 3667 3668 Thu May 14 21:20:30 MDT 2009 3669 Fixed issue where the "NOTIFY_COMPLETED" handler could be called 3670 twice (if a socket error or timeout occurred for a pipelined 3671 connection after successfully completing a request and before 3672 the next request was successfully transmitted). This could 3673 confuse applications not expecting to see a connection "complete" 3674 that they were never aware of in the first place. -CG 3675 3676 Mon May 11 13:01:16 MDT 2009 3677 Fixed issue where error code on timeout was "TERMINATED_WITH_ERROR" 3678 instead of "TERMINATED_TIMEOUT_REACHED". -CG 3679 3680 Wed Apr 1 21:33:05 CEST 2009 3681 Added MHD_get_version(). -ND 3682 3683 Wed Mar 18 22:59:07 MDT 2009 3684 Releasing libmicrohttpd 0.4.1. -CG 3685 3686 Wed Mar 18 17:46:58 MDT 2009 3687 Always RECV/SEND with MSG_DONTWAIT to (possibly) address 3688 strange deadlock reported by Erik on the mailinglist --- 3689 and/or issues with blocking read after select on GNU/Linux 3690 (see select man page under bugs). -CG 3691 3692 Tue Mar 17 01:19:50 MDT 2009 3693 Added support for thread-pools. -CG/RA 3694 3695 Mon Mar 2 23:44:08 MST 2009 3696 Fixed problem with 64-bit upload and download sizes and 3697 "-1" being used to indicate "unknown" by introducing 3698 new 64-bit constant "MHD_SIZE_UNKNOWN". -CG/DC 3699 3700 Wed Feb 18 08:13:56 MST 2009 3701 Added missing #include for build on arm-linux-uclibc. -CG/CC 3702 3703 Mon Feb 16 21:12:21 MST 2009 3704 Moved MHD_get_connection_info so that it is always defined, 3705 even if HTTPS support is not enabled. -CG 3706 3707 Sun Feb 8 21:15:30 MST 2009 3708 Releasing libmicrohttpd 0.4.0. -CG 3709 3710 Thu Feb 5 22:43:45 MST 2009 3711 Incompatible API change to allow 64-bit uploads and downloads. 3712 Clients must use "uint64_t" for the "pos" 3713 argument (MHD_ContentReaderCallback) and the "off" 3714 argument (MHD_PostDataIterator) and the "size" 3715 argument (MHD_create_response_from_callback) now. 3716 Also, "unsigned int" was changed to "size_t" for 3717 the "upload_data_size" argument (MHD_AccessHandlerCallback), 3718 the argument to MHD_OPTION_CONNECTION_MEMORY_LIMIT, 3719 the "block_size" argument (MHD_create_response_from_callback), 3720 the "buffer_size" argument (MHD_create_post_processor) and 3721 the "post_data_len" argument (MHD_post_process). You may 3722 need to #include <stdint.h> before <microhttpd.h> from now on. -CG 3723 3724 Thu Feb 5 20:21:08 MST 2009 3725 Allow getting address information about the connecting 3726 client after the accept call. -CG 3727 3728 Mon Feb 2 22:21:48 MST 2009 3729 Fixed missing size adjustment for offsets for %-encoded 3730 arguments processed by the post processor (Mantis #1447). -CG/SN 3731 3732 Fri Jan 23 16:57:21 MST 2009 3733 Support charset specification (ignore) after content-type 3734 when post-processing HTTP POST requests (Mantis #1443). -CG/SN 3735 3736 Fri Dec 26 23:08:04 MST 2008 3737 Fixed broken check for identical connection address. -CG 3738 Making cookie parser more RFC2109 compliant (handle 3739 spaces around key, allow value to be optional). -CG 3740 3741 Sat Dec 6 18:36:17 MST 2008 3742 Added configure option to disable checking for CURL support. 3743 Added MHD_OPTION to allow specification of custom logger. -CG 3744 3745 Tue Nov 18 01:19:53 MST 2008 3746 Removed support for untested and/or broken SSL features 3747 and (largely useless) options. -CG 3748 3749 Sun Nov 16 16:54:54 MST 2008 3750 Added option to get unparsed URI via callback. 3751 Releasing GNU libmicrohttpd 0.4.0pre1. -CG 3752 3753 Sun Nov 16 02:48:14 MST 2008 3754 Removed tons of dead code. -CG 3755 3756 Sat Nov 15 17:34:24 MST 2008 3757 Added build support for code coverage analysis. -CG 3758 3759 Sat Nov 15 00:31:33 MST 2008 3760 Removing (broken) support for HTTPS servers with 3761 anonymous (aka "no") certificates as well as 3762 various useless dead code. -CG 3763 3764 Sat Nov 8 02:18:42 MST 2008 3765 Unset TCP_CORK at the end of transmitting a response 3766 to improve performance (on systems where this is 3767 supported). -MM 3768 3769 Tue Sep 30 16:48:08 MDT 2008 3770 Make MHD useful to Cygwin users; detect IPv6 headers 3771 in configure. 3772 3773 Sun Sep 28 14:57:46 MDT 2008 3774 Unescape URIs (convert "%ef%e4%45" to "中国"). -CG 3775 3776 Wed Sep 10 22:43:59 MDT 2008 3777 Releasing GNU libmicrohttpd 0.4.0pre0. -CG 3778 3779 Wed Sep 10 21:36:06 MDT 2008 3780 Fixed data race on closing sockets during 3781 shutdown (in one-thread-per-connection mode). -CG 3782 3783 Thu Sep 4 23:37:18 MDT 2008 3784 Fixed some boundary issues with processing 3785 chunked requests; removed memmove from a 3786 number of spots, in favor of using an index into 3787 the current buffer instead. -GS 3788 3789 Sun Aug 24 13:05:41 MDT 2008 3790 Now handling clients returning 0 from response callback 3791 as specified in the documentation (abort if internal 3792 select is used, retry immediately if a thread per 3793 connection is used). -CG 3794 3795 Sun Aug 24 12:44:43 MDT 2008 3796 Added missing reason phrase. -SG 3797 3798 Sun Aug 24 10:33:22 MDT 2008 3799 Fixed bug where MHD failed to transmit the response when 3800 the client decided not to send "100 CONTINUE" during 3801 a PUT/POST request. -CG 3802 3803 Wed Jul 16 18:54:03 MDT 2008 3804 Fixed bug generating chunked responses with chunk sizes 3805 greater than 0xFFFFFF (would cause protocol violations). -CG 3806 3807 Mon May 26 13:28:57 MDT 2008 3808 Updated and improved documentation. 3809 Releasing GNU libmicrohttpd 0.3.1. -CG 3810 3811 Fri May 23 16:54:41 MDT 2008 3812 Fixed issue with postprocessor not handling URI-encoded 3813 values of more than 1024 bytes correctly. -CG 3814 3815 Mon May 5 09:18:29 MDT 2008 3816 Fixed date header (was off by 1900 years). -JP 3817 3818 Sun Apr 13 01:06:20 MDT 2008 3819 Releasing GNU libmicrohttpd 0.3.0. -CG 3820 3821 Sat Apr 12 21:34:26 MDT 2008 3822 Generate an internal server error if the programmer fails 3823 to handle upload data correctly. Tweaked testcases to 3824 avoid running into the problem in the testcases. 3825 Completed zzuf-based fuzzing testcases. -CG 3826 3827 Sat Apr 12 15:14:05 MDT 2008 3828 Restructured the code (curl-testcases and zzuf testcases 3829 are now in different directories; code examples are in 3830 src/examples/). 3831 Fixed a problem (introduced in 0.2.3) with handling very 3832 large requests (the code did not return proper error code). 3833 If "--enable-messages" is specified, the code now includes 3834 reasonable default HTML webpages for various built-in 3835 errors (such as request too large and malformed requests). 3836 Without that flag, the webpages returned will still be 3837 empty. 3838 Started to add zzuf-based fuzzing-testcases (these require 3839 the zzuf and socat binaries to be installed). -CG 3840 3841 Fri Apr 11 20:20:34 MDT 2008 3842 I hereby dub libmicrohttpd a GNU package. -Richard Stallman 3843 3844 Sat Mar 29 22:36:09 MDT 2008 3845 Fixed bugs in handling of malformed HTTP requests 3846 (causing either NULL dereferences or connections to 3847 persist until time-out, if any). -CG 3848 3849 Updated and integrated TexInfo documentation. -CG 3850 3851 Tue Mar 25 13:40:53 MDT 2008 3852 Prevent multi-part post-processor from going to error 3853 state when the input buffer is full and current token 3854 just changes processor state without consuming any data. 3855 Also, the original implementation would not consume any 3856 input in process_value_to_boundary if there is no new 3857 line character in sight. -AS 3858 3859 Remove checks for request method after it finished writing 3860 response footers as it's only _pipelined_ requests that 3861 should not be allowed after POST or PUT requests. Reusing 3862 the existing connection is perfectly ok though. And there 3863 is no reliable way to detect pipelining on server side 3864 anyway so it is the client's responsibility to not send new 3865 data before it gets a response after a POST operation. -AS 3866 3867 Clarified license in man page. Releasing 3868 libmicrohttpd 0.2.3 -CG 3869 3870 Sat Mar 22 01:12:38 MDT 2008 3871 Releasing libmicrohttpd 0.2.2. -CG 3872 3873 Mon Feb 25 19:13:53 MST 2008 3874 Fixed a problem with sockets closed for reading ending up 3875 in the read set under certain circumstances. -CG 3876 3877 Wed Jan 30 23:15:44 MST 2008 3878 Added support for nested multiparts to post processor. 3879 Made sure that MHD does not allow pipelining for methods 3880 other than HEAD and GET (and of course still also only 3881 allows it for http 1.1). Releasing libmicrohttpd 0.2.1. -CG 3882 3883 Mon Jan 21 11:59:46 MST 2008 3884 Added option to limit number of concurrent connections 3885 accepted from the same IP address. -CG 3886 3887 Fri Jan 4 16:02:08 MST 2008 3888 Fix to properly close connection if application signals 3889 problem handling the request. - AS 3890 3891 Wed Jan 2 16:41:05 MST 2008 3892 Improvements and bugfixes to post processor implementation. - AS 3893 3894 Wed Dec 19 21:12:04 MST 2007 3895 Implemented chunked (HTTP 1.1) downloads (including 3896 sending of HTTP footers). Also allowed queuing of 3897 a response early to suppress the otherwise automatic 3898 "100 CONTINUE" response. Removed the mostly useless 3899 "(un)register handler" methods from the API. Changed 3900 the internal implementation to use a finite state 3901 machine (cleaner code, slightly less memory consumption). 3902 Releasing libmicrohttpd 0.2.0. - CG 3903 3904 Sun Dec 16 03:24:13 MST 2007 3905 Implemented handling of chunked (HTTP 1.1) uploads. 3906 Note that the upload callback must be able to 3907 process chunks in the size uploaded by the client, 3908 MHD will not "join" small chunks into a big 3909 contiguous block of memory (even if buffer space 3910 would be available). - CG 3911 3912 Wed Dec 5 21:39:35 MST 2007 3913 Fixed race in multi-threaded server mode. 3914 Fixed handling of POST data when receiving a 3915 "Connection: close" header (#1296). 3916 Releasing libmicrohttpd 0.1.2. - CG 3917 3918 Sat Nov 17 00:55:24 MST 2007 3919 Fixed off-by-one in error message string matching. 3920 Added code to avoid generating SIGPIPE on platforms 3921 where this is possible (everywhere else, the main 3922 application should install a handler for SIGPIPE). 3923 3924 Thu Oct 11 11:02:06 MDT 2007 3925 Releasing libmicrohttpd 0.1.1. - CG 3926 3927 Thu Oct 11 10:09:12 MDT 2007 3928 Fixing response to include HTTP status message. - EG 3929 3930 Thu Sep 27 10:19:46 MDT 2007 3931 Fixing parsing of "%xx" in URLs with GET arguments. - eglaysher 3932 3933 Sun Sep 9 14:32:23 MDT 2007 3934 Added option to compile debug/warning messages; 3935 error messages are now disabled by default. 3936 Modified linker option for GNU LD to not export 3937 non-public symbols (further reduces binary size). 3938 Releasing libmicrohttpd 0.1.0. - CG 3939 3940 Sat Sep 8 21:54:04 MDT 2007 3941 Extended API to allow for incremental POST 3942 processing. The new API is binary-compatible 3943 as long as the app does not handle POSTs, but 3944 since that maybe the case, we're strictly speaking 3945 breaking backwards compatibility (since url-encoded 3946 POST data is no longer obtained the same way). - CG 3947 3948 Thu Aug 30 00:59:24 MDT 2007 3949 Improving API to allow clients to associate state 3950 with a connection and to be notified about request 3951 termination (this is a binary-compatible change). - CG 3952 Fixed compile errors under OS X. - HL 3953 3954 Sun Aug 26 03:11:46 MDT 2007 3955 Added MHD_USE_PEDANTIC_CHECKS option which enforces 3956 receiving a "Host:" header in HTTP 1.1 (and sends a 3957 HTTP 400 status back if this is violated). - CG 3958 3959 Tue Aug 21 01:01:46 MDT 2007 3960 Fixing assertion failure that occurred when a client 3961 closed the connection after sending some data but 3962 not the full headers. - CG 3963 3964 Sat Aug 18 03:06:09 MDT 2007 3965 Check for out of memory when adding headers to 3966 responses. Check for NULL key when looking 3967 for headers. If a content reader callback 3968 for a response returns zero (has no data yet), 3969 do not possibly fall into busy waiting when 3970 using external select (with internal selects 3971 we have no choice). - CG 3972 3973 Wed Aug 15 01:46:44 MDT 2007 3974 Extending API to allow timeout of connections. 3975 Changed API (MHD_create_response_from_callback) to 3976 allow user to specify IO buffer size. 3977 Improved error handling. 3978 Released libmicrohttpd 0.0.3. - CG 3979 3980 Tue Aug 14 19:45:49 MDT 2007 3981 Changed license to LGPL (with consent from all contributors). 3982 Released libmicrohttpd 0.0.2. - CG 3983 3984 Sun Aug 12 00:09:26 MDT 2007 3985 Released libmicrohttpd 0.0.1. - CG 3986 3987 Fri Aug 10 17:31:23 MDT 2007 3988 Fixed problems with handling of responses created from 3989 callbacks. Allowing accept policy callback to be NULL 3990 (to accept from all). Added minimal fileserver example. 3991 Only send 100 continue header when specifically requested. - CG 3992 3993 Wed Aug 8 01:46:06 MDT 2007 3994 Added pool allocation and connection limitations (total 3995 number and memory size). Released libmicrohttpd 0.0.0. - CG 3996 3997 Tue Jan 9 20:52:48 MST 2007 3998 Created project build files and updated API. - CG