Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| c247adc7 | 2010-04-09 13:32:08 | Add a few more evmap/changelist comments | ||
| c87272b7 | 2010-03-26 14:51:39 | Make evbuffer_prepend handle empty buffers better If the first chunk of a buffer is empty, and we're told to prepend to the buffer, we should be willing to use the entire first chunk. Instead, we were dependent on the value of chunk->misalign. | ||
| 5c0ebb33 | 2010-03-26 14:50:45 | Do not use evbuffer_expand() to add the first chain to a buffer (It's a big function, and using it this way is overkill.) | ||
| 2014ae4a | 2010-03-26 14:30:14 | Increase MIN_BUFFER_SIZE to 512 (1024 on 64-bit) This constant decides the smallest (and typical) size of each evbuffer chain. Since this number includes sizeof(evbuffer_chain) overhead, the old value (256) was just too low: on 64-bit platforms, it would spend nearly 20% of the allocations on overhead. The new values mean that we'll be spending closer to 5% of evbuffer allocations on overhead. It would be nice to get this number even lower if we can. | ||
| 6f20492f | 2010-03-26 14:20:10 | Fix a free(NULL) in minheap-internal.h | ||
| a5276180 | 2010-03-26 13:56:01 | Fix minheap code to use replacement malloc functions minheap-internal.h still had an extra realloc and an extra free that needed to be replaced with mm_realloc and mm_free(). | ||
| 7204b916 | 2010-03-26 13:46:29 | Remove a needless min_heap_shift_up_() call Previously, every call to min_heap_shift_down_() would invoke min_heap_shift_up_() at the end. This used to be necessary in the first version of the minheap code, since min_heap_erase() would call min_heap_shift_down_() unconditionally. But when patch 8b7a3b36763 from Marko Kreen fixed min_heap_erase() to be more sensible, we left the weird behavior of min_heap_shift_down_() in place. Fortunately, "cui" noticed this and reported it on Niels's blog. | ||
| e1e703d2 | 2010-03-23 16:04:59 | Make evutil_signal_active() match declaration. | ||
| 3eb044d0 | 2010-03-23 13:27:10 | Never test for select() on windows On 64-bit windows, configure actually _finds_ select when it tests for it, and due to the ordering of the io implementations in event.c it is chosen over the win32select implementation. This modification skips the test for select on win32 (we don't want that anyway, because Windows has its own), causing my windows box to get the win32select implementation. (edited by Nick) | ||
| 7960af51 | 2010-03-22 13:37:39 | Merge branch 'build' | ||
| 9eb2fd75 | 2010-03-22 13:27:47 | Use dist_bin_SCRIPTS, not EXTRA_DIST, to distribute scripts | ||
| 83986414 | 2010-03-12 06:04:56 | Fix infrequent memory leak in bufferevent_init_common(). | ||
| b557b175 | 2010-03-21 13:28:48 | Detect and refuse reentrant event_base_loop() calls Calling event_base_loop on a base from inside a callback invoked by that same base, or from two threads at once, has long been a way to get exceedingly hard-to-diagnose errors. This patch adds code to detect such reentrant invocatinos, and exit quickly with a warning that should explain what went wrong. | ||
| fb366c1d | 2010-03-21 13:16:31 | Functions to track the total bytes sent over a rate limit group. | ||
| 33874b05 | 2010-03-16 13:37:15 | Make 'main/many_events' test 70 fds, not 64. This is mainly intended to ensure that we don't get hung up on the 64-handle limit that lots of O(n) Windows functions (but FWICT not select) like to enforce. | ||
| 657d1b6d | 2010-03-13 01:06:57 | Set mem_offset for every bufferevent type | ||
| 0cf1431e | 2010-03-13 01:04:30 | Avoid an (untriggerable so far) crash bug in bufferevent_free() We were saying mm_free(bufev - bufev->be_ops->mem_offset); when we should have said mm_free(((char*)bufev) - bufev->be_ops->mem_offset); In other words, if mem_offset had ever been nonzero, then instead of backing up mem_offset bytes to find the thing we were supposed to free, we would have backed up mem_offset*sizeof(struct bufferevent) bytes, and freed something completely crazy. Spotted thanks to a conversation with Jardel Weyrich | ||
| 274a7bd9 | 2010-03-13 00:55:39 | Fix some memory leaks in the unit tests These don't matter except inasmuch as they give real memory leaks a place to hide. Found with valgrind | ||
| 859af677 | 2010-03-13 00:53:54 | Free evdns_base->req_heads on evdns_base_free It looks like when we moved from one big inflight-requests list to an n-heads structure, we didn't make evdns_base_free() free the array of heads. This patch should fix that. Found with valgrind | ||
| 68dc742b | 2010-03-12 20:38:25 | Fix a write of uninitialized RAM in regression tests Not actually harmful, but not something we should be doing. Found by valgrind. | ||
| b34abf30 | 2010-03-12 18:36:18 | Do not close(-1) when freeing an uninitialized socket bufferevent | ||
| 70a44b61 | 2010-03-12 18:35:15 | Avoid a spurious close(-1) on Linux On Linux, we use only one fd to do main-thread signaling (since we have eventfd()), so we don't need to close th_notify_fd[1] as we would if we were using a socketpair. | ||
| 75018951 | 2010-03-13 00:23:06 | Fix a possible double-free bug in SSL bufferevents with CLOSE_ON_FREE With CLOSE_ON_FREE set, we were telling the BIO to free the bufferevent when it was closed, and also freeing it ourselves. | ||
| 0d047c3f | 2010-03-13 00:29:15 | Fix an obnoxious typo in the bufferevent_timeout_filter test We were using the same bufferevent as the child of two filtering parents, orphaning another. This made one get freed twice, and the other not at all. Possible fix for bug 2963306 spotted by Doug Cuthbertson. | ||
| f1bc125e | 2010-03-12 23:00:49 | Improve robustness for refcounting Document that we do intend to double-decref underlying bufferevents under some circumstances. Check to make sure that we don't decref past 0. | ||
| 77c917de | 2010-03-12 14:37:54 | Give a better warning for bad automake versions. If you tried to build with automake-1.6 or earlier, we would previously spit out pages and pages of garbage output. Now, automake should just say "Hey, I'm not new enough for this." | ||
| 0794b0d2 | 2010-03-12 14:21:52 | Remove an orphaned RELEASE flag in Makefile.am | ||
| 2e898f54 | 2010-03-12 14:16:30 | Switch to using AM conditionals in place of AC_LIBOBJ AC_LIBOBJ is really only meant for defining missing library functions, not conditional code compilation. Sticking our conditionally compiled modules in SYS_SRC should make stuff easier to maintain. | ||
| b660edf9 | 2010-03-12 13:22:47 | Remove redundant stuff from EXTRA_DIST To a first approximation, sources that are mentioned anywhere in an automake file don't need to get mentioned in EXTRA_DIST. | ||
| 426c8fbe | 2010-03-12 13:09:28 | Support the standard 'make check' target in place of 'make verify' Based on patch 2816088 from Zack Weinberg | ||
| 6c83e6c9 | 2010-03-12 12:26:06 | Merge branch 'evbuffer_insert_point' | ||
| ee41aca6 | 2010-03-12 00:46:39 | Functions to manipulate existing rate limiting groups. This patch adds a function to change the current rate limit of a rate limiting group, and another to free an empty rate limiting group. | ||
| cdd4c490 | 2010-03-11 00:38:46 | Try to comment some of the event code more | ||
| 17da042d | 2010-03-11 15:39:44 | Add some glass-box tests for the last_with_data code. | ||
| 1e7b9868 | 2010-03-11 14:23:02 | Fix last_with_data compilation on windows | ||
| 78772c35 | 2010-03-11 00:18:02 | Clarify Christopher Clark's status as writer of original ht code. | ||
| e470ad3c | 2010-03-10 23:39:30 | Allow evbuffer_read() to split across more than 2 iovecs Previously it would only accept 2 iovecs at most, because our previous_to_last nonsense didn't let it take any more. This forced us to do more reallocations in some cases when an extra small malloc would have sufficed. | ||
| 6f47bd12 | 2010-03-10 23:28:51 | Remove previous_to_last from evbuffer | ||
| c8ac57f1 | 2010-03-10 23:24:14 | Use last_with_data in place of previous_to_last This actually makes some of the code a lot simpler. The only ones that actually used previous_to_last for anything were reserving and committing space. | ||
| 2a6d2a1e | 2010-03-10 22:16:14 | Revise evbuffer to add last_with_data This is the first patch in a series to replace previous_to_last with last_with_data. Currently, we can only use two partially empty chains at the end of an evbuffer, so if we have one with 511 bytes free, and another with 512 bytes free, and we try to do a 1024 byte read, we can't just stick another chain on the end: we need to reallocate the last one. That's stupid and inefficient. Instead, this patch adds a last_with_data pointer to eventually replace previous_to_last. Instead of pointing to the penultimated chain (if any) as previous_to_last does, last_with_data points to the last chain that has any data in it, if any. If all chains are empty, last_with_data points to the first chain. If there are no chains, last_with_data is NULL. The next step is to start using last_with_data everywhere that we currently use previous_to_last. When that's done, we can remove previous_to_last and the code that maintains it. | ||
| c7f1b820 | 2010-03-10 21:21:33 | Merge branch 'evport' | ||
| b2f2be6e | 2010-03-10 16:25:16 | Make evdns use the regular logging system by default Once, for reasons that made sense at the time, we had evdns.c use its own logging subsystem with two levels, "warn" and "debug". This leads to problems, since setting a log handler for Libevent wouldn't actually trap these messages, since they weren't on by default, and since some of the warns should really be msgs. This patch changes the default behavior of evdns.c to log to event_(debugx,warnx,msgx) by default, and adds a new (internal-use-only) log level of EVDNS_LOG_MSG. Programs that set a evdns logging function will see no change. Programs that don't will now see evdns warnings reported like other warnings. | ||
| 13e4f3bd | 2010-03-08 13:46:48 | Avoid errors in http.c when building with VC 2003 .NET | ||
| b677032b | 2010-03-08 13:46:04 | Avoid errors in evutil.c when building with _UNICODE defined | ||
| 2c2618d8 | 2010-03-05 13:00:15 | more whitespace normalization | ||
| c7cf6f00 | 2010-03-05 12:47:46 | Replace users of "int fd" with "evutil_socket_t fd" in portable code Remeber, win32 has a socket type that's actually a handle, so if there's a chance that code is run on win32, we can't use "int" as the socket type. This isn't a blind search-and-replace: sometimes an fd is really in fact for a file, and not a socket at all. | ||
| 38b7b571 | 2010-03-04 01:40:32 | Add Christopher Clark and Maxim Yegorushkin to the LICENSE file | ||
| 17efc1cd | 2010-03-04 01:25:51 | Update all our copyright notices to say "2010" | ||
| cc1600af | 2010-03-02 17:00:06 | Improve the speed of evbuffer_readln() This makes some cases of bench_http about 5% faster. Our internal evbuffer_strpbrk() function was overly general (it tried to handle all character sets when we only used it for "\r\n"), and not very efficient (it called memchr once for each character in the buffer until it found a \r or a \n). It actually showed up in some profiles for HTTP testing, since evbuffer_readln() calls it when doing loose CRLF detection. This patch replaces it with a faster implementation. | ||
| 2fac0f70 | 2010-03-03 12:15:15 | Remove signal_assign() and signal_new() macros. These were introduced and deprecated in the same version (2.0.1-alpha), presumably in two-stage process. Everybody sane should be using evsignal_assign() and evsignal_new() instead. | ||
| 1273d2f5 | 2010-03-02 15:16:28 | VC has no getopt(), so do without in bench_http. | ||
| 4ac38a5c | 2010-03-02 14:34:30 | Get bench_http to work on Windows; add a switch to enable IOCP. | ||
| bf3bfd0c | 2010-03-01 22:12:04 | Revert the broken part of 2cffd6c937 It looks like I accidentally removed most of WIN32-Code/event-config.h when I was bumping the version. Fortunately, this happened when I bumped to 2.0.4-alpha-dev rather than when I bumped to 2.0.4-alpha. :) This patch restores the deleted parts of WIN32-Code/event-config.h | ||
| 22aff049 | 2010-03-01 22:06:12 | Distribute libevent.pc.in, not libevent.pc | ||
| 2cffd6c9 | 2010-02-28 16:53:42 | Bump version to 2.0.4-alpha-dev | ||
| 9669ade5 | 2010-02-28 12:55:29 | Bump the version to 2.0.4-alpha | ||
| 3a5cfb0d | 2010-02-28 12:49:03 | Add a changelog for 2.0.4-alpha from Git, sorted by hand | ||
| ad85908a | 2010-02-28 12:52:39 | Fix compilation with --disable-debug-mode | ||
| 57b72488 | 2010-02-27 22:27:13 | Small cleanups on freebsd-connect-refused patch. There should be no need to call be_socket_enable: that does an event_add(). What we really want to do is event_active(), to make sure that the writecb is executed. Also, there was one "} if () {" that was missing an else. I've noted that the return value for evutil_socket_connect() is getting screwy, but since that isn't an exported function, we can fix it whenever. | ||
| 7bc48bfd | 2010-02-27 18:59:06 | deal with connect() failing immediately | ||
| 98edb891 | 2010-02-25 17:14:41 | Fix arc4random compilation on MSVC. | ||
| 1e14f826 | 2010-02-25 17:11:28 | Try to define a sane _EVENT_SIZEOF_SIZE_T for msvc compilation | ||
| 23170a69 | 2010-02-25 16:57:57 | Fix mingw compilation | ||
| 7ffd3875 | 2010-02-24 13:40:06 | Delete stack-alloced event in new unit test before returning. | ||
| f3dfe462 | 2010-02-23 23:59:26 | Use new timeval diff comparison function in bufferevent test | ||
| 8fcb7a1b | 2010-02-23 23:55:32 | Add test for periodic timers that get activated for other reasons This was already independently verified by the new bufferevent timeout tests, but it's good to explicitly check that our code does what it should. | ||
| c02bfe12 | 2010-02-23 16:36:52 | Add a test for timeouts on filtering bufferevents. | ||
| d3288293 | 2010-02-20 18:44:35 | Provide consistent, tested semantics for bufferevent timeouts The different bufferevent implementations had different behavior for their timeouts. Some of them kept re-triggering the timeouts indefinitely; some disabled the event immediately the first time a timeout triggered. Some of them made the timeouts only count when the bufferevent was actively trying to read or write; some did not. The new behavior is modeled after old socket bufferevents, since they were here first and their behavior is relatively sane. Basically, each timeout disables the bufferevent's corresponding read or write operation when it fires. Timeouts are stopped whenever we suspend writing or reading, and reset whenever we unsuspend writing or reading. Calling bufferevent_enable resets a timeout, as does changing the timeout value. | ||
| 38ec0a77 | 2010-02-23 14:24:10 | Fix a bug in resetting timeouts on persistent events when IO triggers. When we fixed persistent timeouts to make them reset themselves based on the previous scheduled time rather than the current time... we made them do so regardless of whether the event was triggering because of a timeout or not! This was of course bogus. When a _timeout_ triggers, we should schedule the event for N seconds based on the last _schedule_ time... but when IO triggers, we should reset the timeout for N seconds after now. | ||
| e2642f0a | 2010-02-23 15:14:57 | Fix some race conditions in persistent events and event_reinit I found these by adding an EVENT_BASE_ASSERT_LOCKED() call to most of the functions in event.c that can only be called while holding the lock. event_reinit() never grabbed the lock, but it needed to. event_persist_closure accessed the base to call event_add_internal() and gettime() when its caller had already dropped the lock. event_pending() called gettime() without grabbing the lock. | ||
| 4b37e6a5 | 2010-02-23 00:39:02 | Merge remote branch 'github/split_free_from_decref' | ||
| 162ce8a8 | 2010-02-23 00:38:30 | Expose view of current rate limit as constrained by group limit | ||
| b2fbeb3f | 2010-02-22 15:38:23 | Make bufferevent_free() clear all callbacks immediately. This should end the family of bugs where we call bufferevent_free() while a pending callback is holding a reference on the bufferevent, and the callback tries to invoke the user callbacks before it releases its own final reference. This means that bufferevent_decref() is now a separate function from bufferevent_free(). | ||
| db08f640 | 2010-02-20 12:55:59 | Suspend read/write on bufferevents during hostname lookup When we're doing a lookup in preparation for doing a connect, we might have an unconnected socket on hand, and mustn't actually do any reading or writing with it. | ||
| 4faeaea9 | 2010-02-19 03:39:50 | Clean up formatting: function/keyword spacing consistency. - Keywords always have a space before a paren. Functions never do. - No more than 3 blank lines in a row. | ||
| e5cf9879 | 2010-02-18 17:46:56 | Clean up formatting: remove trailing spaces | ||
| e5bbd40a | 2010-02-18 17:41:15 | Clean up formatting: use tabs, not 8-spaces, to indent. | ||
| 8fdf09c0 | 2010-02-18 17:08:50 | Clean up formatting: Disallow space-before-tab. | ||
| 7515de91 | 2010-02-18 14:50:44 | When connect() succeeds immediately, don't invoke the callback immediately. We need this to get unit tests to pass on freebsd. | ||
| b72be50d | 2010-02-18 13:52:04 | Add some headers to fix freebsd compilation | ||
| 1ba6bed8 | 2010-02-18 13:50:15 | Add the "compile" script to gitignore. | ||
| 48a29b68 | 2010-02-18 01:43:37 | Add a unit test for secure rng. Mostly, this is just to make sure our arc4random_buf() implementation isn't dumb. | ||
| ff2a134d | 2010-02-18 00:54:44 | Fix getpid() usage on Windows On Windows, getpid() is _getpid(), and requires that we first include <process.h>. arc4random.c previously didn't know that. Actually, I question whether arc4random needs to do its getpid() tricks on Windows. They exist only so that we remember to re-seed the ARC4 cipher whenever we fork... but Windows has no fork(), so I think we're in the clear. | ||
| cb52838f | 2010-02-18 00:27:35 | When working without a current event base, don't try to use IOCP listeners This fixes a bug turned up with the http unit tests, where we create the evhttp object using an implicit (NULL) event_base. This failed pretty badly when we tried to use IOCP-based listeners. We could hunt for the current base from inside listener.c in the future, or get the iocp base some other way, but for now this is probably the safest solution. | ||
| 32c6f1ba | 2010-02-15 19:54:15 | Construct Windows locks using InitializeCriticalSectionAndSpinCount Previously we were using InitializeCriticalSection, which creates a lock that blocks immediately on contention and waits to be rescheduled. This is inefficient; it's better to wait for a little while before telling the US to reschedule us, in case the lock becomes available again really soon (since most locks mostly do). Good pthreads implementations do this automatically. On Windows, though, we need to call this magic function, and we need to pick the spin count ourselves. | ||
| ca46d25b | 2010-02-17 23:02:28 | Merge branch 'arc4random' | ||
| e15e1e94 | 2010-02-17 22:54:43 | Add the arc4random.c license to the LICENSE file. | ||
| 7116bf23 | 2010-02-15 21:03:52 | Fix two unlocked reads in evbuffer. Some initializers (in evbuffer_read and evbuffer_commit) were reading the last and/or previous_to_last fields without grabbing the evbuffer lock. This may fix a hard-to-trigger race condition or two. | ||
| aae7db52 | 2010-02-15 17:53:24 | Update event-config.h version number to match configure.in | ||
| 60753da0 | 2010-02-15 17:07:26 | Merge commit 'niels/http_close_connection' | ||
| 63e868e6 | 2010-02-15 16:45:19 | Increment the submicro version number. We've changed a couple of APIs introduced in 2.0.1-alpha, so it behooves us to give high-needs apps (like Tor) a way to tell we've done this. Sensible apps will just say "is it 2.0.3-alpha or 2.0.4-alpha" and ignore the existence of 2.0.3-alpha-dev, which is just as it should be. | ||
| 2f782af3 | 2010-02-13 17:04:17 | validate close cb on server when client connection closes | ||
| e8a9782c | 2010-02-13 16:59:37 | clean up terminate_chunked test | ||
| 4ec8fea6 | 2010-02-13 00:11:44 | Make RNG work when we have arc4random() but not arc4random_buf() | ||
| 3fe60fdf | 2010-02-12 23:40:13 | Use off_t for the length parameter of evbuffer_add_file | ||
| d4de062e | 2010-02-10 17:19:18 | Add an arc4random implementation for use by evdns Previously, evdns was at the mercy of the user for providing a good entropy source; without one, it would be vulnerable to various active attacks. This patch adds a port of OpenBSD's arc4random() calls to Libevent [port by Chris Davis], and wraps it up a little bit so we can use it more safely. | ||
| 1dd7e6dc | 2010-02-05 01:16:23 | Remove the 'flags' argument from evdns_base_set_option() The 'flags' argument made sense when passed to evdns_(base_)?parse_resolv_conf when it said which parts of the resolv.conf file to obey. But for evdns_set_option(), it was really silly, since you wouldn't be calling evdns_set_option() unless you actually wanted to set the option. Its meaning was basically, "set this to DNS_OPTIONS_ALL unless you want a funny surprise." evdns_base_set_option was new in 2.0.1-alpha, so we aren't committed to keeping it source-compatible. | ||
| 6810bdb1 | 2010-02-05 13:50:51 | Always use our own gai_strerror() replacement. This is necessary if we have any errors that the platform gai_strerror() doesn't know how to handle. | ||
| c18490e6 | 2010-02-05 01:09:01 | Add a check to make soure our EVUTIL_AI flags do not conflict with the native ones | ||
| cfe7a9ff | 2010-02-04 10:15:39 | Merge remote branch 'niels/http_chunk' |