diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a839dec..b4a34f3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,7 @@ set(EVENT_ABI_LIBVERSION set(EVENT_PACKAGE_VERSION "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}") -set(EVENT_NUMERIC_VERSION 0x02010700) +set(EVENT_NUMERIC_VERSION 0x02010800) # only a subset of names can be used, defaults to "beta" set(EVENT_STAGE_NAME ${EVENT_VERSION_STAGE} diff --git a/ChangeLog b/ChangeLog index 358dc22a..740bdfcc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,41 @@ +Changes in version 2.1.8-stable (22 January 2017) + + Libevent 2.1.8-stable, it contains openssl fixes for resetting fd and using + bufferevent_openssl_filter_new(). vagrant fixes, some build fixes, increased + timeout for some tests (to reduce number of failures due to timing issues), + date in RFC1123 format and running tests in parallel. + + There are highlighted changes above. + + Build fixes: + o Fix _FILE_OFFSET_BITS redinition (solaris/autotools) (336f3b11 Azat Khuzhin) + o util-internal: fix __func__ redefinition (netbsd) (253e7fa9 Azat Khuzhin) + o Fix signedness differ for iov_base (solaris) (2c62062e Azat Khuzhin) + o evutil_time: include when there is only sleep()/usleep() (3e75194c Azat Khuzhin) + o http: fix formatter for pritnf for req->ntoread (osx) (1cbf26f6 Azat Khuzhin) + Testing environment: + o Merge branch 'automake-tests-parallel-v4' (*includes ci bits also*) (59e217df Azat Khuzhin) + Vagrant env fixes: + o vagrant/netbsd: missing libtool (9c9be399 Azat Khuzhin) + o vagrant/netbsd: more reliable way of installing packages (36da6877 Azat Khuzhin) + o vagrant/osx: use make instead of gmake (there is no gmake) (f7c70aef Azat Khuzhin) + o vagrant: add centos box (ca591c5b Azat Khuzhin) + Tests: + o test/dns: replace servname since solaris does not have "http" (d6bafbbe Azat Khuzhin) + o test/thread: netbsd is too slow, increase timeout for conditions_simple (3c7422fc Azat Khuzhin) + o test/dns: run async resolving after sync one (to avoid timeouts) (07862531 Azat Khuzhin) + o test/http: turn off some tests that based on backlog filling (falky) (26f416c1 Azat Khuzhin) + Bugfixes: + o Merge branch 'openssl-filter-fixes-v4' (83e0f43b Azat Khuzhin) + o Merge branch 'date-rfc1123' (68def435,4798de6c,4545807d Azat Khuzhin) + o Merge branch 'be-openssl-fd-reset-fix-v2' (86fa0070,32adf434 Azat Khuzhin) + o Merge branch 'openssl-1.1-init-fixes-v2' (18a161f0 Azat Khuzhin) + o Fix incorrect MIME type (23f9a20e johnsonlee) + Trivial fixes: + Documentation updates: + o Update README.md (3821cca1 Breaker) + + Changes in version 2.1.7-rc (2 Novemer 2016) Libevent 2.1.7-rc contains openssl 1.1 support, build fixes, CI improvements diff --git a/Makefile.am b/Makefile.am index 981f9f80..0f741bc9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -38,7 +38,7 @@ RELEASE = -release 2.1 # # Once an RC is out, DO NOT MAKE ANY ABI-BREAKING CHANGES IN THAT SERIES # UNLESS YOU REALLY REALLY HAVE TO. -VERSION_INFO = 7:0:0 +VERSION_INFO = 6:2:0 # History: RELEASE VERSION_INFO # 2.0.1-alpha -- 2.0 1:0:0 @@ -71,6 +71,7 @@ VERSION_INFO = 7:0:0 # 2.1.5-beta -- 2.1 5:0:0 (ABI changed slightly) # 2.1.6-beta -- 2.1 6:0:0 (ABI changed slightly) # 2.1.7-beta -- 2.1 6:1:0 (ABI changed slightly) +# 2.1.8-stable-- 2.1 6:2:0 (ABI changed slightly) # ABI version history for this package effectively restarts every time # we change RELEASE. Version 1.4.x had RELEASE of 1.4. diff --git a/README.md b/README.md index 5283b786..5e3eb4df 100644 --- a/README.md +++ b/README.md @@ -423,5 +423,9 @@ fixing bugs: * Simone Basso * Vlad Shcherban * Tim Hentenaar + * Breaker + * johnsonlee + * Philip Prindeville + * Vis Virial If we have forgotten your name, please contact us. diff --git a/WIN32-Code/nmake/event2/event-config.h b/WIN32-Code/nmake/event2/event-config.h index d96dfba1..e6ed3aa4 100644 --- a/WIN32-Code/nmake/event2/event-config.h +++ b/WIN32-Code/nmake/event2/event-config.h @@ -274,7 +274,7 @@ /* #undef EVENT__HAVE_WORKING_KQUEUE */ /* Numeric representation of the version */ -#define EVENT__NUMERIC_VERSION 0x02010700 +#define EVENT__NUMERIC_VERSION 0x02010800 /* Name of package */ #define EVENT__PACKAGE "libevent" @@ -331,7 +331,7 @@ #define EVENT__TIME_WITH_SYS_TIME 1 /* Version number of package */ -#define EVENT__VERSION "2.1.7-beta" +#define EVENT__VERSION "2.1.8-stable" /* Define to appropriate substitue if compiler doesnt have __func__ */ #define EVENT____func__ __FUNCTION__ diff --git a/appveyor.yml b/appveyor.yml index 9e33f952..6beb5457 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 2.1.7.{build} +version: 2.1.8.{build} os: Visual Studio 2015 diff --git a/cmake/VersionViaGit.cmake b/cmake/VersionViaGit.cmake index c0f83d55..a9882d8a 100644 --- a/cmake/VersionViaGit.cmake +++ b/cmake/VersionViaGit.cmake @@ -27,7 +27,7 @@ macro(event_fuzzy_version_from_git) # set our defaults. set(EVENT_GIT___VERSION_MAJOR 2) set(EVENT_GIT___VERSION_MINOR 1) - set(EVENT_GIT___VERSION_PATCH 7) + set(EVENT_GIT___VERSION_PATCH 8) set(EVENT_GIT___VERSION_STAGE "beta") find_package(Git) diff --git a/configure.ac b/configure.ac index 22fb703d..7528d37e 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ dnl See LICENSE for copying information. dnl dnl Original version Dug Song -AC_INIT(libevent,2.1.7-beta) +AC_INIT(libevent,2.1.8-stable) AC_PREREQ(2.59) AC_CONFIG_SRCDIR(event.c) @@ -14,7 +14,7 @@ AM_INIT_AUTOMAKE dnl AM_SILENT_RULES req. automake 1.11. [no] defaults V=1 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) AC_CONFIG_HEADERS(config.h evconfig-private.h:evconfig-private.h.in) -AC_DEFINE(NUMERIC_VERSION, 0x02010700, [Numeric representation of the version]) +AC_DEFINE(NUMERIC_VERSION, 0x02010800, [Numeric representation of the version]) dnl Initialize prefix. if test "$prefix" = "NONE"; then diff --git a/whatsnew-2.1.txt b/whatsnew-2.1.txt index 0be54ae1..c1f4df8f 100644 --- a/whatsnew-2.1.txt +++ b/whatsnew-2.1.txt @@ -164,10 +164,6 @@ 1.3. Event finalization - [NOTE: This is an experimental feature in Libevent 2.1.3-alpha. Though - it seems solid so far, its API might change between now and the first - release candidate for Libevent 2.1.] - 1.3.1. Why event finalization? Libevent 2.1 now supports an API for safely "finalizing" events that @@ -320,6 +316,9 @@ evbuffer_readln() now supports an EVBUFFER_EOL_NUL argument to fetch NUL-terminated strings from buffers. + There's a new evbuffer_set_flags()/evbuffer_clear_flags() that you can use to + set EVBUFFER_FLAG_DRAINS_TO_FD. + 1.6. New functions and features: bufferevents You can now use the bufferevent_getcb() function to find out a @@ -348,6 +347,17 @@ You can manually trigger a bufferevent's callbacks via bufferevent_trigger() and bufferevent_trigger_event(). + Also you can manually increment/decrement reference for bufferevent with + bufferevent_incref()/bufferevent_decref(), it is useful in situations where a + user may reference the bufferevent somewhere else. + + Now bufferevent_openssl supports "dirty" shutdown (when the peer closes the + TCP connection before closing the SSL channel), see + bufferevent_openssl_get_allow_dirty_shutdown() and + bufferevent_openssl_set_allow_dirty_shutdown(). + + And also libevent supports openssl 1.1. + 1.7. New functions and features: evdns The previous evdns interface used an "open a test UDP socket" trick in @@ -366,6 +376,9 @@ There is a new evdns_base_clear_host_addresses() function to remove all the /etc/hosts addresses registered with an evdns instance. + Also there is evdns_base_get_nameserver_addr() for retrieve the address of + the 'idx'th configured nameserver. + 1.8. New functions and features: evconnlistener Libevent 2.1 adds the following evconnlistener flags: @@ -376,6 +389,10 @@ HTTP where the client always speaks first. On operating systems that don't support this functionality, this option has no effect. + LEV_OPT_REUSEABLE_PORT -- Indicates that we ask to allow multiple servers + to bind to the same port if they each set the option Ionly on Linux and + >=3.9) + LEV_OPT_DISABLED -- Creates an evconnlistener in the disabled (not listening) state. @@ -398,6 +415,9 @@ evhttp_connection_set_timeout_tv() to configure microsecond-granularity timeouts. + Also there is evhttp_connection_set_initial_retry_tv() to change initial + retry timeout. + There are a new pair of functions: evhttp_set_bevcb() and evhttp_connection_base_bufferevent_new(), that you can use to configure which bufferevents will be used for incoming and outgoing @@ -437,12 +457,53 @@ The evhttp_request_set_on_complete_cb() facility adds a callback to be invoked on request completion. + You can add linger-close for http server by passing + EVHTTP_SERVER_LINGERING_CLOSE to evhttp_set_flags(), with this flag server + read all the clients body, and only after this respond with an error if the + clients body exceed max_body_size (since some clients cannot read response + otherwise). + + The evhttp_connection_set_family() can bypass family hint to evdns. + + There are some flags available for connections, which can be installed with + evhttp_connection_set_flags(): + - EVHTTP_CON_REUSE_CONNECTED_ADDR -- reuse connection address on retry (avoid + extra DNS request). + - EVHTTP_CON_READ_ON_WRITE_ERROR - try read error, since server may already + close the connection. + + The evhttp_connection_free_on_completion() can be used to tell libevent to + free the connection object after the last request has completed or failed. + + There is evhttp_request_get_response_code_line() if + evhttp_request_get_response_code() is not enough for you. + + There are *evhttp_uri_parse_with_flags() that accepts + EVHTTP_URI_NONCONFORMANT to tolerate URIs that do not conform to RFC3986. + The evhttp_uri_set_flags() can changes the flags on URI. + 1.10. New functions and features: evutil There's a function "evutil_secure_rng_set_urandom_device_file()" that you can use to override the default file that Libevent uses to seed its (sort-of) secure RNG. + The evutil_date_rfc1123() returns date in RFC1123 + + There are new API to work with monotonic timer -- monotonic time is + guaranteed never to run in reverse, but is not necessarily epoch-based. Use + it to make reliable measurements of elapsed time between events even when the + system time may be changed: + - evutil_monotonic_timer_new()/evutil_monotonic_timer_free() + - evutil_configure_monotonic_time() + - evutil_gettime_monotonic() + + Use evutil_make_listen_socket_reuseable_port() to set SO_REUSEPORT (linux >= + 3.9) + + The evutil_make_tcp_listen_socket_deferred() can make a tcp listener socket + defer accept()s until there is data to read (TCP_DEFER_ACCEPT). + 2. Cross-platform performance improvements 2.1. Better data structures @@ -686,5 +747,22 @@ 5. Testing Libevent's test coverage level is more or less unchanged since before: - we still have over 80% line coverage in our tests on Linux and OSX. + we still have over 80% line coverage in our tests on Linux, FreeBSD, NetBSD, + Windows, OSX. There are some under-tested modules, though: we need to fix those. + + And now we have CI: + - https://travis-ci.org/libevent/libevent + - https://ci.appveyor.com/project/nmathewson/libevent + + And code coverage: + - https://coveralls.io/github/libevent/libevent + + Plus there is vagrant boxes if you what to test it on more OS'es then + travis-ci allows, and there is a wrapper (in python) that will parse logs and + provide report: + - https://github.com/libevent/libevent-extras/blob/master/tools/vagrant-tests.py + +6. Contributing + + From now we have contributing guide and checkpatch.sh.