Changes in version 2.0.19-stable (3 May 2012)
* Refactor event_persist_closure: raise and extract some common logic
* If time has jumped so we'd reschedule a periodic event in the past, schedule
it for the future instead
* If a higher-priority event becomes active, don't continue running events
of the current priority.
* Fixed potential double-readcb execution with openssl bufferevents.
* Cancel a probe request when the server is freed, and ignore cancelled probe
callbacks
* Remove redundant DNS_ERR_CANCEL check, move comment
* When retransmitting a timed-out DNS request, pick a fresh nameserver.
* Backport: provide EVENT_LOG_* names, and deprecate _EVENT_LOG_*
Changes in version 2.0.18-stable (22 Mar 2012)
* Make uses of open() close-on-exec safe by introducing an internal
evutil_open_closeonexec.
* Properly zero the kevent in kq_setup_kevent()
* Stop crashing in evdns when nameserver probes give a weird error
Changes in version 2.0.17-stable (10 Feb 2012)
* Be absolutely sure to clear pncalls before leaving event_signal_closure
* check for sysctl before we use it
* Remove bogus casts of socket to int before calling ev_callback
* Make evconnlistener work around bug in older Linux when getting nmapped
* Fix a list corruption bug when using event_reinit() with signals present
* Fix a fd leak in event_reinit()
* Do a memberwise comparison of threading function tables
* Use C-style comments in C source files (for compatibility with compilers
such as xlc on AIX).
* Avoid crash when freeing event_iocp and using event_set_mem_functions
* In the kqueue backend, do not report EBADF as an EV_READ
* Fix behavior of evbuffer_peek(buf,-1,NULL,NULL,0)
* Loop on filtering SSL reads until we are blocked or exhausted.
* Force strict validation of HTTP version in response.
* evdns: fix a bug in circular-queue implementation
* Backport evhttp_connection_get_bufferevent to Libevent 2.0
Changes in version 2.0.16-stable (18 Nov 2011)
* More detailed message in case of libevent self-debugging failure.
* epoll: close fd on alloc fail at initialization
* Fix compile warning from saying event2/*.h inside a comment
* Warn when unable to construct base because of failing make_base_notifiable
* Don't try to make notifiable event_base when no threading fns are configured
* unit test for remove_buffer bug
* Fix an evbuffer crash in evbuffer_remove_buffer()
* Refactor amount-to-read calculations in buffervent_ssl consider_reading()
* Move SSL rate-limit enforcement into bytes_to_read()
* Avoid spinning on OpenSSL reads
* Empty DNS reply with OK status is another way to say NODATA.
Changes in version 2.0.15-stable (12 Oct 2011)
* DNS: add ttl for negative answers using RFC 2308 idea.
* Add DNS_ERR_NODATA error code to handle empty replies.
* Make evbuffer callbacks get the right n_added value after evbuffer_add
* Prefer mmap to sendfile unless a DRAINS_TO_FD flag is set. Allows add_file
to work with SSL.
* When a signal callback is activated to run multiple times, allow
event_base_loopbreak to work even before they all have run.
* Several SSL bufferevent fixes
* A Solaris sendfile bugfix
* A few other IOCP and rate-limiting bufferevent fixes
* Memory leak fixes
* Coverity fixes
* Portability and build fixes
* and more...
Supposedly API backwards-compatible with libevent 1.x.
Will need a recursive revbump for shlib name changes, though.
All regression tests pass except "thread_conditions_simple". Not sure
why yet, but it's new API so shouldn't break anything existing in pkgsrc
today.
Changes in libevent 2.0 include cleaner interfaces, buffered I/O improvements,
improved multithreading and openssl integration.
Changes in 1.4.12-stable:
Try to contain degree of failure when running on a win32 version so heavily firewalled that we can't fake a socketpair.
Fix an obscure timing-dependent, allocator-dependent crash in the evdns code.
Use __VA_ARGS__ syntax for varargs macros in event_rpcgen when compiler is not GCC.
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).
Fix another pair of fencepost bugs in epoll.c. [Patch from Adam Langley.]
Do not break evdns connections to nameservers when our IP changes.
Set truncated flag correctly in evdns server replies.
Disable strict aliasing with GCC: our code is not compliant with it.
Changes in 1.4.11-stable:
Fix a bug when removing a timeout from the heap. [Patch from Marko Kreen]
Remove the limit on size of HTTP headers by removing static buffers.
Fix a nasty dangling pointer bug in epoll.c that could occur after epoll_recalc(). [Patch from Kevin Springborn]
Distribute Win32-Code/event-config.h, not ./event-config.h
Changes in 1.4.10-stable:
clean up buffered http connection data on reset; reported by Brian O'Kelley
bug fix and potential race condition in signal handling; from Alexander Drozdov
rename the Solaris event ports backend to evport
support compilation on Haiku
fix signal processing when a signal callback delivers a signal; from Alexander Drozdov
const-ify some arguments to evdns functions.
off-by-one error in epoll_recalc; reported by Victor Goya
include Doxyfile in tar ball; from Jeff Garzik
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.
1.4.3-stable:
1.4.2-rc:
* make Solaris event subsystems more reliable; from W.C.A. Wijngaards
* event_base_get_method(); from Springande Ulv
* fix HTTP/1.1 chunk formatting; from "propanbutan"
* allow 64-bit content lengths; from Scott Lamb
* and more...
1.4.1-beta:
* fixed some memory leaks and other misc cleanup; from Christopher Layne,
Scott Lamb and Charles Kerr
* introduced event_reinit to deal with fork()
* improved efficiency of generated RPC structure
* performance improvements to Win32 backend
* and many more...
1.4.0-beta:
* a new RPC subsytem for writing distributed clients and servers
* almost everything is documented via Doxygen now
* many fixes and improvements to evdns and evhttp
* libevent now builds two additional libraries: libevent_core (containing only
the event core) and libevent_extras (contained evdns, evhttp and evrpc)
* performance improvements due to using a heap instead of red-black trees for
timeouts
* Solaris' event ports are better supported
1.3e:
* Fix compilation on Solaris; from Magne Mahre
* Add a "Date" header to HTTP responses when it's missing, as required by
HTTP 1.1. Original Patch from Ralph Moritz.
* Fix a memory leak in which failed HTTP connections whould not free the
request object.
* Fix a memory leak in the DNS server.
* Handle NULL timeouts correctly on Solaris; from Trond Norbye
* Recalculate pending events properly when reallocating event array on
Solaris; from Trond Norbye
libevent-1.3d:
Bug fixes in the HTTP layer.
libevent-1.3c:
Small bug and portability fixes.
Worth mentioning is that patch-ab and patch-ac were applied upstream.
As usual with libevent, this breaks the ABI due to .so naming, so a
small revbump sweep will be needed.
1.3b:
* Fixes when using signals in multi-threaded applications from Scott Lamb.
* Other small bug fixes.
1.3a:
* Small bug and performances fixes to evhttp layer.
1.3:
* DNS Server from Adam Langley and Nick Mathewson
* Chunked transfer encoding for HTTP/1.1 from Dug Song.
* DNS DDoS fix; bug report from Jon Oberheide.
* Various small improvements.
- configure script already has provision for different compiler inline
directives, just not every file was using it.
- u_intXX_t types need to be fixed in installed event.h too.
1.2a:
* Made HTTP support more usable
* Various portability fixes.
1.2:
* Support for non-blocking DNS resolution; from Adam Langley
and Nick Mathewson.
* Support for lightweight HTTP clients and servers.
* Support for Sun's Event Ports from David Pacheco of Sun.
* Bug fixes - thanks to Nick Mathewson for helping.
(However, anecdotal references in Tor 0.1.2.1's doc seem to indicate that
1.1b fixes more kqueue problems on Darwin/OSX.)
# libevent-1.1.tar.gz - Release 2005-05-14
* Performance improvements from Nick Mathewson.
* Work around for kqueue bug in Mac OS X 10.4.
# libevent-1.0e.tar.gz - Release 2005-04-26
* Important fix to bug in poll implementation introduced in 1.0d.
# libevent-1.0d.tar.gz - Release 2005-04-22
* Several minor bug fixes and building of shared libraries.
This version includes support for /dev/poll so that libevent now supports all
fast event mechanisms. It also improves the portability across operating
systems.
Changes:
0.8:
* Buffered event abstraction to make writing network applications
easier; see libio for the predecessor of this idea.
0.7c:
* Bug fixes in Linux epoll and poll support.
0.7b:
* 3-clause BSD-license.
* Experimental support for real-time signals. Likely to be buggy.
* Experimental support for Windows from Mike Davis.
0.7:
* Requires level-triggered epoll patch for Linux epoll support.
The libevent API provides a mechanism to execute a callback function when a
specific event occurs on a file descriptor or after a timeout has been
reached.
libevent is meant to replace the asynchronous event loop found in event
driven network servers. An application just needs to call event_dispatch()
and can then add or remove events dynamically without having to change the
event loop.
Currently, libevent supports kqueue(2) and select(2). Support for poll(2)
and /dev/poll is planned. The internal event mechanism is completely
independent of the exposed event API, and a simple update of libevent can
provide this new functionality without having to redesign the server
applications.