kc3-lang/libevent

Branch :


Log

Author Commit Date CI Message
cfe7a9ff 2010-02-04 10:15:39 Merge remote branch 'niels/http_chunk'
a7a94310 2010-02-03 23:49:22 Fix some additional -DUNICODE issues on win32. Brodie's patch didn't catch the ones that were new since 1.4.
000a33ec 2010-02-03 23:27:40 Make Libevent 1.4.12 build on win32 with Unicode enabled. This patch fixes calls to the win32 api to explicitly call the char* versions of the functions. This fixes build failures when libevent is built with the UNICODE define.
39781801 2010-02-03 16:54:18 make evhttp_send() safe against terminated connections, too
e2d15d81 2010-02-03 17:52:55 Merge remote branch 'niels/http_chunk'
93d73691 2010-02-03 14:34:56 do not fail while sending on http connections the client closed. when sending chunked requests via multiple calls to evhttp_send_reply_chunk, the client may close the connection before the server is done sending. this used to cause a crash. we introduce a new function evhttp_request_get_connection() that allows the server to determine if the request is still associated with a connection. If it's not, evhttp_request_free() needs to be called explicitly or the user can call evhttp_send_reply_end() which just frees the request, too.
60742d58 2010-02-03 17:01:45 Add the rest of the integer limits, and add a test for them.
8f654678 2010-02-03 16:25:34 Merge remote branch 'github/http_listener' Conflicts: http.c
85047a69 2010-02-03 15:12:04 Functions to view and manipulate rate-limiting buckets. We need these for Tor, and other projects probably need them too. Uses include: - Checking whether bandwidth is mostly-used, and only taking some actions when there's plenty of bandwidth. - Deducting some non-bufferevent activities from a rate-limit group.
aba1fff3 2010-02-03 14:37:42 Add EV_*_MAX macros to event2/util.h to expose limits for ev_* types.
da6135e3 2010-02-03 02:09:19 Reduce windows header includes in our own headers. It turns out that absolutely everything that was including windows.h was doing so needlessly; our headers don't need it, so we should just include winsock2.h (since that's where struct timeval is defined). Pre-2.0 code will use the old headers, which include windows.h for them, so we aren't breaking source compatibility with 1.4. This solves the bug where we were leaving WIN32_LEAN_AND_MEAN defined, in roughly the same way that buying an automobile solves the question of what to give your coachman for boxing day.
27c9a40f 2010-02-03 02:08:08 Fix a dumb typo in ev_intptr_t definitions. We said "#define ev_uintptr_t" twice instead of ever saying "#define ev_intptr_t".
e244a2ea 2010-02-03 01:26:07 Add the msvc-generated .lib files to .gitignore.
6c21c895 2010-02-03 01:22:44 Remove EVUTIL_CHECK_FMT. This was never supposed to be an exposed API, so its name should have been more like _EVUTIL_CHECK_FMT. But it was only used in one place, so let's just eliminate it.
f6b26949 2010-02-03 01:16:47 Deprecate EVENT_FD and EVENT_SIGNAL. These are old aliases for event_get_fd and event_get_signal, and they haven't been the preferred way of doing things since 2.0.1-alpha. For a while, we made them use struct event if it was included, but call event_get_(fd|signal) if it wasn't. This was entirely too cute.
d38a7a19 2010-02-02 15:44:10 const-ify a few more functions in event.h
f4190bfb 2010-01-27 01:47:36 Update time-test.c to use event2 time-test.c wasn't crazy, but it used some old interfaces. There are probably more cleanups and explanations to do beyond the ones here.
d60a1bd5 2010-01-27 01:46:41 Clarify status of example programs (That is, add comments to say that dns-example and le-proxy are recent and ugly; event-test is old and ugly.)
becb9f9c 2010-01-27 01:46:23 Add a new "hello world" sample program
137f2c60 2010-01-26 12:08:34 Try to fix a warning in hash_debug_entry Apparently some 64-bit platforms don't like it when you say unsigned hash(void *p) { return (unsigned)p; } even if you really honestly don't want the high bits of p. Perhaps they will tolerate it if I say the equivalent of unsigned hash(void *p) { return (unsigned) (uintptr_t) p; }
cef61a2f 2010-01-26 12:08:17 Use ev_[u]intptr_t types in place of [u]intptr_t
1fa4c81c 2010-01-26 12:06:41 Add ev_[u]intptr_t to include/event2/util.h We already emulate most of the other useful bits of stdint.h, and we seem to have started to use uintptr_t in a few places throughout the code. Let's make sure we can continue to do so even on backwards platforms that don't do C99.
439aea0d 2010-01-25 14:07:01 Try to untangle the logic in server_port_flush(). The logic that prevented the first loop in this function from being infinite was rather confusing and hard to follow. It seems to confuse some automatic analysis tools as well as me. Let's try to replace it with something more comprehensible.
361da8f2 2010-01-25 13:54:14 Note a missing ratelim function
a66e947b 2010-01-25 13:44:56 Use less memory for each entry in a hashtable Our hash-table implementation stored a copy of the hash code in each element. But as we were using it, all of our hash codes were ridiculously easy to calculate: most of them were just a matter of a load and a shift. This patch lets ht-internal be built in either of two ways: one caches the hash-code for each element, and one recalculates it each time it's needed. This patch also chooses a slightly better hash code for event_debug_entry.
a19b4a05 2010-01-25 13:38:07 Call event_debug_unassign on internal events I don't expect that many users will be so religious about calling unassign, but we need to be so that it's at least possible to use debug mode without eating memory.
cd17c3ac 2010-01-22 00:34:37 Add support for a "debug mode" to try to catch common errors. Right now it only catches cases where we aren't initializing events, or where we are re-initializing events without deleting them first. These are however shockingly common.
70a4a3ef 2010-01-23 16:47:54 Remove a needless include of rpc_compat.h Nothing in evrpc.c was using rpc_compat.h, so it's best to take it out, especially since it polluted our build process with GCC variadic macros. While we're at it, this patch puts an extra restriction on when the variadic macros in rpc_compat.h are defined. Not only must GCC be the compiler, but GCC must not be running in -ansi mode.
5c7a7bca 2010-01-23 20:07:05 Fix windows and msvc build
c8c6a897 2010-01-16 15:24:58 Minimize epoll_ctl calls by using changelist The logic here is a little complex, since epoll_add must used called exactly when no events were previously set, epoll_mod must be used when any events were previously set, and epoll_del only called when the removing all events.
918e9c5e 2010-01-23 16:38:36 Fix a number of warnings from gcc -pedantic
e2ca403f 2010-01-23 16:23:45 Make it compile under gcc --std=c89.
ff3f6cd4 2010-01-22 16:14:49 Check more internal event_add() calls for failure Most of these should be unable to fail, since adding a timeout generally always works. Still, it's better not to try to be "too smart for our own good here." There are some remaining event_add() calls that I didn't add checks for; I've marked those with "XXXX" comments.
7296971b 2009-12-29 16:38:03 Detect setenv/unsetenv; skip main/base_environ test if we can't fake them. Previously, we assumed that we would have setenv/unsetenv everywhere but WIN32, where we could fake them with putenv. This isn't so: some other non-windows systems lack setenv/unsetenv, and some of them lack putenv too. The first part of the solution, then, is to detect setenv/unsetenv/ putenv from configure.in, and to fake setenv/unsetenv with putenv whenever we have the latter but not one of the former. But what should we do when we don't even have putenv? We could do elaborate tricks to manipulate the environ pointer, but since we're only doing this for the unit tests, let's just skip the one test in question that uses setenv/unsetenv.
97a8c790 2010-01-22 00:34:21 Fix compilation of rate-limit code when threading support is disabled
26e1b6f2 2010-01-21 01:51:40 Remove some commented-out code in evutil
8d4aaf90 2010-01-20 12:56:54 Don't use a bind address for nameservers on loopback If the user sets a bind address to use for nameservers, and a nameserver happens to be on 127.0.0.1, the nameserver will generally fail. This patch alters this behavior so that the bind address is only applied when the nameserver is on a non-loopback address.
06839503 2010-01-19 14:01:36 Functions to access more fields of struct event. Once event_assign() or event_new() had been called, there was no way to get at a copy of the event's callback, callback argument, or configured events. This patch adds an accessor function for each, and an all-fields accessor for code that wants to re-assign one field of an event. This patch also adds a function to return sizeof(struct event), so that code with intense RAM needs can still retain ABI compatibility between versions of Libevent without having to heap-allocate every struct event individually. The code here was first proposed by Pavel Pisa.
70670067 2010-01-19 13:55:53 Add a LICENSE file so people can find our license easily For what it's worth, we are aware that "Copyright $YEAR $NAME" is sufficient notice of copyright on software under US law and Internationally, and saying Copyright (c) $YEAR $NAME is a bit nutty. The character sequence (c) has never been ruled to have the same force in US law as the actual copyright symbol, and that neither of these US-specific symbols adds anything of value beyond saying "Copyright" since the Berne convention took effect in the US back in 1989. Similarly, saying "all rights reserved" doesn't do anything magical unless your software goes in a time-warp back to when the Buenos Aires Convention was the general rule. (And what will they run it on back then?) And what would even lead you to say "All Rights Reserved" when you're explicitly granting most of those rights to anybody receiving the work in accordance with the 3-clause BSD license? But still the FOSS community retains these ritual notations out of a kind of cargo-cult lawyering. Who knows? Perhaps one day, if we write our copyright notices ineptly enough, John Frum will come and give us a DFSG-compatible license that everybody can get behind. (Also, I am not a lawyer. The above should not be taken as legal advice. -- Nick)
4b9f307d 2010-01-15 10:26:25 Add a forgotten header (changelist-internal.h)
85464579 2010-01-14 23:28:16 Merge commit 'niels/http_dns'
78a50fe0 2010-01-14 17:39:54 forgot to add void to test function
26714ca1 2010-01-14 17:05:00 add a test for evhttp_connection_base_new with a dns_base
b8226390 2010-01-14 16:53:25 move dns utility functions into a separate file so that we can use them for http testing
5032e526 2010-01-14 15:42:07 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
3225dfb9 2010-01-14 17:04:08 Remove kqueue->pend_changes. Since we're no longer writing directly to it from add/del, we don't need to worry about it changing as kq_dispatch releases the lock. We would make it a local variable, except that we wouldn't want to malloc and free it all the time.
45e5ae37 2010-01-14 16:31:05 Make kqueue use changelists. This fixes a bug in kqueue identified by Charles Kerr and various Transmission users, where adding and deleting an event in succession would make the event get reported, even if we didn't actually want to see it. Of course, this also makes the array of changes passed to kevent smaller, which could help performance.
27308aae 2010-01-14 16:30:40 Changelist code to defer event changes until just before dispatch This is necessary or useful for a few reasons: 1) Sometimes applications will add and delete the same event more than once between calls to dispatch. Processing these changes immediately is needless, and potentially expensive (especially if we're on a system that makes one syscall per changed event). Yes, this actually happens in practice for nonpathological code, such as in cases where the user's callback conditionally re-adds a non-persistent event, or where draining a buffer turns off writing and invokes a user callback which adds more data which in turn re-enabled writing. 2) Sometimes we can coalesce multiple changes on the same fd into a single syscall if we know about them in advance. For example, epoll can do an add and a delete at the same time, but only if we have found out about both of them before we tell epoll. 3) Sometimes adding an event that we immediately delete can cause unintended consequences: in kqueue, this makes pending events get reported spuriously.
ec34533a 2009-12-30 00:41:03 Make http use evconnlistener. Now that we have a generic listen-on-a-socket mechanism, there's no longer any reason to have a separate listen-on-a-socket implementation in http.c. This also lets us use IOCP and AcceptEx() when they're enabled. Possibly, we should have a new mechanism to add a socket given only a listener.
c698b77d 2009-12-30 00:11:27 Allow http connections to use evdns for hostname looksups. This was as simple as using bufferevent_connect_hostname instead of calling connect() ourself, which already knows how to use an evdns_base if it gets one. Untangling the bind code might be a little trickier.
a334b31c 2010-01-14 14:46:16 More unit tests for getaddrinfo_async: v4timeout and cancel. One covers the case where the v4 request times out but the v6 request doesn't. The other makes sure that cancelling a request actually works.
94131e92 2010-01-12 15:58:36 Fix test.sh on shells without echo -n Some systems have a version of /bin/sh whose builtin echo doesn't support the -n option used in test/test.sh. /bin/echo, however, usually does. This patch makes us use /bin/echo for echo -n whenever it is present. Also, our use of echo -n really only made sense when suppressing all test output. Since test output isn't suppressed when logging to a file, this pach makes us stop using echo -n when logging to a file.
b9f43b23 2010-01-11 20:47:36 Add a comment on evthread_enable_lock_debuging.
6cc79c6b 2010-01-11 19:04:11 Add unit-test for bad_request bug fixed in 1.4 recently. This is a partial forward-port from 4fd2dd9d83a000b6. There's no need to forward-port the bugfix, since the test passes with http.c as-is. I believe we fixed this while we were porting evhttp to bufferevent. --nickm
510ab6bc 2009-12-30 19:24:39 Comestic changes in evconnlistener_new(), new_accepting_socket(), accepted_socket_invoke_user_cb() and iocp_listener_enable().
fec66f96 2009-12-30 19:22:23 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.
4367a33a 2009-12-30 19:09:14 Fixed a fd leak in start_accepting(), plus cosmetic changes
2f33e00a 2010-01-01 04:13:05 Fixed a memory leak on windows threads implementation. The CRITICAL_SECTION was not being free'd in evthread_win32_lock_free().
66c02c78 2010-01-08 04:02:19 Look at the proper /etc/hosts file on windows. This is harder than it might initially seem, since the proper filename depends on what the admin has decided to call the windows system directory, which for all we know might be Q:\tralfamidore\slartibartfast. And of course, this being windows, there are twelve ways to do it, where you can pick a nice one or a portable one, but not a really nice portable one.
72dd6667 2009-12-07 17:21:41 evdns_getaddrinfo() now supports the /etc/hosts file. The regular blocking evutil_getaddrinfo() already supported /etc/hosts by falling back to getaddrinfo() or gethostbyname(). But evdns_getaddrinfo() had no such facility. Now it does. The data structure here isn't very clever. I guess people with huge /etc/hosts files will either need to get out of the 1980s, or submit a patch to this code so that it uses a hashtable instead of a linked list. Includes basic unit tests.
0f7144fd 2009-12-07 17:21:13 Refactor code from evdns into a new internal "read a file" function.
eaaf27f1 2010-01-06 18:41:46 Enable branch-prediction hints with EVUTIL_UNLIKELY. This had been accidentally disabled. Since it seems to work with GCC, I'm turning it back on when GCC is present.
29151e65 2010-01-06 18:42:59 Fix byte counts when mixing deferred and non-deferred evbuffer callbacks. This patch finishes 390e0561, which was somehow committed in a half-finished state. It solves a failing unit test on windows.
ba2945f9 2010-01-06 17:59:44 Merge branch 'ratelimit' Conflicts: bufferevent_async.c
0546ce11 2009-12-30 05:03:54 Eradicated the last free() call. Let mm_free() take care of deallocation.
165d30e3 2009-12-30 14:29:56 Fix compilation of rate-limiting code on win32.
885b4273 2009-12-30 13:50:52 Fix test-ratelim compilation on Linux. I'd forgotten to include time.h, and to link against libm.
78ed0972 2009-12-30 11:58:36 Never believe that we have pthreads on win32, even if gcc thinks we do. Apparently some newer versions of mingw provide a fake pthreads api to let applications work even if they don't know about windows threading. That's nice, but we aren't one of those.
2e8eeea3 2009-12-29 19:50:03 Fix crash bugs when a bufferevent's eventcb is not set. In many places throughout the code, we called _bufferevent_run_eventcb without checking whether the eventcb was actually set. This would work fine when the bufferevent's callbacks were deferred, but otherwise the code would segfault. Strangely, we always remembered to check before calling the _bufferevent_run_{read,write}cb functions. To prevent similar errors in the future, all of _buferevent_run_{read,write,event}cb now check to make sure the callback is actually set before invoking or deferring the callback. This patch also removes the now-redundant checks for {read,write}cb.
0b151a9f 2009-12-29 18:11:52 Whitespace fixes in test.sh
7dfbe94a 2009-12-29 18:07:51 Allow test.sh to be run as ./test/test.sh
c382de64 2009-12-29 17:59:55 Allow the user to redirect the verbose output of test/test.sh to a file By default, the test.sh script still suppresses the output of all the tests it invokes. Now, however, you can have that output written to a file specified in the TEST_OUTPUT_FILE shell variable.
1e56a32d 2009-12-29 16:04:16 Make the initial nameserver probe timeout configurable. When we decide that a nameserver is down, we stop sending queries to it, except to periodically probe it to see if it has come back up. Our previous probe sechedule was an ad-hoc and hard-wired "10 seconds, one minute, 5 minues, 15 minutes, 1 hour, 1 hour, 1 hour...". There was nothing wrong with having it be ad-hoc, but making it hard-wired served no good purpose. Now the user can set the initial timeout via a new "initial-probe-timeout:" option; future timeouts back off by a factor of 3 on every failure to a maximum of 1 hour. As a side-benefit, this lets us cut the runtime of the dns/retry test from about 40 seconds to about 3 seconds. Faster unit tests are always a good thing.
ee4953f8 2009-12-29 16:03:30 Fix the code that allowed DNS options to not end with : We tried to fix this in 0.2.0.3-alpha, but our fix was buggy.
d0939d2b 2009-12-29 16:21:26 Introduced evutil_make_socket_closeonexec() to preserve fd flags for F_SETFD. Use this to eliminate the various macros that called F_SETFD throughout the code.
4df7dbcb 2009-12-29 16:19:24 Adjusted fcntl() retval comparison on evutil_make_socket_nonblocking(). Apparently, a successful return value on F_SETFL is "anything but -1".
82743794 2009-12-24 17:47:14 Do not make bufferevent_setfd implicitly disable EV_READ and EV_WRITE. This obviates the need for BEV_SUSPEND_CONNECTING, and good riddance.
f0c0124e 2009-12-23 07:54:13 Testing code for bufferevent rate-limiting. This is not part of the regression tests, since running it necessarily takes a while. There is a new test-ratelim test; run it with '-h' for an argument to see its options.
737c9cd8 2009-11-27 13:16:54 Rate-limiting for bufferevents; group and individual limits are supported. The fairness algorithms are not the best, not every bufferevent type is supported, and some of the locking tricks here are simply absurd. Still, this code should be a good first step.
47854a80 2009-12-28 01:40:37 Expose our cached gettimeofday value with a new interface I've got a two use case that wants this for a fairly sensible purpose: one external and on internal.
5a43df82 2009-12-28 16:03:47 Improve readability of evutil_unparse_protoname()
0d64051f 2009-12-28 16:01:59 Fix a bogus free in evutil_new_addrinfo()
24fb502f 2009-12-28 16:01:12 Fix an fd leak in evconnlistener_new_bind().
4c8b7cdc 2009-12-28 16:00:05 Make evutil_make_socket_nonblocking() leave any other flags alone. Fixes bug 2922121
fee2c779 2009-12-28 15:53:01 Fix compilation of devpoll.c by adding missing thread includes. (Bug 2922156)
a47d88d7 2009-12-23 07:53:19 Replace some cases of uint32_t with ev_uint32_t. Spotted by Roman Puls.
4a5b5343 2009-12-23 07:48:43 Do not ignore bufferevent_enable(EV_READ) before bufferevent_connect(). Previously, we weren't remembering that we wanted to re-add the read event once the connect was finished. Now we are.
390e0561 2009-12-22 15:52:02 Fix up behavior of never-defered callbacks a little
5846bf6c 2009-12-22 15:51:39 Simplify the read high-watermark checking.
c69d5a5d 2009-12-22 12:03:46 Remove the contents of WIN32-Prj as unmaintained. Makefile.nmake is now the preferred way to build with MSVC; the project files haven't worked properly in ages.
292467c0 2009-12-22 00:58:52 Use evutil_socket_t, not int, when logging socket errors.
c51bb3c3 2009-12-21 16:36:40 Fix a few locking issues on windows.
5a112d3c 2009-12-18 23:37:50 Set all instances of the version number correctly. Note that we've made two subtle mistakes: we are supposed to suffix any non-released version with "-dev", and we're supposed to use the last byte of the numeric version to indicate whether we have done this. For example, when 2.0.4-alpha is released, its numeric versin will be 0x 02 00 04 00. As soon as we tag it, we will change the version in the git repository to 2.0.4-alpha-dev, whose numeric version will be 0x 02 00 04 01 or something.
67995270 2009-12-18 17:04:37 Drop install-sh from our git repo: a mismatched version could break "make dist"
a773df54 2009-12-18 16:24:41 Fix a segfault when freeing SSL bufferevents in an unusual order Have container bufferevents hold a reference to their underlying bufferevents. (Commit message and minor revisions by nickm.)
a6adeca7 2009-12-17 12:38:46 Fix a segfault when writing a very fragmented evbuffer onto an SSL Fixes bug 2916328.
f6430ac1 2009-12-08 17:02:24 Update sample/signal-test.c to use newer APIs and not leak.
ea6b1df2 2009-12-08 15:38:34 Only define _GNU_SOURCE if it is not already defined.
70cdfe49 2009-12-06 02:59:19 Fix compile on Snow Leopard with gcc warnings enabled
7ae94450 2009-12-04 16:37:43 Fix a snow leopard compile warning in the unit tests. Reported by Sebastian Hahn.