This is a build2
package for the libevent
C
library. It provides a mechanism to execute a callback function when
a specific event occurs on a file descriptor or after a timeout has been
reached. Furthermore, libevent
also supports callbacks due to signals or
regular timeouts.
libevent
is meant to replace the event loop found in event driven network
servers. An application just needs to call event_dispatch()
and then add or
remove events dynamically without having to change the event loop.
Currently, libevent
supports /dev/poll
, kqueue(2)
, event ports, POSIX
select(2)
, Windows select()
, poll(2)
, and epoll(4)
.
libevent
additionally provides a sophisticated framework for buffered
network IO, with support for sockets, filters, rate-limiting, SSL, zero-copy
file transmission, and IOCP. libevent
includes support for several useful
protocols, including DNS, HTTP, and a minimal RPC framework.
Usage
To start using this library in your project, add the following depends
value to your manifest
, adjusting the version constraint as appropriate:
depends: libevent ^2.1.12
Then import the library in your buildfile
:
import libs = libevent%lib{event_core}
If you need one or more of the optional libraries (discussed below), then you
will need to use the dependency configuration mechanism to enable them. For
example, if you wish to use both lib{event_core}
and lib{event_extra}
in
your project, then you can add the following to your manifest
:
depends:
\
libevent ^2.1.12
{
require
{
config.libevent.extra = true
}
}
\
And the following to your buildfile
:
import libs = libevent%lib{event_core event_extra}
Importable targets
This package provides the following importable targets (see the upstream
documentation for background):
lib{event_core}
lib{event_extra}
lib{event_openssl}
lib{event_pthreads}
All the libraries except lib{event_core}
are optional, disabled by
default, and can be enabled with the corresponding configuration variables
(discussed below).
Configuration variables
This package provides the following configuration variables:
[bool] config.libevent.extra ?= false
[bool] config.libevent.openssl ?= false
[bool] config.libevent.pthreads ?= false
These variables can be used to enable the corresponding optional libraries
(discussed above). Note that an attempt to enable the lib{event_pthreads}
library on Windows has no effect.
Note also that the lib{event_core}
library provides build2
metadata that
describes the effective configuration:
lib{event_core}:
{
libevent.extra = $config.libevent.extra
libevent.openssl = $config.libevent.openssl
libevent.pthreads = $config.libevent.pthreads
}
Changes in version 2.1.12-stable (05 Jul 2020)
This release contains mostly bug fixes (I decided not to port some features
that can be ported even without ABI breakage, if you cannot find feature that
you are interested in, please give us a note!)
Since 2.1.12 libevent will use github actions as main CI, since
it recommends itself better then travis/appveyor (and had been removed from
upstream).
Look carefully at "slightly touches the behaviour" section.
Below you will find some of changes (this list has been cleaned up from the
patches that touches only tests and similar):
CI:
o Backport github actions to 2.1 (be3acd7c Azat Khuzhin)
o Merge branch 'event_rpcgen.py-cleanup' (f0ded5f3, 48e04887 Enji Cooper)
o Add API/ABI checker (using LVC) (709210d4, 2af1f6cc yuangongji)
test:
o tinytest: support timeout on Windows (794e8f75 yuangongji)
o Merge branch 'osx-clock' (e85afbe3 Azat Khuzhin)
o test-ratelim: calculate timers bias (for slow CPUs) to avoid false-positive (8ad26d0b Azat Khuzhin)
fixes:
o buffer: do not pass NULL to memcpy() from evbuffer_pullup() (5b063049 Azat Khuzhin)
o http: fix undefined-shift in EVUTIL_IS*_ helpers (6b8d02a7 Azat Khuzhin)
o Check error code of evhttp_add_header_internal() in evhttp_parse_query_impl() (97e28f09 Azat Khuzhin)
o http: fix EVHTTP_CON_AUTOFREE in case of timeout (and some else) (1be25938 Azat Khuzhin)
o evdns: Add additional validation for values of dns options (c2972453 ayuseleznev)
o There is typo in GetAdaptersAddresses windows library. It should be iphlpapi.dll (891adda9 Aleksandr-Melnikov)
o Merge branch 'EV_CLOSED-and-EV_ET-fixes' (db2efdf5 Azat Khuzhin)
o Fix memory corruption in EV_CLOSURE_EVENT_FINALIZE with debug enabled (8ccd8f56 Jan Kasiak)
o increase segment refcnt only if evbuffer_add_file_segment() succeeds (30662a3c yuangongji)
o evdns: fix a crash when evdns_base with waiting requests is freed (6f8e0e97 ayuseleznev)
o event_base_once: fix potential null pointer threat (2e9ceb16 chenguolong)
o http: do not assume body for CONNECT (1b42270b Azat Khuzhin)
o evbuffer_add_file: fix freeing of segment in the error path (5f017bde Azat Khuzhin)
o Fix checking return value of the evdns_base_resolv_conf_parse() (fc51bf2c Azat Khuzhin)
o Merge branch 'fix-signal-leak' (poll/select now needs reinit) (1c9cc07b Azat Khuzhin)
improvements:
o evutil_time: improve evutil_gettimeofday on Windows (a8219143 Nick Grifka)
o Support EV_CLOSED on linux for poll(2) (2530e7c6 Azat Khuzhin)
o Parse IPv6 scope IDs. (f602211f Philip Homburg)
o evutil_time: Implements usleep() using wait funtion on Windows (d42240d1 yuangongji)
o evutil_time: detect and use _gmtime64_s()/_gmtime64() (f4a6152c yuangongji)
slightly touches the behaviour:
o bufferevent: allow setting priority on socket and openssl type (4dd3acdd Nicolas J. Bouliane)
o Fix EV_CLOSED detection/reporting (epoll only) (1df324d4 Azat Khuzhin) (XXX)
o Revert "Warn if forked from the event loop during event_reinit()" (71f5c0d3 Azat Khuzhin)
samples:
o https-client: load certificates from the system cert store on Windows (e9478640 yuangongji)
build fixes:
o Do not use sysctl.h on linux (it had been deprecated) (d2871a37 Azat Khuzhin)
o cmake: avoid problems from use of CMAKE_USE_PTHREADS_INIT (a62ec765 Paul Osborne)
o Update list of cmake files for autotools dist archive (2016f017 Azat Khuzhin)
o LibeventConfig.cmake: restore CMAKE_FIND_LIBRARY_SUFFIXES and LIBEVENT_STATIC_LINK default (640f9cf6 Mario Emmenlauer)
o cmake: fix getaddrinfo checking error (dea51c2e yuangongji)
o autoconf: fix getaddrinfo checking errors on mingw (b9bf7fa7 yuangongji)
o Do not use shared global structures on CYGWIN (8a9b5655 Azat Khuzhin)
o Added uninstall target check to cmakelists (3f1fb1f9 Dimo Markov)
o Fix compilation without OPENSSL_API_COMPAT (921bdcdd Azat Khuzhin)
o cmake: improve package config file (1c047618, baec84f2 yuangongji)
o Link with iphlpapi only on windows (976f7d34 Azat Khuzhin)
o autotools: fails build when need but can not find openssl (93174bb5 yuangongji)
o Merge branch 'http-connect' (e2424229 Azat Khuzhin)
o Fix compat with NetBSD >= 10 (5febb4e1 Kamil Rytarowski)
o cmake: fix getrandom() detection (e0e5f3bd Azat Khuzhin)
o arc4random: replace sysctl() with getrandom (on linux) (66ec78fd Azat Khuzhin)
o Upgrade autoconf (after upgrading minimum required to 2.67) (45da7d9d yuangongji)
o eliminate some C4267 warnings in Windows (9e468c77 yuangongji)
o autotools: attach doxygen target into all target (5d1e8570 yuangongji)
o cmake: attach doxygen target into all target (7a85300a yuangongji)
o Change the minimum version of automake to 1.13 and autoconf to 2.67 (fdb8fb66 ygj6)
o Add Uninstall.cmake.in into dist archive (877f2355 Azat Khuzhin)
Changes in version 2.1.11-stable (01 Aug 2019)
This release contains one ABI breakage fix (that had been introduced in
2.1.10, and strictly speaking this release breaks ABI again to make it
compatible with 2.1.9 and less, please take a look at 18104973 for more
details). Apart from that it contains some bug fixes, that grouped below.
And even though the return value for evbuffer_setcb() had been changed it
should ABI compatible (anyway that function is in -compat.h header).
There is also one patch that introduce new functionality, this is 546a366c,
to tune SO_RCVBUF/SO_SNDBUF in evdns, but one can count it as a bug-fix on
the application level, since before you cannot tune this settings and hence
you could stumble on problems.
ABI breakage:
o Protect min_heap_push_ against integer overflow. (8c899768 Tobias Stoeckmann)
o Revert "Protect min_heap_push_ against integer overflow." (18104973 Azat Khuzhin)
functionality:
o evdns: add new options -- so-rcvbuf/so-sndbuf (546a366c Azat Khuzhin)
build:
o Change autoconf version to 2.62 and automake version to 1.11.2 (2a333008 yuangongji)
o cmake: install shared library only if it was requested (596855f7 Azat Khuzhin)
o Missing <winerror.h> on win7/MinGW(MINGW32_NT-6.1)/MSYS (9559349c yuangongji)
o cmake: set library names to be the same as with autotools (305251b9 yuangongji)
o Enable _GNU_SOURCE for Android (f013fc7d Keith Smiley)
o Enable kqueue for APPLE targets (3aa68a82 Keith Smiley)
o autotools: do not install bufferevent_ssl.h under --disable-openssl (5349a07e Azat Khuzhin)
o cmake: link against shell32.lib/advapi32.lib (c9ce638c Azat Khuzhin)
o Add README.md into dist archive (3660a4cc Azat Khuzhin)
o cmake: add missing autotools targets (doxygen, uninstall, event_rpcgen.py) (2d65071c yuangongji)
o m4/libevent_openssl.m4: fix detection of openssl (d4056e59 Fabrice Fontaine)
o Fix detection of the __has_attribute() for apple clang [ci skip] (7fd7c5ef Azat Khuzhin)
lib:
o buffer: fix possible NULL dereference in evbuffer_setcb() on ENOMEM (598f247d Azat Khuzhin)
o Warn if forked from the event loop during event_reinit() (b75922ae Azat Khuzhin)
o evutil: set the have_checked_interfaces in evutil_check_interfaces()
(ef498aa2, a09265ac jeremyerb)
samples:
o https-client: correction error checking (a8a04565 wenyg)
Changes in version 2.1.10-stable (26 May 2019)
This release contains mostly fixes (some evbuffer oddity, AF_UNIX handling in
http server, some UB fixes and others) but also some new functionality
(without ABI breakage as usual) and now dist archive can be used for building
on windows (getopt had been added into it).
Above you will find changelog for this particular release (but with some
trivial fixes pruned out from it - to make it a little bit more informative).
To view full changelog please use git:
git log --format=' o %s (%h %aN)' release-2.1.9-beta...release-2.1.10-stable
dist:
o Add getopt into dist archive (7042ff24 Azat Khuzhin)
functionality:
o evdns: add DNS_OPTION_NAMESERVERS_NO_DEFAULT/EVDNS_BASE_NAMESERVERS_NO_DEFAULT
(58e81106 Azat Khuzhin)
o Add support for EV_TIMEOUT to event_base_active_by_fd (3f893f0a John Ohl)
fixes:
o Merge branch 'evbuffer-fixes-806-v2' (2fea04b3 Azat Khuzhin)
o Merge branch 'issue-807-accept4-getnameinfo-AF_UNIX' (7c4da937, e2790a7f
Azat Khuzhin)
o kqueue: Avoid undefined behaviour. (e70e18e9 Tobias Stoeckmann)
o Prevent integer overflow in kq_build_changes_list. (43a55a23 Tobias Stoeckmann)
o evdns: fix lock/unlock mismatch in evdns_close_server_port() (54103883 zhuizhuhaomeng)
o Merge remote-tracking branch 'official/pr/804' -- Enforce limit of NSIG
signals (87fa93a8 Tobias Stoeckmann)
o Protect min_heap_push_ against integer overflow. (0b46bb8c Tobias Stoeckmann)
o le-proxy: initiate use of the Winsock DLL (2a1e1530 linxiaohui)
o Fix leaks in error path of the bufferevent_init_common_() (bb0f8fe7 Azat Khuzhin)
o buffer: make evbuffer_prepend() of zero-length array no-op (61fa7b7d Azat Khuzhin)
o Merge branch 'evbuffer-empty-chain-handling' (6a3dd717 Azat Khuzhin)
o Don't loose top error in SSL (3d1a7a1d Yury Korzhetsky)
o Remove needless check for arc4_seeded_ok (6602a97d Seong-Joong Kim)
o Merge pull request #769 from sungjungk/fix-return-handling (91084140 Nathan French)
build:
o Define `_GNU_SOURCE` properly/consistently per autoconf (00ba9fa2 Enji Cooper)
o signal: guard __cdecl definition with #ifdef (d89045a6 Azat Khuzhin)
o Link test/regress with event_core/event_extra over event (22380996 Azat Khuzhin)
tests:
o Use kill() over raise() for raising the signal (fixes osx 10.14 with
kqueue) (3db5296b, a45f6733 Azat Khuzhin)
o tinytest: implement per-test timeout (via alarm() under !win32 only)
(b64dbfb6, 75d7e1ff Azat Khuzhin)
Changes in version 2.1.9-beta (10 February 2019)
This changelog will differs from other releases in the next few clauses:
- contains only highlighted changes (so now it will not contains a lot of
patches that fixes some stuff in regression tests, typos, leaks fixes in
samples and so forth)
- no authors (since merge commits breaks them anyway, but AUTHORS sections in
README will be kept up to date)
- group name trimmed from commit subjects trimmed
- it's been 2 years since the previoius release, so it is pretty huge
And I think that this is more useful, so from now on it will always has the
same look (until there will too many objections of course).
To view full changelog please use git:
git log --format=' o %s (%h %aN)' release-2.1.8-stable...release-2.1.9-beta
dist archive:
o Add cmake rules into dist archive (bf3a67cf)
o Add missing print-winsock-errors.c into dist archive (822d6462)
o Include openssl-compat.h into dist archive (08658136)
core:
o Merge branch 'check-O_NONBLOCK-in-debug' (a39898f3, a8155c62)
o Merge branch 'event-ET-#636-v2' (ca4b6404)
o Fix visibility issues under (mostly on win32)
(349081e1g, 802be13ag, a1f28e2f)
o Define __EXT_POSIX2 for QNX (a2176f2c)
o Cleanup __func__ detection (b3af7bdd)
o Add convenience macros for user-triggered events (06ec5de6)
o Notify event base if there are no more events, so it can exit without delay (d9d1c09e)
o Fix base unlocking in event_del() if event_base_set() runned in another thread (4f0f40e3)
o If precise_time is false, we should not set EVENT_BASE_FLAG_PRECISE_TIMER (27dee54d)
o Fix race in access to ev_res from event loop with event_active() (43d92a6d)
o Return from event_del() after the last event callback termination (876c7ac7)
http:
o Merge branch 'http-EVHTTP_CON_READ_ON_WRITE_ERROR-fixes-v2' (eb7b472b)
o Preserve socket error from listen across closesocket cleanup (2ccd00a6)
o fix connection retries when there more then one request for connection (d30e7bba)
o improve error path for bufferevent_{setfd,enable,disable}() (a8cc449e)
o Fix conceivable UAF of the bufferevent in evhttp_connection_free() (6ac2ec25)
o Merge branch 'http-request-line-parsing' (cdcfbafe)
o Fix evhttp_connection_get_addr() fox incomming http connections (4215c003)
o fix leaks in evhttp_uriencode() (123362e9)
o CONNECT method only takes an authority (7d1ffe64)
o Allow bodies for GET/DELETE/OPTIONS/CONNECT (23eb38b9)
o Do not crash when evhttp_send_reply_start() is called after a timeout. (826f1134)
o Fix crashing http server when callback do not reply in place (5b40744d, b2581380)
o fix handling of close_notify (ssl) in http with openssl bufferevents (7e91622b)
evrpc:
o use *_new_with_arg() to match function prototype (a95cc9e3)
o avoid NULL dereference on request is not EVHTTP_REQ_POST (e05136c7)
regression tests:
o Merge branch 'TT_RETRIABLE' (6ea1ec68, f9b592aa)
bufferevent:
o Merge branch 'iocp-fixes' (6bfac964)
o Merge branch 'be-wm-overrun-v2' (3f692fff)
o bufferevent_socket_connect{,_hostname}() missing event callback and use ret code (1dde74ef)
o don't fail be_null_filter if bytes are copied (b92b0792)
o Call underlying bev ctrl GET_FD on filtered bufferevents (ebfac517)
bufferevent_openssl/openssl:
o Merge branch 'ssl_bufferevent_wm_filter-fix' (30020a35)
o be_openssl: avoid leaking of SSL structure (e86ccfe5)
o Fix build with LibreSSL 2.7 (894ca48a)
o Add missing includes into openssl-compat.h (01bc36c1)
o Explicitly call SSL_clear when reseting the fd. (29b7a516)
o Unbreak build with LibreSSL after openssl 1.1 support added (230af9f0)
samples:
o Merge branch 'sample-http-server' (b6309bcc)
o sample/https-client: use host SSL certificate store by default (5c0132f3)
listener:
o ipv6only socket bind support (ba148796)
o Merge branch 'listener-immediate-close' (df2ed13f)
o Merge branch 'evconnlistener-do-not-close-client-fd' (42e851bb)
evdns:
o evdns: handle NULL filename explicitly (0033f5cc)
o Merge branch 'evdns_getaddrinfo-race-fix' (3237d697)
o Generating evdns_base_config_windows_nameservers docs on all platforms (3bd2ce43)
utils:
o Merge branch 'evutil_found_ifaddr-dev' (b07e43e6)
o Avoid possible SEGVs in select() (in unit tests) (8818c86c)
o Port `event_rpcgen.py` and `test/check-dumpevents.py` to Python 3. (532a8cc3)
buffer:
o Fix assert() condition in evbuffer_drain() for IOCP (d6326104)
o fix incorrect unlock of the buffer mutex (for deferred callbacks) (2b4d127d)
o Fix wrong assert in evbuffer_drain() (9f4d0dce)
cmake:
o fix checking of devpoll backend (like in autotools, by devpoll.h existence) (7f161902)
o support static runtime (MSVC) (c8b3ec17, 61fb055a)
o do not build both (SHARED and STATIC) for MSVC/win32 (bc7f2fd9)
o introduce EVENT__LIBRARY_TYPE option (eb10a738)
o ensure windows dll's are installed as well as lib files (29590718)
o Fix generation of LibeventConfig.cmake for the installation tree (7fa08c4b)
o fix pkgconfig generation (copy-paste typo) (cc554d87)
o Merge branch 'cmake-missing-bits' (9806b126)
o Fix detection of timerfd_create() in CMake. (e50af331)
o Merge branch 'cmake-configure-fixes-v2' (a0bfe2c4)
o Do not add epoll_sub (syscall wrappers) for epoll in cmake (cea61de6)
o Fix RPATH for APPLE (45b1f379)
autotools:
o include win32 specific headers for socklen_t detection on win32/mingw (d7579fb9)
o Ignore evconfig-private.h for autotools (37423849)
o config.h can't be prefixed unconditionally (63a054f8)
o Merge branch 'pull-628' (7e56c8b2)
o Provide Makefile variables LIBEVENT_{CFLAGS,CPPFLAGS,LDFLAGS} (2f060c5f)
o confirm openssl is working before using (b39ccf8e)
o pass $(OPENSSL_INCS) for samples (FTBFS macOS) (c2495265)
o Add configure check for midipix (d433201e)
o Fix tests with detached builds (c46ff439)
build:
o Fix arc4random_addrandom() detecting and fallback (regression) (303d6d77)
o Merge branch 'win32-fixes' (ebd12e6d)
o Merge branch 'fix-openssl-linking' (e7bd9e03)
o Merge branch 'fix-struct-linger' (8567f2f5)
CI:
o travis-ci/appveyor now uses fast_finish+allow_failures
(5e97b6e6, dd472e7d, dfb5fc167)
o Merge branch 'travis-ci-osx-fixes' (9f02b39c)
o Merge branch 'win64-fixes' (aee0fcd5)
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 <unistd.h> 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
and plus Vagrantfile for testing under multiple OS'es.
Continious Integration:
o Use coveralls.io via travis (9ac000c Azat Khuzhin)
o travis-ci: use container-based infrastructure (7e12e96 Azat Khuzhin)
o travis-ci/osx: fix compiling/linking openssl libraries (9d2f8d4 Azat Khuzhin)
o travis-ci: use gcc-5 (fixes osx|gcc failures) (d7ceae5 Azat Khuzhin)
o Testing with vagrant for 6 OS and cmake+autoconf (9585338 Azat Khuzhin)
o travis-ci/osx: install lcov (e4e099b Azat Khuzhin)
Build Improvements/Fixes:
o Fix cmake -DEVENT__COVERAGE=ON (40fbffc Azat Khuzhin)
o autogen.sh: learn about gmake (9376ac4 Azat Khuzhin)
o autogen.sh: remove all autoconf/automake caches, if any (69cce25 Azat Khuzhin)
o cmake: fix finding python2, and check that it is really 2 (3453c08 Azat Khuzhin)
o cmake: fix CheckFunctionExistsEx/CheckPrototypeDefinition (CMP0054) (43b69b2 Azat Khuzhin)
o cmake: cleanup (dc624ad Zonr Chang)
o cmake/win32: fix running regress, but fixing finding python2 interpreter (bcb990a Azat Khuzhin)
o cmake: use PYTHON_EXECUTABLE to find python2 (a4d044c Azat Khuzhin)
o Merge branch 'force-disable-clockgettime' (83c7cdf Azat Khuzhin)
Code Improvements (core)
o use ev_uint16_t instead of unsigned short for port (e983712 Thomas Bernard)
o Merge branch 'contrib-guide-v2' (b9c5077 Azat Khuzhin)
o poll: Prevent libevent from spinning if POLLNVAL occurs (675974c Tim Hentenaar)
Testing:
o test/regress: cover a polling of invalid fd (cb0df5c Tim Hentenaar)
Code Improvements (bufferevent_openssl)
o Make it build using OpenSSL 1.1.0 (3e9e0a0 Kurt Roeckx)
o Don't call BIO_number_{read|written} on NULL BIOs. (6702da1 Adam Langley)
o Switch from a 512 to 2048-bit RSA key. (f9803a6 Adam Langley)
Trivial fixes:
o Ignore temporary configure files (8fb08ae Azat Khuzhin)
o README.md: fix typo: ar -> are (2361616 Simone Basso)
o be: just a simple mistake, reinclude the <errno.h> (7521664 Seven)
Changes in version 2.1.6-beta (4 July 2016)
Libevent 2.1.6-beta contains mostly bug fixes (evbuffers, evthread, evdns,
bufferevents, core, http, samples), improvements but mostly to fix some
possible issues (EVHTTP_CON_LINGERING_CLOSE), a lot of new unit tests and new
appveyor integration.
Security Fixes (utils)
o evutil_parse_sockaddr_port(): fix buffer overflow (329acc1 Azat Khuzhin)
Security Fixes (evdns)
o evdns: name_parse(): fix remote stack overread (96f64a0 Azat Khuzhin)
o evdns: fix searching empty hostnames (ec65c42 Azat Khuzhin)
New APIs (evdns)
o New function to get address for nameserver. (537177d Nick Mathewson)
New APIs (bufferevents)
o expose bufferevent_incref/decref (with fewer modifications) (1ed6718 Mark Ellzey)
New APIs (internal)
o evdns: export cancel via callbacks in util (like async lib core/extra issues) (8cbe65d Azat Khuzhin)
New APIs/Improvements (http)
o http: take EVHTTP_CON_LINGERING_CLOSE into account for "Expect: 100-Continue" (ac448a7 Azat Khuzhin)
o http: lingering close (like nginx have) for entity-too-large (9fde518 Azat Khuzhin)
o http: read server response even after server closed the connection (680742e Azat Khuzhin)
o http: export evhttp_connection_set_family() (714fc70 Azat Khuzhin)
o http: reuse connected address only with EVHTTP_CON_REUSE_CONNECTED_ADDR (a50f5f0 Azat Khuzhin)
o http: use IP address that we got before (if any) during retrying (54c887d Azat Khuzhin)
Bugfixes (core)
o Fix getaddrinfo under solaris (for multiprotocol case) (40730ae Azat Khuzhin)
o Check for Mac OS X 10.4 kqueue bug properly (df6f99e Mark Mentovai)
o event_reinit: make signals works after fork() without evsig_add() (88640aa Nicholas Marriott)
o event_reinit: always re-init signal's socketpair (ad0c237 Nicholas Marriott)
o Free event queues even for recursive finalizers (7c8d015 Azat Khuzhin)
o Fix checking for make_base_notifiable() (f337296 Azat Khuzhin)
o Set correct socklen for PF_INET6 sockaddr len (3499ad9 Mark Ellzey)
o Fix garbage value in socketpair util function, stdint? (043ae74 Mark Ellzey)
o fix the return value of event_deferred_cb_schedule_ (38cef64 Greg Hazel)
o event_free_debug_globals_locks(): disable lock debugging (e5c87d1 Azat Khuzhin)
o event: call event_disable_debug_mode() in libevent_global_shutdown() (941faae Azat Khuzhin)
o ht-internal: don't reset hth_table_length explicitly in name_##HT_CLEAR (597c7b2 Azat Khuzhin)
Bugfixes (evthread)
o evthread: fix evthread_setup_global_lock_() for debug-lock with a real-lock case (e4556fc Azat Khuzhin)
o evthread: evthreadimpl_disable_lock_debugging_() for libevent_global_shutdown() (ccc5593 Azat Khuzhin)
Bugfixes (evdns)
o evdns: avoid double-free in evdns_base_free() for probing requests (4db15e0 Azat Khuzhin)
o evdns: evdns_base_free(): fix UAF of evdns_base with @fail_requests (00313c5 Azat Khuzhin)
o evdns: evdns_base_free(): free requests before namservers (14f84bb Azat Khuzhin)
o evdns: fix randomize-case by make case-insensitive as required (9c238de Azat Khuzhin)
Bugfixes (bufferevents)
o be_sock: handle readv() returns ECONNREFUSED (freebsd 9.2) (3189eb0 Azat Khuzhin)
o be_filter: avoid data stuck under active watermarks (b627ad8 Eduardo Panisset)
o Fix bufferevent_pair to properly set BEV_EVENT_{READING,WRITING} on flush. (2851889 David Paschich)
o be_openssl: clear all pending errors before SSL_*() calls (38e0f4a Azat Khuzhin)
o be_sock: cancel in-progress dns requests (86dfd2c Azat Khuzhin)
o be_sock: unfreeze buffers on fd changing (255525d Azat Khuzhin)
o be_sock: bufferevent_socket_connect_hostname(): make it thread-safe (809bb39 Azat Khuzhin)
o be_openssl: don't call do_write() directly from outbuf_cb (da52933 Azat Khuzhin)
o be_openssl: use bufferevent_enable() instead of bufferevent_add_event_() (0c66d32 Azat Khuzhin)
o be_openssl: don't add events during bev creation (like be_sock) (f4b6284 Azat Khuzhin)
o Fix lock leak in be_pair_flush() if flush type is BEV_NORMAL (f45d39d Bill Vaughan)
o be_openssl: don't use *_auto() in do_handshake() we can't have fd == -1 there (877280d Azat Khuzhin)
o be_openssl: don't call set_open_callbacks() if fd == -1 (e8a2da9 Azat Khuzhin)
o be_openssl: get rid off hackish "fd_is_set", to fix some corner cases (40b0379 Azat Khuzhin)
o be: we don't need to use getpeername() we we have conn_address (2c271e2 Azat Khuzhin)
o Call underlying bev ctrl SET_FD on filtered bufferevents (c2aa7dc Mark Ellzey)
o be_pair: release shared lock with the latest of bufferevent_pair (92a359e Azat Khuzhin)
Bugfixes (http)
o [Issue #313] set method to ASCII "NULL" if evhttp_method() returns NULL (17cc636 Mark Ellzey)
o evhttp_have_expect(): fix -Wlogical-not-parentheses (24b5214 Azat Khuzhin)
o http: set fd to -1 unconditioally, to avoid leaking of DNS requests (7a4b472 Azat Khuzhin)
o http: avoid leaking of fd in evhttp_connection_free() (f0e1341 Azat Khuzhin)
o http: get fd from be layer during connection reset (4a53c54 Azat Khuzhin)
o http: fix EVHTTP_CON_READ_ON_WRITE_ERROR when it doesn't supported by OS (2ff164a Azat Khuzhin)
o http: do not do function calls under EVUTIL_ASSERT() to fix NDEBUG builds (7c89999 Azat Khuzhin)
o http: fix leaking of response_code_line (8f18a62 Azat Khuzhin)
o http: fix "Expect: 100-continue" client side (0b46b39 Azat Khuzhin)
o http: fix conflicts EVHTTP_CON_AUTOFREE and EVHTTP_CON_REUSE_CONNECTED_ADDR (4dc0979 Azat Khuzhin)
o http: avoid epoll_ctl() on already closed fd (triggers by http/chunk_out) (ab3bc69 Azat Khuzhin)
o http: install timeout for read too during connect for ssl (040000d Azat Khuzhin)
o http: fix evhttp_request_own() by checking EVHTTP_USER_OWNED in more cases (b0d3964 Azat Khuzhin)
o http: fix detecting EOF without write (7ed02ac Azat Khuzhin)
o evhttp: Fix failure to send all output data for POST/PUT requests (24eea0d John Ohl)
o Fix evhttp_uriencode() regression. (c6b1ec1 Mark Ellzey)
o removed unused vars (e94250c Mark Ellzey)
o pointer overflow checks for evhttp_uriencode (72afe4c Zonr Chang)
Bugfixes (evbuffers)
o buffer: fix overflow check in evbuffer_expand_singlechain() (a3f4ccd Azat Khuzhin)
o buffer: evbuffer_add_buffer(): clean empty chains from destination buffer (26fd932 Azat Khuzhin)
o Fix n_add_for_cb in evbuffer_prepend() in case of new buffer required (0abd039 Azat Khuzhin)
o be_filter: actually disable output_filter during processing output (c031215 Simon Perreault)
o evbuffer_add: Use last_with_datap if set, not last. (a8769ef Marcus Sundberg)
o EVBUFFER_PTR_SET -> EVBUFFER_PTR_ADD (8674e4f jer-gentoo)
Bugfixes (evconnlistener)
o listener: unlock lev on error in listener_read_cb() (2a71b33 Azat Khuzhin)
o Fix potential fd leak in listener_read_cb() (a695a72 Mark Ellzey)
Testing
o tests: use waitpid(..., WNOWAIT) to fix failing of main/fork under solaris (43eb56c Azat Khuzhin)
o test: replace sleeping with syncing pair in main/fork (16d220c Azat Khuzhin)
o test/http: do not run tests that based on backlog filling (freebsd) (500b6b7 Azat Khuzhin)
o test/bufferevent/iocp: fix test name for "bufferevent_connect_fail_eventcb" (4410e9d Azat Khuzhin)
o test/ssl: use send()/recv()/EVUTIL_ERR_RW_RETRIABLE()/EVUTIL_SOCKET_ERROR() to fix win32 (a9e8cd6 Azat Khuzhin)
o test/https_basic: increase timeout for complete write (fixes win32) (d5a2f2f Azat Khuzhin)
o test: fix building with --disable-thread-support under win32 (a487706 Azat Khuzhin)
o test/buffer: evbuffer_add_buffer() with empty chains (a272bc4 Azat Khuzhin)
o test/buffer: evbuffer_remove_buffer() with empty chains (prepend) (f0cfa14 Azat Khuzhin)
o test/buffer: evbuffer_remove_buffer() with empty chains (evbuffer_add_buffer()) (2880ce6 Azat Khuzhin)
o test/buffer: cover evbuffer_expand() for overflow (48dab7a Azat Khuzhin)
o test/be_filter: creating test case for data stuck with active watermarks (766194b Eduardo Panisset)
o test/http: avoid using conditionals with omitted operands (fixes VS2015) (2a4bf29 Azat Khuzhin)
o test/http: don't mix declarations and code (fixes -Wdeclaration-after-statement) (aabf1c2 Azat Khuzhin)
o test/buffer: fix leak in test_evbuffer_prepend() (c08d90b Azat Khuzhin)
o test/buffer: avoid errors with --no-fork (reinitialize static vars) (e7d1e39 Azat Khuzhin)
o test/buffer: cover n_add_for_cb when evbuffer_prepend() need to allocate buffer (e77ff41 Azat Khuzhin)
o test/tinytest_macros: add new one tt_nstr_op() (bd19a28 Azat Khuzhin)
o test/bufferevent: check that output_filter disabled during processing output (ae28812 Azat Khuzhin)
o test/listener: regression for missing unlock in listener_read_cb() (7d85651 Azat Khuzhin)
o test/regress: add tests for evbuffer_add() breakage on empty last chain (d5ee739 Marcus Sundberg)
o test/http: fix running some tests sequential (with --no-fork) (bddad71 Azat Khuzhin)
o test/http: localize evhttp server structure (cbc3209 Azat Khuzhin)
o test/dns: regression for empty hostname (d7348ba Azat Khuzhin)
o test/http: fix SERVER_TIMEOUT tests under win32 (d49a658 Azat Khuzhin)
o test/http: add a helper for creating timedout/failed request (376f107 Azat Khuzhin)
o test/http: adopt for C90 (mixed code and declarations) (d02a285 Azat Khuzhin)
o test/http: cover NS timed out during request cancellations separatelly (0c343af Azat Khuzhin)
o test/http: request cancellation with resolving/{conn,write}-timeouts in progress (334340d Azat Khuzhin)
o test/http: exit from the loop in the errorcb to wait cancellation (927ab33 Azat Khuzhin)
o regress_clean_dnsserver(): reset global port vars (351207f Azat Khuzhin)
o test/http: read_on_write_error: fix it for win32 (3b58169 Azat Khuzhin)
o test/http: separate coverage for EVHTTP_CON_READ_ON_WRITE_ERROR (5c2b4c1 Azat Khuzhin)
o test/http: cover "Expect: 100-continue" client-server interaction (31d8116 Azat Khuzhin)
o test/http: *lingering tests shouldn't have "Expect: 100-continue" (ed469ab Azat Khuzhin)
o test: use EVUTIL_SHUT_WR (04fc82f Azat Khuzhin)
o test/http: avoid huge stack allocations to fix win32 builds (3166765 Azat Khuzhin)
o test: http/lingering_close: cover EVHTTP_SERVER_LINGERING_CLOSE (e122ca1 Azat Khuzhin)
o test: http/non_lingering_close: cover ~EVHTTP_SERVER_LINGERING_CLOSE (f41e1b0 Azat Khuzhin)
o test: http/*: update expected HTTP codes for body exceeds `max_body_size` (addf2b9 Azat Khuzhin)
o test: http/data_length_constrains: set EVHTTP_CON_READ_ON_WRITE_ERROR (d38a723 Azat Khuzhin)
o test: increase buffer size for http/data_length_constraints to trigger EPIPE (0792e1e Azat Khuzhin)
o test/tinytest_demo: include <windows.h> for win32 to fix tdm-gcc (f062bbe Azat Khuzhin)
o test/regress: cover event_del() waiting mechanism (5b58b70 Azat Khuzhin)
o test/regress: cover existing signal callbacks and fork() + event_reinit() (ceddc60 Azat Khuzhin)
o test/regress: cover signals after fork() + event_reinit() (b075b81 Azat Khuzhin)
o test/regress: main/fork: rewrite assertions by just removing event in callback (088d8b3 Azat Khuzhin)
o test/dns: check exit code of evdns_getaddrinfo() (0b9d432 Azat Khuzhin)
o test/dns: cover evdns_getaddrinfo() and evdns_base_free() with @fail_requests (4ad3483 Azat Khuzhin)
o test/dns: cover @fail_requests for evdns_base_free() (d6c6fb4 Azat Khuzhin)
o test/dns: more graceful coverage of @fail_requests (123d372 Azat Khuzhin)
o test/ssl: cover busy-loop (i.e. {read,write}-blocked-on-{write,read} stuff) (da0ea7a Azat Khuzhin)
o test/http: write_during_read for https (23c77b6 Azat Khuzhin)
o test/http: connection_fail for https (7ea26f7 Azat Khuzhin)
o test/http: stream_out for https (ac04968 Azat Khuzhin)
o test/http: chunk_out for https (a71ffb9 Azat Khuzhin)
o test/regress: fix ssl-less builds (need to make this prettier) (3160716 Azat Khuzhin)
o test/http: allow dirty shutdown for ssl to fix https_incomplete (1ede326 Azat Khuzhin)
o test/http: https basic (59714b4 Azat Khuzhin)
o test/http: incomplete{,_timeout} for https (615490d Azat Khuzhin)
o test/http: add simplest test for http/https/https_dirty_shutdown (93b19dc Azat Khuzhin)
o test/http: https: retry coverage (7c2d24a Azat Khuzhin)
o test/http: https server support (plus some helpers) (a7088ad Azat Khuzhin)
o test/http: more sanity checks (a27c53c Azat Khuzhin)
o test/ssl: export getkey()/getcert()/get_ssl_ctx()/init_ssl() for https (0c4c387 Azat Khuzhin)
o test/regress_be: basic coverage bufferevent_flush() for pair/sock layers (ad52602 Azat Khuzhin)
o test/regress_be: socket_filter_inactive: check bufferevent after creation (f8081af Azat Khuzhin)
o test/regress_be: cover finalizers from inactive to active queue (337684b Azat Khuzhin)
o test/regress_buffer: fix clang compilation warnings (d8fd4c0 Azat Khuzhin)
o test/regress_http: fix compilation warnings (-Wmissing-field-initializers) (cd422e0 Azat Khuzhin)
o test/regress_dns: fix compilation warnings (-Wmissing-field-initializers/for) (f55db98 Azat Khuzhin)
o tests/regress_dns: cover that randomize-case works case-insensitive (1e8bfbc Azat Khuzhin)
o test: fix bufferevent/bufferevent_pair_release_lock in debug mode (3f749e9 Azat Khuzhin)
o test: fix bufferevent/bufferevent_pair_release_lock for freebsd (79f9ace Azat Khuzhin)
o test/regress_be: bufferevent_enable() shouldn't call eventcb by it's own (a0f308d Azat Khuzhin)
o test/regress_be: introduce fake_listener_create() (37dc9e0 Azat Khuzhin)
o test/regress_http: cover evhttp_request_own() (6f6fa0d Azat Khuzhin)
o test/regress_http: cover write during read (3d15aeb Azat Khuzhin)
o test/regress_http: verify that closecb will be called without multiple write (4be6c70 Azat Khuzhin)
o test/regress: fix bufferevent_pair_release_lock with EVENT_DEBUG_MODE (6ea6655 Azat Khuzhin)
o test/regress_ssl: check events fd/pending after timeout triggered (cdafdf0 Azat Khuzhin)
o test/regress_ssl: cover case when server didn't up (failed with timeout) (74845f1 Azat Khuzhin)
o test/regress_ssl: covert that we can't change fd with underlying (df507af Azat Khuzhin)
o test/regress_ssl: cover that events (read/write) at finish not pending (762edb4 Azat Khuzhin)
o test/regress_ssl: cover fd manipulations (b78a829 Azat Khuzhin)
o test/regress_ssl: convert open_ssl_bufevs() to mask (46bba73 Azat Khuzhin)
o test/regress_ssl: convert client/server to mask too (3455991 Azat Khuzhin)
o test/regress_ssl: cover "allow_dirty_shutdown" (0430327 Azat Khuzhin)
o test/regress_ssl: convert regress_bufferevent_openssl() to bitmask (342e116 Azat Khuzhin)
o tests/regress_ssl: drop duplicated assert (25e56fd Azat Khuzhin)
o test/regress_http: initialize "dns_base" to avoid reading trash (9f0bff3 Azat Khuzhin)
o test/http: cover retrying with saved conn_address by shutting down dns server (f4874d8 Azat Khuzhin)
o be_pair/regress: cover use of shared lock (lock/unlock/free) (a558fcd Azat Khuzhin)
o regress_dns: drop hack for event_debug_map_HT_GROW in leak tests (3540a19 Azat Khuzhin)
Sample code
o Fix memory leak in signal-test.c (666db91 basavesh.as)
o sample/hello-world: exAmple, not eXMple (2d3cd35 kirillDanshin)
o dns-example: allow to set ns from args (df19a97 Azat Khuzhin)
o dns-example: convert to getopt() (32f8592 Azat Khuzhin)
o http-connect: make it win32 compilable (1bf7595 Azat Khuzhin)
o sample/https-client: allow to change path to ca-certificates (fdf713a Azat Khuzhin)
o sample/https-client: check for ERR_remove_thread_state() existence (c4e9d9b Azat Khuzhin)
o sample/https-client: replace ERR_remove_state() by ERR_remove_thread_state() (77ad68a Azat Khuzhin)
o sample/https-client: add -timeout option (4637aa8 Azat Khuzhin)
o sample/https-client: don't try to free uninitialized SSL (f3d7ff5 Azat Khuzhin)
o sample/https-client: graceful exit with freeing memory (to make valgrind happy) (24a1f25 Azat Khuzhin)
o https-client: correctly handle URLs with no path (like "https://host:port") (29a0482 Andrey Skriabin)
o sample/http-connect: don't use assert() to make it work with NDEBUG (6dc71e7 Azat Khuzhin)
o sample/http-connect: made it compatible with C90 (f976d43 Azat Khuzhin)
o sample: add HTTP CONNECT tunnelling example using libevent http layer (1d34498 Azat Khuzhin)
o Update dns-example. (620ff24 Mark Ellzey)
Documentation
o Update README.md (b8ec70c Mark Ellzey)
o Update README.md (80faee9 Mark Ellzey)
o Update README.md (ad4a897 Mark Ellzey)
o Update README.md (a2b2e1e Mark Ellzey)
o Update README.md (0dfa5dc Mark Ellzey)
Code Improvements (evthread)
o evthread: add evthread_get_{lock,condition}_callbacks() helpers (c0b34f6 Azat Khuzhin)
Code Improvements (core)
o util: make @sa const for evutil_socket_connect_() (a8d32c2 Azat Khuzhin)
Code Improvements (http)
o http: assert's that evbuffer_drain() success on connection reset (2185e63 Azat Khuzhin)
o http: introduce evhttp_request_free_() helper (22061ac Azat Khuzhin)
o http: introduce evhttp_is_request_connection_close() helper (6540da3 Azat Khuzhin)
Code Improvements (bufferevents)
o be_sock: bufferevent_socket_set_conn_address(): assert instead of silent no-op (0ab88c2 Azat Khuzhin)
o be_sock: sanity check in bufferevent_socket_set_conn_address() (eedbeff Azat Khuzhin)
o be: replace sockaddr_storage with sockaddr_in6 for conn_address (3889612 Azat Khuzhin)
o be: replace conn_address by full struct instead of pointer (e5615aa Azat Khuzhin)
o bufferevent: move conn_address out from http into bufferevent (8bb3842 Azat Khuzhin)
o be: make @sa const for bufferevent_socket_connect() (dc33c78 Azat Khuzhin)
Cleanups (core)
o Refactoring conditional directives that break parts of statements. (4b41eeb lzmths)
o epoll: introduce PRINT_CHANGES() macro to avoid copy-pasting (a1b142b Azat Khuzhin)
o tab (6e7a580 Greg Hazel)
Cleanups (evbuffers)
o buffer_compat: fix comment -- we have EVBUFFER_EOL_ANY not EOL_STYLE_ANY (575ff67 Azat Khuzhin)
Cleanups (bufferevents)
o be_sock: evutil_getaddrinfo_async_() always return 0 (dbff101 Azat Khuzhin)
o be_sock: drop be_sock_add() macro (useless and debug unfriendly) (fad5fe2 Azat Khuzhin)
o be: introduce bufferevent_generic_adj_existing_timeouts_() (3c1f58f Azat Khuzhin)
o be: add_event: use evutil_timerisset() (a96b73b Azat Khuzhin)
o be_openssl: introduce be_openssl_auto_fd() helper (2a8a711 Azat Khuzhin)
o be_openssl: introduce set_open_callbacks_auto() (510da71 Azat Khuzhin)
Cleanups (http)
o http: make fallback for EVHTTP_CON_READ_ON_WRITE_ERROR more cleaner (d405492 Azat Khuzhin)
o http: coding style issue (365f181 Azat Khuzhin)
Cleanups (evdns)
o evnds: inline TEST_NAME macro to make debuggin easier (0c615f4 Azat Khuzhin)
Portability Fixes
o [#372] check for errno.h (3031617 Mark Ellzey)
o Fixed Unicode issue in error messages. (e8b7895 Mattes D)
o Assume that ke_udata is an integer type on CloudABI. (5602e45 Ed Schouten)
o Add missing include of <netinet/in.h>. (b2c68bc Ed Schouten)
o Include <sys/ioctl.h>, <sys/resource.h> and <sys/wait.h> optionally. (c1404b5 Ed Schouten)
o Test against SO_REUSEADDR (along with _WIN32). (ce1776c Ed Schouten)
o Always define missing TAILQ functions from sys/queue.h (2828bdb Christopher Wiley)
o Don't use BSD u_* types. (fd36647 Ed Schouten)
o Remove BSD-ism: TIMEVAL_TO_TIMESPEC(). (193c7de Ed Schouten)
o be: include all variations of headers for sockaddr_in6 struct (c212291 Azat Khuzhin)
o be: fix sockaddr_in6 type definition for win32 (c42bc6b Azat Khuzhin)
Continious Integration:
o travis: split long lines, and make it cleaner (685a6a1 Azat Khuzhin)
o travis: fix autotools on osx by reinstalling libtool (088ea5e Azat Khuzhin)
o appveyor/autotools: link with openssl by passing LDFLAGS/CFLAGS (6fcfa25 Azat Khuzhin)
o appveyor: image already had openssl installed (4634b85 Azat Khuzhin)
o appveyor: check -DUNICODE -D_UNICODE according to ReleaseChecklist (cmake only) (e9acc44 Azat Khuzhin)
o appveyor: ignore failure of mingw-get (1810857 Azat Khuzhin)
o appveyor: drop shallow_clone, since we use tags for detecting version in cmake (ac90133 Azat Khuzhin)
o appveyor: support cmake & autotools using build matrix (like travis-ci has) (8f95015 Azat Khuzhin)
o travis-ci/osx: relink gcc/g++ instead of clang (481481d Azat Khuzhin)
o travis-ci: enable multi-os mode (osx, linux) (79917e4 Azat Khuzhin)
o travis-ci: increase matrix (--disable-foo) (59649f7 Azat Khuzhin)
o travis-ci: adjust alignment (c8be339 Azat Khuzhin)
o travis: add builds without debug mode into matrix (3e56da2 Azat Khuzhin)
o test: run regress with EVENT_DEBUG_MODE=1 and without (cf2cf2a Azat Khuzhin)
o Update travis config for status updates (37453ab Mark Ellzey)
o Use autotools for appveyor until cmake is fixed. (1cc2e29 Mark Ellzey)
o Fix the link for appveyor OpenSSL installer (WIN32) (107d565 Mark Ellzey)
o Forgot to install OpenSSL for appveyor (26164a5 Joakim Söderberg)
o Add support for appveyor.com windows CI (5f89c37 Joakim Söderberg)
Build Improvements/Fixes:
o evutil: mark ai_find_protocol() static (prototype-less) (5a157c8 Azat Khuzhin)
o cmake/solaris: set CMAKE_REQUIRED_LIBRARIES to fix functions detections (dc95823 Azat Khuzhin)
o cmake/solaris: fix building (link with socket,nsl) (050bfc7 Azat Khuzhin)
o cmake: check for ZLIB_INCLUDE_DIR, since we can have only library without headers (c4dfb93 Azat Khuzhin)
o autotools/win32: fix searching ssl library (671a24f Azat Khuzhin)
o cmake/win32: do not compile regress_thread on -DEVENT__DISABLE_THREAD_SUPPORT=ON (de0c196 Azat Khuzhin)
o cmake/win32: do not compile evthread_win32 on -DEVENT__DISABLE_THREAD_SUPPORT=ON (ecb0ec8 Azat Khuzhin)
o cmake: fix -DEVENT__ENABLE_VERBOSE_DEBUG (typo on -DUSE_DEBUG) (e35f224 Azat Khuzhin)
o cmake: do not use stderr for notifications/version-info (38716c6 Azat Khuzhin)
o autoconf: fix --disable-thread-support build under win32 (bb09535 Azat Khuzhin)
o buffer: don't mix code and declarations (8892f4c Azat Khuzhin)
o Update gitignore file to ignore cscope gen'ed files (0aaa4fb Neeraj Badlani)
o For non GCC/clang on OSX the -Wno-deprecated-declarations may not be valid (b5ca365 Rainer Keller)
o automake: define serial-tests only if automake have this option (61179de Azat Khuzhin)
o test/automake: don't use paralell test harness (since automake 1.12) (44d755e Azat Khuzhin)
o Ignore all pkgconfig generated stuff (ce38993 Azat Khuzhin)
o libevent_core and libevent_extra also deserve a pkgconfig file (b8d7c62 Jan Heylen)
o Ignore verify_tests.bat (win32 version) (0f2de10 Azat Khuzhin)
o cmake: require 3.1 only for win32 to make it work under ubunty precise (87f7238 Azat Khuzhin)
o cmake: require at least 3.1 for target_sources() (c46ead5 Azat Khuzhin)
o cmake: fix adding of compiler flags, and now it will (36588e1 Azat Khuzhin)
o Replace -Wswitch-enum with -Wswitch, and add it into cmake rules too (f29f59e Azat Khuzhin)
o test/regress_ssl: Fix compile problems for win32 (73d0360 Trond Norbye)
o util: fix "%zu" format on TDM-gcc/MinGW-w64 (79b69d8 Azat Khuzhin)
o cmake: don't define EVENT__NEED_DLLIMPORT always (fixes VS2013 static build) (49bd790 Azat Khuzhin)
o Add missing return statement to del_wait_thread so libevent can build. (4f778ab Nick Mathewson)
o cmake: fix building dns-example under win32 (missing getopt) (a1609a8 Azat Khuzhin)
o visibility: align it to make it more readable (bb6b53d Azat Khuzhin)
o cmake: Fix detection of ssize_t/SSIZE_T (7707f6b Azat Khuzhin)
o Ignore more configure stuff (configure.lineno) (8d34302 Azat Khuzhin)
o Fixed issue with cmake version generation (d56efd9 Mark Ellzey)
o Cmake is now officially working. (7f9646d Mark Ellzey)
o More cmake updates, lot's of missing definitions (49a5381 Mark Ellzey)
o CMake syntax fixes fo .in files (6aad23d Mark Ellzey)
o Revert "The Windows socket type is defined as SOCKET." (a264da8 Mark Ellzey)
o CMAKE CMAKE CMAKE CLEANUPS (a9db46a Mark Ellzey)
o Lot's of cmake updates (8b228e2 Mark Ellzey)
o Provide a mechanism for building the library on Windows with different compiler flags. Add a batch file that builds it for the M[DT][d] options and performs a hunt and gather of the different output libraries. (ded8086 billsegall)
o The Windows socket type is defined as SOCKET. (c9e6c3d billsegall)
o autotools: fix getservbyname() detection (959a4c2 Azat Khuzhin)
o Add missing <string.h> for openssl_hostname_validation module (3316a21 Azat Khuzhin)
o make test/regress_ssl.c compile without warnings (9f02a44 Thomas Bernard)
o test/regress_be: drop debug __asm__(int3) to fix arm build (8240379 Azat Khuzhin)
o event_debug_created_threadable_ctx_: fix compilation without debug mode (a068f2e Azat Khuzhin)
o Add a prototype for event_disable_debug_mode() (bfcedee Sebastian Hahn)
o http: eliminate warning about "socklen" in evhttp_connection_connect_() (dfad1a4 Azat Khuzhin)
o Updated gitignore (1dbb55d Mark Ellzey)
o Update bench_httpclient.c (cb96931 Seungmo Koo)
o *fix: bench_httpclient to support win32 (4e9325e zeliard)
o Commented out a WIN32 threading / timing test for now (e84e269 Mark Ellzey)
o Fix mixed declarations and code (forbidden by ISO C90) (0c7f217 Thomas Bernard)
o Fix "function declaration isn’t a prototype" (746d2c5 Thomas Bernard)
o This fixes a bug introduced in 27bd9faf498b91923296cc91643e03ec4055c230 (19ba454 Joakim Söderberg)
o changed strtotimeval signature as per #211 (bdbc823 Xiao Bao Clark)
o Added cmake-generated files to ignore list. (6c12bfe Matyas Dolak)
o Ignore `make dist` generated files (8a2c6c7 Azat Khuzhin)
Debugging
o Debug mode option to error on evthread init AFTER other event calls. (dcfb19a Mark Ellzey)
Changes in version 2.1.5-beta (5 January 2015)
Security Fixes (evbuffers)
o Avoid integer overflow bugs in evbuffer_add() and related functions. See CVE-2014-6272 advisory for more information. (d49bc0e88b81a5812116074dc007f1db0ca1eecd)
New APIs (evconnlistener)
o Provide support for SO_REUSEPORT through LEV_OPT_REUSABLE_PORT (b625361 Maciej Soltysiak)
Bugfixes (core)
o Fix use-after-free error in EV_CLOSURE_EVENT callback (3cc0eac John Ohl)
o Fix race caused by event_active (3c7d6fc vjpai)
Bugfixes (evbuffer)
o Fix evbuffer_peek() with len==-1 and start_at non-NULL. (ba59923)
o Consistently check for failure from evbuffer_pullup() (60f8f72)
o Fix evbuffer_peek() with len==-1 and start_at non-NULL. (fb7e76a)
Bugfixes (windows, IOCP)
o be async: avoid double close() (f133b86 Azat Khuzhin)
Bugfixes (bufferevents)
o Fix issue #127, double free for filterevents that use BEV_OPT_CLOSE_ON_FREE (2c82aa0 John Ohl)
o make bufferevent_getwatermark api more robust (a21e510 ufo2243)
o [Bugfix] fix bufferevent setwatermark suspend_read (b34e4ac ufo2243)
o bufferevent_openssl: reset fd_is_set when setfd with -1 is called (3da84c2 Azat Khuzhin)
o Fix compilation for older OpenSSL versions. (5c7282f Joakim Soderberg)
New APIs (evhttp)
o Add evhttp_connection_set_family() to set addrinfo->family for DNS requests (12c29b0 Azat Khuzhin)
o Implement interface that provides the ability to have an outbound evhttp_connection free itself once all requests have completed (2b9ec4c,10fe4f John Ohl)
New APIs (core)
o Implement new/free for struct evutil_monotonic_timer and export monotonic time functions (f2645f8 Andrea Shepard)
Bugfixes (evdns)
o Load hosts file on Windows. (a0b247c Vilmos Nebehaj)
o Don't truncate hosts file path on Windows. (d0dc861 Vilmos Nebehaj)
o Fix a crash in evdns related to shutting down evdns (9f39c88,e8fe749)
o evdns: avoid read-after-free in evdns_request_timeout_callback() (61262a0 Azat Khuzhin)
o Correctly handle allocation failures in evdns_getaddrinfo (6a53d15)
o evdns: fix EVDNS_BASE_DISABLE_WHEN_INACTIVE in case retransmit/retry (74d0eee Azat Khuzhin)
o evdns: add retry/reissue tests for EVDNS_BASE_DISABLE_WHEN_INACTIVE (3ca9d43 Azat Khuzhin)
o evdns: fail ns after we are failing/retrasmitting request (97c750d Azat Khuzhin)
Bugfixes (evhttp)
o http: reset connection before installing retry timer (fix http retries handling) (bc79cc5 Azat Khuzhin)
Testing
o regress_dns: fix leaks in getaddrinfo_async{,_cancel_stress} tests (2fdc5f2 Azat Khuzhin)
o test: add family argument for http_connection_test_() (177b8a7 Azat Khuzhin)
o test: add regress for evhttp_connection_set_family() with AF_INET and AF_UNSPEC (42aefeb Azat Khuzhin)
o test/http: add regress test for set family to AF_INET6 (3fbf3cc Azat Khuzhin)
o Update to a more recent tinytest_macros. (8da5a18)
o test/regress: add simplestsignal: to track reorder bugs separately (b897bef Azat Khuzhin)
o test/evbuffer_peek: add regress in case we have first buffer greater (e2d139d Azat Khuzhin)
o More evbuffer_peek() test cases (154006a)
o use correct tt macro for pointer compare (08c88ea)
o regress_buffer: fix 'memcmp' compare size (79800df Maks Naumov)
o Fix a use-after-free in unit tests. CID 752027 (3739057)
o Fix a dead-code warning in unit tests. CID 1193548 (c119f24)
o Use evutil_weakrand() in unit tests. (a677b72, 364c110)
o Use a more precise calculation for max in time-ratelim.c (ca5b5c7)
o Make a buffer larger in the tests to avoid a scary evbuffer_copyout_from() (fb57b8b)
o Fix several memory leaks in the unit tests. (89c1a3b)
o Add test for evhttp_connection_free_on_completion (b0e9924 John Ohl)
o Fix annoying heisenbug in test-time.c (cb73704)
Sample code
o Make http-server.c output into good html5 (6d72bdc)
o Use FindClose for handle from FindFirstFile in http-server.c (6466e88)
o https-client: add -retries argument, for connection retries (d9da844 Azat Khuzhin)
Bugfixes (build)
o Add missing headerfile for cmake (15d90cc Trond Norbye)
o ignore one more test binary (b6593aa Michael Richardson)
o ignore config.cache/test-driver files (c83f333 Mike Frysinger)
o add a --disable-samples configure flag (0c492b3 Mike Frysinger)
o Add a few files created by "make verify" to .gitignore. (1a8295a Pierre Phaneuf)
o updates in cmake build (27bd9fa Sergey Nikulov)
o Fix cmake error when the Module path has more than one entry. (befbd13 Acer Yang)
o Fix CMake shared library build (e69d910 Nobuaki Sukegawa)
o Fix warnings when compiling with clang 3.5 (f5b4765 John Ohl)
o Fix mixed declarations and code (forbidden by ISO C90) (8afbdbc Thomas Bernard)
Bugfixes (miscellaneous)
o tree.h: drop duplicated content of tree.h (6193187 Azat Khuzhin)
o evdns: disable probing with EVDNS_BASE_DISABLE_WHEN_INACTIVE (610410b,ad0493e,fea86a6,d83b337,5ca9e97 Azat Khuzhin)
o [Bugfix] fix grammer error (3a4d249 ufo2243)
o Change return type of evutil_load_windows_system_library_ to HMODULE (f691389)
o Fix a c90 warning (76643dd)
o Fix a typo in a doxygen comment. Reported by 亦得. (be1aeff)
o remove trailing comma from enum (b361b8a Jean-Philippe Ouellet)
Bugfixes (FreeBSD)
o Handle ENOTCAPABLE from FreeBSD - this is returned if an event in the changelist is for an FD that has been closed. (6fd7394 Adrian Chadd)
Changes in version 2.1.4-alpha (21 Mar 2014)
Libevent 2.1.4-alpha adds a number of new miscellaneous APIs to make
Libevent more useful, including support for early close detection with
epoll via EPOLLRDHUP, triggering bufferevent callbacks, adding more
evhttp callbacks, and more. There are also numerous bugfixes, including
a number for finalize-related issues from 2.1.3-alpha; and an
alternative (non-primary!) cmake-based build mechanism.
New APIs (core)
o Added event_base_get_num_events() (0fa107d Mobai Zhang)
o New event_base_active_by_fd API (865a142 Greg Hazel, 5c9da9a, 87fa2b0)
o Add event_base_active_by_signal by analogy (4865943)
o Add access to max event count stats (5173bef, efbd3dc, 26230a2
Andrew Sweeney)
o Implemented EV_CLOSED event for epoll backend
(EPOLLRDHUP). (b1b69ac Diego Giagio, 53d2793, 43ffcf6, dfe1e52
Marcin Juszkiewicz, ff26633 Joakim Soderberg, 3908a5e)
New APIs (evutil_secure_rng)
o Add evutil_secure_rng_set_urandom_device_file (2bbb5d7)
New APIs (bufferevents)
o Add function to fetch underlying ratelimit cfg (4b3d5af Mark Ellzey)
o Pass and return const for bufferevent_get_token_bucket_cfg (1c77fbb
Mark Ellzey)
o Add watermark introspection (4ce242b Ondřej Kuzník)
o Add an option to trigger bufferevent I/O callbacks (61ee18b Ondřej Kuzník)
o Add an option to trigger bufferevent event callbacks (a7384c7
Ondřej Kuzník)
o Clarifications in response to merge req. comments (bd41947 Ondřej
Kuzník)
o Minor optimizations on bufferevent_trigger options (a3172a4)
New APIs (evhttp)
o Add evhttp_connection_get_server(). (a7f82a3 Maxime Henrion)
o add a http default content type option (5a5acd9 Nicolas Martyanoff)
o http: implement new evhttp_connection_get_addr() api. (0c7f040 Azat
Khuzhin)
o Add a variant of evhttp_send_reply_chunk() with a callback on
evhttp_write_buffer() (8d8decf Julien BLACHE)
o Allow registering callback for parsing HTTP headers (b0bd7fe Balint Reczey)
o Provide on request complete callback facility (b083ca0 Andrew Sweeney)
o evhttp_request_set_on_complete_cb to be more specific about what
the function actually does and usage (da86dda Andrew Sweeney)
o Update unit test to make sure that the callback happens after the
output data is written (b85f398 Andrew Sweeney)
Features (evdns)
o bug fix for issues #293 evdns_base_load_hosts doesn't remove
outdated addresses (954d2f9, f03d353, 45eba6f Kuldeep Gupta)
Features: (cmake build support)
o Initial CMake commit. (e415196 Joakim Soderberg)
o Add all tests and benchmarks to CMake project. (e9fc014 Joakim Soderberg)
o More work on adding tests to CMake project (99c1dc3 Joakim Soderberg)
o Generate a dummy evconfig-private.h so things build
properly. (ce14def Joakim Soderberg)
o Link libm on unix platforms. (58fcd42 Joakim Soderberg)
o Added some GCC specific options. (19222e5 Joakim Soderberg)
o Use evutil_closesocket instead. (dbf2b51 Joakim Soderberg)
o Add copyright and licensing files for CMake modules. (c259d53
Joakim Soderberg)
o Only include WIN32 getopt where it is used. (9bbce0b Joakim Soderberg)
o Fix bench_cascade program on Windows. (78da644 Joakim Soderberg)
o Don't segfault on no found event backend. (8f2af50 Joakim Soderberg)
o Only test the event backends available on the system. (7ea4159
Joakim Soderberg)
o Added a "make verify" target. (e053c4f Joakim Soderberg)
o Fix the make "verify" target on Windows. (67e5d74 Joakim Soderberg)
o Get rid of deprecation warnings for OpenSSL on OSX 10.7+ (69c3516
Joakim Söderberg)
o Fix kqueue support. (a831f2f Joakim Söderberg)
o Added a test for testing if kqueue works with pipes. (2799b35
Joakim Söderberg)
o Change the BSD license from 4 to 3-clause. (86df3ed Joakim Soderberg)
o Minimum required python version is 2.4. (968e97b Joakim Soderberg)
o Get rid of unknown pragma warnings. (0ef1d04 Joakim Soderberg)
o Add a "make verify_coverage" target generation coverage
info. (f2483f8 Joakim Soderberg)
o Fix the "make verify" target on NetBSD (4ac086a Joakim Soderberg)
o Only look for ZLib when it is used (if tests are
included). (f780593 Joakim Soderberg)
o Added EVENT__ENABLE_GCC_WARNINGS, turns all warnings into
errors. (dd413bd Joakim Soderberg)
o Add CMake config and install targets. (f3446ed Joakim Soderberg)
o Fix typo (4b754df Joakim Soderberg)
o Some work on making it possible to simply do add_subdirectory() on
the project. (49ab363 Joakim Soderberg)
o Set USE_DEBUG=1 on EVENT__ENABLE_VERBOSE_DEBUG (fd42e70 Joakim Soderberg)
o Fix so that old nmake project still builds. (24d6466 Joakim
Soderberg)
o Rename README to README.md and use markdown to format. (d2bc39a
Joakim Soderberg)
o Update README with CMake build instructions. (604b8cc Joakim Soderberg)
o Clean up the README some. (8d4cb35 JoakimSoderberg)
o Forgotten headers for old nmake project compatability. (8697b99
Joakim Soderberg)
o Change all uses of WIN32 to _WIN32 (4e14395 Joakim Söderberg)
o Fix include bug. (2024467 Joakim Söderberg)
o Check if we're on OSX before disabling deprecation in le-proxy
(8b40a5b Joakim Söderberg)
o Fix broken autotools build. (ae1bd82 Joakim Söderberg)
o Disclaimerize cmake a little in the README (d03b5bf)
o Fix CMake compile when OpenSSL is disabled. (e423d42 Joakim
Söderberg)
o CMake: Get rid of python not found warning when regress tests
turned off. (d38d798 Joakim Söderberg)
o Fix https-client compilation on Windows. (d7be788 Joakim Soderberg)
o Guard against EVENT_NOWIN32 being set during testing. (f1715b4
Joakim Soderberg)
o Check for OSX when checking for clang. (e212c54 Joakim Soderberg)
o Added a Travis-CI configuration file. (8c0f0a9 Joakim Soderberg)
o Added -Qunused-arguments for clang on macosx (ed99d92 Trond Norbye)
o Rename event_extras to event_extra (a0dd5df Trond Norbye)
o Add option to build shared library (4545fa9 Trond Norbye)
o Add -Qunused-arguments for clang on macos (b56611d Trond Norbye)
o Add cmake-related files to .gitignore (e061321 Trond Norbye)
o Export event_extra not event_extras. (2b41bcf Joakim Söderberg)
Bugfixes (core)
o If evsel->del() fails, don't leave the evmap in an inconsistent
state (9b5a527 Maxime Henrion)
o Move event_debug_note_teardown_ before mm_free. (69b5c64)
o Check CLOCK_MONOTONIC_* at runtime if needed. (911abf3)
o Fix reinit of fds with EV_WRITE but not EV_READ. (ebfd8a8 maksqwe)
o Tweaked callbacks to prevent race condition
(https://github.com/libevent/libevent/issues/104) (40830f1, 2ea15ed
John Ohl)
o Move assert(ev) to before we use ev in EV_CLOSURE_EVENT_FINALIZE
case (9805972)
Bugfixes (evhttp)
o Fix a double close() bug in evhttp when the underlying bufferevent uses
BEV_OPT_CLOSE_ON_FREE. (31db8a0 Maxime Henrion)
o Fix an unlikely but possible error case for http connections (f22049e)
o Avoid racy bufferevent activation (5eb1788 Nate Rosenblum)
Bugfixes on 2.0 (Windows)
o Use windows vsnprintf fixup logic on all windows environments (e826f19)
o libevent/win32_dealloc() : fix sizeof(pointer) vs sizeof(*pointer)
(b8f5980 Frank Denis)
Bugfixes (evutil_secure_rng)
o When we seed from /proc/sys/kernel/random/uuid, count it as success
(e35b540)
o We should return after arc4random_buf() (1ea1f26 Makoto Kato)
o Avoid other RNG initialization FS reads when urandom file is
specified (9695e9c)
o Really remove RNG seeds from the stack (f5ced88)
o Fix another arc4random_buf-related warning (e64a2b0)
Bugfixes (bufferevents)
o Initialize async bufferevent timeout CBs unconditionally (af9b2a7)
Bugfixes (evdns)
o Checking request nameserver for NULL, before using it. (5c710c0
Belobrov Andrey)
o Fix SEGFAULT after evdns_base_resume if no nameservers
installed. (14971a8 Azat Khuzhin)
o Actually use the log facility for reporting evdns problems. (e1766a1)
o Fix SEGFAULT after evdns_base_resume if no nameservers
installed. (f8d7df8 Azat Khuzhin)
o fix for ServFail from RIPE Atlas release (62f596b Antony Antony)
Bugfixes (compilation)
o Fix test compilation with nmake: add the gdi.lib dependency (5ba8ab7)
o Whoops. It is gdi.lib, not gdi32.lib. (github issue #61) (8ab612e)
o Don't use return since return type is void and build error occurs
using clang (838161d Makoto Kato)
o Use void casts to suppress some "unchecked return value" warns (7080d55)
o rpcgen: Generate regress.gen.[c,h] in build rather than src dir
(243386c Ross Lagerwall)
o Fix a compiler warning when checking for arc4random_buf linker
breakage. (5cb3865)
o Fix 'make distcheck' by adding regress.gen.[ch] to DISTCLEANFILES
(239d834)
o Fix a c90 warning (c207682)
o Fix consts in WIN32-Code/getopt*.[ch] (57abb35)
Bugfixes (locks, synchronization)
o Missed lock acquire/release in event_base_cancel_single_callback_()
(d3d999a Azat Khuzhin)
o Fix locking in bufferevent_get_options_(). (dbc9cd4 Maxime Henrion)
Bugfixes (leaks)
o Avoid leaking segment mappings when offset is not a page multiple (d409514)
Testing
o Add tests for evdns_base_resume(). (1cd9ff5 Azat Khuzhin)
o Fix dns/leak_resume_send_err test. (7e876df Azat Khuzhin)
o Add checks for evhttp_connection_get_server() in unit
tests. (fbc323b Maxime Henrion)
o Fix a (failure-only) null dereference in the unit tests (1104d0b)
o Fix a logic error in test_evbuffer_freeze (7765884)
o Add missing check to test_evbuffer_file_segment_add_cleanup_cb (eba4506)
o Fix some crash-on-fail cases in DNS regression tests (87cd6f0)
o DNS tests: add a missing check (f314900)
o Finalize tests: add a missing check (82b6956)
o test_evutil_rtrim: add another missing check. (e193c95)
o regress_main: logging all if env EVENT_DEBUG_LOGGING_ALL isset
(611e28b Azat Khuzhin)
o regress_http: add tests for evhttp_connection_get_addr() (4dd500c
Azat Khuzhin)
o Update to the latest version of tinytest (7a80476)
o Heap-allocate zlib data structure in regress_zlib tests (4947c18)
Performance tweaks (core)
o Avoid redundant syscall to make a nonblocking socket nonblocking
(42c03da Maxime Henrion)
o Avoid redundant syscall if making a socket cloexec twice (1f29b18)
o Avoid redundant invocations of init_extension_functions for IOCP (3b77d62)
Documentation
o Document that arc4random is not a great cryptographic PRNG. (6e49696)
o Small doxygen tweaks (6e67b51)
o Try another doxygen tweak (ccf432b)
o Clarify event_base_loop exit conditions (031a803)
o Fix a typo (be7bf2c Ondřej Kuzník)
o Document deferred eventcb behaviour (13a9a02 Ondřej Kuzník)
o Typo fixes from Linus Nordberg (cec62cb, 8cd695b)
o Fix duplicate paragraph in evbuffer_ptr documentation (58408ee)
Code Improvements (coverity)
o Fix a pile of coverity warnings in the unit tests (867f401)
o Fix coverity warnings in benchmark tools. (ff7f739)
o Whoops; fix compilation in bench.c (544cf88)
o Remove spurious checks in evrpc.c error cases (coverity) (991b362)
o Fix a couple of compilation warnings in regress_http.c (860767e)
o Fix even more coverity warnings. (d240328)
o Stop checking for inet_aton; we don't use it. (f665d5c)
o Add an include to evrpc-internal to fix openbsd compilation warning
(5e161c6)
Cleanups
o Remove an unreachable return statement in minheap-internal.h (e639a9e)
o Refactor evmap_{io,signal}_active_() to tolerate bad inputs (974c60e)
o Fix needless bufferevent includes in evdns.c (254c04e)
o Fix a couple of "#ifdef WIN32" instances (88ecda3)
o Remove unneeded declaration in bufferevent-internal.h (4c8ebcd)
Sample code
o le-proxy: Fail more gracefully if opening listener fails (44b2491)
o http-server: drop uri_root from base_url in http-server. (6171e1c Azat Khuzhin)
o https-client: POST supported, args supported (c5887f7 Alexey Ozeritsky)
o https-client: code cleanup (29af65e Alexey Ozeritsky)
o https-client: Small tweaks to https-client.c (90786eb)
o https-client: Set hostname for SNI extension (by f69m) (d1976f8)
o https-client: add a cast to https-client.c (462e6b6)
Changes in version 2.1.3-alpha (1 May 2013)
Libevent 2.1.3-alpha fixes various bugs, adds new unit tests, and cleans
up the code in a couple of places. It has a new callback in evhttp for
reporting errors during a request, a new feature for allowing evdns to
not keep the event_base looping when there are no requests inflight, and
example code for writing an https client.
Libevent 2.1.3-alpha also has an important new (experimental) event
finalization feature to allow safe event teardown in multithreaded
programs. This ought to fix the longstanding bug with deadlocks in
multithreaded use of SSL-based bufferevents that some people have been
experiencing since Libevent 2.0.
Core (event finalization)
o Implement event_finalize() and related functions to avoid certain
deadlocks (8eedeab)
o Use finalization feature so bufferevents can avoid deadlocks (02fbf68)
o Always run pending finalizers when event_base_free() is called (e9ebef8)
o Remove bufferevent_del_generic_timeout_cbs as now unused (4ea4c6a)
o More documentation for finalization feature (a800b91)
o Make the event_finalize* functions return an error code (5d11f4f)
o Mark the finalize stuff as experiemental in case it needs to
change (23e2e29)
Evdns
o evdns: New flag to make evdns not prevent the event loop from
exiting (6b7fa62 Azat Khuzhin)
Bugfixes (Core)
o Make event_remove_timer behave correctly with persistent timers (5623e80)
o Unit test for event_remove_timer with EV_PERSIST. (96150dd)
o Double-check next timeout when adding events (9443868 Nate Rosenblum)
o event_base_update_cache_time should be a no-op if the loop isn't
running (5e6fa2a)
Bugfixes (evhttp, crash fix, from 2.0)
o fix #73 and fix http_connection_fail_test to catch it (b618204 Greg Hazel)
Bugfixes (compilation and portability, from 2.0)
o Fix compilation with WIN32_HAVE_CONDITION_VARIABLES enabled (7e45739)
o Fix missing AC_PROG_SED on older Autoconfs (9ab2b3f Tay Ray Chuan)
o Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
(74d4c44 Kevin Bowling)
o Use AC_CONFIG_HEADERS in place of AM_CONFIG_HEADERS for autmake
1.13 compat (817ea36)
o Rename configure.in to configure.ac to appease newer autoconfs (0c79787)
o Avoid using top_srcdir in TESTS: new automakes do not like this (a55514e)
Bugfixes (resource leaks/lock errors on error, from 2.0)
o Avoid leaking fds on evconnlistener with no callback set (69db261)
o Avoid double-close on getsockname error in evutil_ersatz_socketpair
(0a822a6)
o Fix a locking error in bufferevent_socket_get_dns_error. (0a5eb2e)
Documentation Fixes (from 2.0)
o Fix a mistake in evbuffer_remove() arguments in example http server code
(c322c20 Gyepi Sam)
o Fix a typo in a comment in buffer.h. Spotted by Alt_F4 (773b0a5)
Documentation Fixes
o minor documentation typos (809586a Patrick Pelletier)
o Fix cut-and-paste err in whatsnew-2.1 (49905ac)
o Fix comment to refer to sample/include.am correctly (9e8cdf3 Sebastian
Hahn)
o Fix typo : Dispatching instead of Dispaching (0c2bacc Volker Lendecke)
o fix some hinky indentation in evhttp_make_request (80e220e Patrick
Pelletier)
o "buffer" spelling (a452811 Patrick Pelletier)
o Specify return behavior in header for evbuffer_pullup() in corner case
(cf8d1cd Dan Petro)
o Clarify an important point about event_base_foreach_event() (920a5e6)
Compilation Fixes/Tool Support
o avoid valgrind false positive by zeroing epoll_event (1258614 Patrick
Pelletier)
o Fix harmless clang enum warning (b452a43 Sebastian Hahn)
o remove all exes on "make clean", not just regress.exe (974bfa0 Patrick
Pelletier)
o Make --disable-libevent-regress work again (787fd74)
o Do not build strlcpy.c when it will have no code. (4914620)
Portability Fixes
o When EWOULDBLOCK is not EAGAIN, treat it as equivalent to it (bf7a0ff)
o Preliminary changes for Minix3. (0dda56a Nicholas Heath)
o Use AC_CONFIG_HEADERS in place of AM_CONFIG_HEADERS for autmake 1.13
compat (bf278b)
o Avoid using $(top_srcdir) in TESTS. (2863c83)
o build test/test-script.sh on systems with a less-featureful $< (f935e21)
o Implement EVUTIL_ERR_IS_EAGAIN on windows. (42aaf4d)
Evhttp changes:
o Fix ipv6 support for http. When URL contain domain, not IP
address. (71e709c Azat Khuzhin)
o uri decode: fix for warning "use of uninitialised value" (64b6ece Azat
Khuzhin)
o uri decode: changed the test for the existence of the next character
(e1903e3 Azat Khuzhin)
o Move prototype of evhttp_decode_uri_internal() to http-internal.h
(de8101a Azat Khuzhin)
o Test: decoding just part of string with evhttp_decode_uri_internal()
(1367653 Azat Khuzhin)
o Add new error_cb for actual reporting of HTTP request errors. (7b07719
Azat Khuzhin)
o Add test for EVREQ_HTTP_REQUEST_CANCEL into http_cancel_test() (862c217
Azat Khuzhin)
o Drop extra header http_struct.h from regress_http.c (54cc800 Azat Khuzhin)
Testing
o Add regress test ipv6_for_domain. (9ec88bd Azat Khuzhin)
o Add an environment variable (EVENT_DEBUG_MODE) to run unit tests in debug
mode (2fad0f3)
o Add a test with an active_later event at event_base_free time. (1c3147f)
o Make all tests pass under EVENT_DEBUG_MODE=1 (b1b054f)
o Add some verbose notes to bufferevent unit tests (9d893c9)
o New test for active_later->active transition on event_active (a153874)
o New tests for event_base_foreach_event() (0b096ef)
o Unit tests for event_base_gettimeofday_cached() and
event_base_update_cache_time() (30ea291)
o A test for event_get_assignment() (f09629e)
o More unit tests for initializing common timeouts. (d596739)
o Fix a bug in the new main/event_foreach test (702c9aa)
Windows:
o use FormatMessage for winsock errors (0c6ec5d, 2078e9b, 4ccdd53, c9ad3af
Patrick Pelletier)
o a program to print out the error strings for winsock errors (7296512
Patrick Pelletier)
o Fix a warning introduced in 0c6ec5d8 (eeb700c)
o Fix another warning introduced in 0c6ec5d8 (ed26561)
Examples (http)
o Add sample/https-client.c, an example of stacking evhttp as a client on
top of bufferevent_ssl. (be46c99 Catalin Patulea)
o use ${OPENSSL_LIBS} instead of -lssl -lcrypto (bf31fa5 Patrick Pelletier)
o https-client was putting newlines at 256-byte boundaries (42d7441 Patrick
Pelletier)
o better handling of OpenSSL errors (5754d96 Patrick Pelletier)
o use Debian's default root certificate location (aacd674 Patrick Pelletier)
o use iSECPartners code to validate hostname in certificate (64d9f16
Patrick Pelletier)
o avoid sign mismatch warning in openssl_hostname_validation.c (6021cb5
Patrick Pelletier)
o pull in wildcard matching code from cURL (4db9da6 Patrick Pelletier)
o Another tweak to https-client.c (95acdaa)
o Remove http_struct.h usage in sample/https-client.c (8a90a85)
Changes in version 2.1.2-alpha (18 Nov 2012)
Libevent 2.1.2-alpha includes more portable for monotonic timers,
refactors much of Libevent's internal and external infrastructure,
closes some longstanding gaps in the interface, makde other
improvements. Ths log below tries to organize features by rough area of
effect. It omits a few commits which were pure bugfixes on other commits
listed below. For more detail, see the git changelogs. For more
insight, see the "whatsnew-2.1.txt" document included in the Libevent
2.1.2-alpha distribution.
Libevent 2.1.2-alpha also includes all changes made in 2.0.19-stable
through 2.0.21-stable inclusive.
Performance (core):
o Replace pipe-based notification with EVFILT_USER where possible. This
should make multithreaded programs on OSX and *BSD alert the main thread a
little faster. (53a07fe)
o Make th_base_lock nonrecursive. (9cd5acb)
New/Changed API Functions:
o New event_get_priority() function to return an event's priority (f90e255)
o Add a bufferevent_get_priority() function (bd39554)
o Add an event_base_loopcontinue() to tell Libevent to rescan for more
events right away (7d6aa5e)
o Add a new callback to get called on evbuffer_file_segment free
(e9f8feb yangacer, 64051b9)
o Expose event_base_foreach_event() as a public API. (84fd6d7 Roman
Puls, 232055e, ffe1643)
o Add an event_remove_timer() to remove timer on an event without
deleting it (e3b2e08)
o Make bufferevent_set_timeouts(bev, NULL, NULL) have plausible
semantics (9dee36b)
o Rename event_enable_lock_debuging() to ..._debugging(). (The old name
should still work.) (07e132e)
o Add missing implementation for event_enable_debug_logging (3b3e21d)
PORTABLE MONOTONIC TIMERS:
Libevent 2.1.2 includes internal support for monotonic timers on
(nearly) all supported platforms, including Windows, and OSX. Libevent
applications should now be more resilient to jumps forwards or backwards
in the system clock. Also, on Linux systems with epoll, we now
optionally support microsecond-level timeouts (whereas epoll only
supports millisecond-precision timeouts).
o Use mach_absolute_time() for monotonic clock support on OSX. (b8fd6f9)
o Do not track use_monotonic field when is no monotonic clock (cb653a0)
o EVENT_BASE_FLAG_PRECISE_TIMER indicates we want fine timer precision
(ddd69d3)
o On Linux, use CLOCK_MONOTONIC_COARSE by default (55780a7)
o Implement a GetTickCount-based monotonic timer for Windows (d5e1d5a)
o Refactor monotonic timer handling into a new type and set of
functions; add a gettimeofday-based ratcheting implementation (f5e4eb0)
o Add EVENT_PRECISE_TIMER environment var for selecting precise-but-slow
timer (a2598ec)
o Implement fast/precise monotonic clocks on Windows (2c47045)
o Simple unit tests for monotonic timers (630f077)
o Improve the monotonic-time unit test: make it check the step size (7428c78)
o When PRECISE_TIMERS is set with epoll, use timerfd for microsecond
precision (26c7582)
o Split out time-related evutil functions into a new evutil_time.c (c419485)
o Split out time-related prototypes into time-internal.h (71bca50)
o Add evutil_time.obj to Makefile.nmake (0ba0683)
o Avoid giving a spurious warning when timerfd support is unavailable
(1aaf9f0 Dave Hart)
o Make test_evutil_monotonic a little more tolerant (def3b83)
o Avoid unused-var warning on systems with clock_gettime but without
CLOCK_MONOTONIC_COARSE (9be5468)
EVENT_BASE_ONCE LEAKS:
If a callback added by event_base_once() is never invoked, Libevent no
longer leaks internal memory.
o Free dangling event_once objects on event_base_free() (c17dd59)
o Add a unit test in which an event is created with event_base_once()
but never fires (4343edf)
TESTING SUPPORT, FIXES AND IMPROVEMENTS:
Libevent now disables by default its unit tests that would touch the
network, or that tend to fail on heavily-loaded systems. To re-enable
them, invoke the ./test/regress program with the @all alias.
o Simplify test.sh code significantly. (9b856fd Ross Lagerwall)
o Make all tests that hit the network disabled by default (f2cea87)
o Avoid a resource leak on error in http client benchmark (ea92fba)
o Update to latest tinytest (911b4f0349377) (ef7c4f7)
o Avoid (unlikely) overflow in bench_httpclient.c (5671033)
o Shave 700 msec off the persistent_timeout_jump test (21205b8)
o Check return value of write() in regress.c (c8009d2)
o Make load-dependent monotonic timer tests off-by-default (2b6fe8b)
o Add deferred_cb_skew to list of timing-dependent tests (34c8f31)
o Avoid test -e; older shs don't have one. (f1bd938)
o Fix renegotiation test to work around openssl 1.0.1 bug (c2f3086)
o Fix a couple of compile warnings in the unit tests (5a9a014)
MISC:
o Change evutil_weakrand_() to avoid platform random() (e86af4b Nicholas
Marriott, 3aa4415)
INFRASTRUCTURE (Active-later events):
As a simplification and optimization to Libevent's "deferred callback"
logic (introduced in 2.0 to avoid callback recursion), Libevent now
treats all of its deferrable callback types using the same logic it uses
for active events. Now deferred events no longer cause priority
inversion, no longer require special code to cancel them, and so on.
o Refactor the callback part of an event into its own event_callback
type (cba59e5)
o Add "active later" event_callbacks to supersede deferred (745a63d)
o event_base_assert_ok: check value of event_active_count for
correctness (fec8bae)
o Replace deferred_cbs with event_callback-based implementation. (ae2b84b)
o Replace more deferred_cb names with event_callback (a4079aa)
o Give event_base_process_active a single exit path (581b5be)
o Restore our priority-inversion-prevention code with deferreds (c0e425a)
o Refactor event_persist_closure: raise and extract some common logic
(bec22b4)
o Remove the unused bits from EVLIST_ALL (9889a3d)
||||||| merged common ancestors
Changes in version 2.0.22-stable (?? Dec 2013)
(As of 3b77d62829c4393bda6f9105a5d3b73b48a64b71.)
BUGFIXES (evhttp)
o fix #73 and fix http_connection_fail_test to catch it (crash fix) (b618204 Greg Hazel)
o Avoid racy bufferevent activation (5eb1788 Nate Rosenblum)
BUGFIXES (compilation and portability)
o Fix compilation with WIN32_HAVE_CONDITION_VARIABLES enabled (7e45739)
o Fix missing AC_PROG_SED on older Autoconfs (9ab2b3f Tay Ray Chuan)
o Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5) (74d4c44 Kevin Bowling)
o Use AC_CONFIG_HEADERS in place of AM_CONFIG_HEADERS for autmake 1.13 compat (817ea36)
o Rename configure.in to configure.ac to appease newer autoconfs (0c79787)
o Avoid using top_srcdir in TESTS: new automakes do not like this (a55514e)
o Use windows vsnprintf fixup logic on all windows environments (e826f19)
o Fix a compiler warning when checking for arc4random_buf linker breakage. (5cb3865)
o Fix another arc4random_buf-related warning (e64a2b0)
BUGFIXES (resource leaks/lock errors on error)
o Avoid leaking fds on evconnlistener with no callback set (69db261)
o Avoid double-close on getsockname error in evutil_ersatz_socketpair (0a822a6)
o Fix a locking error in bufferevent_socket_get_dns_error. (0a5eb2e)
o libevent/win32_dealloc() : fix sizeof(pointer) vs sizeof(*pointer) (b8f5980 Frank Denis)
BUGFIXES (miscellaneous)
o Avoid other RNG initialization FS reads when urandom file is specified (9695e9c, bb52471)
o Avoid redundant invocations of init_extension_functions for IOCP (3b77d62)
BUFGIXES (evdns)
o Checking request nameserver for NULL, before using it. (5c710c0 Belobrov Andrey)
o Fix SEGFAULT after evdns_base_resume if no nameservers installed. (f8d7df8 Azat Khuzhin)
BUGFIXES (evutil_secure_random)
o When we seed from /proc/sys/kernel/random/uuid, count it as success (e35b540)
o Document that arc4random is not a great cryptographic PRNG. (6e49696)
o Add evutil_secure_rng_set_urandom_device_file (2bbb5d7)
o Really remove RNG seeds from the stack (f5ced88)
DOCUMENTATION FIXES
o Fix a mistake in evbuffer_remove() arguments in example http server code (c322c20 Gyepi Sam)
o Fix a typo in a comment in buffer.h. Spotted by Alt_F4 (773b0a5)
Changes in version 2.0.21-stable (18 Nov 2012)
BUGFIXES:
o ssl: Don't discard SSL read event when timeout and read come close together (576b29f)
o ssl: Stop looping in "consider_reading" if reading is suspended. (f719b8a Joachim Bauch)
o ssl: No need to reserve space if reading is suspended. (1acf2eb Joachim Bauch)
o dns: Avoid a memory-leak on OOM in evdns. (73e85dd, f2bff75 George Danchev)
o build: Use python2 rather than python (0eb0109 Ross Lagerwall)
o build: Compile without warnings on mingw64 (94866c2)
o build: Fix compilation on mingw64 with -DUSE_DEBUG (62bd2c4)
o build: Make rpcgen_wrapper.sh work on systems without a "python2" binary (f3009e4)
o iocp: Close IOCP listener socket on free when LEV_OPT_CLOSE_ON_FREE is set (cb853ea Juan Pablo Fernandez)
o core: Avoid crash when event_pending() called with no event_base set on event (e3cccf3)
o misc: remove stray 'x' so print_err will compile when uncommented (ac35650 Patrick Pelletier)
o tests: Fix renegotiation test to work around openssl 1.0.1 bug (c2f3086)
o tests: Warn when openssl version in unit test mismatches compiled version. (ac009f9)
Changes in version 2.0.20-stable (23 Aug 2012)
BUGFIXES:
o core: Make event_pending() threadsafe. (be7a95c Simon Liu)
o win32: avoid crash when waiting forever on zero fds. (160e58b)
o evhttp: Fix a memory leak on error in evhttp_uriencode (11c8b31)
o evbuffer: Avoid possible needless call to writev. Found by coverity. (6a4ec5c)
o evdns: memset sockaddr_in before using it. Found by coverity. (a1a0e67)
o evhttp: Check more setsockopt return values when binding sockets. Found by coverity (a0912e3)
o evdns: Avoid segfault on weird timeout during name lookup. (dc32077 Greg Hazel)
o bufferevent_ssl: Correctly invoke callbacks when a SSL bufferevent reads some and then blocks. (606ac43)
PORTABILITY FIXES:
o check for arc4random_buf at runtime, on OS X (bff5f94 Greg Hazel)
o Correctly check for arc4random_buf (fcec3e8 Sebastian Hahn)
o Add explicit AC_PROG_SED to configure.in so all autoconfs will expose $(SED) (ca80ea6)
BUILD FIXES:
o Add GCC annotations so that the vsprintf functions get checked properly (117e327)
o Fix an unused variable warning on *BSD. (c0720c1)
UNIT TEST FIXES:
o Fix a couple of memory leaks (found with Valgrind). (3b2529a Ross Lagerwall)
o Remove deadcode in http regression tests. Found by coverity. (5553346)
o Fix possible uninitialized read in dns regression tests. Found by coverity. (2259777)
o Set umask before calling mkstemp in unit tests. Found by coverity (f1ce15d)
o Fix various check-after-dereference issues in unit tests: found by coverity (4f3732d)
o Fix resource leaks in the unit tests; found by coverity (270f279)
o Add some missing null checks to unit tests; found by coverity (f021c3d)
o Avoid more crashes/bad calls in unit tests; found by coverity (3cde5bf)
o Remove unused variable; spotted by coverity (6355b2a)
o Add checks to various return values in unit tests. Found by coverity (b9e7329)
o Move assignment outside tt_assert in ssl unit tests. Appeases coverity. (a2006c0)
Changes in version 2.0.19-stable (3 May 2012)
BUGFIXES (CORE):
o Refactor event_persist_closure: raise and extract some common logic (bec22b4)
o If time has jumped so we'd reschedule a periodic event in the past, schedule it for the future instead (dfd808c)
o If a higher-priority event becomes active, don't continue running events of the current priority. (2bfda40)
BUGFIXES (SSL):
o Fixed potential double-readcb execution with openssl bufferevents. (4e62cd1 Mark Ellzey)
BUGFIXES (DNS):
o Cancel a probe request when the server is freed, and ignore cancelled probe callbacks (94d2336 Greg Hazel)
o Remove redundant DNS_ERR_CANCEL check, move comment (46b8060 Greg Hazel)
o When retransmitting a timed-out DNS request, pick a fresh nameserver. (3d9e52a)
DOCUMENTATION FIXES:
o Fix a typo in the bufferevent documentation (98e9119)
o Add missing ) to changelog; spotted by rransom (4c7ee6b)
o Fix the website URL in the readme (f775521)
COMPILATION FIXES:
o Fix a compilation error with MSVC 2005 due to use of mode_t (336dcae)
o Configure with gcc older than 2.95 (4a6fd43 Sebastian Hahn)
o Generate event-config.h with a single sed script (30b6f88 Zack Weinberg)
FORWARD-COMPATIBILITY:
o Backport: provide EVENT_LOG_* names, and deprecate _EVENT_LOG_* (d1a03b2)
TESTING/DEBUGGING SUPPORT:
o dns-example.c can now take a resolv.conf file on the commandline (6610fa5)
o Make some evdns.c debug logs more verbose (d873d67)
o Work-around a stupid gcov-breaking bug in OSX 10.6 (b3887cd)
Changes in version 2.0.18-stable (22 Mar 2012)
BUGFIXES (core):
o Make uses of open() close-on-exec safe by introducing an internal evutil_open_closeonexec. (d2b5f72 Ross Lagerwall, 03dce42)
BUGFIXES (kqueue):
o Properly zero the kevent in kq_setup_kevent() (c2c7b39 Sebastian Hahn)
BUILD FIXES:
o Added OPENSSL_LDFLAGS env variable which is appended to SSL checks. (9278196 Mark Ellzey)
o Changed OPENSSL_LDFLAGS to OPENSSL_LIBADD (2d67b63 Mark Ellzey)
o Don't do clang version detection when disabling some flags (083296b Sebastian Hahn)
BUGFIXES (dns):
o Stop crashing in evdns when nameserver probes give a weird error (bec5068)
Changes in version 2.0.17-stable (10 Feb 2012)
BUGFIXES (core):
o Be absolutely sure to clear pncalls before leaving event_signal_closure (11f36a5)
o check for sysctl before we use it (358c745 Mike Frysinger)
o Remove bogus casts of socket to int before calling ev_callback (f032516)
o Make evconnlistener work around bug in older Linux when getting nmapped (ecfc720)
o Fix a list corruption bug when using event_reinit() with signals present (6e41cdc)
o Fix a fd leak in event_reinit() (3f18ad1)
o Do a memberwise comparison of threading function tables (c94a5f2 Nate R)
o Use C-style comments in C source files (for compatibility with compilers such as xlc on AIX). (d84d917 Greg Hewgill)
o Avoid crash when freeing event_iocp and using event_set_mem_functions (19715a6)
o In the kqueue backend, do not report EBADF as an EV_READ (5d7bfa1 Nicholas Marriott)
BUGFIXES (evbuffer and bufferevents):
o Fix behavior of evbuffer_peek(buf,-1,NULL,NULL,0) (c986f23 Zack Weinberg)
o Loop on filtering SSL reads until we are blocked or exhausted. (5b4b812)
BUGFIXES (evhttp):
o Force strict validation of HTTP version in response. (790f6b3 Catalin Patulea)
BUGFIXES (evdns):
o evdns: fix a bug in circular-queue implementation (d6094b1)
BUILD FIXES:
o Fix a silly compilation error with the sun compiler (1927776 Colin Watt)
o Suppress a gcc warning from ignoring fwrite return in http-sample.c (7206e8c)
DOCUMENTATION FIXES:
o Slightly clarify evbuffer_peek documentation (7bbf6ca)
o Update copyright notices to 2012 (e49e289)
NEW APIS:
o Backport evhttp_connection_get_bufferevent to Libevent 2.0 (da70fa7 Arno Bakker)
TESTS AND TEST FIXES:
o Fix a race condition in the dns/bufferevent_connect_hostname test. (cba48c7)
o Add function to check referential integrity of an event_base (27737d5)
o Check event_base correctness at end of each unit test (3312b02)
o Workaround in the unit tests for an apparent epoll bug in Linux 3.2 (dab9187)
o Better workaround for Linux 3.2 edge-triggered epoll bug (9f9e259)
Changes in version 2.0.16-stable (18 Nov 2011)
BUGFIXES (core):
o More detailed message in case of libevent self-debugging failure. (9e6a4ef Leonid Evdokimov)
o epoll: close fd on alloc fail at initialization (1aee718 Jamie Iles)
o Fix compile warning from saying event2/*.h inside a comment (447b0ba)
o Warn when unable to construct base because of failing make_base_notifiable (4e797f3)
o Don't try to make notifiable event_base when no threading fns are configured (e787413)
BUGFIXES (evbuffer):
o unit test for remove_buffer bug (90bd620 Greg Hazel)
o Fix an evbuffer crash in evbuffer_remove_buffer() (c37069c)
BUGFIXES (bufferevent_openssl):
o Refactor amount-to-read calculations in buffervent_ssl consider_reading() (a186e73 Mark Ellzey)
o Move SSL rate-limit enforcement into bytes_to_read() (96c562f)
o Avoid spinning on OpenSSL reads (2aa036f Mark Ellzey)
BUGFIXES (dns)
o Empty DNS reply with OK status is another way to say NODATA. (21a08d6 Leonid Evdokimov)
TESTING:
o Tests for 94fba5b and f72e8f6 (d58c15e Leonid Evdokimov)
o Test for commit aff6ba1 (f7841bf Leonid Evdokimov)
o Style and comment tweaks for dns/leak* tests (5e42202)
o improve test to remove at least one buffer from src (7eb52eb Greg Hazel)
DOCUMENTATION:
o Add note about evhttp_send_reply_end to its doxygen (724bfb5)
o Update copyright dates to 2011. (3c824bd)
o Fix typo in whatsnew-2.0.txt (674bc6a Mansour Moufid)
o Improve win32 behavior of dns-sample.c code (a3f320e Gisle Vanem)
Changes in version 2.0.15-stable (12 Oct 2011)
BUGFIXES (DNS):
o DNS: add ttl for negative answers using RFC 2308 idea. (f72e8f6 Leonid Evdokimov)
o Add DNS_ERR_NODATA error code to handle empty replies. (94fba5b Leonid Evdokimov)
BUFGIXES (bufferevents and evbuffers):
o Make evbuffer callbacks get the right n_added value after evbuffer_add (1ef1f68 Alex)
o Prefer mmap to sendfile unless a DRAINS_TO_FD flag is set. Allows add_file to work with SSL. (0ba0af9)
BUGFIXES (event loop):
o When a signal callback is activated to run multiple times, allow event_base_loopbreak to work even before they all have run. (4e8eb6a)
DOCUMENTATION FIXES:
o Fix docstring in dns.h (2b6eae5 Leonid Evdokimov)
o refer to non-deprecated evdns functions in comments (ba5c27d Greg Hazel)
BUILD AND TESTING FIXES:
o le-proxy and regress depend on openssl directly (9ae061a Sergey Avseyev)
o Use _SOURCES, not _sources, in sample/Makefile.am (7f82382)
o Fixed compiler warnings for unchecked read/write calls. (c3b62fd Mark Ellzey)
o Make write-checking fixes use tt_fail_perror (2b76847)
o Fix some "value never used" warnings with gcc 4.6.1 (39c0cf7)
Changes in version 2.0.14-stable (31 Aug 2011)
BUGFIXES (bufferevents and evbuffers):
o Propagate errors on the underlying bufferevent to the user. (4a34394 Joachim Bauch)
o Ignore OpenSSL deprecation warnings on OS X (5d1b255 Sebastian Hahn)
o Fix handling of group rate limits under 64 bytes of burst (6d5440e)
o Solaris sendfile: correctly detect amount of data sent (643922e Michael Herf)
o Make rate limiting work with common_timeout logic (5b18f13)
o clear read watermark on underlying bufferevent when creating filtering bev to fix potentially failing fragmented ssl handshakes (54f7e61 Joachim Bauch)
BUGFIXES (IOCP):
o IOCP: don't launch reads or writes on an unconnected socket (495c227)
o Make IOCP rate-limiting group support stricter and less surprising. (a98da7b)
o Have test-ratelim.c support IOCP (0ff2c5a)
o Make overlapped reads result in evbuffer callbacks getting invoked (6acfbdd)
o Correctly terminate IO on an async bufferevent on bufferevent_free (e6af35d)
BUGFIXES (other):
o Fix evsig_dealloc memory leak with debugging turned on. (9b724b2 Leonid Evdokimov)
o Fix request_finished memory leak with debugging turned on. (aff6ba1 Leonid Evdokimov)
BUILD AND TESTING FIXES:
o Allow OS-neutral builds for platforms where some versions have arc4random_buf (b442302 Mitchell Livingston)
o Try to fix 'make distcheck' errors when building out-of-tree (04656ea Dave Hart)
o Clean up some problems identified by Coverity. (7c11e51 Harlan Stenn)
Changes in version 2.0.13-stable (18 Jul 2011)
BUGFIXES
o Avoid race-condition when initializing global locks (b683cae)
o Fix bug in SSL bufferevents backed by a bev with a write high-watermarks (e050703 Joachim Bauch)
o Speed up invoke_callbacks on evbuffers when there are no callbacks (f87f568 Mark Ellzey)
o Avoid a segfault when all methods are disabled or broken (27ce38b)
o Fix incorrect results from evbuffer_search_eol(EOL_LF) (4461f1a)
o Add some missing checks for mm_calloc failures (89d5e09)
o Replace an assertion for event_base_free(NULL) with a check-and-warn (09fe97d)
o Report kqueue ebadf, epipe, and eperm as EV_READ events (1fd34ab)
o Check if the `evhttp_new_object' function in `http.c' returns NULL. (446cc7a Mansour Moufid)
o Use the correct printf args when formatting size_t (3203f88)
o Complain if the caller tries to change threading cbs after setting them (cb6ecee)
DOCUMENTATION FIXES AND IMPROVEMENTS
o Revise the event/evbuffer/bufferevent doxygen for clarity and accuracy (2888fac)
o Update Doxyfile to produce more useful output (aea0555)
TEST FIXES
o Fix up test_evutil_snprintf (caf695a)
o Fix tinytest invocation from windows shell (57def34 Ed Day)
BUILD FIXES
o Use AM_CPPFLAGS in sample/Makefile.am, not AM_CFLAGS (4a5c82d)
o Fix select.c compilation on systems with no NFDBITS (49d1136)
o Fix a few warnings on OpenBSD (8ee9f9c Nicholas Marriott)
o Don't break when building tests from git without python installed (b031adf)
o Don't install event_rpcgen.py when --disable-libevent-install is used (e23cda3 Harlan Stenn)
o Fix AIX build issue with TAILQ_FOREACH definition (e934096)
Changes in version 2.0.12-stable (4 Jun 2011)
BUGFIXES
o Fix a warn-and-fail bug in kqueue by providing kevent() room to report errors (28317a0)
o Fix an assert-inducing fencepost bug in the select backend (d90149d)
o Fix failing http assertion introducd in commit 0d6622e (0848814 Kevin Ko)
o Fix a bug that prevented us from configuring IPv6 nameservers. (74760f1)
o Prevent size_t overflow in evhttp_htmlescape. (06c51cd Mansour Moufid)
o Added several checks for under/overflow conditions in evhttp_handle_chunked_read (a279272 Mark Ellzey)
o Added overflow checks in evhttp_read_body and evhttp_get_body (84560fc Mark Ellzey)
DOCUMENTATION:
o Add missing words to EVLOOP_NONBLOCK documentation (9556a7d)
BUILD FIXES
o libssl depends on libcrypto, not the other way around. (274dd03 Peter Rosin)
o Libtool brings in the dependencies of libevent_openssl.la automatically (7b819f2 Peter Rosin)
o Use OPENSSL_LIBS in Makefile.am (292092e Sebastian Hahn)
o Move the win32 detection in configure.in (ceb03b9 Sebastian Hahn)
o Correctly detect openssl on windows (6619385 Sebastian Hahn)
o Fix a compile warning with zlib 1.2.4 and 1.2.5 (5786b91 Sebastian Hahn)
o Fix compilation with GCC 2, which had no __builtin_expect (09d39a1 Dave Hart)
o Fix new warnings from GCC 4.6 (06a714f)
o Link with -lshell32 and -ladvapi32 on Win32. (86090ee Peter Rosin)
o Make the tests build when OpenSSL is not available. (07c41be Peter Rosin)
o Bring in the compile script from automake, if needed. (f3c7a4c Peter Rosin)
o MSVC does not provide S_ISDIR, so provide it manually. (70be7d1 Peter Rosin)
o unistd.h and sys/time.h might not exist. (fe93022 Peter Rosin)
o Make sure TINYTEST_LOCAL is defined when building tinytest.c (8fa030c Peter Rosin)
o Fix winsock2.h #include issues with MSVC (3d768dc Peter Rosin)
o Use evutil_gettimeofday instead of relying on the system gettimeofday. (0de87fe Peter Rosin)
o Always use evutil_snprintf, even if OS provides it (d1b2d11 Sebastian Hahn)
o InitializeCriticalSectionAndSpinCount requires _WIN32_WINNT >= 0x0403. (816115a Peter Rosin)
o cygwin: make it possible to build DLLs (d54d3fc)
Changes in version 2.0.11-stable (27 Apr 2011)
[Autogenerated from the Git log, sorted and cleaned by hand.]
BUGFIXES:
o Fix evport handling of POLLHUP and POLLERR (b42ce4b)
o Fix compilation on Windows with NDEBUG (cb8059d)
o Check for POLLERR, POLLHUP and POLLNVAL for Solaris event ports (0144886 Trond Norbye)
o Detect and handle more allocation failures. (666b096 Jardel Weyrich)
o Use event_err() only if the failure is truly unrecoverable. (3f8d22a Jardel Weyrich)
o Handle resize failures in the select backend better. (83e805a)
o Correctly free selectop fields when select_resize fails in select_init (0c0ec0b)
o Make --enable-gcc-warnings a no-op if not using gcc (3267703)
o Fix a type error in our (unused) arc4random_stir() (f736198)
o Correctly detect and stop non-chunked http requests when the body is too long (63a715e)
o Have event_base_gettimeofday_cached() always return wall-clock time (a459ef7)
o Workaround for http crash bug 3078187 (5dc5662 Tomash Brechko)
o Fix incorrect assertions and possible use-after-free in evrpc_free() (4b8f02f Christophe Fillot)
o Reset outgoing http connection when read data in idle state. (272823f Tomash Brechko)
o Fix subtle recursion in evhttp_connection_cb_cleanup(). (218cf19 Tomash Brechko)
o Fix the case when failed evhttp_make_request() leaved request in the queue. (0d6622e Tomash Brechko)
o Fix a crash bug in evdns server circular list code (00e91b3)
o Handle calloc failure in evdns. (Found by Dave Hart) (364291e)
o Fix a memory leak on win32 socket->event map. (b4f89f0)
o Add a forgotten NULL check to evhttp_parse_headers (12311ff Sebastian Hahn)
o Fix possible NULL-deref in evdns_cancel_request (5208544 Sebastian Hahn)
PORTABILITY:
o Fall back to sscanf if we have no other way to implement strtoll (453317b)
o Build correctly on platforms without sockaddr_storage (9184563)
o Try to build correctly on platforms with no IPv6 support (713c254)
o Build on systems without AI_PASSIVE (cb92113)
o Fix http unit test on non-windows platforms without getaddrinfo (6092f12)
o Do not check for gethostbyname_r versions if we have getaddrinfo (c1260b0)
o Include arpa/inet.h as needed on HPUX (10c834c Harlan Stenn)
o Include util-internal.h as needed to build on platforms with no sockaddr_storage (bbf5515 Harlan Stenn)
o Check for getservbyname even if not on win32. (af08a94 Harlan Stenn)
o Add -D_OSF_SOURCE to fix hpux builds (0b33479 Harlan Stenn)
o Check for allocation failures in apply_socktype_protocol_hack (637d17a)
o Fix the check for multicast or broadcast addresses in evutil_check_interfaces (1a21d7b)
o Avoid a free(NULL) if out-of-memory in evdns_getaddrinfo. Found by Dave Hart (3417f68)
DEFENSIVE PROGRAMMING:
o Add compile-time check for AF_UNSPEC==PF_UNSPEC (3c8f4e7)
BUGS IN TESTS:
o Fix test.sh output on solaris (b4f89b6 Dave Hart)
o Make test-eof fail with a timeout if we never get an eof. (05a2c22 Harlan Stenn)
o Use %s with printf in test.sh (039b9bd)
o Add an assert to appease clang's static analyzer (b0ff7eb Sebastian Hahn)
o Add a forgotten return value check in the unit tests (3819b62 Sebastian Hahn)
o Actually send NULL request in http_bad_request_test (b693c32 Sebastian Hahn)
o add some (void) casts for unused variables (65707d7 Sebastian Hahn)
o Refactor test_getaddrinfo_async_cancel_stress() (48c44a6 Sebastian Hahn)
o Be nice and "handle" error return values in sample code (4bac793 Sebastian Hahn)
o Check return value of evbuffer_add_cb in tests (93a1abb Sebastian Hahn)
o Remote some dead code from dns-example.c (744c745 Sebastian Hahn)
o Zero a struct sockaddr_in before using it (646f9fe Sebastian Hahn)
BUILD FIXES:
o Fix warnings about AC_LANG_PROGRAM usage (f663112 Sebastian Hahn)
o Skip check for zlib if we have no zlib.h (a317c06 Harlan Stenn)
o Fix autoconf bracket issues; make check for getaddrinfo include netdb.h (833e5e9 Harlan Stenn)
o Correct an AM_CFLAGS to an AM_CPPFLAGS in test/Makefile.am (9c469db Dave Hart)
o Fix make distcheck & installation of libevent 1 headers (b5a1f9f Dave Hart)
o Fix compilation under LLVM/clang with --enable-gcc-warnings (ad9ff58 Sebastian Hahn)
FEATURES:
o Make URI parser able to tolerate nonconformant URIs. (95060b5)
DOCUMENTATION:
o Clarify event_set_mem_functions doc (926f816)
o Correct evhttp_del_accept_socket documentation on whether socket is closed (f665924)
o fix spelling mistake in whatsnew-2.0.txt (deb2f73)
o Fix sample/http-server ipv6 fixes (eb692be)
o Comment internal headers used in sample code. (4eb281c)
o Be explicit about how long event loops run in event.h documentation (f95bafb)
o Add comment to configure.in to explain gc-sections test logic (c621359)
o Fix a couple of memory leaks in samples/http-server.c. Found by Dave Hart. (2e9f665)
BUILD IMPROVEMENTS:
Libevent 2.1.2-alpha modernizes Libevent's use of autotools, and makes
numerous other build system. Parallel builds should be faster, and all
builds should be quieter.
o Split long lists in Makefile.am into one-item-per-line (2711cda)
o Remove unnecessary code in configure.in. (e65914f Ross Lagerwall)
o attempt to support OpenSSL in Makefile.nmake (eba0eb2 Patrick Pelletier)
o Use newer syntax for autoconf/automake init (7d60ba8)
o Enable silent build rules by default. Override with V=1 (7b18e5c)
o Switch to non-recursive makefiles (7092f3b)
o Rename subordinate Makefile.ams to include.am (6cdfeeb)
o Make quiet build even quieter (371a123)
o New --quiet option for event_rpcgen.py (aa59c1e)
o Be quiet when making regress.gen.[ch] (607a8ff)
o Fix handling of no-python case for nonrecursive make (1e3123d)
o We now require automake 1.9 or later. Modernize! (b7f6e89)
o Rename configure.in to configure.ac. (b3fea67 Ross Lagerwall)
o Use correct openssl libs and includes in pkgconfig file (d70af27)
o Use the same CFLAGS for openssl when building unit tests as with
libevent (1d9d511)
DOCUMENTATION
o Note that make_base_notifiable should not be necessary (26ee5f9)
o Be more clear that LEV_OPT_DEFERRED_ACCEPT has tricky prereqs (371efeb)
o Add caveat to docs about bufferevent_free() with data in outbuf (6fab9ee)
o Make it more clear that NOLOCK means "I promise, no multithreading"
(9444524)
o Fix a comment in test-fdleak after 077c7e949. (3881d8f Ross Lagerwall)
o Make the Makefile.nmake warning slightly less dire (e7bf4c8)
o Fix typo : events instead of evets (05f1aca Azat Khuzhin)
o Additional comments about OPENSSL_DIR variable, prompted by Dave Hart
(6bde2ef Patrick Pelletier)
EVHTTP:
o ignore LWS after field-content in headers (370a2c0 Artem Germanov)
o Clean up rtrim implementation (aa59d80)
o Remove trailing tabs in HTTP headers as well. (ac42519)
o Remove internal ws from multiline http headers correctly (c6ff381)
o Move evutil_rtrim_lws_ to evutil.c where it belongs (61b93af)
o add evhttp_request_get_response_code_line (4f4d0c9 Jay R. Wren)
o Use EVUTIL_SOCKET_ERROR() wrapper to save/restore errno in
evhttp_connection_fail_ (7afbd60)
o preserve errno in evhttp_connection_fail_ for inspection by the
callback (36d0ee5 Patrick Pelletier)
BUGFIXES:
o Correctly handle running on a system where accept4 doesn't work. (9fbfe9b)
o Avoid double-free on error in evbuffer_add_file. Found by
coverity. (6a81b1f)
o Fix another possible uninitialized read in dns regression tests. Found
by coverity. (13525c5)
o Add checks for functions in test-ratelim.c; found by Coverity (aa501e1)
o Avoid memory leak in test_event_calloc unit test; found by coverity
(92817a1)
o Fix a shadowed variable in addfile_test_readcb; found by coverity
(225344c)
o Check return value when using LEV_OPT_DEFERRED_ACCEPT. Found by
coverity (6487f63)
o Prevent reference leak of bufferevent if getaddrinfo fails. (b757786
Joachim Bauch)
o Make event_base_getnpriorities work with old "implicit base" code
(c46cb9c)
o Simplify and correct evutil_open_closeonexec_ (0de587f)
o Fix event_dlist definition when sys/queue not included (81b6209
Derrick Pallas)
Changes in version 2.1.1-alpha (4 Apr 2012)
Libevent 2.1.1-alpha includes a number of new features and performance
improvements. The log below tries to organize them by rough area of
effect. It omits some commits which were pure bugfixes on other commits
listed below. For more detail, see the git changelogs. For more
insight, see the "whatsnew-2.1.txt" document included in the Libevent
2.1.1-alpha distribution.
Performance: Core
o Replace several TAILQ users with LIST. LIST can be a little faster than
TAILQ for cases where we don't need queue-like behavior. (f9db33d,
6494772, d313c29, 974d004)
o Disabled code to optimize the case where we reinsert an existing
timeout (e47042f, 09cbc3d)
o Remove a needless base-notify when rescheduling the first timeout (77a96fd)
o Save a needless comparison when removing/adjusting timeouts (dd5189b)
o Possible optimization: split event_queue_insert/remove into
separate functions. needs testing (efc4dc5)
o Make event_count maintenance branchless at the expense of an
extra shift. Needs benchmarking (d1cee3b)
o In the 2.1 branch, let's try out lazy gettimeofday/clock_gettime
comparison (2a83ecc)
o Optimization in event_process_active(): ignore maxcb & endtime
for highest priority events. (a9866aa Alexander Drozdov)
o Bypass event_add when using event_base_once() for a 0-sec timeout (35c5c95)
o Remove the eventqueue list and the ev_next pointers. (604569b 066775e)
Performance: Evbuffers
o Roughly 20% speed increase when line-draining a buffer using
EVBUFFER_EOL_CRLF (5dde0f0 Mina Naguib)
o Try to squeeze a little more speed out of EVBUFFER_EOL_CRLF (7b9d139)
o Fix a bug in the improved EOL_CRLF code (d927965)
o Remove a needless branch in evbuffer_drain() (d19a326)
Performance: Linux
o Infrastructure for using faster/fewer syscalls when creating
sockets (a1c042b)
o Minimize syscalls during socket creation in listener.c (7e9e289)
o Use a wrapper function to create the notification
pipe/socketpair/eventfd (ca76cd9)
o Use pipes for telling signals to main thread when possible (a35f396)
o Save syscalls when constructing listener sockets for evhttp (af6c9d8)
o Save some syscalls when creating evdns sockets (713e570)
o Save some syscalls when constructing a socket for a bufferevent (33fca62)
o Prefer epoll_create1 on Linuxen that have it (bac906c)
Performance: Epoll backend
o Use current event set rather than current pending change when
deciding whether to no-op a del (04ba27e Mike Smellie)
o Replace big chain of if/thens in epoll.c with a table lookup (8c83eb6)
o Clean up error handling in epoll_apply_one_change() a little (2d55a19)
Performance: Evport backend
o evport: use evmap_io to track fdinfo status. Should save time and
RAM. (4687ce4)
o evport: Remove a linear search over recent events when
reactivating them (0f77efe)
o evport: Use portev_user to remember fdinfo struct (276ec0e)
o evport: don't scan more events in ed_pending than needed (849a5cf)
o evport: Remove artificial low limit on max events per getn call (c04d927)
o Reenable main/many_events_slow_add for evport in 2.1 (e903db3)
Performance: Windows
o Use GetSystemTimeAsFileTime to implement gettimeofday on
win32. It's faster and more accurate than our old
approach. (b8b8aa5)
New functions and features: debugging
o Add event_enable_debug_logging() to control use of debug logs (e30a82f)
New functions and features: core
o Add event_config function to limit time/callbacks between calls
to dispatch (fd4de1e, 9fa56bd, a37a0c0, 3c63edd)
o New EVLOOP_NO_EXIT_ON_EMPTY option to keep looping even when no
events are pending (084e68f)
o Add event_base_get_npriorities() function. (ee3a4ee Alexander Drozdov)
o Make evbase_priority_init() and evbase_get_npriorities()
threadsafe (3c55b5e)
o New event_base_update_cache_time() to set cached_tv to current
time (212533e Abel Mathew)
o Add event_self_cbarg() to be used in conjunction with
event_new(). (ed36e6a Ross Lagerwall, fa931bb, 09a1906, 1338e6c,
33e43ef)
o Add a new libevent_global_shutdown() to free all globals before
exiting. (041ca00 Mark Ellzey, f98c158, 15296d0, 55e991b)
o Use getifaddrs to detect our interfaces if possible (7085a45)
o Add event_base_get_running_event() to get the event* whose cb we
are in (c5732fd, 13dad99)
New functions and features: building
o Implement --enable-gcc-hardening configure option (7550267 Sebastian Hahn)
New functions and features: evbuffers
o Add evbuffer_add_file_segment() so one fd can be used efficiently
in more than one evbuffer_add_file at a time (e72afae, c2d9884,
3f405d2, 0aad014)
o Fix windows file segment mappings (8254de7)
o Allow evbuffer_ptr_set to yield a point just after the end of the
buffer. (e6fe1da)
o Allow evbuffer_ptr to point to position 0 in an empty evbuffer
(7aeb2fd Nir Soffer)
o Set the special "not found" evbuffer_ptr consistently. (e3e97ae Nir Soffer)
o support adding buffers to other buffers non-destructively
(9d7368a Joachim Bauch)
o prevent nested multicast references, reworked locking (26041a8
Joachim Bauch)
o New EVBUFFER_EOL_NUL to read NUL-terminated strings from an
evbuffer (d7a8b36 Andrea Montefusco, 54142c9)
o Make evbuffer_file_segment_types adaptable (c6bbbf1)
o Added evbuffer_add_iovec and unit tests. (aaec5ac Mark Ellzey, 27b5398)
o Add evbuffer_copyout_from to copy data from the middle of a
buffer (27e2225)
New functions and features: bufferevents
o Allow users to set allow_dirty_shutdown (099d27d Catalin Patulea)
o Tweak allow_dirty_shutdown documentation (a44cd2b)
o Fix two issues in the allow_dirty_shutdown code. (f3b89de)
o Add a bufferevent_getcb() to find a bufferevent's current
callbacks (a650394)
o bufferevent: Add functions to set/get max_single_read/write
values. (998c813 Alexander Drozdov)
o bev_ssl: Be more specific in event callbacks. evhttp in particular gets
confused without at least one of BEV_EVENT_{READING|WRITING}. (f7eb69a
Catalin Patulea)
New functions and features: evconnlisteners
o Support TCP_DEFER_ACCEPT sockopts for listeners (5880e4a Mark Ellzey,
a270728)
o Add another caveat to the TCP_DEFER_ACCEPT documentation (a270728)
o Allow evconnlistener to be created in disabled state. (9593a33
Alexander Drozdov)
o The LEV_OPT_CLOSE_ON_EXEC flag now applies to accepted listener
sockets too (4970329)
Evhttp:
o Add new evhttp_{connection_}set_timeout_tv() functions to set
finger-grained http timeouts (6350e6c Constantine Verutin)
o Performance tweak to evhttp_parse_request_line. (aee1a97 Mark Ellzey)
o Add missing break to evhttp_parse_request_line (0fcc536)
o Add evhttp callback for bufferevent creation; this lets evhttp
support SSL. (8d3a850)
o Remove calls to deprecated bufferevent functions from evhttp.c (4d63758)
o evhttp: Add evhttp_foreach_bound_socket. (a2c48e3 Samy Al Bahra)
Build improvements:
o Add AC_USE_SYSTEM_EXTENSIONS to configure.in. Requires follow on
patches for correctness and robustness. (1fa7dbe Kevin Bowling)
o Filter '# define' statements from autoconf and generate
event-private.h (321b558 Kevin Bowling)
o Remove internal usage of _GNU_SOURCE (3b26541 Kevin Bowling)
o Eliminate a couple more manual internal _GNU_SOURCE defines (c51ef93
Kevin Bowling)
o Add AC_GNU_SOURCE to the fallback case. (ea8fa4c Kevin Bowling)
o Use a Configuration Header Template for evconfig-private.h (868f888
Kevin Bowling)
o Fix a comment warning and add evconfig-private.h to .gitignore
(f6d66bc Kevin Bowling)
o Include evconfig-private.h in internal files for great good. (0915ca0
Kevin Bowling)
o Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
(ad03952 Kevin Bowling)
o Prefer the ./configure evconfig-private.h in MinGW, just in
case. (f964b72 Kevin Bowling)
o Shell hack for weird mkdir -p commands (fd7b5a8 Kevin Bowling)
o Add evconfig-private to remaining files (ded0a09 Kevin Bowling)
o Allow use of --enable-silent-rules for quieter compilation with
automake 1.11 (f1f8514 Dave Hart)
o Use "_WIN32", not WIN32: it's standard and we don't need to fake it
(9f560b)
o In configure, test for _WIN32 not WIN32. (85078b1 Peter Rosin)
o Do not define WIN32 in Makefile.nmake (d41f3ea Peter Rosin)
o Provide the autoconf m4 macros for the new OpenSSL via pkg-config
stuff. (674dc3d Harlan Stenn)
o Use pkg-config (if available) to handle OpenSSL. (1c63860 Harlan Stenn)
o We need AM_CPPFLAGS when compiling bufferevent_openssl.c (6d2613b
Harlan Stenn)
o Fix OSX build: $(OPENSSL_INCS) needs to be after
$(AM_CPPFLAGS). (46f1769 Zack Weinberg)
o Make gcc warnings on by default, and --enable-gcc-warnings only add
-Werror (d46517e Sebastian Hahn)
o Split up extra-long AC_CHECK_FUNCS/HEADERS lines in configure.in (88a30ad)
o Move libevent 1.x headers to include/, to put all public headers in
one place. (bbea8d6)
o Put #ifdef around some files to support alternate build
systems. (76d4c92 Ross Lagerwall)
o Also make win32select.c conditional for IDE users (bf2c5a7)
Debugging:
o Add a magic number to debug_locks to better catch lock-coding
errors. (b4a29c0 Dave Hart)
o munge the debug_lock signature before freeing it: it might help us
catch use-after-free (f28084d)
o Added --enable-event-debugging in configure (bc7b4e4, a9c2c9a Mark Ellzey)
o Debug addition for printing usec on TIMEOUT debugging. (ac43ce0 Mark Ellzey)
o Added usec debug in another area for debug (3baab0d Mark Ellzey)
o added timeout debug logs to include event ptr. (4b7d298 Mark Ellzey)
o more event dbg updates (6727543 Mark Ellzey)
o Clarify event_enable_debug_logging a little (6207826)
o Make --enable-verbose-debug option match its help text (10c3450)
o Add argument checks to some memory functions in `event.c'. (c8953d1
Mansour Moufid)
Testing:
o More abstraction in test.sh (cd74c4e)
o Add failing test for evbuffer_search_range. (8e26154 Nir Soffer)
o Tweaks to return types with end-of-buf ptrs (9ab8ab8)
o Add an (internal) usleep function for use by unit tests (f25d9d3)
o Synchronize with upstream tinytest (6c81be7)
o Make test-changelist faster (7622d26)
o Reduce the timeout in the main/fork test. (ab14f7c)
o New evhttp function to adjust initial retry timeout (350a3c4)
o Make regression tests run over 3x faster. (67a1763)
o Use test_timeval_diff_eq more consistently (b77b43f)
o Allow more slop in deferred_cb_skew test; freebsd needs it (b9f7e5f)
o When including an -internal.h header outside the main tree, do so
early (95e2455)
o Add a new test: test-fdleak which tests for fd leaks by creating many
sockets. (2ef9278 Ross Lagerwall, f7af194, 1c4288f, etc)
o Add a unit test for event_base_dump_events() (7afe48a, 8d08cce)
o Test more bufferevent_ratelim features (c24f91a)
Documentation:
o Improve evbuffer_ptr documentation (261ba63)
o added comments to describe refcounting of multicast chains (ba24f61
Joachim Bauch)
o Add doxygen for event_base_dump_events (cad5753)
OSX:
o Use "unlimited select" on OSX so that we can have more than
FD_SETSIZE fds (1fb5cc6)
KQueue:
o Use SIG_IGN instead of a do-nothing handler for signal events with
kqueue (148458e Zack Weinberg)
evprc:
o event_rpcgen.py now prints status information to stdout and errors to
stderr. (ffb0ba0 Ross Lagerwall)
Code improvement and refactoring:
o Make event_reinit() more robust and maintainable (272033e)
o Restore fast-path event_reinit() for slower backends (2c4b5de)
o Check changelist as part of checking representational integrity (39b3f38)
o Fix a compile warning in event_reinit (e4a56ed Sebastian Hahn)
o Refactor the functions that run over every event. (c89b4e6)
o Remove the last vestiges of _EVENT_USE_EVENTLIST (a3cec90)
o Make event-config.h depend on Makefile.am (2958a5c)
Build fixes:
o Don't do clang version detection when disabling some flags (083296b
Sebastian Hahn)
C standards conformance:
o Check for NULL return on win32 mm_calloc, and set ENOMEM. (af7ba69)
o Convert event-config.h macros to avoid reserved identifiers (68120d9)
o Generate event-config.h using the correct macros. (f82c57e)
o Convert include-guard macro convention to avoid reserved identifiers
(3f8c7cd)
o Make event_rpcgen.py output conform to identifier conventions (372bff1)
o Stop referring to an obsolete include guard in bench_http.h (5c0f7e0)
o Make the generated event-config.h use correct include guards (639383a)
o Fix all identifiers with names beginning with underscore. (cb9da0b)
o Make event_rpcgen.py output conform to identifier conventions, more
(bcefd24)
o Fix some problems introduced by automated identifier cleanup script
(c963534)
o Have all visible internal function names end with an underscore. (8ac3c4c)
o Apply the naming convention to our EVUTIL_IS* functions (c7848fa)
o Clean up lingering _identifiers. (946b584)
o Fix doxygen to use new macro conventions (da455e9)
Bugfixes:
o Do not use system EAI/AI values if we are not using the system
getaddrinfo. (7bcac07)
Sample Code:
o Fix up sample/event-test.c to use newer interfaces and make it
actually work. (19bab4f Ross Lagerwall)
o On Unix, remove event.fifo left by sample/event-test.c. (c0dacd2 Ross
Lagerwall)
o Rename event-test.c to event-read-fifo.c. (a5b370a Ross Lagerwall)
o event-read-fifo: Use EV_PERSIST appropriately (24dab0b)
Changes in version 2.0.21-stable (18 Nov 2012)
BUGFIXES:
o ssl: Don't discard SSL read event when timeout and read come close together (576b29f)
o ssl: Stop looping in "consider_reading" if reading is suspended. (f719b8a Joachim Bauch)
o ssl: No need to reserve space if reading is suspended. (1acf2eb Joachim Bauch)
o dns: Avoid a memory-leak on OOM in evdns. (73e85dd, f2bff75 George Danchev)
o build: Use python2 rather than python (0eb0109 Ross Lagerwall)
o build: Compile without warnings on mingw64 (94866c2)
o build: Fix compilation on mingw64 with -DUSE_DEBUG (62bd2c4)
o build: Make rpcgen_wrapper.sh work on systems without a "python2" binary (f3009e4)
o iocp: Close IOCP listener socket on free when LEV_OPT_CLOSE_ON_FREE is set (cb853ea Juan Pablo Fernandez)
o core: Avoid crash when event_pending() called with no event_base set on event (e3cccf3)
o misc: remove stray 'x' so print_err will compile when uncommented (ac35650 Patrick Pelletier)
o tests: Fix renegotiation test to work around openssl 1.0.1 bug (c2f3086)
o tests: Warn when openssl version in unit test mismatches compiled version. (ac009f9)
Changes in version 2.0.20-stable (23 Aug 2012)
BUGFIXES:
o core: Make event_pending() threadsafe. (be7a95c Simon Liu)
o win32: avoid crash when waiting forever on zero fds. (160e58b)
o evhttp: Fix a memory leak on error in evhttp_uriencode (11c8b31)
o evbuffer: Avoid possible needless call to writev. Found by coverity. (6a4ec5c)
o evdns: memset sockaddr_in before using it. Found by coverity. (a1a0e67)
o evhttp: Check more setsockopt return values when binding sockets. Found by coverity (a0912e3)
o evdns: Avoid segfault on weird timeout during name lookup. (dc32077 Greg Hazel)
o bufferevent_ssl: Correctly invoke callbacks when a SSL bufferevent reads some and then blocks. (606ac43)
PORTABILITY FIXES:
o check for arc4random_buf at runtime, on OS X (bff5f94 Greg Hazel)
o Correctly check for arc4random_buf (fcec3e8 Sebastian Hahn)
o Add explicit AC_PROG_SED to configure.in so all autoconfs will expose $(SED) (ca80ea6)
BUILD FIXES:
o Add GCC annotations so that the vsprintf functions get checked properly (117e327)
o Fix an unused variable warning on *BSD. (c0720c1)
UNIT TEST FIXES:
o Fix a couple of memory leaks (found with Valgrind). (3b2529a Ross Lagerwall)
o Remove deadcode in http regression tests. Found by coverity. (5553346)
o Fix possible uninitialized read in dns regression tests. Found by coverity. (2259777)
o Set umask before calling mkstemp in unit tests. Found by coverity (f1ce15d)
o Fix various check-after-dereference issues in unit tests: found by coverity (4f3732d)
o Fix resource leaks in the unit tests; found by coverity (270f279)
o Add some missing null checks to unit tests; found by coverity (f021c3d)
o Avoid more crashes/bad calls in unit tests; found by coverity (3cde5bf)
o Remove unused variable; spotted by coverity (6355b2a)
o Add checks to various return values in unit tests. Found by coverity (b9e7329)
o Move assignment outside tt_assert in ssl unit tests. Appeases coverity. (a2006c0)
Changes in version 2.0.19-stable (3 May 2012)
BUGFIXES (CORE):
o Refactor event_persist_closure: raise and extract some common logic (bec22b4)
o If time has jumped so we'd reschedule a periodic event in the past, schedule it for the future instead (dfd808c)
o If a higher-priority event becomes active, don't continue running events of the current priority. (2bfda40)
BUGFIXES (SSL):
o Fixed potential double-readcb execution with openssl bufferevents. (4e62cd1 Mark Ellzey)
BUGFIXES (DNS):
o Cancel a probe request when the server is freed, and ignore cancelled probe callbacks (94d2336 Greg Hazel)
o Remove redundant DNS_ERR_CANCEL check, move comment (46b8060 Greg Hazel)
o When retransmitting a timed-out DNS request, pick a fresh nameserver. (3d9e52a)
DOCUMENTATION FIXES:
o Fix a typo in the bufferevent documentation (98e9119)
o Add missing ) to changelog; spotted by rransom (4c7ee6b)
o Fix the website URL in the readme (f775521)
COMPILATION FIXES:
o Fix a compilation error with MSVC 2005 due to use of mode_t (336dcae)
o Configure with gcc older than 2.95 (4a6fd43 Sebastian Hahn)
o Generate event-config.h with a single sed script (30b6f88 Zack Weinberg)
FORWARD-COMPATIBILITY:
o Backport: provide EVENT_LOG_* names, and deprecate _EVENT_LOG_* (d1a03b2)
TESTING/DEBUGGING SUPPORT:
o dns-example.c can now take a resolv.conf file on the commandline (6610fa5)
o Make some evdns.c debug logs more verbose (d873d67)
o Work-around a stupid gcov-breaking bug in OSX 10.6 (b3887cd)
Changes in version 2.0.18-stable (22 Mar 2012)
BUGFIXES (core):
o Make uses of open() close-on-exec safe by introducing an internal evutil_open_closeonexec. (d2b5f72 Ross Lagerwall, 03dce42)
BUGFIXES (kqueue):
o Properly zero the kevent in kq_setup_kevent() (c2c7b39 Sebastian Hahn)
BUILD FIXES:
o Added OPENSSL_LDFLAGS env variable which is appended to SSL checks. (9278196 Mark Ellzey)
o Changed OPENSSL_LDFLAGS to OPENSSL_LIBADD (2d67b63 Mark Ellzey)
o Don't do clang version detection when disabling some flags (083296b Sebastian Hahn)
BUGFIXES (dns):
o Stop crashing in evdns when nameserver probes give a weird error (bec5068)
Changes in version 2.0.17-stable (10 Feb 2012)
BUGFIXES (core):
o Be absolutely sure to clear pncalls before leaving event_signal_closure (11f36a5)
o check for sysctl before we use it (358c745 Mike Frysinger)
o Remove bogus casts of socket to int before calling ev_callback (f032516)
o Make evconnlistener work around bug in older Linux when getting nmapped (ecfc720)
o Fix a list corruption bug when using event_reinit() with signals present (6e41cdc)
o Fix a fd leak in event_reinit() (3f18ad1)
o Do a memberwise comparison of threading function tables (c94a5f2 Nate R)
o Use C-style comments in C source files (for compatibility with compilers such as xlc on AIX). (d84d917 Greg Hewgill)
o Avoid crash when freeing event_iocp and using event_set_mem_functions (19715a6)
o In the kqueue backend, do not report EBADF as an EV_READ (5d7bfa1 Nicholas Marriott)
BUGFIXES (evbuffer and bufferevents):
o Fix behavior of evbuffer_peek(buf,-1,NULL,NULL,0) (c986f23 Zack Weinberg)
o Loop on filtering SSL reads until we are blocked or exhausted. (5b4b812)
BUGFIXES (evhttp):
o Force strict validation of HTTP version in response. (790f6b3 Catalin Patulea)
BUGFIXES (evdns):
o evdns: fix a bug in circular-queue implementation (d6094b1)
BUILD FIXES:
o Fix a silly compilation error with the sun compiler (1927776 Colin Watt)
o Suppress a gcc warning from ignoring fwrite return in http-sample.c (7206e8c)
DOCUMENTATION FIXES:
o Slightly clarify evbuffer_peek documentation (7bbf6ca)
o Update copyright notices to 2012 (e49e289)
NEW APIS:
o Backport evhttp_connection_get_bufferevent to Libevent 2.0 (da70fa7 Arno Bakker)
TESTS AND TEST FIXES:
o Fix a race condition in the dns/bufferevent_connect_hostname test. (cba48c7)
o Add function to check referential integrity of an event_base (27737d5)
o Check event_base correctness at end of each unit test (3312b02)
o Workaround in the unit tests for an apparent epoll bug in Linux 3.2 (dab9187)
o Better workaround for Linux 3.2 edge-triggered epoll bug (9f9e259)
Changes in version 2.0.16-stable (18 Nov 2011)
BUGFIXES (core):
o More detailed message in case of libevent self-debugging failure. (9e6a4ef Leonid Evdokimov)
o epoll: close fd on alloc fail at initialization (1aee718 Jamie Iles)
o Fix compile warning from saying event2/*.h inside a comment (447b0ba)
o Warn when unable to construct base because of failing make_base_notifiable (4e797f3)
o Don't try to make notifiable event_base when no threading fns are configured (e787413)
BUGFIXES (evbuffer):
o unit test for remove_buffer bug (90bd620 Greg Hazel)
o Fix an evbuffer crash in evbuffer_remove_buffer() (c37069c)
BUGFIXES (bufferevent_openssl):
o Refactor amount-to-read calculations in buffervent_ssl consider_reading() (a186e73 Mark Ellzey)
o Move SSL rate-limit enforcement into bytes_to_read() (96c562f)
o Avoid spinning on OpenSSL reads (2aa036f Mark Ellzey)
BUGFIXES (dns)
o Empty DNS reply with OK status is another way to say NODATA. (21a08d6 Leonid Evdokimov)
TESTING:
o Tests for 94fba5b and f72e8f6 (d58c15e Leonid Evdokimov)
o Test for commit aff6ba1 (f7841bf Leonid Evdokimov)
o Style and comment tweaks for dns/leak* tests (5e42202)
o improve test to remove at least one buffer from src (7eb52eb Greg Hazel)
DOCUMENTATION:
o Add note about evhttp_send_reply_end to its doxygen (724bfb5)
o Update copyright dates to 2011. (3c824bd)
o Fix typo in whatsnew-2.0.txt (674bc6a Mansour Moufid)
o Improve win32 behavior of dns-sample.c code (a3f320e Gisle Vanem)
Changes in version 2.0.15-stable (12 Oct 2011)
BUGFIXES (DNS):
o DNS: add ttl for negative answers using RFC 2308 idea. (f72e8f6 Leonid Evdokimov)
o Add DNS_ERR_NODATA error code to handle empty replies. (94fba5b Leonid Evdokimov)
BUFGIXES (bufferevents and evbuffers):
o Make evbuffer callbacks get the right n_added value after evbuffer_add (1ef1f68 Alex)
o Prefer mmap to sendfile unless a DRAINS_TO_FD flag is set. Allows add_file to work with SSL. (0ba0af9)
BUGFIXES (event loop):
o When a signal callback is activated to run multiple times, allow event_base_loopbreak to work even before they all have run. (4e8eb6a)
DOCUMENTATION FIXES:
o Fix docstring in dns.h (2b6eae5 Leonid Evdokimov)
o refer to non-deprecated evdns functions in comments (ba5c27d Greg Hazel)
BUILD AND TESTING FIXES:
o le-proxy and regress depend on openssl directly (9ae061a Sergey Avseyev)
o Use _SOURCES, not _sources, in sample/Makefile.am (7f82382)
o Fixed compiler warnings for unchecked read/write calls. (c3b62fd Mark Ellzey)
o Make write-checking fixes use tt_fail_perror (2b76847)
o Fix some "value never used" warnings with gcc 4.6.1 (39c0cf7)
Changes in version 2.0.14-stable (31 Aug 2011)
BUGFIXES (bufferevents and evbuffers):
o Propagate errors on the underlying bufferevent to the user. (4a34394 Joachim Bauch)
o Ignore OpenSSL deprecation warnings on OS X (5d1b255 Sebastian Hahn)
o Fix handling of group rate limits under 64 bytes of burst (6d5440e)
o Solaris sendfile: correctly detect amount of data sent (643922e Michael Herf)
o Make rate limiting work with common_timeout logic (5b18f13)
o clear read watermark on underlying bufferevent when creating filtering bev to fix potentially failing fragmented ssl handshakes (54f7e61 Joachim Bauch)
BUGFIXES (IOCP):
o IOCP: don't launch reads or writes on an unconnected socket (495c227)
o Make IOCP rate-limiting group support stricter and less surprising. (a98da7b)
o Have test-ratelim.c support IOCP (0ff2c5a)
o Make overlapped reads result in evbuffer callbacks getting invoked (6acfbdd)
o Correctly terminate IO on an async bufferevent on bufferevent_free (e6af35d)
BUGFIXES (other):
o Fix evsig_dealloc memory leak with debugging turned on. (9b724b2 Leonid Evdokimov)
o Fix request_finished memory leak with debugging turned on. (aff6ba1 Leonid Evdokimov)
BUILD AND TESTING FIXES:
o Allow OS-neutral builds for platforms where some versions have arc4random_buf (b442302 Mitchell Livingston)
o Try to fix 'make distcheck' errors when building out-of-tree (04656ea Dave Hart)
o Clean up some problems identified by Coverity. (7c11e51 Harlan Stenn)
Changes in version 2.0.13-stable (18 Jul 2011)
BUGFIXES
o Avoid race-condition when initializing global locks (b683cae)
o Fix bug in SSL bufferevents backed by a bev with a write high-watermarks (e050703 Joachim Bauch)
o Speed up invoke_callbacks on evbuffers when there are no callbacks (f87f568 Mark Ellzey)
o Avoid a segfault when all methods are disabled or broken (27ce38b)
o Fix incorrect results from evbuffer_search_eol(EOL_LF) (4461f1a)
o Add some missing checks for mm_calloc failures (89d5e09)
o Replace an assertion for event_base_free(NULL) with a check-and-warn (09fe97d)
o Report kqueue ebadf, epipe, and eperm as EV_READ events (1fd34ab)
o Check if the `evhttp_new_object' function in `http.c' returns NULL. (446cc7a Mansour Moufid)
o Use the correct printf args when formatting size_t (3203f88)
o Complain if the caller tries to change threading cbs after setting them (cb6ecee)
DOCUMENTATION FIXES AND IMPROVEMENTS
o Revise the event/evbuffer/bufferevent doxygen for clarity and accuracy (2888fac)
o Update Doxyfile to produce more useful output (aea0555)
TEST FIXES
o Fix up test_evutil_snprintf (caf695a)
o Fix tinytest invocation from windows shell (57def34 Ed Day)
BUILD FIXES
o Use AM_CPPFLAGS in sample/Makefile.am, not AM_CFLAGS (4a5c82d)
o Fix select.c compilation on systems with no NFDBITS (49d1136)
o Fix a few warnings on OpenBSD (8ee9f9c Nicholas Marriott)
o Don't break when building tests from git without python installed (b031adf)
o Don't install event_rpcgen.py when --disable-libevent-install is used (e23cda3 Harlan Stenn)
o Fix AIX build issue with TAILQ_FOREACH definition (e934096)
Changes in version 2.0.12-stable (4 Jun 2011)
BUGFIXES
o Fix a warn-and-fail bug in kqueue by providing kevent() room to report errors (28317a0)
o Fix an assert-inducing fencepost bug in the select backend (d90149d)
o Fix failing http assertion introducd in commit 0d6622e (0848814 Kevin Ko)
o Fix a bug that prevented us from configuring IPv6 nameservers. (74760f1)
o Prevent size_t overflow in evhttp_htmlescape. (06c51cd Mansour Moufid)
o Added several checks for under/overflow conditions in evhttp_handle_chunked_read (a279272 Mark Ellzey)
o Added overflow checks in evhttp_read_body and evhttp_get_body (84560fc Mark Ellzey)
DOCUMENTATION:
o Add missing words to EVLOOP_NONBLOCK documentation (9556a7d)
BUILD FIXES
o libssl depends on libcrypto, not the other way around. (274dd03 Peter Rosin)
o Libtool brings in the dependencies of libevent_openssl.la automatically (7b819f2 Peter Rosin)
o Use OPENSSL_LIBS in Makefile.am (292092e Sebastian Hahn)
o Move the win32 detection in configure.in (ceb03b9 Sebastian Hahn)
o Correctly detect openssl on windows (6619385 Sebastian Hahn)
o Fix a compile warning with zlib 1.2.4 and 1.2.5 (5786b91 Sebastian Hahn)
o Fix compilation with GCC 2, which had no __builtin_expect (09d39a1 Dave Hart)
o Fix new warnings from GCC 4.6 (06a714f)
o Link with -lshell32 and -ladvapi32 on Win32. (86090ee Peter Rosin)
o Make the tests build when OpenSSL is not available. (07c41be Peter Rosin)
o Bring in the compile script from automake, if needed. (f3c7a4c Peter Rosin)
o MSVC does not provide S_ISDIR, so provide it manually. (70be7d1 Peter Rosin)
o unistd.h and sys/time.h might not exist. (fe93022 Peter Rosin)
o Make sure TINYTEST_LOCAL is defined when building tinytest.c (8fa030c Peter Rosin)
o Fix winsock2.h #include issues with MSVC (3d768dc Peter Rosin)
o Use evutil_gettimeofday instead of relying on the system gettimeofday. (0de87fe Peter Rosin)
o Always use evutil_snprintf, even if OS provides it (d1b2d11 Sebastian Hahn)
o InitializeCriticalSectionAndSpinCount requires _WIN32_WINNT >= 0x0403. (816115a Peter Rosin)
o cygwin: make it possible to build DLLs (d54d3fc)
Changes in version 2.0.11-stable (27 Apr 2011)
[Autogenerated from the Git log, sorted and cleaned by hand.]
BUGFIXES:
o Fix evport handling of POLLHUP and POLLERR (b42ce4b)
o Fix compilation on Windows with NDEBUG (cb8059d)
o Check for POLLERR, POLLHUP and POLLNVAL for Solaris event ports (0144886 Trond Norbye)
o Detect and handle more allocation failures. (666b096 Jardel Weyrich)
o Use event_err() only if the failure is truly unrecoverable. (3f8d22a Jardel Weyrich)
o Handle resize failures in the select backend better. (83e805a)
o Correctly free selectop fields when select_resize fails in select_init (0c0ec0b)
o Make --enable-gcc-warnings a no-op if not using gcc (3267703)
o Fix a type error in our (unused) arc4random_stir() (f736198)
o Correctly detect and stop non-chunked http requests when the body is too long (63a715e)
o Have event_base_gettimeofday_cached() always return wall-clock time (a459ef7)
o Workaround for http crash bug 3078187 (5dc5662 Tomash Brechko)
o Fix incorrect assertions and possible use-after-free in evrpc_free() (4b8f02f Christophe Fillot)
o Reset outgoing http connection when read data in idle state. (272823f Tomash Brechko)
o Fix subtle recursion in evhttp_connection_cb_cleanup(). (218cf19 Tomash Brechko)
o Fix the case when failed evhttp_make_request() leaved request in the queue. (0d6622e Tomash Brechko)
o Fix a crash bug in evdns server circular list code (00e91b3)
o Handle calloc failure in evdns. (Found by Dave Hart) (364291e)
o Fix a memory leak on win32 socket->event map. (b4f89f0)
o Add a forgotten NULL check to evhttp_parse_headers (12311ff Sebastian Hahn)
o Fix possible NULL-deref in evdns_cancel_request (5208544 Sebastian Hahn)
PORTABILITY:
o Fall back to sscanf if we have no other way to implement strtoll (453317b)
o Build correctly on platforms without sockaddr_storage (9184563)
o Try to build correctly on platforms with no IPv6 support (713c254)
o Build on systems without AI_PASSIVE (cb92113)
o Fix http unit test on non-windows platforms without getaddrinfo (6092f12)
o Do not check for gethostbyname_r versions if we have getaddrinfo (c1260b0)
o Include arpa/inet.h as needed on HPUX (10c834c Harlan Stenn)
o Include util-internal.h as needed to build on platforms with no sockaddr_storage (bbf5515 Harlan Stenn)
o Check for getservbyname even if not on win32. (af08a94 Harlan Stenn)
o Add -D_OSF_SOURCE to fix hpux builds (0b33479 Harlan Stenn)
o Check for allocation failures in apply_socktype_protocol_hack (637d17a)
o Fix the check for multicast or broadcast addresses in evutil_check_interfaces (1a21d7b)
o Avoid a free(NULL) if out-of-memory in evdns_getaddrinfo. Found by Dave Hart (3417f68)
DEFENSIVE PROGRAMMING:
o Add compile-time check for AF_UNSPEC==PF_UNSPEC (3c8f4e7)
BUGS IN TESTS:
o Fix test.sh output on solaris (b4f89b6 Dave Hart)
o Make test-eof fail with a timeout if we never get an eof. (05a2c22 Harlan Stenn)
o Use %s with printf in test.sh (039b9bd)
o Add an assert to appease clang's static analyzer (b0ff7eb Sebastian Hahn)
o Add a forgotten return value check in the unit tests (3819b62 Sebastian Hahn)
o Actually send NULL request in http_bad_request_test (b693c32 Sebastian Hahn)
o add some (void) casts for unused variables (65707d7 Sebastian Hahn)
o Refactor test_getaddrinfo_async_cancel_stress() (48c44a6 Sebastian Hahn)
o Be nice and "handle" error return values in sample code (4bac793 Sebastian Hahn)
o Check return value of evbuffer_add_cb in tests (93a1abb Sebastian Hahn)
o Remote some dead code from dns-example.c (744c745 Sebastian Hahn)
o Zero a struct sockaddr_in before using it (646f9fe Sebastian Hahn)
BUILD FIXES:
o Fix warnings about AC_LANG_PROGRAM usage (f663112 Sebastian Hahn)
o Skip check for zlib if we have no zlib.h (a317c06 Harlan Stenn)
o Fix autoconf bracket issues; make check for getaddrinfo include netdb.h (833e5e9 Harlan Stenn)
o Correct an AM_CFLAGS to an AM_CPPFLAGS in test/Makefile.am (9c469db Dave Hart)
o Fix make distcheck & installation of libevent 1 headers (b5a1f9f Dave Hart)
o Fix compilation under LLVM/clang with --enable-gcc-warnings (ad9ff58 Sebastian Hahn)
FEATURES:
o Make URI parser able to tolerate nonconformant URIs. (95060b5)
DOCUMENTATION:
o Clarify event_set_mem_functions doc (926f816)
o Correct evhttp_del_accept_socket documentation on whether socket is closed (f665924)
o fix spelling mistake in whatsnew-2.0.txt (deb2f73)
o Fix sample/http-server ipv6 fixes (eb692be)
o Comment internal headers used in sample code. (4eb281c)
o Be explicit about how long event loops run in event.h documentation (f95bafb)
o Add comment to configure.in to explain gc-sections test logic (c621359)
o Fix a couple of memory leaks in samples/http-server.c. Found by Dave Hart. (2e9f665)
BUILD IMPROVEMENTS:
o Use the gcc -ffunction-segments feature to allow gc when linking with static libevent (0965c56 Dave Hart)
o Add configure options to disable installation, regression tests (49e9bb7 Dave Hart)
Changes in version 2.0.10-stable (16 Dec 2010)
[Autogenerated from the Git log, sorted and cleaned by hand.]
BUGFIXES
o Minor fix for IOCP shutdown handling fix (2599b2d Kelly Brock)
o Correctly notify the main thread when activating an event from a subthread (5beeec9)
o Reject overlong http requests early when Expect:100-continue is set (d23839f Constantine Verutin)
o EVUTIL_ASSERT: Use sizeof() to avoid "unused variable" warnings with -DNDEBUG. (b63ab17 Evan Jones)
CODE CLEANUPS
o bufferevent-internal.h: Use the new event2/util.h header, not evutil.h (ef5e65a Evan Jones)
o Use relative includes instead of system includes consistently. (fbe64f2 Evan Jones)
o Make whitespace more consistent
TESTING
o tests: Use new event2 headers instead of old compatibility headers. (4f33209 Evan Jones)
DOCUMENTATION
o Document that the cpu_hint is only used on Windows with IOCP for now (57689c4)
o Add stuff to "whats new in 2.0" based on reading include changes since August. (18adc3f)
Changes in 2.0.9-rc (30 Nov 2010):
[Autogenerated from the Git log, sorted and cleaned by hand.]
NEW AND MODIFIED APIs
o Add a function to change a listener's callback. (46ee061)
o Make evbuffer_add_file take ev_off_t, not off_t (ac7e52d)
o Make rate-limits go up to SIZE_MAX/EV_SSIZE_MAX, not just INT32_MAX (2cbb1a1)
o Add a bufferevent_get_base function (aab49b6)
MAJOR BUGFIXES
o Disable changelist for epoll by default because of Linux dup() bug; add an option and/or an envvar to reenable it for speed. (9531763)
o Fix a 100%-CPU bug where an SSL connection would sometimes never stop trying to write (1213d3d)
o Fix a nasty bug related to use of dup() with epoll on Linux (c281aba)
o Fix bugs in posix thread-id calculation when sizeof(pthread_t) != sizeof(long) (fbaf077)
o Fix some ints to evutil_socket_t; make tests pass on win64. (f817bfa Dimitre Piskyulev)
o Set _EVENT_SIZEOF_VOID_P correctly on win32 and win64 (1ae82cd Dimitre Piskyulev)
o Avoid double-invocation of user callback with EVUTIL_EAI_CANCEL (abf01ed)
o Set SO_UPDATE_ACCEPT_CONTEXT on sockets from AcceptEx so that shutdown() can work (52aa419)
o When closing a filtering bufferevent, clear callbacks on the underlying bufferevent (fc7b1b0)
NEW AND MODIFIED HTTP APIs
o Add evhttp_parse_query_str to be used with evhttp_uri_parse. (2075fbc)
o Add evhttp_response_code to remove one more reason to include http_struct.h (22e0a9b)
o Define enumerators for all HTTP methods, including PATCH from RFC5789 (75a7341 Felix Nawothnig)
o Functions to actually use evhttp_bound_socket with/as evconnlistener. (006efa7)
o Add evhttp_request_get_command so code can tell GET from POST without peeking at the struct. (49f4bf7)
o Introduce absolute URI parsing helpers. (86dd720 Pavel Plesov)
o Revise evhttp_uri_parse implementation to handle more of RFC3986 (eaa5f1d)
o Add evhttp_connection_get_base() to get the event_base from an http connection (cd00079)
o Let evhttp_parse_query return -1 on failure (b1756d0)
o New evhttp_uri(encode|decode) functions to handle + and NUL characters right (a8148ce)
o Add evhttp_response_code to remove one more reason to include http_struct.h (22e0a9b)
o Tweak interface for allowed methods (f5b391e)
o Add evhttp server alias interface, correct flagging of proxy requests. (aab8c38 Christopher Davis)
HTTP BUGFIXES
o Add some comments to http.c and make a few functions static. (90b3ed5)
o Fix Content-Length when trying send more than 100GB of data (!) on an evhttp. (525da3e)
o Fix a bug where we would read too much data in HTTP bodies or requests. (58a1cc6)
o Correctly count req->body_size on http usage without Content-Length (8e342e5)
o Avoid missed-request bug when entire http request arrives before data is flushed (74c0e86)
o reset "chunked" flag when sending non-chunked reply (aa5f55f Joachim Bauch)
o evhttp_encode_uri encodes all reserved characters, including !$'()*+,/:=@ (2e63a60)
o Replace exact-version checks for HTTP/1.1 with >= or < checks (647e094)
o evhttp: Return 501 when we get an unrecognized method, not 400. (536311a)
o Don't disable reading from the HTTP connection after sending the request to be notified of connection-close in time (c76640b Felix Nawothnig)
o Never call evhttp_readcb while writing. (0512487)
o Try to fix an assertion failure related to close detection (0faaa39)
o Correctly detect timeouts during http connects (04861d5)
o Preliminary support for Continue expectation in evhttp. (fa9305f Christopher Davis)
OTHER BUGFIXES
o Correct logic for realigning a chain in evbuffer_add (e4f34e8)
o Fix a minor syntax error that most compilers didn't care about (e56ff65)
o Fix some uses of int for socket in regress (5d389dc)
o Check return value for ioctlsocket on win32 (f5ad31c Trond Norbye)
o Fix som event_warns that should have been event_warnx (19c71e7)
o Fix signal handler types for win64. (b81217f)
o Try to clear up more size_t vs int/long issues. (598d133)
o Make sure IOCP evconnlistener uses virtual events. (7b40a00 Christopher Davis)
o Don't free evdns_request handles until after the callback is invoked (9ed30de)
o Fix some more cancel-related bugs in getaddrinfo_async (c7cfbcf)
o Make evdns_getaddrinfo_cancel threadsafe (d51b2fc)
o Only clear underlying callbacks when the user hasn't reset them. (1ac5b23)
o Fix bug in bufferevent_connect on an openssl bufferevent that already had an fd (4f228a1)
o Resolve an evport bug in the thread/forking test (3a67d0b)
o Make sure the CLOEXEC flag is set on fds we open for base notification (3ab578f)
o Fix IRIX build. sa_family collides with a #define in sys/socket.h on IRIX. (e874982 Kevin Bowling)
o If not WIN32, include <sys/socket.h> in event2/util.h. (1cd45e5 Kevin Bowling)
o Fix some C99-style comments to work with the xlC compiler. (c2e5e22 Kevin Bowling)
o Add some checks since lack of TAILQ_FOREACH doesn't imply lack of FIRST, END, NEXT, or INSERT_BEFORE. Quiet some warnings in XL C. (c4dc335 Kevin Bowling)
o Reworked AIX __ss_family workaround to use AC_STRUCT_MEMBER. (2e2a3d7 Kevin Bowling)
o Take select from <sys/select.h> when testing in autoconf. AIX build fix. (a3a9f6b Kevin Bowling)
o Fix snprintf related failures on IRIX. (3239073 Kevin Bowling)
o Remove _event_initialized(); make event_initialized() a function(); make it consistent on windows and non-windows (652024b)
o Do not let EVLOOP_ONCE exit the loop until all deferred callbacks have run (2d5e1bd)
o Make EVLOOP_ONCE ignore internal events (0617a81)
o Possible crash fix when freeing an underlying bufferevent of an openssl bufferevent (29f7623)
HTTP CLEANUPS
o Stop using Libevent-1 headers in regress_http (1f507d7)
o Modernize header usage in bench_http.c (e587069)
o fix signed/unsigned warnings in http.c (74a91e5)
o Update the HTTP regression tests to use Libevent2 apis for non-http stuff (d9ffa89)
o Start porting http tests to not use legacy interfaces (8505a74)
o Convert the rest of the http tests to be non-legacy unit tests. (9bb8239)
o Rename the confusing "base" static variable in regress_http.c (353402a)
o Stop accessing http request struct directly from in the unit tests. (0b137f4)
o Refactor http version parsing into a single function (a38140b)
TESTING
o Improvements to tinytest_macros.h (ad923a1)
o Add a huge pile of tests for the new URI functions, and make them pass. (a5a76e6)
o Unit tests for evhttp_uri_set* (bc98f5e)
o Increase the skew tolerance to 2 seconds in thread/deferred_cb_skew (f806476 Christopher Davis)
o Reorder backends in test.sh to match preference order in event.c (ece974f)
o Add a stress test for getaddrinfo_cancel (da1bf52)
o Units test for unexpected evhttp methods. (75e3320)
DOCUMENTATION
o Document behavior of URI parsing more thoroughly. (3a33462)
o Document that two bufferevent functions only work on socket bufferevents (70e1b60)
o add a requested docstring for event_rpcgen.CommandLine.__init__ (f1250eb)
o Fix a mistake in http documentation found by Julien Blache (229714d)
o Add a basic example of how to write a static HTTP server. (4e794d5)
o Document event_get_assignment (88be27d)
o Note that reentrant calls to libevent from logging cbs may fail badly (e431bcd)
o Clarify EVLOOP_* documentation to be more precise. (057a514)
CLEANUPS
o Simplify the logic for choosing EPOLL_CTL_ADD vs EPOLL_CTL_MOD (2c66983)
o Rename "size" variables in win32select that were really fd counts. (b6a158c)
o Fix even more win64 warnings (7484df6)
o Fix even more win64 warnings: buffer, event_tagging, http, evdns, evrpc (545a611)
o Fix more wn64 warnings. (34b84b9 Christopher Davis)
o Use the label_len local variable in evdns instead of recalculating it over and over (ba01456)
o Fix some irix compilation warnings spotted by Kevin Bowling (7bcace2)
Changes in 2.0.8-rc (14 Oct 2010):
[Autogenerated from the Git log, sorted and cleaned by hand.]
NEW APIS
o Add error callback to evconnlistener (c4be8d8 Simon Perreault)
o Add a LEV_OPT_THREADSAFE option for threadsafe evconnlisteners (127d4f2)
CHANGED BEHAVIOR
o Correct logic on disabling underlying bufferevents when disabling a filter (ac27eb8)
BUGFIXES
o Obey enabled status when unsuspending (040a019 Simon Perreault)
o Warn when using the error-prone EV_SIGNAL interface in an error-prone way. Also, fix a couple of race conditions in signal.c (720bd93)
O Make default signal backend fully threadsafe (95a7d41)
o Put internal events at highest priority (90651b3)
o Fix warnings in the main codebase flagged by -Wsigned-compare (9c8db0, 5e4bafb, 5c214a, 6be589a, e06f514)
o Fix compile in kqueue.c (b395392 Sebastian Hahn)
o Do not search outside of the system directory for windows DLLs (d49b5e3)
o Fix a spurious-call bug on epoll.c (0faaee0)
o Send a shutdown(SHUT_WR) before closing an http connection (e0fd870 Christopher Davis)
o Fix warnings on mingw with gcc 4.5 (5b7a370)
o Fix an EINVAL on evbuffer_write_iovec on OpenSolaris. (fdc640b)
o Fix allocation error for IOCP listeners. Probably harmless, since struct event is big (481ef92)
o Make iocp/listener/error work; don't accept again if lev is disabled. (62b429a Christopher Davis)
o Handle rate-limiting for reading on OpenSSL bufferevents correctly. (819b171)
o Fix serious bugs in per-bufferevent rate-limiting code (34d64f8)
o Avoid spurious reads from just-created open openssl bufferevents (223ee40)
o Fix a case where an ssl bufferevent with CLOSE_ON_FREE didn't close its fd (93bb7d8)
o The corrected bufferevent filter semantics let us fix our openssl tests (34331e4)
TESTING
o Make SSL tests cover enabling/disabling EV_READ. (a5ce9ad)
o Bump to the latest version of tinytest (f0bd83e)
o Unit tests for listener error callbacks (045eef4)
o New unit test for ssl bufferevents starting with connected SSLs. (02f6259)
DEBUGGABILITY
o Make debugging output for epoll backend more comprehensive (ec2b05e)
o Make event.c debugging messages report fds (e119899)
o Make the --enable-gcc-warnings option include signed comparison warnings (d3b096c)
DEADCODE REMOVAL
o Remove the now-useless evsig_caught and evsig_process (4858b79)
o Remove event_base.evsigbase; nothing used it. (38d0960)
Changes in 2.0.7-rc (9 Sep 2010):
[Autogenerated from the Git log, sorted and cleaned by hand.]
NEW APIS
o Expose a evdns_base_nameserver_sockaddr_add() function to add a nameserver by sockaddr (1952143)
o Add event_config_set_num_cpus_hint() for tuning win32 IOCP thread pools, etc. (2447fe8 Christopher Davis)
BUGFIXES
o Fix a nasty dangling-event bug when using rate-limiting groups (0bffe43)
o Clean up syntax on TAILQ_ENTRY() usage to build correctly with recent MSVC (60433a0 Gilad Benjamini)
o Make definition of WIN32_LEAN_AND_MEAN in event.h conditional (3920172 Gilad Benjamini)
o Correctly detect failure to delete bufferevent read-timeout event (da6e7cd)
o Set close-on-exec bit for filedescriptors created by dns subsystem (d0b8843)
o Fix kqueue correctness test on x84_64 (6123d12)
o Detect events with no ev_base; warn instead of crashing (f1074b7)
o Fix an issue with forking and signal socketpairs in select/poll backends (d61b2f3)
o Stop using global arrays to implement the EVUTIL_ctype functions (1fdec20)
o On windows, make lock/thread function tables static (5de2bcb)
o Close th_notify_fds and open a new pair on reinit (495ed66)
o Declare signal handler function as "__cdecl" on Windows (f0056d0)
o Use the _func() replacements for open, fstat, etc in evutil.c on win32 (e50c0fc)
o Only process up to MAX_DEFERRED deferred_cbs at a time (17a14f1 Christopher Davis)
THREADING BUGFIXES
o Avoid deadlock when activating signals (970e6ad)
o Add a condition variable backend, with implementations for pthreads and win32 (d4977b5)
o Use conditions instead of current_event_lock to fix a deadlock (e0972c2)
o Fix logic error in win32 TRY_LOCK that caused problems with rate-limiting (4c32b9d)
o Avoid needlessly calling evthread_notify_base() when the loop is not running (c7a06bf)
o Minimize calls to base_notify implementation functions, thereby avoiding needless syscalls (4632b78)
IOCP BUGFIXES
o IOCP-related evbuffer fixes (03afa20 Christopher Davis)
o Stop IOCP when freeing the event_base (d844242 Christopher Davis)
o Some IOCP bufferevent tweaks (76f7e7a Christopher Davis)
TESTS
o Make the regress_pthread.c tests work on windows with current test APIs (d74ae38)
o Add a unit test for conditions (5fb1095)
o Allow more than one copy of regression tests to run at once (a97320a)
o Fix event_del(0) instance in bench.c (b0f284c Shuo Chen)
o Fix a few memory leaks in the tests (1115366)
o IOCP-related unit test tweaks (499452f Christopher Davis)
o Improve testing of when thread-notification occurs (ce85280)
BUILD AND DISTRIBUTION
o Add pkgconfig files for libevent_{openssl,pthreads} (ebcb1f0)
o Change include order in Makefile.nmake (4022b28)
o Make include/event2/event-config.h not included in source dist (a4af9be)
o Honor NDEBUG; build without warnings with NDEBUG; make NDEBUG always-off in unit test code (743f866)
o Declare evkeyvalq and event_list even if event_struct.h comes before sys/queue.h (d3ceca8)
o Move evkeyvalq into a separate header for evhttp_parse_query users (ca9048f)
o Prefer autoreconf -ivf to manual autogen.sh (7ea8e89)
CLEANUP
o Completely remove the (mostly-removed) obsolete thread functions (3808168)
o Rename regress_pthread.c to regress_thread.c (041989f)
o Make defer-internal.h use lock macros, not direct calls to lock fns (5218d2a)
DOCUMENTATION
o Document that DNS_NO_SEARCH is an obsolete alias for DNS_QUERY_NO_SEARCH (33200e7)
o Update the whatsnew-2.0.txt document (4991669)
Changes in 2.0.6-rc (6 Aug 2010):
[Autogenerated from the Git log, sorted by hand.]
DOCUMENTATION
o Document a change in the semantics of event_get_struct_event_size() (e21f5d1)
o Add a comment to describe our plan for library versioning (9659ece)
o Fix sentence fragment in docs for event_get_struct_event_size() (7b259b6)
NEW FEATURES AND INTERFACE CHANGES
o Remove the obsolete evthread interfaces (c5bab56)
o Let evhttp_send_error infer the right error reasons (3990669)
o Add a function to retrieve the other side of a bufferevent pair (17a8e2d)
o Add bufferevent_lock()/bufferevent_unlock() (215e629)
o Stop asserting when asked for a (unsupported) TCP dns port. Just return NULL. (7e87a59)
o Replace (unused,always 0) is_tcp argument to evdns_add_server_port*() with flags (e1c1167)
o Constify a couple of arguments to evdns_server_request_add_*_reply (cc2379d)
o Add an interface to expose min_share in ratelimiting groups (6ae53d6)
BUGFIXES
o Avoid event_del on uninitialized event in event_base_free (6d19510)
o Add some missing includes to fix Linux build again (75701e8)
o Avoid close of uninitialized socket in evbuffer unit test (bda21e7)
o Correctly recognize .255 addresses as link-local when looking for interfaces (8c3452b)
o If no evdns request can be launched, return NULL, not a handle (b14f151)
o Use generic win32 interfaces, not ASCII-only ones, where possible. (899b0a3)
o Fix the default HTTP error template (06bd056 Felix Nawothnig)
o Close the file in evutil_read_file whether there's an error or not. (0798dd1 Pierre Phaneuf)
o Fix possible nullptr dereference in evhttp_send_reply_end() (29b2e23 Felix Nawothnig)
o never let bufferevent_rlim functions return negative (0859870)
o Make sample/hello_world work on windows (d89fdba)
o Fix a deadlock related to event-base notification. Diagnosed by Zhou Li, Avi Bab, and Scott Lamb. (17522d2)
o Possible fix to 100% cpu usage with epoll and openssl (cf249e7 Mike Smellie)
o Don't race when calling event_active/event_add on a running signal event (fc5e0a2)
o Suppress a spurious EPERM warning in epoll.c (e73cbde)
o Fix wrong size calculation of iovec buffers when exact=1 (65abdc2 niks)
o Change bufferevent_openssl::do_write so it doesn't call SSL_write with a 0 length buffer (c991317 Mike Smellie)
o Fixed compilation of sample/le-proxy.c on win32 (13b912e Trond Norbye)
o Fix rate-limit calculation on openssl bufferevents. (009f300)
o Remember to initialize timeout events for bufferevent_async (de1f5d6 Christopher Davis)
BUILD AND DISTRIBUTION CHANGES
o Test the unlocked-deferred callback case of bufferevents (dfb75ab)
o Remove the now-unusable EVTHREAD_LOCK/UNLOCK constants (fdfc3fc)
o Use -Wlogical-op on gcc 4.5 or higher (d14bb92)
o Add the libtool-generated /m4/* stuff to .gitignore (c21c663)
o Remove some automake-generated files from version control. (9b14911)
o Have autogen.sh pass --force-missing to automake (8a44062)
o Set library version for libevent_pthreads correctly (b2d7440)
o Really only add libevent_core.la to LIBADD on mingw (1425003 Sebastian Hahn)
o Build more cleanly with NetBSDs that dislike toupper(char) (42a8c71)
o Fix unit tests with -DUSE_DEBUG enabled (28f31a4)
o Fix evdns build with -DUNICODE (5fa30d2)
o Move event-config.h to include/event2 (ec347b9)
TESTING
o Add options to test-ratelim.c to check its results (2b44dcc)
o Make test-ratelim clean up after itself better. (b5bfc44)
o Remove the now-obsolete setup_test() and cleanup_test() functions (e73f1d7)
o Remove all non-error prints from test/regress.c (8bc1e3d)
o Make test.sh exit with nonzero status if tests fail (faf2a04)
o Have the unit tests report errors from test.sh (3689bd2)
o Fix logic in correcting high values from FIONREAD (3467f2f)
o Add test for behavior on remote socket close (44d57ee)
o Unit test for event_get_struct_event_size() (7510aac)
o Make test/test.sh call test-changelist (7c92691)
o Fix badly-behaved subtest of dns/bufferevent_connect_hostname (840a72f Joachim Bauch)
o Add option to test-ratelim to test min_share (42f6b62)
o Fix an assertion bug in test-ratelim (b2c6202)
o Make tests quieter on local dns resolver failure (e996b3d)
o Increase the tolerance in our unit tests for sloppy clocks. (170ffd2)
o Use AF_INET socketpair to test sendfile on Solaris (9b60209)
o Make test-changelist count cpu usage right on win32 (ea1ea3d)
INTERNALS, PERFORMANCE, AND CODE CLEANUPS
o Mark the event_err() functions as __attribute__((noreturn)) (33bbbed)
o Do not check that event_base is set in EVBASE_ACQUIRE_LOCK (218a3c3)
o Replace (safe) use of strcpy with memcpy to appease OpenBSD (caca2f4)
o Remove some dead assignments (47c5dfb)
o Fix a pedantic gcc 4.4 warning in event2/event.h (276e7ee)
o Drain th_notify_fd[0] more bytes at a time. (a5bc15b)
o Tidy up the code in evthread_make_base_notifiable a little (61e1eee)
o Pass flags to fcntl(F_SETFL) and fcntl(F_SETFD) as int, not long (7c2dea1)
o Remove unused variables in test/test-changelist.c (b00d4c0)
o Fix whitespace. (cb927a5)
o Improve error message for failed epoll to make debugging easier. (9e725f7)
o Turn our socketpair() replacement into its own function (57b30cd)
Changes in 2.0.5-beta (10 May 2010):
[Autogenerated from the Git log, sorted by hand.]
DOCUMENTATION
o Update all our copyright notices to say "2010" (17efc1c)
o Add Christopher Clark and Maxim Yegorushkin to the LICENSE file (38b7b57)
o Clarify Christopher Clark's status as writer of original ht code. (78772c3)
o Try to comment some of the event code more (cdd4c49)
o Add a few more evmap/changelist comments (c247adc)
o Add a comment to explain why evdns_request is now separte from request (ceefbe8)
o Document evutil_secure_rng_init() and evutil_secure_rng_add_bytes() (a5bf43a)
o Stop distributing and installing manpages: they were too inaccurate (7731ec8)
NEW FEATURES AND INTERFACE CHANGES
o Remove signal_assign() and signal_new() macros. (2fac0f7)
o Make evdns use the regular logging system by default (b2f2be6)
o Allow evbuffer_read() to split across more than 2 iovecs (e470ad3)
o Functions to manipulate existing rate limiting groups. (ee41aca)
o Functions to track the total bytes sent over a rate limit group. (fb366c1)
o Detect and refuse reentrant event_base_loop() calls (b557b17)
o Limit the maximum number of events on each socket to 65535 (819f949)
o Add evbuffer_copyout to copy data from an evbuffer without draining (eb86c8c)
o Expose the request and reply members of rpc_req_generic() (07edf78 Shuo Chen)
o Add void* arguments to request_new and reply_new evrpc hooks (755fbf1 Shuo Chen)
o Seed the RNG using sysctl() as well as /dev/urandom (71fc3eb)
o Make evutil_secure_rng_init() work even with builtin arc4random (f980716)
o Report DNS error when lookup fails during bufferevent_socket_connect_hostname. (0ef4070 Christopher Davis)
o Release locks on bufferevents while executing callbacks (a5208fe Joachim Bauch) o Make debug mode catch mixed ET and non-ET events on an fd (cb67074)
o Catch attempts to enable debug_mode too late (9ecf0d4)
o Refuse null keys in evhttp_parse_query() (953e229 Frank Denis)
BUGFIXES
o Avoid a spurious close(-1) on Linux (70a44b6)
o Do not close(-1) when freeing an uninitialized socket bufferevent (b34abf3)
o Free evdns_base->req_heads on evdns_base_free (859af67)
o Avoid an (untriggerable so far) crash bug in bufferevent_free() (0cf1431)
o Set mem_offset for every bufferevent type (657d1b6)
o Fix infrequent memory leak in bufferevent_init_common(). (8398641 Jardel Weyrich)
o Make evutil_signal_active() match declaration. (e1e703d Patrick Galbraith)
o Fix minheap code to use replacement malloc functions (a527618)
o Fix a free(NULL) in minheap-internal.h (6f20492)
o Fix critical bug in evbuffer_write when writev is not available (cda56ab)
o Make the no_iovecs case of write_atmost compile (8e227b0)
o Fix a memory leak when appending/prepending to a buffer with unused space. (45068a3)
o Clean up a mistake in pointer manipulation in evbuffer_remove (28bfed4 Christopher Davis)
o Always round up when there's a fractional number of msecs. (8f9e60c Christopher Davis)
o Fix compiler warnings under WIN32 (d469c50 Giuseppe Scrivano)
o Clean up properly when adding a signal handler fails. (b84b598 Gilad Benjamini) o Ensure that evdns_request is a persistent handle. (15bb82d Christopher Davis)
o Free search state when finished searching to avoid an infinite loop. (a625840 Christopher Davis)
o Assert for valid requests as necessary. (67072f3 Christopher Davis)
o do not leak the request object on persistent connections (9d8edf2)
o Make evdns logging threadsafe (b1c7950)
o Fix a couple of bugs in the BSD sysctl arc4seed logic (a47a4b7)
o Remove one last bug in last_with_datap logic. Found with valgrind (d49b92a)
o fix a leak when unpausing evrpc requests (94ee125)
o Fix a memory leak when unmarshalling RPC object arrays (f6ab2a2)
o Fix compilation when openssl support is disabled (40c301b)
o Allow empty reason line in HTTP status (739e688 Pierre Phaneuf)
o Fix a compile warning introduced in 739e688 (bd1ed5f Sebastian Hahn)
o Fix nonstandard TAILQ_FOREACH_REVERSE() definition (71afc52 Frank Denis)
o Try /proc on Linux as entropy fallback; use sysctl as last resort (20fda29)
o Fix symbol conflict between mm_*() macros and libmm (99e50e9)
o Fix some crazy macro mistakes in arc4random.c (90d4225)
o Make evbuffer_add_file() work on windows (dcdae6b)
o Fix unused-variable warning when building with threads disabled (ad811cd)
o Numerous opensolaris compilation fixes (c44de06)
o Fix getaddrinfo with protocol unset on Solaris 9. Found by Dagobert Michelsen (2cf2a28)
o Fix another nasty solaris getaddrinfo() behavior (3557071)
o Define _REENTRANT as needed on Solaris, elsewhere (c1cd32a)
o Fix some autoconf issues on OpenBSD (7c519df)
BUILD AND DISTRIBUTION CHANGES
o Distribute libevent.pc.in, not libevent.pc (22aff04)
o Avoid errors in evutil.c when building with _UNICODE defined (b677032 Brodie Thiesfield)
o Avoid errors in http.c when building with VC 2003 .NET (13e4f3b Brodie Thiesfield)
o Support the standard 'make check' target in place of 'make verify' (426c8fb)
o Remove redundant stuff from EXTRA_DIST (b660edf)
o Switch to using AM conditionals in place of AC_LIBOBJ (2e898f5)
o Remove an orphaned RELEASE flag in Makefile.am (0794b0d)
o Give a better warning for bad automake versions. (77c917d)
o Use dist_bin_SCRIPTS, not EXTRA_DIST, to distribute scripts (9eb2fd7)
o Never test for select() on windows (3eb044d Trond Norbye)
o Do not inhibit automake dependencies generation (10c4c90 Giuseppe Scrivano)
o Create shared libraries under Windows (3cbca86 Giuseppe Scrivano)
o Add ctags/etags files to .gitignore (0861d17)
o Only specify -no-undefined on mingw (25433b9)
o Only add libevent_core.la to LIBADD on mingw (fdc6297)
TESTING
o Get bench_http to work on Windows; add a switch to enable IOCP. (4ac38a5 Christopher Davis)
o VC has no getopt(), so do without in bench_http. (1273d2f Christopher Davis)
o Fix an obnoxious typo in the bufferevent_timeout_filter test (0d047c3)
o Fix a write of uninitialized RAM in regression tests (68dc742)
o Fix some memory leaks in the unit tests (274a7bd)
o Make 'main/many_events' test 70 fds, not 64. (33874b0)
o Unit-test every evbuffer_add_file() implementation. (06a4443)
o Add more unit tests for evbuffer_expand (8c83e99)
o Test another case of evbuffer_prepend (1234b95)
o Fix a possible double-free bug in SSL bufferevents with CLOSE_ON_FREE (7501895) o Add dns/search_cancel unit test. (39b870b Christopher Davis)
o Make http_base_test stop leaking an event_base. (96730d3)
o Detect broken unsetenv at unit-test runtime (f37cd4c)
o Implement regress_make_tempfile on win32 to test evbuffer_add_file (b4f12a1)
o add more (currently skipped) add_file tests on win32 (05de45d)
o Fix bench_http build on win32. (384d124)
o Make unit test for add_file able to tell "error" from "done" (88a543f)
o Make test for bufferevent_connect_hostname system-neutral (f89168e)
o Make test.sh support mingw/msys on win32 (0ee6f6c)
o Fix test.sh on freebsd (3d9e05b)
INTERNALS, PERFORMANCE, AND AND CODE CLEANUPS
o Improve the speed of evbuffer_readln() (cc1600a)
o more whitespace normalization (2c2618d)
o Revise evbuffer to add last_with_data (2a6d2a1)
o Use last_with_data in place of previous_to_last (c8ac57f)
o Remove previous_to_last from evbuffer (6f47bd1)
o Fix last_with_data compilation on windows (1e7b986)
o Add some glass-box tests for the last_with_data code. (17da042)
o Improve robustness for refcounting (f1bc125)
o Remove a needless min_heap_shift_up_() call (7204b91)
o Increase MIN_BUFFER_SIZE to 512 (1024 on 64-bit) (2014ae4)
o Do not use evbuffer_expand() to add the first chain to a buffer (5c0ebb3)
o Make evbuffer_prepend handle empty buffers better (c87272b)
o Replace last_with_data with a slightly smarter version (b7442f8)
o Turn the increasingly complex *_CHAIN() macros into functions (96865c4)
o Rewrite evbuffer_expand and its users (d5ebcf3)
o Add evutil_tv_to_msec for safe conversion of timevals to milliseconds. (850c3ff Christopher Davis)
o Initialize last_with_datap correctly in evbuffer_overlapped (a0983b6)
o Replace EVUTIL_CLOSESOCKET macro with a function (899c1dc Sebastian Sjöberg)
o Move domain search state to evdns_request. (beaa14a Christopher Davis)
o Remove redundant checks for lock!=NULL before calling EVLOCK_LOCK (50ec59f)
o Rename current_base symbol to event_global_current_base_ (c16e684)
o Fix whitespace in evutil.c (935e150)
o Replace users of "int fd" with "evutil_socket_t fd" in portable code (c7cf6f0)
Changes in 2.0.4-alpha (28 Feb 2010):
[Autogenerated from the Git log, sorted by hand.]
DOCUMENTATION
o Add stub header for 2.0.4-alpha changelog. (94d0065)
o Improve the README with more information and links. (0b42726)
o Add more people who wrote patches to the acknowledgments (0af10d5)
o Add a warning about the use of event_initialized. (f32b575)
o Add a LICENSE file so people can find our license easily (7067006)
o Add a new "hello world" sample program (becb9f9)
o Clarify status of example programs (d60a1bd)
o Update time-test.c to use event2 (f4190bf)
o Add the arc4random.c license to the LICENSE file. (e15e1e9)
NEW FEATURES AND INTERFACE CHANGES
o Improved optional lock debugging. (0cd3bb9)
o Rate-limiting for bufferevents; group and individual limits are supported. (737c9cd)
o Testing code for bufferevent rate-limiting. (f0c0124)
o Make the initial nameserver probe timeout configurable. (1e56a32)
o Revise the locking API: deprecate the old locking callbacks and add trylock. (347952f)
o Do not make bufferevent_setfd implicitly disable EV_READ and EV_WRITE. (8274379)
o Do not ignore bufferevent_enable(EV_READ) before bufferevent_connect(). (4a5b534)
o Introduced evutil_make_socket_closeonexec() to preserve fd flags for F_SETFD. (d0939d2 Jardel Weyrich)
o evdns_getaddrinfo() now supports the /etc/hosts file. (72dd666)
o Look at the proper /etc/hosts file on windows. (66c02c7)
o Allow http connections to use evdns for hostname looksups. (c698b77)
o Changelist code to defer event changes until just before dispatch (27308aa)
o do not use a function to assign the evdns base; instead assign it via evhttp_connection_base_new() which is a new function introduced in 2.0 (5032e52)
o Functions to access more fields of struct event. (0683950)
o Make kqueue use changelists. (45e5ae3)
o Remove kqueue->pend_changes. (3225dfb)
o Minimize epoll_ctl calls by using changelist (c8c6a89)
o Add support for a "debug mode" to try to catch common errors. (cd17c3a)
o Note a missing ratelim function (361da8f)
o Add ev_[u]intptr_t to include/event2/util.h (1fa4c81)
o const-ify a few more functions in event.h (d38a7a1)
o Deprecate EVENT_FD and EVENT_SIGNAL. (f6b2694)
o Remove EVUTIL_CHECK_FMT. (6c21c89)
o Add EV_*_MAX macros to event2/util.h to expose limits for ev_* types. (aba1fff) o Functions to view and manipulate rate-limiting buckets. (85047a6)
o Add the rest of the integer limits, and add a test for them. (60742d5)
o Remove the 'flags' argument from evdns_base_set_option() (1dd7e6d)
o Add an arc4random implementation for use by evdns (d4de062)
o Use off_t for the length parameter of evbuffer_add_file (3fe60fd)
o Construct Windows locks using InitializeCriticalSectionAndSpinCount (32c6f1b)
o Expose view of current rate limit as constrained by group limit (162ce8a)
o Provide consistent, tested semantics for bufferevent timeouts (d328829)
BUGFIXES AND TESTS
o Tolerate code that returns from a fatal_cb. (91fe23f)
o Parenthesize macro arguments more aggressively (07e9e9b)
o Fix memory-leak of signal handler array with kqueue. (e1ffbb8)
o Stop passing EVTHREAD_READ and EVTHREAD_WRITE to non-rw locks. (76cd2b7)
o Fix two use-after-free bugs in unit tests spoted by lock debugging (d84d838)
o Fix a locking bug in event_base_loop() (da1718b)
o Fix an evdns lock violation. (2df1f82 Zhuang Yuyao)
o Valgrind fix: Clear struct kevent before checking for OSX bug. (56771a3 William Ahern)
o Fix up evthread compilation on windows (bd6f1ba Roman Puls)
o Fix regress_iocp.c usage of old lock allocation macros. (31687b4 unknown)
o Update nmake makefile to build evthread.c (b62d979 unknown)
o Fix a crash when reading badly formatted resolve.conf; from Yasuoka Masahiko (6c7c579 Yasuoka Masahiko)
o Fix a snow leopard compile warning in the unit tests. (7ae9445)
o Fix compile on Snow Leopard with gcc warnings enabled (70cdfe4 Sebastian Hahn)
o Only define _GNU_SOURCE if it is not already defined. (ea6b1df Joachim Bauch)
o Update sample/signal-test.c to use newer APIs and not leak. (f6430ac Evan Jones)
o Fix a segfault when writing a very fragmented evbuffer onto an SSL (a6adeca Joachim Bauch)
o Fix a segfault when freeing SSL bufferevents in an unusual order (a773df5 Joachim Bauch)
o Drop install-sh from our git repo: a mismatched version could break "make dist" (6799527)
o Set all instances of the version number correctly. (5a112d3)
o Fix a few locking issues on windows. (c51bb3c unknown)
o Use evutil_socket_t, not int, when logging socket errors. (292467c)
o Fix up behavior of never-defered callbacks a little (390e056)
o Replace some cases of uint32_t with ev_uint32_t. (a47d88d)
o Fix compilation of devpoll.c by adding missing thread includes. (fee2c77 Dagobert Michelsen)
o Make evutil_make_socket_nonblocking() leave any other flags alone. (4c8b7cd Jardel Weyrich)
o Fix an fd leak in evconnlistener_new_bind(). (24fb502 Jardel Weyrich)
o Fix a bogus free in evutil_new_addrinfo() (0d64051 Jardel Weyrich)
o Adjusted fcntl() retval comparison on evutil_make_socket_nonblocking(). (4df7dbc Jardel Weyrich)
o Fix the code that allowed DNS options to not end with : (ee4953f)
o Fix crash bugs when a bufferevent's eventcb is not set. (2e8eeea)
o Fix test-ratelim compilation on Linux. (885b427)
o Fix compilation of rate-limiting code on win32. (165d30e)
o Eradicated the last free() call. Let mm_free() take care of deallocation. (0546ce1 Jardel Weyrich)
o Fix byte counts when mixing deferred and non-deferred evbuffer callbacks. (29151e6)
o Fixed a memory leak on windows threads implementation. The CRITICAL_SECTION was not being free'd in evthread_win32_lock_free(). (2f33e00 Jardel Weyrich)
o Fixed a fd leak in start_accepting(), plus cosmetic changes (4367a33 Jardel Weyrich)
o Improved error handling in evconnlistener_new_async(). Also keeping the fd open because it is not opened by this function, so the caller is responsible for closing it. Additionally, since evconnlistener_new_bind() creates a socket and passes it to the function above, it required error checking to close the same socket. (fec66f9 Jardel Weyrich)
o Don't use a bind address for nameservers on loopback (8d4aaf9)
o Fix compilation of rate-limit code when threading support is disabled (97a8c79)
o Detect setenv/unsetenv; skip main/base_environ test if we can't fake them. (7296971)
o Check more internal event_add() calls for failure (ff3f6cd)
o Fix windows and msvc build (5c7a7bc)
o Call event_debug_unassign on internal events (a19b4a0)
o Try to fix a warning in hash_debug_entry (137f2c6)
o Fix a dumb typo in ev_intptr_t definitions. (27c9a40)
o do not fail while sending on http connections the client closed. (93d7369)
o make evhttp_send() safe against terminated connections, too (3978180)
o Make Libevent 1.4.12 build on win32 with Unicode enabled. (000a33e Brodie Thiesfield)
o Fix some additional -DUNICODE issues on win32. (a7a9431)
o Add a check to make soure our EVUTIL_AI flags do not conflict with the native ones (c18490e)
o Always use our own gai_strerror() replacement. (6810bdb)
o Make RNG work when we have arc4random() but not arc4random_buf() (4ec8fea)
o validate close cb on server when client connection closes (2f782af)
o Fix two unlocked reads in evbuffer. (7116bf2)
o When working without a current event base, don't try to use IOCP listeners (cb52838)
o Fix getpid() usage on Windows (ff2a134)
o Add a unit test for secure rng. (48a29b6)
o Add some headers to fix freebsd compilation (b72be50)
o When connect() succeeds immediately, don't invoke the callback immediately. (7515de9)
o Suspend read/write on bufferevents during hostname lookup (db08f64)
o Make bufferevent_free() clear all callbacks immediately. (b2fbeb3)
o Fix some race conditions in persistent events and event_reinit (e2642f0)
o Fix a bug in resetting timeouts on persistent events when IO triggers. (38ec0a7)
o Add a test for timeouts on filtering bufferevents. (c02bfe1)
o Add test for periodic timers that get activated for other reasons (8fcb7a1)
o Use new timeval diff comparison function in bufferevent test (f3dfe46)
o Delete stack-alloced event in new unit test before returning. (7ffd387)
o Fix mingw compilation (23170a6)
o Try to define a sane _EVENT_SIZEOF_SIZE_T for msvc compilation (1e14f82)
o Fix arc4random compilation on MSVC. (98edb89)
o deal with connect() failing immediately (7bc48bf)
o Small cleanups on freebsd-connect-refused patch. (57b7248)
BUILD AND DISTRIBUTION CHANGES
o Remove the contents of WIN32-Prj as unmaintained. (c69d5a5)
o Allow the user to redirect the verbose output of test/test.sh to a file (c382de6)
o Allow test.sh to be run as ./test/test.sh (7dfbe94)
o Never believe that we have pthreads on win32, even if gcc thinks we do. (78ed097)
o Make it compile under gcc --std=c89. (e2ca403)
o Fix a number of warnings from gcc -pedantic (918e9c5)
o Add the msvc-generated .lib files to .gitignore. (e244a2e)
o Add the "compile" script to gitignore. (1ba6bed)
INTERNALS AND CODE CLEANUPS
o Add a .gitignore file. (ba34071)
o New EVTHREAD_TRY_LOCK function to try to grab a lock. (689fc09)
o Add the abilitity to mark some buffer callbacks as never-deferred. (438f9ed)
o Refactor our 'suspend operation' logic on bufferevents. (0d744aa)
o Simplify the read high-watermark checking. (5846bf6)
o Improve readability of evutil_unparse_protoname() (5a43df8 Jardel Weyrich)
o Expose our cached gettimeofday value with a new interface (47854a8)
o Whitespace fixes in test.sh (0b151a9)
o Enable branch-prediction hints with EVUTIL_UNLIKELY. (eaaf27f)
o Refactor code from evdns into a new internal "read a file" function. (0f7144f)
o Comestic changes in evconnlistener_new(), new_accepting_socket(), accepted_socket_invoke_user_cb() and iocp_listener_enable(). (510ab6b Jardel Weyrich)
o Add unit-test for bad_request bug fixed in 1.4 recently. (6cc79c6 Pavel Plesov) o Add a comment on evthread_enable_lock_debuging. (b9f43b2)
o Fix test.sh on shells without echo -n (94131e9)
o More unit tests for getaddrinfo_async: v4timeout and cancel. (a334b31)
o Make http use evconnlistener. (ec34533)
o move dns utility functions into a separate file so that we can use them for http testing (b822639)
o add a test for evhttp_connection_base_new with a dns_base (26714ca)
o forgot to add void to test function (78a50fe)
o Add a forgotten header (changelist-internal.h) (4b9f307)
o Remove some commented-out code in evutil (26e1b6f)
o Remove a needless include of rpc_compat.h (70a4a3e)
o Use less memory for each entry in a hashtable (a66e947)
o Try to untangle the logic in server_port_flush(). (439aea0)
o Use ev_[u]intptr_t types in place of [u]intptr_t (cef61a2)
o Reduce windows header includes in our own headers. (da6135e)
o clean up terminate_chunked test (e8a9782)
o Increment the submicro version number. (63e868e)
o Update event-config.h version number to match configure.in (aae7db5)
o Clean up formatting: Disallow space-before-tab. (8fdf09c)
o Clean up formatting: use tabs, not 8-spaces, to indent. (e5bbd40)
o Clean up formatting: remove trailing spaces (e5cf987)
o Clean up formatting: function/keyword spacing consistency. (4faeaea)
Changes in 2.0.3-alpha (20 Nov 2009):
o Add a new code to support SSL/TLS on bufferevents, using the OpenSSL library (where available).
o Fix a bug where we didn't allocate enough memory in event_get_supported_methods().
o Avoid segfault during failed allocation of locked evdns_base. (Found by Rocco Carbone.)
o Export new evutil_ascii_* functions to perform locale-independent character type operations.
o Try to compile better with MSVC: patches from Brodie Thiesfield
o New evconnlistener_get_fd function to expose a listener's associated socket.
o Expose an ev_socklen_t type for consistent use across platforms.
o Make bufferevent_socket_connect() work when the original fd was -1.
o Fix a bug in bufferevent_socket_connect() when the connection succeeds too quickly.
o Export an evutil_sockaddr_cmp() to compare to sockaddr objects for equality.
o Add a bufferevent_get_enabled() to tell what a bufferevent has been configured to do.
o Add an evbuffer_search_eol() function to locate the end of a line nondestructively.
o Add an evbuffer_search_range() function to search a bounded range of a buffer.
o Fix a rare crash bug in evdns.
o Have bufferevent_socket_connect() with no arguments put a bufferevent into connecting mode.
o Support sendfile on Solaris: patch from Caitlin Mercer.
o New functions to explicitly reference a socket used by an evhttp object. Patches from David Reiss.
o When we send a BEV_EVENT_CONNECTED to indicate connected status, we no longer invoke the write callback as well unless we actually wrote data too.
o If the kernel tells us that there are a negative number of bytes to read from a socket, do not believe it. Fixes bug 2841177; found by Alexander Pronchenkov.
o Do not detect whether we have monotonic clock support every time a new event base is created: instead do it only once. Patch taken from Chromium.
o Do not allocate the maximum event queue for the epoll backend at startup. Instead, start out accepting 32 events at a time, and double the queue's size when it seems that the OS is generating events faster than we're requesting them. Saves up to 374K per epoll-based event_base. Resolves bug 2839240.
o Treat an event with a negative fd as valid but untriggerable by Libevent. This is useful for applications that want to manually activate events.
o Fix compilation on Android, which forgot to define fd_mask in its sys/select.h
o Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
o New event_base_got_exit() and event_base_got_break() functions to tell whether an event loop exited because of an event_base_loopexit() or an event_base_loopbreak(). Patch from Ka-Hing Cheung.
o When adding or deleting an event from a non-main thread, only wake up the main thread when its behavior actually needs to change.
o Fix some bugs when using the old evdns interfaces to initialize the evdns module.
o Detect errors during bufferevent_connect(). Patch from Christopher Davis.
o Fix compilation for listener.h for C++ - missing extern "C". Patch from Ferenc Szalai.
o Make the event_base_loop() family of functions respect thread-safety better. This should clear up a few hard-to-debug race conditions.
o Fix a bug when using a specialized memory allocator on win32.
o Have the win32 select() backend label TCP-socket-connected events as EV_WRITE, not EV_READ. This should bring it in line with the other backends, and improve portability. Patch from Christopher Davis.
o Stop using enums as arguments or return values when what we mean is a bitfield of enum values. C++ doesn't believe that you can OR two enum values together and get another enum, and C++ takes its typing seriously. Patch from Christopher Davis.
o Add an API to replace all fatal calls to exit() with a user-provided panic function.
o Replace all assert() calls with a variant that is aware of the user-provided logging and panic functions.
o Add a return value to event_assign so that it can fail rather than asserting when the user gives it bad input. event_set still dies on bad input.
o The event_base_new() and event_base_new_with_config() functions now never call exit() on failure. For backward "compatibility", event_init() still does, but more consistently.
o Remove compat/sys/_time.h. It interfered with system headers on HPUX, and its functionality has been subsumed by event2/util.h and util-internal.h.
o Add a new bufferevent_socket_connect_hostname() to encapsulate the resolve-then-connect operation.
o Build kqueue.c correctly on GNU/kFreeBSD platforms. Patch pulled upstream from Debian.
o Alternative queue-based timeout algorithm for programs that use a large number of timeouts with the same value.
o New event_base_config option to disable the timeval cache entirely.
o Make EV_PERSIST timeouts more accurate: schedule the next event based on the scheduled time of the previous event, not based on the current time.
o Allow http.c to handle cases where getaddrinfo returns an IPv6 address. Patch from Ryan Phillips.
o Fix a problem with excessive memory allocation when using multiple event priorities.
o Default to using arc4random for DNS transaction IDs on systems that have it; from OpenBSD.
o Never check the environment when we're running setuid or setgid; from OpenBSD.
o Options passed to evdns_set_option() no longer need to end with a colon.
o Add an evutil_getaddrinfo() function to clone getaddrinfo on platforms that don't have it.
o Add an evdns_getaddrinfo() function to provide a nonblocking getaddrinfo using evdns, so programs can perform useful hostname lookup.
o Finally expose the IOCP-based bufferevent backend. It passes its unit tests, but probably still has some bugs remaining. Code by Nick Mathewson and Christopher Davis.
o Numerous other bugfixes.
o On FreeBSD and other OSes, connect can return ECONREFUSED immediately; instead of failing the function call, pretend with faileld in the callback.
o Fix a race condition in the pthreads test case; found by Nick Mathewson
o Remove most calls to event_err() in http and deal with memory errors instead
Changes in 2.0.2-alpha (25 Jul 2009):
o Add a new flag to bufferevents to make all callbacks automatically deferred.
o Make evdns functionality locked, and automatically defer dns callbacks.
o Fix a possible free(NULL) when freeing an event_base with no signals.
o Add a flag to disable checking environment varibles when making an event_base
o Disallow setting less than 1 priority.
o Fix a bug when removing a timeout from the heap. [Patch from Marko Kreen]
o Use signal.h, not sys/signal.h. [Patch from mmadia]
o Try harder to build with certain older c99 compilers.
o Make sure that an event_config's flags field is always initialized to 0. [Bug report from Victor Goya]
o Avoid data corruption when reading data entirely into the second-to-last chain of an evbuffer. [Bug report from Victor Goya]
o Make sendfile work on FreeBSD
o Do not use vararg macros for accessing evrpc structures; this is not backwards compatible, but we did not promise any backwards compatibility for the rpc code.
o Actually define the event_config_set_flag() function.
o Try harder to compile with Visual C++.
o Move event_set() and its allies to event2/event_compat.h where they belong.
o Remove the event_gotsig code, which has long been deprecated and unused.
o Add an event_get_base() function to return the base assigned to an event.
o New function to automate connecting on a socket-based bufferevent.
o New functions to automate listening for incoming TCP connections.
o Do case-insensitive checks with a locale-independent comparison function.
o Rename the evbuffercb and everrorcb callbacks to bufferevent_data_cb and bufferevent_event_cb respectively. The old names are available in bufferevent_compat.h.
o Rename the EVBUFFER_* codes used by bufferevent event callbacks to BEV_EVENT_*, to avoid namespace collision with evbuffer flags. The old names are available in bufferevent_compat.h.
o Move the EVBUFFER_INPUT and EVBUFFER_OUTPUT macros to bufferevent_compat.h
o Add a bufferevent_getfd() function to mirror bufferevent_setfd()
o Make bufferevent_setfd() return an error code if the operation is not successful.
o Shave 22 bytes off struct event on 32-bit platforms by shrinking and re-ordering fields. The savings on 64-bit platforms is likely higher.
o Cap the maximum number of priorities at 256.
o Change the semantics of evbuffer_cb_set_flags() to be set-flag only; add a new evbuffer_cb_clear_flags() to remove set flags.
o Change the interface of evbuffer_add_reference so that the cleanup callback gets more information
o Revise the new evbuffer_reserve_space/evbuffer_commit_space() interfaces so that you can use them without causing extraneous copies or leaving gaps in the evbuffer.
o Add a new evbuffer_peek() interface to inspect data in an evbuffer without removing it.
o Fix a deadlock when suspending reads in a bufferevent due to a full buffer. (Spotted by Joachim Bauch.)
o Fix a memory error when freeing a thread-enabled event base with registered events. (Spotted by Joachim Bauch.)
o Try to contain degree of failure when running on a win32 version so heavily firewalled that we can't fake a socketpair.
o Activate fd events in a pseudorandom order with O(N) backends, so that we don't systematically favor low fds (select) or earlier-added fds (poll, win32).
o Replace some read()/write() instances with send()/recv() to work properly on win32.
o Set truncated flag correctly in evdns server replies.
o Raise RpcGenError in event_rpcgen.py; from jmanison and Zack Weinberg
o Fix preamble of rpcgen-generated files to rely on event2 includes; based on work by jmansion; patch from Zack Weinberg.
o Allow specifying the output filename for rpcgen; based on work by jmansion; patch from Zack Weinberg.
o Allow C identifiers as struct names; allow multiple comments in .rpc files; from Zack Weinberg
o Mitigate a race condition when using socket bufferevents in multiple threads.
o Use AC_SEARCH_LIBS, not AC_CHECK_LIB to avoid needless library use.
o Do not allow event_del(ev) to return while that event's callback is executing in another thread. This fixes a nasty race condition.
o event_get_supported_methods() now lists methods that have been disabled with the EVENT_NO* environment options.
o Rename encode_int[64] to evtag_encode_int[64] to avoid polluting the global namespace. The old method names are still available as macros in event2/tag_compat.h.
Changes in 2.0.1-alpha (17 Apr 2009):
o free minheap on event_base_free(); from Christopher Layne
o debug cleanups in signal.c; from Christopher Layne
o provide event_base_new() that does not set the current_base global
o bufferevent_write now uses a const source argument; report from Charles Kerr
o improve documentation on event_base_loopexit; patch from Scott Lamb
o New function, event_{base_}loopbreak. Like event_loopexit, it makes an event loop stop executing and return. Unlike event_loopexit, it keeps subsequent pending events from getting executed. Patch from Scott Lamb
o Check return value of event_add in signal.c
o provide event_reinit() to reintialize an event_base after fork
o New function event_set_mem_functinons. It allows the user to give libevent replacement functions to use for memory management in place of malloc(), free(), etc. This should be generally useful for memory instrumentation, specialized allocators, and so on.
o The kqueue implementation now catches signals that are raised after event_add() is called but before the event_loop() call. This makes it match the other implementations.
o The kqueue implementation now restores original signal handlers correctly when its signal events are removed.
o Check return value of event_add in signal.c
o Add a more powerful evbuffer_readln as a replacement for evbuffer_readline. The new function handles more newline styles, and is more useful with buffers that may contain a nul characters.
o Do not mangle socket handles on 64-bit windows.
o The configure script now takes an --enable-gcc-warnings option that turns on many optional gcc warnings. (Nick has been building with these for a while, but they might be useful to other developers.)
o move EV_PERSIST handling out of the event backends
o small improvements to evhttp documentation
o always generate Date and Content-Length headers for HTTP/1.1 replies
o set the correct event base for HTTP close events
o When building with GCC, use the "format" attribute to verify type correctness of calls to printf-like functions.
o Rewrite win32.c backend to be O(n lg n) rather than O(n^2).
o Removed obsoleted recalc code
o support for 32-bit tag numbers in rpc structures; this is wire compatible, but changes the API slightly.
o pull setters/getters out of RPC structures into a base class to which we just need to store a pointer; this reduces the memory footprint of these structures.
o prefix {encode,decode}_tag functions with evtag to avoid collisions
o fix a bug with event_rpcgen for integers
o Correctly handle DNS replies with no answers set (Fixes bug 1846282)
o add -Wstrict-aliasing to warnings and more cleanup
o removed linger from http server socket; reported by Ilya Martynov
o event_rpcgen now allows creating integer arrays
o support string arrays in event_rpcgen
o change evrpc hooking to allow pausing of RPCs; this will make it possible for the hook to do some meaning ful work; this is not backwards compatible.
o allow an http request callback to take ownership of a request structure
o allow association of meta data with RPC requests for hook processing
o associate more context for hooks to query such as the connection object
o remove pending timeouts on event_base_free()
o also check EAGAIN for Solaris' event ports; from W.C.A. Wijngaards
o devpoll and evport need reinit; tested by W.C.A Wijngaards
o event_base_get_method; from Springande Ulv
o Send CRLF after each chunk in HTTP output, for compliance with RFC2626. Patch from "propanbutan". Fixes bug 1894184.
o Add a int64_t parsing function, with unit tests, so we can apply Scott Lamb's fix to allow large HTTP values.
o Use a 64-bit field to hold HTTP content-lengths. Patch from Scott Lamb.
o Allow regression code to build even without Python installed
o remove NDEBUG ifdefs from evdns.c
o detect integer types properly on platforms without stdint.h
o udpate documentation of event_loop and event_base_loop; from Tani Hosokawa.
o simplify evbuffer by removing orig_buffer
o do not insert event into list when evsel->add fails
o add support for PUT/DELETE requests; from Josh Rotenberg
o introduce evhttp_accept_socket() to accept from an already created socket
o include Content-Length in reply for HTTP/1.0 requests with keep-alive
o increase listen queue for http sockets to 128; if that is not enough the evhttp_accpet_socket() api can be used with a prepared socket.
o Patch from Tani Hosokawa: make some functions in http.c threadsafe.
o test support for PUT/DELETE requests; from Josh Rotenberg
o rewrite of the evbuffer code to reduce memory copies
o Some older Solaris versions demand that _REENTRANT be defined to get strtok_r(); do so.
o Do not free the kqop file descriptor in other processes, also allow it to be 0; from Andrei Nigmatulin
o Provide OpenSSL style support for multiple threads accessing the same event_base
o make event_rpcgen.py generate code include event-config.h; reported by Sam Banks.
o switch thread support so that locks get allocated as they are needed.
o make event methods static so that they are not exported; from Andrei Nigmatulin
o make RPC replies use application/octet-stream as mime type
o do not delete uninitialized timeout event in evdns
o Correct the documentation on buffer printf functions.
o Don't warn on unimplemented epoll_create(): this isn't a problem, just a reason to fall back to poll or select.
o Correctly handle timeouts larger than 35 minutes on Linux with epoll.c. This is probably a kernel defect, but we'll have to support old kernels anyway even if it gets fixed.
o Make name_from_addr() threadsafe in http.c
o Add new thread-safe interfaces to evdns functions.
o Make all event_tagging interfaces threadsafe.
o Rename internal memory management functions.
o New functions (event_assign, event_new, event_free) for use by apps that want to be safely threadsafe, or want to remain ignorant of the contents of struct event.
o introduce bufferevent_read_buffer; allows reading without memory copy.
o expose bufferevent_setwatermark via header files and fix high watermark on read
o fix a bug in buffrevent read water marks and add a test for them
o fix a bug in which bufferevent_write_buffer would not schedule a write event
o provide bufferevent_input and bufferevent_output without requiring knowledge of the structure
o introduce bufferevent_setcb and bufferevent_setfd to allow better manipulation of bufferevents
o convert evhttp_connection to use bufferevents.
o use libevent's internal timercmp on all platforms, to avoid bugs on old platforms where timercmp(a,b,<=) is buggy.
o Remove the never-exported, never-used evhttp_hostportfile function.
o Support input/output filters for bufferevents; somewhat similar to libio's model. This will allow us to implement SSL, compression, etc, transparently to users of bufferevents such as the http layer.
o allow connections to be removed from an rpc pool
o add new evtimer_assign, signal_assign, evtimer_new, and signal_new functions to manipulate timer and signal events, analagous to the now-recommended event_assign and event_new
o switch internal uses of event_set over to use event_assign.
o introduce evbuffer_contiguous_space() api that tells a user how much data is available in the first buffer chain
o introduce evbuffer_reserve_space() and evbuffer_commit_space() to make processing in filters more efficient.
o reduce system calls for getting current time by caching it.
o separate signal events from io events; making the code less complex.
o support for periodic timeouts
o support for virtual HTTP hosts.
o turn event_initialized() into a function, and add function equivalents to EVENT_SIGNAL and EVENT_FD so that people don't need to include event_struct.h
o Build test directory correctly with CPPFLAGS set.
o Provide an API for retrieving the supported event mechanisms.
o event_base_new_with_config() and corresponding config APIs.
o migrate the evhttp header to event2/ but accessors are still missing.
o deprecate timeout_* event functions by moving them to event_compat.h
o Move windows gettimeofday replacement into a new evutil_gettimeofday().
o Make configure script work on IRIX.
o provide a method for canceling ongoing http requests.
o Make vsnprintf() returns consistent on win32.
o Fix connection keep-alive behavior for HTTP/1.0
o Fix use of freed memory in event_reinit; pointed out by Peter Postma
o constify struct timeval * where possible
o make event_get_supported_methods obey environment variables
o support for edge-triggered events on epoll and kqueue backends: patch from Valery Kholodkov
o support for selecting event backends by their features, and for querying the features of a backend.
o change failing behavior of event_base_new_with_config: if a config is provided and no backend is selected, return NULL instead of aborting.
o deliver partial data to request callbacks when chunked callback is set even if there is no chunking on the http level; allows cancelation of requests from within the chunked callback; from Scott Lamb.
o allow min_heap_erase to be called on removed members; from liusifan.
o Rename INPUT and OUTPUT to EVRPC_INPUT and EVRPC_OUTPUT. Retain INPUT/OUTPUT aliases on on-win32 platforms for backwards compatibility.
o Do not use SO_REUSEADDR when connecting
o Support 64-bit integers in RPC structs
o Correct handling of trailing headers in chunked replies; from Scott Lamb.
o Support multi-line HTTP headers; based on a patch from Moshe Litvin
o Reject negative Content-Length headers; anonymous bug report
o Detect CLOCK_MONOTONIC at runtime for evdns; anonymous bug report
o Various HTTP correctness fixes from Scott Lamb
o Fix a bug where deleting signals with the kqueue backend would cause subsequent adds to fail
o Support multiple events listening on the same signal; make signals regular events that go on the same event queue; problem report by Alexander Drozdov.
o Fix a problem with epoll() and reinit; problem report by Alexander Drozdov.
o Fix off-by-one errors in devpoll; from Ian Bell
o Make event_add not change any state if it fails; reported by Ian Bell.
o Fix a bug where headers arriving in multiple packets were not parsed; fix from Jiang Hong; test by me.
o Match the query in DNS replies to the query in the request; from Vsevolod Stakhov.
o Add new utility functions to correctly observe and log winsock errors.
o Do not remove Accept-Encoding header
o Clear the timer cache on entering the event loop; reported by Victor Chang
o Only bind the socket on connect when a local address has been provided; reported by Alejo Sanchez
o Allow setting of local port for evhttp connections to support millions of connections from a single system; from Richard Jones.
o Clear the timer cache when leaving the event loop; reported by Robin Haberkorn
o Fix a typo in setting the global event base; reported by lance.
o Set the 0x20 bit on outgoing alphabetic characters in DNS requests randomly, and insist on a match in replies. This helps resist DNS poisoning attacks.
o Make the http connection close detection work properly with bufferevents and fix a potential memory leak associated with it.
o Restructure the event backends so that they do not need to keep track of events themselves, as a side effect multiple events can use the same fd or signal.
o Add generic implementations for parsing and emiting IPv6 addresses on platforms that do not have inet_ntop and/or inet_pton.
o Allow DNS servers that have IPv6 addresses.
o Add an evbuffer_write_atmost() function to write a limited number of bytes to an fd.
o Refactor internal notify-main-thread logic to prefer eventfd to pipe, then pipe to socketpair, and only use socketpairs as a last resort.
o Try harder to pack all evbuffer reads into as few chains as possible, using readv/WSARecv as appropriate.
o New evthread_use_windows_threads() and evthread_use_pthreads() functions to set up the evthread callbacks with reasonable defaults.
o Change the semantics of timeouts in conjunction with EV_PERSIST; timeouts in that case will now repeat until deleted.
o sendfile, mmap and memory reference support for evbuffers.
o New evutil_make_listen_socket_reuseable() to abstract SO_REUSEADDR.
o New bind-to option to allow DNS clients to bind to an arbitrary port for outgoing requests.
o evbuffers can now be "frozen" to prevent operations at one or both ends.
o Bufferevents now notice external attempts to add data to an inbuf or remove it from an outbuf, and stop them.
o Fix parsing of queries where the encoded queries contained \r, \n or +
o Do not allow internal events to starve lower-priority events.
Changes in 1.4.14b-stable
o Set the VERSION_INFO correctly for 1.4.14
Changes in 1.4.14-stable
o Add a .gitignore file for the 1.4 branch. (d014edb)
o Backport evbuffer_readln(). (b04cc60 Nicholas Marriott)
o Make the evbuffer_readln backport follow the current API (c545485)
o Valgrind fix: Clear struct kevent before checking for OSX bug. (5713d5d William Ahern)
o Fix a crash when reading badly formatted resolve.conf (5b10d00 Yasuoka Masahiko)
o Fix memory-leak of signal handler array with kqueue. [backport] (01f3775)
o Update sample/signal-test.c to use newer APIs and not leak. (891765c Evan Jones)
o Correct all versions in 1.4 branch (ac0d213)
o Make evutil_make_socket_nonblocking() leave any other flags alone. (81c26ba Jardel Weyrich)
o Adjusted fcntl() retval comparison on evutil_make_socket_nonblocking(). (5f2e250 Jardel Weyrich)
o Correct a debug message in evhttp_parse_request_line (35df59e)
o Merge branch 'readln-backport' into patches-1.4 (8771d5b)
o Do not send an HTTP error when we've already closed or responded. (4fd2dd9 Pavel Plesov)
o Re-add event_siglcb; some old code _was_ still using it. :( (bd03d06)
o Make Libevent 1.4 build on win32 with Unicode enabled. (bce58d6 Brodie Thiesfield)
o Distribute nmake makefile for 1.4 (20d706d)
o do not fail while sending on http connections the client closed. (5c8b446)
o make evhttp_send() safe against terminated connections, too (01ea0c5)
o Fix a free(NULL) in min_heap.h (2458934)
o Fix memory leak when setting up priorities; reported by Alexander Drozdov (cb1a722)
o Clean up properly when adding a signal handler fails. (ae6ece0 Gilad Benjamini)
o Do not abort HTTP requests missing a reason string. (29d7b32 Pierre Phaneuf)
o Fix compile warning in http.c (906d573)
o Define _REENTRANT as needed on Solaris, elsewhere (6cbea13)
Changes in 1.4.13-stable:
o If the kernel tells us that there are a negative number of bytes to read from a socket, do not believe it. Fixes bug 2841177; found by Alexander Pronchenkov.
o Do not allocate the maximum event queue and fd array for the epoll backend at startup. Instead, start out accepting 32 events at a time, and double the queue's size when it seems that the OS is generating events faster than we're requesting them. Saves up to 512K per epoll-based event_base. Resolves bug 2839240.
o Fix compilation on Android, which forgot to define fd_mask in its sys/select.h
o Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
o Rename our replacement compat/sys/_time.h header to avoid build a conflict on HPUX; reported by Kathryn Hogg.
o Build kqueue.c correctly on GNU/kFreeBSD platforms. Patch pulled upstream from Debian.
o Fix a problem with excessive memory allocation when using multiple event priorities.
o When running set[ug]id, don't check the environment. Based on a patch from OpenBSD.
Changes in 1.4.12-stable:
o Try to contain degree of failure when running on a win32 version so heavily firewalled that we can't fake a socketpair.
o Fix an obscure timing-dependent, allocator-dependent crash in the evdns code.
o Use __VA_ARGS__ syntax for varargs macros in event_rpcgen when compiler is not GCC.
o Activate fd events in a pseudorandom order with O(N) backends, so that we don't systematically favor low fds (select) or earlier-added fds (poll, win32).
o Fix another pair of fencepost bugs in epoll.c. [Patch from Adam Langley.]
o Do not break evdns connections to nameservers when our IP changes.
o Set truncated flag correctly in evdns server replies.
o Disable strict aliasing with GCC: our code is not compliant with it.
Changes in 1.4.11-stable:
o Fix a bug when removing a timeout from the heap. [Patch from Marko Kreen]
o Remove the limit on size of HTTP headers by removing static buffers.
o Fix a nasty dangling pointer bug in epoll.c that could occur after epoll_recalc(). [Patch from Kevin Springborn]
o Distribute Win32-Code/event-config.h, not ./event-config.h
Changes in 1.4.10-stable:
o clean up buffered http connection data on reset; reported by Brian O'Kelley
o bug fix and potential race condition in signal handling; from Alexander Drozdov
o rename the Solaris event ports backend to evport
o support compilation on Haiku
o fix signal processing when a signal callback delivers a signal; from Alexander Drozdov
o const-ify some arguments to evdns functions.
o off-by-one error in epoll_recalc; reported by Victor Goya
o include Doxyfile in tar ball; from Jeff Garzik
o correctly parse queries with encoded \r, \n or + characters
Changes in 1.4.9-stable:
o event_add would not return error for some backends; from Dean McNamee
o Clear the timer cache on entering the event loop; reported by Victor Chang
o Only bind the socket on connect when a local address has been provided; reported by Alejo Sanchez
o Allow setting of local port for evhttp connections to support millions of connections from a single system; from Richard Jones.
o Clear the timer cache when leaving the event loop; reported by Robin Haberkorn
o Fix a typo in setting the global event base; reported by lance.
o Fix a memory leak when reading multi-line headers
o Fix a memory leak by not running explicit close detection for server connections
Changes in 1.4.8-stable:
o Match the query in DNS replies to the query in the request; from Vsevolod Stakhov.
o Fix a merge problem in which name_from_addr returned pointers to the stack; found by Jiang Hong.
o Do not remove Accept-Encoding header
Changes in 1.4.7-stable:
o Fix a bug where headers arriving in multiple packets were not parsed; fix from Jiang Hong; test by me.
Changes in 1.4.6-stable:
o evutil.h now includes <stdarg.h> directly
o switch all uses of [v]snprintf over to evutil
o Correct handling of trailing headers in chunked replies; from Scott Lamb.
o Support multi-line HTTP headers; based on a patch from Moshe Litvin
o Reject negative Content-Length headers; anonymous bug report
o Detect CLOCK_MONOTONIC at runtime for evdns; anonymous bug report
o Fix a bug where deleting signals with the kqueue backend would cause subsequent adds to fail
o Support multiple events listening on the same signal; make signals regular events that go on the same event queue; problem report by Alexander Drozdov.
o Deal with evbuffer_read() returning -1 on EINTR|EAGAIN; from Adam Langley.
o Fix a bug in which the DNS server would incorrectly set the type of a cname reply to a.
o Fix a bug where setting the timeout on a bufferevent would take not effect if the event was already pending.
o Fix a memory leak when using signals for some event bases; reported by Alexander Drozdov.
o Add libevent.vcproj file to distribution to help with Windows build.
o Fix a problem with epoll() and reinit; problem report by Alexander Drozdov.
o Fix off-by-one errors in devpoll; from Ian Bell
o Make event_add not change any state if it fails; reported by Ian Bell.
o Do not warn on accept when errno is either EAGAIN or EINTR
Changes in 1.4.5-stable:
o Fix connection keep-alive behavior for HTTP/1.0
o Fix use of freed memory in event_reinit; pointed out by Peter Postma
o Constify struct timeval * where possible; pointed out by Forest Wilkinson
o allow min_heap_erase to be called on removed members; from liusifan.
o Rename INPUT and OUTPUT to EVRPC_INPUT and EVRPC_OUTPUT. Retain INPUT/OUTPUT aliases on on-win32 platforms for backwards compatibility.
o Do not use SO_REUSEADDR when connecting
o Fix Windows build
o Fix a bug in event_rpcgen when generated fixed-sized entries
Changes in 1.4.4-stable:
o Correct the documentation on buffer printf functions.
o Don't warn on unimplemented epoll_create(): this isn't a problem, just a reason to fall back to poll or select.
o Correctly handle timeouts larger than 35 minutes on Linux with epoll.c. This is probably a kernel defect, but we'll have to support old kernels anyway even if it gets fixed.
o Fix a potential stack corruption bug in tagging on 64-bit CPUs.
o expose bufferevent_setwatermark via header files and fix high watermark on read
o fix a bug in bufferevent read water marks and add a test for them
o introduce bufferevent_setcb and bufferevent_setfd to allow better manipulation of bufferevents
o use libevent's internal timercmp on all platforms, to avoid bugs on old platforms where timercmp(a,b,<=) is buggy.
o reduce system calls for getting current time by caching it.
o fix evhttp_bind_socket() so that multiple sockets can be bound by the same http server.
o Build test directory correctly with CPPFLAGS set.
o Fix build under Visual C++ 2005.
o Expose evhttp_accept_socket() API.
o Merge windows gettimeofday() replacement into a new evutil_gettimeofday() function.
o Fix autoconf script behavior on IRIX.
o Make sure winsock2.h include always comes before windows.h include.
Changes in 1.4.3-stable:
o include Content-Length in reply for HTTP/1.0 requests with keep-alive
o Patch from Tani Hosokawa: make some functions in http.c threadsafe.
o Do not free the kqop file descriptor in other processes, also allow it to be 0; from Andrei Nigmatulin
o make event_rpcgen.py generate code include event-config.h; reported by Sam Banks.
o make event methods static so that they are not exported; from Andrei Nigmatulin
o make RPC replies use application/octet-stream as mime type
o do not delete uninitialized timeout event in evdns
Changes in 1.4.2-rc:
o remove pending timeouts on event_base_free()
o also check EAGAIN for Solaris' event ports; from W.C.A. Wijngaards
o devpoll and evport need reinit; tested by W.C.A Wijngaards
o event_base_get_method; from Springande Ulv
o Send CRLF after each chunk in HTTP output, for compliance with RFC2626. Patch from "propanbutan". Fixes bug 1894184.
o Add a int64_t parsing function, with unit tests, so we can apply Scott Lamb's fix to allow large HTTP values.
o Use a 64-bit field to hold HTTP content-lengths. Patch from Scott Lamb.
o Allow regression code to build even without Python installed
o remove NDEBUG ifdefs from evdns.c
o update documentation of event_loop and event_base_loop; from Tani Hosokawa.
o detect integer types properly on platforms without stdint.h
o Remove "AM_MAINTAINER_MODE" declaration in configure.in: now makefiles and configure should get re-generated automatically when Makefile.am or configure.in chanes.
o do not insert event into list when evsel->add fails
Changes in 1.4.1-beta:
o free minheap on event_base_free(); from Christopher Layne
o debug cleanups in signal.c; from Christopher Layne
o provide event_base_new() that does not set the current_base global
o bufferevent_write now uses a const source argument; report from Charles Kerr
o better documentation for event_base_loopexit; from Scott Lamb.
o Make kqueue have the same behavior as other backends when a signal is caught between event_add() and event_loop(). Previously, it would catch and ignore such signals.
o Make kqueue restore signal handlers correctly when event_del() is called.
o provide event_reinit() to reintialize an event_base after fork
o small improvements to evhttp documentation
o always generate Date and Content-Length headers for HTTP/1.1 replies
o set the correct event base for HTTP close events
o New function, event_{base_}loopbreak. Like event_loopexit, it makes an event loop stop executing and return. Unlike event_loopexit, it keeps subsequent pending events from getting executed. Patch from Scott Lamb
o Removed obsoleted recalc code
o pull setters/getters out of RPC structures into a base class to which we just need to store a pointer; this reduces the memory footprint of these structures.
o fix a bug with event_rpcgen for integers
o move EV_PERSIST handling out of the event backends
o support for 32-bit tag numbers in rpc structures; this is wire compatible, but changes the API slightly.
o prefix {encode,decode}_tag functions with evtag to avoid collisions
o Correctly handle DNS replies with no answers set (Fixes bug 1846282)
o The configure script now takes an --enable-gcc-warnings option that turns on many optional gcc warnings. (Nick has been building with these for a while, but they might be useful to other developers.)
o When building with GCC, use the "format" attribute to verify type correctness of calls to printf-like functions.
o removed linger from http server socket; reported by Ilya Martynov
o allow \r or \n individually to separate HTTP headers instead of the standard "\r\n"; from Charles Kerr.
o demote most http warnings to debug messages
o Fix Solaris compilation; from Magne Mahre
o Add a "Date" header to HTTP responses, as required by HTTP 1.1.
o Support specifying the local address of an evhttp_connection using set_local_address
o Fix a memory leak in which failed HTTP connections would not free the request object
o Make adding of array members in event_rpcgen more efficient, but doubling memory allocation
o Fix a memory leak in the DNS server
o Fix compilation when DNS_USE_OPENSSL_FOR_ID is enabled
o Fix buffer size and string generation in evdns_resolve_reverse_ipv6().
o Respond to nonstandard DNS queries with "NOTIMPL" rather than by ignoring them.
o In DNS responses, the CD flag should be preserved, not the TC flag.
o Fix http.c to compile properly with USE_DEBUG; from Christopher Layne
o Handle NULL timeouts correctly on Solaris; from Trond Norbye
o Recalculate pending events properly when reallocating event array on Solaris; from Trond Norbye
o Add Doxygen documentation to header files; from Mark Heily
o Add a evdns_set_transaction_id_fn() function to override the default
transaction ID generation code.
o Add an evutil module (with header evutil.h) to implement our standard cross-platform hacks, on the theory that somebody else would like to use them too.
o Fix signals implementation on windows.
o Fix http module on windows to close sockets properly.
o Make autogen.sh script run correctly on systems where /bin/sh isn't bash. (Patch from Trond Norbye, rewritten by Hagne Mahre and then Hannah Schroeter.)
o Skip calling gettime() in timeout_process if we are not in fact waiting for any events. (Patch from Trond Norbye)
o Make test subdirectory compile under mingw.
o Fix win32 buffer.c behavior so that it is correct for sockets (which do not like ReadFile and WriteFile).
o Make the test.sh script run unit tests for the evpoll method.
o Make the entire evdns.h header enclosed in "extern C" as appropriate.
o Fix implementation of strsep on platforms that lack it
o Fix implementation of getaddrinfo on platforms that lack it; mainly, this will make Windows http.c work better. Original patch by Lubomir Marinov.
o Fix evport implementation: port_disassociate called on unassociated events resulting in bogus errors; more efficient memory management; from Trond Norbye and Prakash Sangappa
o support for hooks on rpc input and output; can be used to implement rpc independent processing such as compression or authentication.
o use a min heap instead of a red-black tree for timeouts; as a result finding the min is a O(1) operation now; from Maxim Yegorushkin
o associate an event base with an rpc pool
o added two additional libraries: libevent_core and libevent_extra in addition to the regular libevent. libevent_core contains only the event core whereas libevent_extra contains dns, http and rpc support
o Begin using libtool's library versioning support correctly. If we don't mess up, this will more or less guarantee binaries linked against old versions of libevent continue working when we make changes to libevent that do not break backward compatibility.
o Fix evhttp.h compilation when TAILQ_ENTRY is not defined.
o Small code cleanups in epoll_dispatch().
o Increase the maximum number of addresses read from a packet in evdns to 32.
o Remove support for the rtsig method: it hasn't compiled for a while, and nobody seems to miss it very much. Let us know if there's a good reason to put it back in.
o Rename the "class" field in evdns_server_request to dns_question_class, so that it won't break compilation under C++. Use a macro so that old code won't break. Mark the macro as deprecated.
o Fix DNS unit tests so that having a DNS server with broken IPv6 support is no longer cause for aborting the unit tests.
o Make event_base_free() succeed even if there are pending non-internal events on a base. This may still leak memory and fds, but at least it no longer crashes.
o Post-process the config.h file into a new, installed event-config.h file that we can install, and whose macros will be safe to include in header files.
o Remove the long-deprecated acconfig.h file.
o Do not require #include <sys/types.h> before #include <event.h>.
o Add new evutil_timer* functions to wrap (or replace) the regular timeval manipulation functions.
o Fix many build issues when using the Microsoft C compiler.
o Remove a bash-ism in autogen.sh
o When calling event_del on a signal, restore the signal handler's previous value rather than setting it to SIG_DFL. Patch from Christopher Layne.
o Make the logic for active events work better with internal events; patch from Christopher Layne.
o We do not need to specially remove a timeout before calling event_del; patch from Christopher Layne.