Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 693c24ef | 2009-11-09 17:16:30 | Implement queued timeouts for case where many timeouts are the same. Libevent's current timeout code is relatively optimized for the randomly scattered timeout case, where events are added with their timeouts in no particular order. We add and remove timeouts with O(lg n) behavior. Frequently, however, an application will want to have many timeouts of the same value. For example, we might have 1000 bufferevents, each with a 2 second timeout on reading or writing. If we knew this were always the case, we could just put timeouts in a queue and get O(1) add and remove behavior. Of course, a queue would give O(n) performance for a scattered timeout pattern, so we don't want to just switch the implementation. This patch gives the user the ability to explicitly tag certain timeout values as being "very common". These timeout values have a cookie encoded in the high bits of their tv_usec field to indicate which queue they belong on. The queues themselves are each triggered by an entry in the minheap. See the regress_main.c code for an example use. svn:r1517 | ||
| 25a5e681 | 2009-11-05 20:37:19 | Build fixes for MSVC svn:r1506 | ||
| d14c3b45 | 2009-11-05 18:25:46 | Fix another ssize_t user svn:r1503 | ||
| 47bad8ab | 2009-11-04 20:17:32 | Implement size limits on HTTP header length and body length. Patch from Constantine Verutin, simplified a little. svn:r1500 | ||
| 0b9eb1bf | 2009-11-03 20:40:48 | Add a bufferevent function to resolve a name then connect to it. This function, bufferevent_socket_connect_hostname() can either use evdns to do the resolve, or use a new function (evutil_resolve) that uses getaddrinfo or gethostbyname, like http.c does now. This function is meant to eventually replace the hostname resolution mess in http.c. svn:r1496 | ||
| e90e14fb | 2009-11-02 16:31:13 | Call the bufferevent_flush_mode variable "mode" more consistently in the documentation. Spotted by Alex. svn:r1485 | ||
| 516452b7 | 2009-10-30 21:08:29 | Keep openssl errors associated with the right bufferevent object. OpenSSL has a per-thread error stack, and really doesn't like you leaving errors on the stack. Rather than discard the errors or force the user to handle them, this patch pulls them off the openssl stack and puts them on a stack associated with the bufferevent_openssl. If the user leaves them on the stack then, it won't affect any other connections. This bug was found by Roman Puls. Thanks! svn:r1481 | ||
| e9ee1057 | 2009-10-27 04:25:45 | Give event_assign a return value, and make it less inclined to exit(). We also refactor event_assign so that it is the core function, and event_set() is only the wrapper. svn:r1469 | ||
| a8267663 | 2009-10-26 19:59:51 | API to replace all calls to exit() with a user-supplied fatal-error handler. Also, add unit tests for logging. svn:r1462 | ||
| 879420a7 | 2009-10-23 22:00:29 | Expose a narrow window to the IOCP code. svn:r1459 | ||
| b73ad7bc | 2009-10-21 18:48:22 | Treat the bitwise OR of two enum values as an int. This makes our interfaces usable from C++, which doesn't believe you can say "bufferevent_socket_nase(base, -1, BEV_OPT_CLOSE_ON_FREE|BEV_OPT_DEFER_CALLBACKS)" but which instead would demand "static_cast<bufferevent_options>(BEV_OPT_CLOSE_ON_FREE| BEV_OPT_DEFER_CALLBACKS))" for the last argument. Diagnosis and patch from Chris Davis. svn:r1456 | ||
| e1c9b84a | 2009-10-19 16:20:12 | Fix compilation for listener.h for C++ - missing extern "C". Patch from Ferenc Szalai. svn:r1448 | ||
| e3fd294a | 2009-10-16 13:19:57 | Spelling fixes in comments and strings. svn:r1445 | ||
| e6b747c3 | 2009-10-12 21:06:30 | Declare struct timezone in util.h so that borken mingw versions do not complain svn:r1441 | ||
| d5b640fc | 2009-10-01 15:29:08 | Apply Ka-Hing Cheung's event_base_got_[break|exit] patch, with locking and whitespace fixes. svn:r1438 | ||
| c8b0fe4a | 2009-08-16 19:22:10 | Define evhttp_del_accept_socket [Patch from David Reiss] svn:r1423 | ||
| 6c53334c | 2009-08-16 19:22:04 | Define evhttp_{bind,accept}_socket_with_handle [Patch from David Reiss] svn:r1422 | ||
| 4bcd5646 | 2009-08-16 19:21:57 | Make evhttp_bound_socket visible, and provide an accessor to its fd Declare the previously private struct evhttp_bound_socket in event2/http.h as an opaque struct. Implement evhttp_bound_socket_get_fd, which returns the file descriptor of an evhttp_bound_socket. [Patch from David Reiss] svn:r1421 | ||
| 0755833e | 2009-08-16 19:21:50 | Minor documentation fixes [Patch from David Reiss] svn:r1420 | ||
| f2282398 | 2009-08-14 20:07:35 | New function to put an SSL bufferevent into a renegotiating state. svn:r1418 | ||
| 800f9aa6 | 2009-08-09 20:17:29 | When bufferevent_socket_connect is called with no address, assume that our existing fd is connecting and put the connection into "connecting" mode. svn:r1411 | ||
| 8a99083f | 2009-08-07 17:16:52 | Add an evbuffer_search_range() to search a bounded range of a buffer This can be handy when you have one search to find the end of a header section, and then you want to find a substring within the header section without looking at the body. svn:r1410 | ||
| d4134772 | 2009-07-31 17:35:42 | Refactor evbuffer_readln() into a search-for-eol function and an extract-line function. svn:r1404 | ||
| 7c688dd9 | 2009-07-31 14:41:45 | New function to expose bufferevent.enabled svn:r1401 | ||
| 621aafd2 | 2009-07-30 22:11:23 | Export sockaddr comparison functionality. svn:r1400 | ||
| eecefc50 | 2009-07-30 20:41:00 | Add a function to extract the SSL object from a bufferevent_openssl. svn:r1395 | ||
| 7c20a6ae | 2009-07-30 17:01:21 | Export an ev_socklen_t. svn:r1391 | ||
| 75fe762e | 2009-07-30 17:00:56 | Accessor function to get a listener's associated fd svn:r1390 | ||
| 72ea534f | 2009-07-28 19:41:57 | Export evutil_str[n]casecmp as evutil_ascii_str[n]casecmp. svn:r1387 | ||
| 5b5b880b | 2009-07-28 19:41:39 | Various MSVC cleanups from Brodie Thiesfield. svn:r1385 | ||
| 709c21c4 | 2009-07-28 04:03:57 | Bufferevent support for openssl. This code adds a new Bufferevent type that is only compiled when the openssl library is present. It supports using an SSL object and an event alert mechanism, which can either be an fd or an underlying bufferevent. There is still more work to do: the unit tests are incomplete, and we need to support flush and shutdown much better. Sometimes events are generated needlessly: this will hose performance. There's a new encrypting proxy in sample/le-proxy.c. This code has only been tested on OSX, and nowhere else. svn:r1382 | ||
| 670658eb | 2009-07-21 18:32:57 | Correct the signatures for evdns_configure_windows_nameservers(), now that it is exposed. svn:r1369 | ||
| e8400a43 | 2009-07-20 14:55:35 | Rename encode_int(64) to avoid polluting the global namespace. They're now called evtag_encode_int(64). The old names are available as macros in event2/tag_compat.h. Also, add unit tests for encode/decode_int64. svn:r1365 | ||
| 1fb2e818 | 2009-07-17 21:47:45 | Use a uniform strategy when a function is not working: do not expose it. Rather than failing at runtime, it is better to fail at compile or link time. svn:r1363 | ||
| d3bef1a1 | 2009-07-17 20:32:25 | Finish implementing new convention that whenever an optional function is declared, a corresponding macro is defined. svn:r1361 | ||
| a386fde3 | 2009-07-17 20:28:03 | Checking for MS_WINDOWS rather than WIN32 is a Tor-ism. Fix that! svn:r1360 | ||
| ed038295 | 2009-07-17 20:22:48 | Define a macro to indicate that we have defined one of the optional evthread_use macros svn:r1355 | ||
| 5d71b25b | 2009-07-17 18:38:38 | Remove all trailing whitespace from end-of-line. svn:r1350 | ||
| eb97bb76 | 2009-05-28 15:58:28 | Make the headers compile happily with pedantic C compilers. Original message from SF patch 2797966: While commas at the end of enumerator lists are valid in c99, they are not valid +in c89 nor in c++. When using gcc/g++ with the -pedantic flag, users will +receive a warning (gcc) or an error(g++) when including the event2/event.h and +event2/bufferevent.h. The errors look something like event2/event.h:159: error: comma at end of enumerator list Patch from Akita Noek on Sourceforge. svn:r1321 | ||
| 0b4ab122 | 2009-05-28 15:47:15 | Spell-check the the headers svn:r1320 | ||
| 3f0e4928 | 2009-05-27 23:48:59 | small doc fix. svn:r1319 | ||
| 5232cfa3 | 2009-05-25 23:11:20 | Consistently say "eventcb" instead of "errorcb" svn:r1316 | ||
| 0b22ca19 | 2009-05-22 19:11:48 | Use ev_ssize_t in place of ssize_t *everywhere*. svn:r1309 | ||
| 8997f234 | 2009-05-21 20:59:00 | Use the native "struct iovec" as our "struct evbuffer_iovec" when available, so we do not need to copy more pointers than necessary. svn:r1299 | ||
| 23243b8a | 2009-05-19 21:39:35 | Replace reserve/commit with new iovec-based interface. Add a new evbuffer_peek. svn:r1296 | ||
| ed1bbc7a | 2009-05-18 16:15:56 | Tweak the evconnlistener interface a little. svn:r1295 | ||
| dc4c7b95 | 2009-05-15 22:44:18 | Change the interface of evbuffer_add_reference: give the cleanup function more info. svn:r1294 | ||
| bba69e03 | 2009-05-15 20:23:59 | New semantics for evbuffer_cb_set_flags(). Previously, set_flags() would replace all previous user-visible flags. Now it just sets the flags, and there is a clear_flags() function to clear other flags. svn:r1293 | ||
| b4886ec8 | 2009-05-15 18:44:44 | Trim 22 bytes from struct event on 32 bit platforms, more on 64-bit platforms. svn:r1292 | ||
| 27fef1ef | 2009-05-14 18:06:41 | Note problems with some newer evbuffer interfaces. svn:r1286 | ||
| 3e759a01 | 2009-05-14 18:06:29 | Actually, do not provide a compatibility name "EVBUFFER_CONNECTED": there is no old code that uses it. svn:r1285 | ||
| 31d89f27 | 2009-05-13 20:37:21 | Add a "ctrl" mechanism to bufferevents for property access. OpenSSL uses something like this to implement get/set access for properties on its BIOs, so that it doesn't need to add a pair of get/set functions to the vtable struct for every new abstract property it provides an accessor for. Doing this lets us make bufferevent_setfd abstract, and implement an abstract bufferevent_getfd. svn:r1284 | ||
| 83f46e51 | 2009-05-13 20:36:56 | Do not use the "evbuffer_" prefix to denote parts of bufferevents. This is a bit of an interface doozy, but it's really needed in order to be able to document this stuff without apologizing it. This patch does the following renamings: evbuffercb -> bufferevent_data_cb everrorcb -> bufferevent_event_cb EVBUFFER_(READ,WRITE,...) -> BEV_EVENT_(...) EVBUFFER_(INPUT,OUTPUT) -> bufferevent_get_(input,output) All the old names are available in event2/bufferevent_compat.h svn:r1283 | ||
| 659d54d5 | 2009-05-05 02:59:26 | Add new code to make and accept connections. This is stuff that it's easy to get wrong (as I noticed when writing bench_http), and that takes up a fair amount of space (see http.c). Also, it's something that we'll eventually want to abstract to use IOCP, where available. svn:r1272 | ||
| 0fd70978 | 2009-05-05 01:09:03 | Add an event_get_base() function to remove one more reason to include event_struct.h svn:r1271 | ||
| d5ca0763 | 2009-05-02 16:23:29 | Move event_set() and friends to event2/event_compat.h. These functions are deprecated in favor of event_assign(). svn:r1267 | ||
| b2e8fd0e | 2009-04-30 23:56:53 | Apparently MSVC lacks a ssize_t. Define an ev_ssize_t for headers, and make ssize_t work elsewhere. svn:r1261 | ||
| 19594141 | 2009-04-29 20:48:21 | Clarify semantics on event_pending() svn:r1249 | ||
| a146af1d | 2009-04-25 00:15:55 | move more code directly into evrpc.c; provide backwards compatible vararg macros svn:r1244 | ||
| b228ff91 | 2009-04-25 00:15:31 | remove vararg macros for accessing evrpc structs svn:r1243 | ||
| bbf79707 | 2009-04-25 00:14:58 | refactor evrpc.h header filer svn:r1241 | ||
| 11ff74cf | 2009-04-22 19:41:23 | Add a flag to disable checking the EVENT_* environment variables. svn:r1220 | ||
| ea8cc76c | 2009-04-21 18:47:23 | Fix the documentation of event_pending. svn:r1215 | ||
| eda27f95 | 2009-04-19 20:54:12 | Update copyright notices, add some missing license statements svn:r1208 | ||
| f00f0c25 | 2009-04-18 04:34:45 | make doxygen happier svn:r1199 | ||
| a98a512b | 2009-04-17 23:12:34 | Add a generic way for any bufferevent to make its callback deferred svn:r1197 | ||
| d047b323 | 2009-04-17 17:22:32 | Increment version to 2.0.1-alpha, and add a numeric version facility svn:r1193 | ||
| 49354138 | 2009-04-17 06:57:13 | Oh hey. There is no support for suspend/unsuspend. svn:r1187 | ||
| 7fa8451d | 2009-04-17 06:56:57 | Add a configure flag to hardcode all of our mm functions. svn:r1186 | ||
| a8f6d961 | 2009-04-17 06:56:09 | Actually stop using EVBUFFER_LENGTH/DATA, and move them to buffer_compat.h svn:r1183 | ||
| 796ba15f | 2009-04-17 06:55:25 | Stop claiming that APIs we have are missing. svn:r1182 | ||
| 838d0a81 | 2009-04-17 06:55:08 | Document many internal functions and pieces of code. svn:r1181 | ||
| 30648529 | 2009-04-17 01:03:07 | have evhttp_set_cb return an int; -1 on failure, 0 on success; this is better than returning a pointer svn:r1179 | ||
| 93d4f884 | 2009-04-14 20:11:10 | Make buffer iocp stuff compile happily svn:r1174 | ||
| 915193e7 | 2009-04-13 03:17:19 | Locking support for bufferevents. svn:r1170 | ||
| 1becc4c4 | 2009-04-13 03:08:11 | Refactor new elements of bufferevent into bufferevent_private structure This way we don't expose more of a bufferevent than we need to. One motivation is to make it easier to automatically get deferred callbacks with a bufferevent without exposing the deferred_cb structure. svn:r1169 | ||
| 6567ecd4 | 2009-04-13 03:07:37 | Remove if0 code in bufferevent_struct.h svn:r1168 | ||
| d2794e65 | 2009-04-11 15:26:29 | document evhttp_parse_query better svn:r1157 | ||
| b29b875d | 2009-04-10 20:43:08 | Facility to make evbuffers get their callbacks deferred. svn:r1154 | ||
| decdacfa | 2009-04-10 20:42:53 | Better explanation for bufferevent_pair svn:r1153 | ||
| 23085c92 | 2009-04-10 15:01:31 | Add a linked-pair abstraction to bufferevents. The new bufferevent_pair abstraction works like a set of buferevent_sockets connected by a socketpair, except that it doesn't require a socketpair, and therefore doesn't need to get the kernel involved. It's also a good way to make sure that deferred callbacks work. It's a good use case for deferred callbacks: before I implemented them, the recursive relationship between the evbuffer callback and the read callback would make the unit tests overflow the stack. svn:r1152 | ||
| 747331d1 | 2009-04-08 03:04:39 | Add freeze support to evbuffers. From the documentation: Prevent calls that modify an evbuffer from succeeding. A buffer may frozen at the front, at the back, or at both the front and the back. If the front of a buffer is frozen, operations that drain data from the front of the buffer, or that prepend data to the buffer, will fail until it is unfrozen. If the back a buffer is frozen, operations that append data from the buffer will fail until it is unfrozen. We'll use this to ensure correctness on an evbuffer when we're waiting for an overlapped IO call to finish. svn:r1143 | ||
| d2e9caa6 | 2009-04-06 20:38:19 | Fix evdns_cancel to alert callback and free associated RAM. Also, we add a test to make sure evdns_cancel is working properly. svn:r1139 | ||
| 60e0d59b | 2009-04-05 02:44:17 | Add locking to evbuffers. svn:r1134 | ||
| f1b1bad4 | 2009-04-03 14:27:03 | Make the new evbuffer callbacks use a new struct-based interface. The old interface would fail pretty hard when we had to batch up multiple adds and drains in a single call. svn:r1131 | ||
| f90500a5 | 2009-04-03 01:21:36 | Add a new improved search function. The old evbuffer_find didn't allow iterative searching, and forced us to repack the buffer completely every time we searched in it. The new evbuffer_search addresses both of these. As a side-effect, the evbuffer_find implementation is now a little more efficient. svn:r1130 | ||
| 994e8578 | 2009-03-30 17:36:22 | correct evbuffer_drain documentation from John Khvatov svn:r1127 | ||
| ec35eb55 | 2009-02-12 22:19:54 | Make threading functions global, like the mm_ functions. Use the libevent_pthread.la library in regress_pthread. svn:r1121 | ||
| 77c80b8d | 2009-02-11 17:24:11 | New bind-to option to allow DNS clients to bind to arbitrary ports for their outgoing addresses. svn:r1119 | ||
| acaf65c3 | 2009-02-11 17:23:32 | Make evutil_parse_sockaddr_port give a useful socket-length output. svn:r1118 | ||
| c7b2f8fd | 2009-02-10 19:38:05 | New function to abstract SO_REUSEADDR. svn:r1102 | ||
| 4d92e426 | 2009-02-02 19:22:27 | forward-port: Make evdns_resolve_reverse args const. svn:r1096 | ||
| ea4b8724 | 2009-02-02 19:22:13 | checkpoint work on big bufferevent refactoring svn:r1095 | ||
| 8d3a10f8 | 2009-02-01 01:43:58 | Support temporarily suspending an evbuffer callback. This is different from disabling the callback, since we want to process changes, but not just yet. svn:r1091 | ||
| 2e50658d | 2009-02-01 01:07:33 | Fix a typo in buffer.h svn:r1089 | ||
| 66b2a7ff | 2009-01-29 03:20:40 | test evbuffer_add_reference svn:r1068 | ||
| b85b710c | 2009-01-27 22:34:36 | Update copyright statements to reflect the facts that: a) this is 2009 b) niels and nick have been comaintainers for a while c) saying "all rights reserved" when you then go on to explicitly disclaim some rights is sheer cargo-cultism. svn:r1065 | ||
| 9993137c | 2009-01-27 21:10:31 | Remove all trailing whitespace in all the source files. svn:r1063 | ||
| fdf69493 | 2009-01-27 06:05:38 | sendfile/mmap and memory reference implementation for evbuffers svn:r1057 | ||
| b93e5054 | 2009-01-27 05:33:39 | second argument to evbuffer_pullup should be ssize_t svn:r1056 |