xref: /libevent-2.1.12/ChangeLog (revision f9f4d4fe)
19a99bab0SNiels ProvosChanges in current version:
2d50afbb3SNiels Provos o free minheap on event_base_free(); from Christopher Layne
356934d5dSNiels Provos o debug cleanups in signal.c; from Christopher Layne
4f586f428SNiels Provos o provide event_base_new() that does not set the current_base global
5af6f331aSNiels Provos o bufferevent_write now uses a const source argument; report from Charles Kerr
670248ca8SNick Mathewson o improve documentation on event_base_loopexit; patch from Scott Lamb
71c23e219SNick Mathewson 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
8d1ad9403SNick Mathewson o Check return value of event_add in signal.c
988897852SNiels Provos o provide event_reinit() to reintialize an event_base after fork
107eb250e9SNick Mathewson 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.
112823cb05SNick Mathewson 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.
122823cb05SNick Mathewson o The kqueue implementation now restores original signal handlers correctly when its signal events are removed.
13fa95fe46SNick Mathewson o Check return value of event_add in signal.c
14cbf9cfdfSNick Mathewson 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.
151120f04fSNick Mathewson o Do not mangle socket handles on 64-bit windows.
16ce4ee418SNick Mathewson o The configure script now takes an --enable-gcc-warnigns 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.)
175f3e3159SNiels Provos o move EV_PERSIST handling out of the event backends
18f175befaSNiels Provos o small improvements to evhttp documentation
1974b3db50SNiels Provos o always generate Date and Content-Length headers for HTTP/1.1 replies
205482192bSNick Mathewson o set the correct event base for HTTP close events
213206bbcaSNick Mathewson o When building with GCC, use the "format" attribute to verify type correctness of calls to printf-like functions.
222e2104f4SNick Mathewson o Rewrite win32.c backend to be O(n lg n) rather than O(n^2).
23e8b916c3SNiels Provos o Removed obsoleted recalc code
24ba487199SNiels Provos o support for 32-bit tag numbers in rpc structures; this is wire compatible, but changes the API slightly.
253b345f3eSNiels Provos 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.
26ffd606cdSNiels Provos o prefix {encode,decode}_tag functions with evtag to avoid collisions
2785053473SNiels Provos o fix a bug with event_rpcgen for integers
287ab26a2cSNick Mathewson o Correctly handle DNS replies with no answers set (Fixes bug 1846282)
29d4bdbca8SNiels Provos o add -Wstrict-aliasing to warnings and more cleanup
30fdafb66bSNiels Provos o removed linger from http server socket; reported by Ilya Martynov
3168725dc8SNiels Provos o event_rpcgen now allows creating integer arrays
327e3a7af7SNiels Provos o support string arrays in event_rpcgen
33819d4a33SNiels Provos 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.
34955c6abfSNiels Provos o allow an http request callback to take ownership of a request structure
355a5609c7SNiels Provos o allow association of meta data with RPC requests for hook processing
362460aa59SNiels Provos o associate more context for hooks to query such as the connection object
378c66d4e2SNiels Provos o remove pending timeouts on event_base_free()
386baff522SNiels Provos o also check EAGAIN for Solaris' event ports; from W.C.A. Wijngaards
39f38aec8bSNiels Provos o devpoll and evport need reinit; tested by W.C.A Wijngaards
408ab61891SNiels Provos o event_base_get_method; from Springande Ulv
41677a9586SNick Mathewson o Send CRLF after each chunk in HTTP output, for compliance with RFC2626.  Patch from "propanbutan".  Fixes bug 1894184.
42807ab182SNick Mathewson o Add a int64_t parsing function, with unit tests, so we can apply Scott Lamb's fix to allow large HTTP values.
43d47907a7SNick Mathewson o Use a 64-bit field to hold HTTP content-lengths.  Patch from Scott Lamb.
4423ef0d09SNiels Provos o Allow regression code to build even without Python installed
45506d4dbcSNiels Provos o remove NDEBUG ifdefs from evdns.c
4611230f7eSNick Mathewson o detect integer types properly on platforms without stdint.h
4787bef9e9SNiels Provos o udpate documentation of event_loop and event_base_loop; from Tani Hosokawa.
4867bf29adSNiels Provos o simplify evbuffer by removing orig_buffer
49bb914ed9SNiels Provos o do not insert event into list when evsel->add fails
50b14cd655SNiels Provos o add support for PUT/DELETE requests; from Josh Rotenberg
510b114da2SNiels Provos o introduce evhttp_accept_socket() to accept from an already created socket
52960be588SNiels Provos o include Content-Length in reply for HTTP/1.0 requests with keep-alive
537470ce52SNiels Provos 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.
54e7ad5493SNick Mathewson o Patch from Tani Hosokawa: make some functions in http.c threadsafe.
55eb9b9580SNiels Provos o test support for PUT/DELETE requests; from Josh Rotenberg
565c70ea4cSNiels Provos o rewrite of the evbuffer code to reduce memory copies
5769717730SNick Mathewson o Some older Solaris versions demand that _REENTRANT be defined to get strtok_r(); do so.
5819dad166SNiels Provos o Do not free the kqop file descriptor in other processes, also allow it to be 0; from Andrei Nigmatulin
59558de9b3SNiels Provos o Provide OpenSSL style support for multiple threads accessing the same event_base
60d5c15b2eSNiels Provos o make event_rpcgen.py generate code include event-config.h; reported by Sam Banks.
61c182bacaSNiels Provos o switch thread support so that locks get allocated as they are needed.
62ca42671aSNiels Provos o make event methods static so that they are not exported; from Andrei Nigmatulin
638920ac4dSNiels Provos o make RPC replies use application/octet-stream as mime type
643ef1f504SNiels Provos o do not delete uninitialized timeout event in evdns
650c843507SNick Mathewson o Correct the documentation on buffer printf functions.
6644ceb945SNick Mathewson o Don't warn on unimplemented epoll_create(): this isn't a problem, just a reason to fall back to poll or select.
67*f9f4d4feSNick Mathewson 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.
680c843507SNick Mathewson
69566ca340SNick Mathewson
70d50afbb3SNiels ProvosChanges in 1.4.0:
7111a0a9e4SNiels Provos o allow \r or \n individually to separate HTTP headers instead of the standard "\r\n"; from Charles Kerr.
72ff9e1af6SNiels Provos o demote most http warnings to debug messages
739c3ac4e4SNick Mathewson o Fix Solaris compilation; from Magne Mahre
748d5ef326SNick Mathewson o Add a "Date" header to HTTP responses, as required by HTTP 1.1.
7598f9616bSNiels Provos o Support specifying the local address of an evhttp_connection using set_local_address
76e2f56411SNiels Provos o Fix a memory leak in which failed HTTP connections whould not free the request object
77babd622fSNiels Provos o Make adding of array members in event_rpcgen more efficient, but doubling memory allocation
787c66bf33SNiels Provos o Fix a memory leak in the DNS server
79c396c767SNick Mathewson o Fix compilation when DNS_USE_OPENSSL_FOR_ID is enabled
808b392549SNick Mathewson o Fix buffer size and string generation in evdns_resolve_reverse_ipv6().
8182153e6eSNick Mathewson o Respond to nonstandard DNS queries with "NOTIMPL" rather than by ignoring them.
8282153e6eSNick Mathewson o In DNS responses, the CD flag should be preserved, not the TC flag.
83b835ee08SNiels Provos o Fix http.c to compile properly with USE_DEBUG; from Christopher Layne
84bfd27f58SNick Mathewson o Handle NULL timeouts correctly on Solaris; from Trond Norbye
85bfd27f58SNick Mathewson o Recalculate pending events properly when reallocating event array on Solaris; from Trond Norbye
867135ffb6SNick Mathewson o Add Doxygen documentation to header files; from Mark Heily
87626cc5f9SNick Mathewson o Add a evdns_set_transaction_id_fn() function to override the default
88626cc5f9SNick Mathewson   transaction ID generation code.
8925007183SNick Mathewson 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.
908b256b8eSNick Mathewson o Fix signals implementation on windows.
918b256b8eSNick Mathewson o Fix http module on windows to close sockets properly.
925a0d671fSNick Mathewson 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.)
93f4c84e86SNick Mathewson o Skip calling gettime() in timeout_process if we are not in fact waiting for any events. (Patch from Trond Norbye)
941e1f77c5SNick Mathewson o Make test subdirectory compile under mingw.
95db43c1e1SNick Mathewson o Fix win32 buffer.c behavior so that it is correct for sockets (which do not like ReadFile and WriteFile).
964ed48673SNick Mathewson o Make the test.sh script run unit tests for the evpoll method.
974ed48673SNick Mathewson o Make the entire evdns.h header enclosed in "extern C" as appropriate.
98bc7b7c24SNick Mathewson o Fix implementation of strsep on platforms that lack it
9949ede3beSNick Mathewson o Fix implementation of getaddrinfo on platforms that lack it; mainly, this will make Windows http.c work better.  Original patch by Lubomir Marinov.
10018ac9248SNiels Provos o Fix evport implementation: port_disassociate called on unassociated events resulting in bogus errors; more efficient memory management; from Trond Norbye and Prakash Sangappa
10165236aa8SNiels Provos o support for hooks on rpc input and output; can be used to implement rpc independent processing such as compression or authentication.
10230ae40ccSNiels Provos 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
1031d3a008aSNiels Provos o associate an event base with an rpc pool
10488173102SNiels Provos 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
1051bcb112bSNick Mathewson 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.
106d7d91461SNick Mathewson o Fix evhttp.h compilation when TAILQ_ENTRY is not defined.
107bbed0954SNiels Provos o Small code cleanups in epoll_dispatch().
10881802bf9SNick Mathewson o Increase the maximum number of addresses read from a packet in evdns to 32.
109e9564eceSNick Mathewson 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.
1107c507668SNick Mathewson 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.
111bab0e6d4SNick Mathewson o Fix DNS unit tests so that having a DNS server with broken IPv6 support is no longer cause for aborting the unit tests.
112206d4336SNick Mathewson 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.
113f74e7258SNick Mathewson 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.
114f74e7258SNick Mathewson o Remove the long-deprecated acconfig.h file.
115f74e7258SNick Mathewson o Do not require #include <sys/types.h> before #include <event.h>.
116f74e7258SNick Mathewson o Add new evutil_timer* functions to wrap (or replace) the regular timeval manipulation functions.
11792cd548fSNick Mathewson o Fix many build issues when using the Microsoft C compiler.
118cabcd62fSNick Mathewson o Remove a bash-ism in autogen.sh
119321dfd55SNick Mathewson 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.
1204a1a2e0dSNiels Provos o Make the logic for active events work better with internal events; patch from Christopher Layne.
1213742868aSNiels Provos o We do not need to specially remove a timeout before calling event_del; patch from Christopher Layne.
122