|
72bafc17
|
2009-11-16T22:23:55
|
|
Remove the stupid brokenness where DNS option names needed to end with a
colon.
svn:r1536
|
|
f9de8670
|
2009-11-16T22:23:06
|
|
Fix a declaration of __func__ in rpcgen.
svn:r1535
|
|
18a8cfac
|
2009-11-15T19:00:12
|
|
Prefer calloc(a,b) to malloc(a*b). via openbsd.
svn:r1531
|
|
629a6133
|
2009-11-15T18:59:59
|
|
When running set[ug]id, don't check the environment.
Idea from OpenBSD, but made a bit more generic to handle uncivilized lands
that do not define issetugid.
svn:r1530
|
|
e2b2de79
|
2009-11-15T18:59:48
|
|
Use arc4random() for dns transaction ids where available. Patch taken from OpenBSD
svn:r1528
|
|
c79a45e0
|
2009-11-14T21:54:30
|
|
Fix a couple of event_debug calls.
svn:r1527
|
|
74871cac
|
2009-11-09T19:37:27
|
|
Change event_base.activequeues to "array of eventlist".
Previously, event_base.activequeues was of type "array of pointers to
eventlist." This was pointless: none of the eventlists were allowed
to be NULL. Worse, it was inefficient:
- It made looking up an active event queue take two pointer
deferences instead of one, thus risking extra cache misses.
- It used more RAM than it needed to, because of the extra pointer
and the malloc overhead.
Also, this patch fixes a bug where we were saying
calloc(N,N*sizeof(X)) instead of calloc(N,sizeof(X)) when allocating
activequeues. That part, I'll backport.
Also, we warn and return -1 on failure to allocate activequeues,
rather than calling event_err.
svn:r1525
|
|
cdf58009
|
2009-11-09T19:37:21
|
|
Change an OOM err to a warn in event_tagging.c
svn:r1524
|
|
26573d3d
|
2009-11-09T19:37:15
|
|
Change an err to a warn in bufferevent_openssl
svn:r1523
|
|
37e23f80
|
2009-11-09T18:50:20
|
|
Patch from Ryan Phillips: accept ipv6 addresses returned by getaddrinfo in http.c
svn:r1522
|
|
b2fe4aed
|
2009-11-09T18:36:34
|
|
Unit tests for got_break and got_exit.
svn:r1521
|
|
e88079a8
|
2009-11-09T18:30:57
|
|
Make persistent timeouts more accurate.
Previously, if the user scheduled a persistent timeout for {1,0}, we
would schedule the first one at "now+one second", and then when we
were about to run its callback, we would schedule it again for one
second after that. This would introduce creeping delays to the event
that was supposed to run every second.
Now, we schedule the event for one second after it was _last
scheduled_. To do this, we introduce internal code to add an event at
an _absolute_ tv rather than at now+tv.
svn:r1520
|
|
59be8942
|
2009-11-09T18:30:48
|
|
Make sure that common timeouts are inserted in-order.
This code should be a no-op, except under strange thread contention
situations.
svn:r1519
|
|
ab96b5f3
|
2009-11-09T18:30:33
|
|
Add an option to disable the timeval cache.
svn:r1518
|
|
693c24ef
|
2009-11-09T17: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
|
|
784b8773
|
2009-11-06T21:46:57
|
|
We do not work any more without an event-config.h; stop pretending that it is meaningful to check for HAVE_CONFIG_H
svn:r1516
|
|
4d48cf61
|
2009-11-06T21:13:25
|
|
Fix kqueue.c build on GNU/kFreeBSD systems.
Yes, some people like to have a BSD-family kernel (thus getting
kqueue) with a GNU-family libc (thus occasionally mandating
_GNU_SOURCE).
Thanks to Debian for noticing this.
svn:r1514
|
|
5ec43fe4
|
2009-11-06T17:12:39
|
|
Fix a miscalculated realloc() size in win32select.c.
This bug was introduced by the code to make the backend able to safely release the base lock while calling select().
Also, we change win32select.c to the same 32-fds-to-start default as the rest of the backends, so that the main/many_events test can test it. It was at 64-to-start, so the test wasn't hitting it.
svn:r1513
|
|
ae5fbf49
|
2009-11-05T22:24:21
|
|
Actually add the new dns-example.c code. :p
svn:r1512
|
|
d2e7e65d
|
2009-11-05T22:19:09
|
|
Move the evdns sample code into the sample directory and fix it not to use any deprecated APIs.
svn:r1511
|
|
ac633aeb
|
2009-11-05T21:22:23
|
|
Fix some build warnings on MSVC, mostly related to signed/unsigned comparisons.
svn:r1510
|
|
43ba6693
|
2009-11-05T20:45:07
|
|
Export nmakefiles in source distribution.
svn:r1509
|
|
4ca9efea
|
2009-11-05T20:40:11
|
|
Add nmake files to build with MSVC.
Right now, they just make static libraries and unit tests. They probably set lots of options wrong.
svn:r1507
|
|
25a5e681
|
2009-11-05T20:37:19
|
|
Build fixes for MSVC
svn:r1506
|
|
d3401928
|
2009-11-05T18:49:08
|
|
Rename win32.c to win32select.c, and take it out of the WIN32-Code ghetto.
svn:r1504
|
|
d14c3b45
|
2009-11-05T18:25:46
|
|
Fix another ssize_t user
svn:r1503
|
|
a0b30263
|
2009-11-05T18:07:27
|
|
Remove win32-code/config.h. It was apparently confusing.
svn:r1502
|
|
34f28e08
|
2009-11-05T15:57:22
|
|
Fix a few types to use compatible versions
svn:r1501
|
|
47bad8ab
|
2009-11-04T20:17:32
|
|
Implement size limits on HTTP header length and body length.
Patch from Constantine Verutin, simplified a little.
svn:r1500
|
|
86db1c85
|
2009-11-04T05:19:26
|
|
Commit ConnectEx code to get connect working with async bufferevents.
This is code by Chris Davis, with changes to get the unit tests failing less aggressively.
The unit tests for this code do not completely pass yet; Chris is looking into that. If they aren't passing by the next release, I'll turn off this code.
svn:r1499
|
|
6ca32df1
|
2009-11-04T03:54:05
|
|
Add a missing include for win32.
svn:r1498
|
|
f9c65580
|
2009-11-03T20:42:32
|
|
Oops; add missing bufferevent_evdns.c file
svn:r1497
|
|
0b9eb1bf
|
2009-11-03T20: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
|
|
fcc7668c
|
2009-11-03T20:05:06
|
|
Fix one IOCP-callback signature I missed
svn:r1495
|
|
0fd0255f
|
2009-11-03T19:54:56
|
|
Remove compat/sys/_time.h
I've gone through everything that it declared to see where it was used,
and it seems that we probably don't need it anywhere.
Here's what it declared, and why I think we're okay dropping it.
o struct timeval {}
(Used all over, and we can't really get away with declaring it ourselves;
we need the same definition the system uses. If we can't find struct
timeval, we're pretty much sunk.)
o struct timespec {}
(Used in event.c, evdns.c, kqueue.c, evport.c. Of these,
kqueue.c and event.c include sys/_time.h. event.c conditions its use on
_EVENT_HAVE_CLOCK_GETTIME, and kqueue() only works if timespec is defined.)
o TIMEVAL_TO_TIMESPEC
(Used in kqueue.c, but every place with kqueue has sys/time.h)
o struct timezone {}
(event2/util.h has a forward declaration; only evutil.c references it and
doesn't look at its contents.)
o timerclear, timerisset, timercmp, timeradd, timersub
(Everything now uses the evutil_timer* variants.)
o ITIMER_REAL, ITIMER_VIRTUAL, ITIMER_PROF, struct itemerval
(These are only used in test/regress.c, which does not include _time.h)
o CLOCK_REALTIME
(Only used in evdns.c, which does not include _time.h)
o TIMESPEC_TO_TIMEVAL
o DST_*
o timespecclear, timespecisset, timespeccmp, timespecadd, timespecsub
o struct clockinfo {}
o CLOCK_VIRTUAL, CLOCK_PROF
o TIMER_RELTIME, TIMER_ABSTIME
(unused)
svn:r1494
|
|
0aa6f513
|
2009-11-02T20:59:13
|
|
Fix remaining AcceptEx issues.
svn:r1492
|
|
e794d716
|
2009-11-02T20:20:40
|
|
Clean up acceptex code some more: add locking, single-threading, enable/disable.
svn:r1491
|
|
a84c87d7
|
2009-11-02T19:51:26
|
|
Refactor IOCP callback interface
Chris Davis points out that GetQueuedCompletionStatus
sometimes returns false not to report "No events for
you!" but instead to report "An overlapped operation
failed." Add a way to tell an event_overlapped that
its operation failed.
svn:r1490
|
|
9a772148
|
2009-11-02T19:31:29
|
|
Compilation and correctness fixes for IOCP listener code.
svn:r1489
|
|
8283b2f0
|
2009-11-02T19:30:25
|
|
Fix a major parenthesis bug in EVUTIL_UPCAST.
Fortunately, this didn't hurt anything previously, since we had no actual users of the macro where the offset of the base type wasn't 0.
svn:r1488
|
|
5f1d6e64
|
2009-11-02T17:42:16
|
|
Add more IOCP tests. They might not pass yet.
svn:r1487
|
|
5d2c1650
|
2009-11-02T17:42:09
|
|
More refactoring for IOCP listener code
svn:r1486
|
|
e90e14fb
|
2009-11-02T16:31:13
|
|
Call the bufferevent_flush_mode variable "mode" more consistently in the documentation. Spotted by Alex.
svn:r1485
|
|
7f0ad2f6
|
2009-11-02T16:17:06
|
|
Fix an errant user of ssize_t to use ev_ssize_t.
My usual strategy of grep '[^_]ssize_t' had apparently failed me,
since this ssize_t was in the first column.
Resolves bug 2890434; spotted by Mihai Draghicioiu.
svn:r1484
|
|
315fde1a
|
2009-10-30T22:43:53
|
|
Remove some duplicate code in kqueue.c and fix a small memory leak.
svn:r1483
|
|
96c6956e
|
2009-10-30T22:43:30
|
|
Add a "many events" regression test.
This is a glass-box test to get more coverage on the event loop
backends. We've run into bugs here before with fencepost errors, and
it turns out that none of our unit tests had enough events to
exercise the resize code.
Most of the backends have some kind of logic that resizes an array
when:
- The highest fd is too high
- The number of events added since the last iteration of the loop
is too high
- The number of active events is too high.
This test hits all 3 cases, and increases coverage in select.c by 7%,
in poll by 1%, and in kqueue by 9%.
svn:r1482
|
|
516452b7
|
2009-10-30T21: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
|
|
20f5bdfd
|
2009-10-29T19:25:33
|
|
Refactor evconnlistener to allow multiple implementations; add an (incomplete, not-yet-integrated) IOCP implementation.
svn:r1480
|
|
fa313f28
|
2009-10-29T18:30:43
|
|
Extract XP-only functions when initializing the IOCP port
svn:r1479
|
|
9976f1e7
|
2009-10-29T17:11:12
|
|
reformat weird indentation in dns tests
svn:r1478
|
|
3c2198cb
|
2009-10-29T17:10:36
|
|
Unit test for reverse ipv6 lookup
svn:r1477
|
|
5b3fb5bf
|
2009-10-29T16:35:20
|
|
More documentation and unit tests for event_tagging.
svn:r1476
|
|
1eadb3e3
|
2009-10-29T16:35:15
|
|
Actually use the logic in select.c designed to make the out_sets threadsafe.
svn:r1475
|
|
c70c2593
|
2009-10-29T16:35:09
|
|
Unit test for strlcpy
svn:r1474
|
|
e9098203
|
2009-10-27T18:25:19
|
|
Fix from Chris Davis: get error-logging to be happy on win32.
svn:r1473
|
|
904b5721
|
2009-10-27T06:47:25
|
|
Avoid calling exit() during event_base_new*()
Previously, each of the three make-an-event-base functions would exit
under different, weird circumstances, but return NULL on others.
- All three would exit on OOM sometimes.
- event_base_new() and event_init() would die if all backends were
disabled.
- None of them would die if the socketpair() call failed.
Now, only event_init() exits on failure, and it exits on every kind of
failure. event_base_new() and event_base_new_with_config() never do.
svn:r1472
|
|
a2a7d1d1
|
2009-10-27T05:16:32
|
|
Do not call the locking variant of event_add or event_active in some cases when we know we have the lock.
svn:r1471
|
|
d386dc89
|
2009-10-27T05:16:23
|
|
Refactor event_assing even more to avoid unnecessary calls
svn:r1470
|
|
e9ee1057
|
2009-10-27T04: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
|
|
10cf631e
|
2009-10-27T04:04:07
|
|
Do not add a newline to the end of log statements.
svn:r1468
|
|
369aafc4
|
2009-10-27T04:03:58
|
|
Refactor kq_init error handling.
svn:r1467
|
|
ed0e91e0
|
2009-10-27T04:03:50
|
|
New test flag to suppress logging for one test.
svn:r1466
|
|
7f10fac3
|
2009-10-26T20:07:06
|
|
Note assert-related change in changelog
svn:r1465
|
|
2e36dbe1
|
2009-10-26T20:00:43
|
|
Use EVUTIL_ASSERT() consistently instead of assert.
svn:r1464
|
|
37c3456d
|
2009-10-26T20:00:08
|
|
Add an EVUTIL_ASSERT() to replace our calls to assert().
The big difference here is that EVUTIL_ASSERT() passes its message on
via event_errx() before aborting, so that the application has a prayer
of noticing and recording it.
svn:r1463
|
|
a8267663
|
2009-10-26T19:59:51
|
|
API to replace all calls to exit() with a user-supplied fatal-error handler.
Also, add unit tests for logging.
svn:r1462
|
|
38aec9ec
|
2009-10-23T22:38:35
|
|
Tweaks to IOCP interface.
svn:r1461
|
|
7b107249
|
2009-10-23T22:07:05
|
|
Fix my fix for the bufferevent_connect_fail() test.
svn:r1460
|
|
879420a7
|
2009-10-23T22:00:29
|
|
Expose a narrow window to the IOCP code.
svn:r1459
|
|
c119e4a1
|
2009-10-23T17:40:00
|
|
Improve the behavior of le-proxy in a few cases.
svn:r1458
|
|
fdd11c00
|
2009-10-21T19:21:05
|
|
Make the bufferevent_connect_fail test faster on OSX.
It seems that connecting to a listener that is bound but not accepting
or listening doesn't give a 'connection refused' error on OSX, but
rather makes the connect() time out after 75 seconds. I couldn't find
any way to make the timout shorter. Fortunately, closing the listener
after a second or so makes the desired error occur after another
second or so.
svn:r1457
|
|
b73ad7bc
|
2009-10-21T18: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
|
|
4fbac2a5
|
2009-10-21T07:00:19
|
|
Test failing case of bufferevent_connect().
Code by Chris Davis.
svn:r1455
|
|
d8164d0c
|
2009-10-21T07:00:14
|
|
Fix win32 connect() event handling.
Christopher Davis reported:
Connection failures aren't reported on Windows when
using bufferevent_socket_connect, because Windows uses
select's exceptfds to notify of failure, and libevent
treats them like read events. Only the write event
handler is currently used to handle connection events.
We should think hard about this one, since it changes
behavior from 1.4.x. Anything that worked on Mac/Unix before
will work more consistently on Windows now... but this might
break stuff that worked only on Windows, but nowhere else.
Patch from Chris Davis.
svn:r1454
|
|
b89b58b5
|
2009-10-21T06:03:00
|
|
OSX compilation issues
svn:r1453
|
|
c9c4ec26
|
2009-10-21T05:36:27
|
|
Remove an EVBASE_RELEASE_LOCK that I missed.
svn:r1452
|
|
ed748a48
|
2009-10-21T04:45:59
|
|
Fix win32 compilation.
svn:r1451
|
|
6b22e74a
|
2009-10-21T03:54:00
|
|
Add locking to event_base_loop.
This is harder than it sounds, since we need to make sure to
release the lock around the key call to the kernel (e.g.,
select, epoll_wait, kevent), AND we need to make sure that
none of the fields that are used in that call are touched by
anything that might be running concurrently in another
thread. I managed to do this pretty well for everything but
poll(). With poll, I needed to introduce a copy of the
event_set structure.
This patch also fixes a bug in win32.c where we called
realloc() instead of mm_realloc().
svn:r1450
|
|
50825466
|
2009-10-21T02:14:16
|
|
Fix windows compilation warnings.
svn:r1449
|
|
e1c9b84a
|
2009-10-19T16:20:12
|
|
Fix compilation for listener.h for C++ - missing extern "C". Patch from Ferenc Szalai.
svn:r1448
|
|
b812563a
|
2009-10-16T13:20:16
|
|
Add a note that we should change previous_to_last to last_with_space
svn:r1447
|
|
f3dee9e8
|
2009-10-16T13:20:09
|
|
Correct the signatures for the evmap_io_* functions to use evutil_socket_t.
svn:r1446
|
|
e3fd294a
|
2009-10-16T13:19:57
|
|
Spelling fixes in comments and strings.
svn:r1445
|
|
25af6954
|
2009-10-14T00:46:47
|
|
When a bufferevent_connect() call fails, give the client an error callback.
Patch from Christopher Davis.
svn:r1444
|
|
fc83ca3c
|
2009-10-14T00:46:40
|
|
Fix some crash bugs when initializing evdns
svn:r1443
|
|
e6b747c3
|
2009-10-12T21:06:30
|
|
Declare struct timezone in util.h so that borken mingw versions do not complain
svn:r1441
|
|
633f3fb7
|
2009-10-02T03:07:29
|
|
Add changelog for last commit
svn:r1440
|
|
ba8a1771
|
2009-10-02T03:03:58
|
|
Do not notify the main thread more than needed.
Basically, we suppress the notification when an event is added or deleted
and:
- The event has no fd, or there is no change in whether we are
reading/writing on the event's fd.
- The event has no timeout, or adding the event did not make the earliest
timeout become earlier.
This should be a big efficiency win in applications with multiple threads and
lots of timeouts.
svn:r1439
|
|
d5b640fc
|
2009-10-01T15:29:08
|
|
Apply Ka-Hing Cheung's event_base_got_[break|exit] patch, with locking and whitespace fixes.
svn:r1438
|
|
8e8d94a3
|
2009-09-24T22:18:19
|
|
Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
svn:r1436
|
|
18fe4008
|
2009-09-23T23:51:26
|
|
Forward-port: fix android compilation
svn:r1435
|
|
2622e5ac
|
2009-09-16T17:17:57
|
|
Fix the assert I added to epoll.c: spotted by Dmitry Novikov
svn:r1432
|
|
c2ead9f1
|
2009-09-11T21:02:19
|
|
Treat events with fd == -1 as addable.
This turns out to simplify a fair bit of logic, including the bufferevent
code, and should fix bug 2850656.
svn:r1431
|
|
85255a63
|
2009-09-11T18:47:35
|
|
Make epoll use less RAM.
We do this by not allocating the maximum epoll_event array for the epoll
backend at startup. Instead, we start out accepting 32 events at a time, and
double the array's size when it seems that the OS is generating events faster
than we're requesting them. This saves up to 374K per epoll-based
event_base. Resolves bug 2839240.
svn:r1428
|
|
e3f89fa2
|
2009-09-11T18:21:57
|
|
Add a trivial race-fix from Chromium: do not try to re-detect whether we have a monotonic clock every time we make a new event_base.
svn:r1427
|
|
3b461a6d
|
2009-09-11T18:21:37
|
|
Treat a negative number of bytes to read as the kernel saying "I don't know."
svn:r1426
|
|
f65b8b09
|
2009-08-19T20:55:25
|
|
On connect, call only one of BEV_EVENT_CONNECTED or writecb.
Previously, if we had a socket bufferevent in connect state, we'd send
both of these to indicate that the connection was done. That was broken
since the point of adding BEV_EVENT_CONNECTED was so that we could
distinguish "we're connected" and "we wrote something".
Now, writecb is called only when
A) the connection finished but the user never put the socket into a
"connecting" state, or
B) data was actually written.
svn:r1425
|
|
2c1b0e44
|
2009-08-16T19:22:15
|
|
Fix build warnings and add changelog entry for evhttp patches.
svn:r1424
|
|
c8b0fe4a
|
2009-08-16T19:22:10
|
|
Define evhttp_del_accept_socket
[Patch from David Reiss]
svn:r1423
|
|
6c53334c
|
2009-08-16T19:22:04
|
|
Define evhttp_{bind,accept}_socket_with_handle
[Patch from David Reiss]
svn:r1422
|