1185 Commits

Author SHA1 Message Date
Nick Mathewson
a2a7d1d123 Do not call the locking variant of event_add or event_active in some cases when we know we have the lock.
svn:r1471
2009-10-27 05:16:32 +00:00
Nick Mathewson
d386dc89b5 Refactor event_assing even more to avoid unnecessary calls
svn:r1470
2009-10-27 05:16:23 +00:00
Nick Mathewson
e9ee1057e6 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
2009-10-27 04:25:45 +00:00
Nick Mathewson
10cf631e84 Do not add a newline to the end of log statements.
svn:r1468
2009-10-27 04:04:07 +00:00
Nick Mathewson
369aafc4d7 Refactor kq_init error handling.
svn:r1467
2009-10-27 04:03:58 +00:00
Nick Mathewson
ed0e91e02a New test flag to suppress logging for one test.
svn:r1466
2009-10-27 04:03:50 +00:00
Nick Mathewson
7f10fac342 Note assert-related change in changelog
svn:r1465
2009-10-26 20:07:06 +00:00
Nick Mathewson
2e36dbe1a6 Use EVUTIL_ASSERT() consistently instead of assert.
svn:r1464
2009-10-26 20:00:43 +00:00
Nick Mathewson
37c3456d70 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
2009-10-26 20:00:08 +00:00
Nick Mathewson
a8267663de API to replace all calls to exit() with a user-supplied fatal-error handler.
Also, add unit tests for logging.

svn:r1462
2009-10-26 19:59:51 +00:00
Nick Mathewson
38aec9ec7c Tweaks to IOCP interface.
svn:r1461
2009-10-23 22:38:35 +00:00
Nick Mathewson
7b10724901 Fix my fix for the bufferevent_connect_fail() test.
svn:r1460
2009-10-23 22:07:05 +00:00
Nick Mathewson
879420a711 Expose a narrow window to the IOCP code.
svn:r1459
2009-10-23 22:00:29 +00:00
Nick Mathewson
c119e4a13f Improve the behavior of le-proxy in a few cases.
svn:r1458
2009-10-23 17:40:00 +00:00
Nick Mathewson
fdd11c00bb 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
2009-10-21 19:21:05 +00:00
Nick Mathewson
b73ad7bc45 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
2009-10-21 18:48:22 +00:00
Nick Mathewson
4fbac2a5ae Test failing case of bufferevent_connect().
Code by Chris Davis.

svn:r1455
2009-10-21 07:00:19 +00:00
Nick Mathewson
d8164d0cfc 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
2009-10-21 07:00:14 +00:00
Nick Mathewson
b89b58b5f4 OSX compilation issues
svn:r1453
2009-10-21 06:03:00 +00:00
Nick Mathewson
c9c4ec26ee Remove an EVBASE_RELEASE_LOCK that I missed.
svn:r1452
2009-10-21 05:36:27 +00:00
Nick Mathewson
ed748a48ba Fix win32 compilation.
svn:r1451
2009-10-21 04:45:59 +00:00
Nick Mathewson
6b22e74aa1 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
2009-10-21 03:54:00 +00:00
Nick Mathewson
5082546682 Fix windows compilation warnings.
svn:r1449
2009-10-21 02:14:16 +00:00
Niels Provos
e1c9b84ae6 Fix compilation for listener.h for C++ - missing extern "C". Patch from Ferenc Szalai.
svn:r1448
2009-10-19 16:20:12 +00:00
Nick Mathewson
b812563a6e Add a note that we should change previous_to_last to last_with_space
svn:r1447
2009-10-16 13:20:16 +00:00
Nick Mathewson
f3dee9e8be Correct the signatures for the evmap_io_* functions to use evutil_socket_t.
svn:r1446
2009-10-16 13:20:09 +00:00
Nick Mathewson
e3fd294a6d Spelling fixes in comments and strings.
svn:r1445
2009-10-16 13:19:57 +00:00
Nick Mathewson
25af695441 When a bufferevent_connect() call fails, give the client an error callback.
Patch from Christopher Davis.

svn:r1444
2009-10-14 00:46:47 +00:00
Nick Mathewson
fc83ca3c70 Fix some crash bugs when initializing evdns
svn:r1443
2009-10-14 00:46:40 +00:00
Nick Mathewson
e6b747c34a Declare struct timezone in util.h so that borken mingw versions do not complain
svn:r1441
2009-10-12 21:06:30 +00:00
Nick Mathewson
633f3fb7aa Add changelog for last commit
svn:r1440
2009-10-02 03:07:29 +00:00
Nick Mathewson
ba8a17714e 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
2009-10-02 03:03:58 +00:00
Nick Mathewson
d5b640fc16 Apply Ka-Hing Cheung's event_base_got_[break|exit] patch, with locking and whitespace fixes.
svn:r1438
2009-10-01 15:29:08 +00:00
Niels Provos
8e8d94a3e0 Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
svn:r1436
2009-09-24 22:18:19 +00:00
Nick Mathewson
18fe400805 Forward-port: fix android compilation
svn:r1435
2009-09-23 23:51:26 +00:00
Nick Mathewson
2622e5ace2 Fix the assert I added to epoll.c: spotted by Dmitry Novikov
svn:r1432
2009-09-16 17:17:57 +00:00
Nick Mathewson
c2ead9f173 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
2009-09-11 21:02:19 +00:00
Nick Mathewson
85255a6397 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
2009-09-11 18:47:35 +00:00
Nick Mathewson
e3f89fa275 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
2009-09-11 18:21:57 +00:00
Nick Mathewson
3b461a6d03 Treat a negative number of bytes to read as the kernel saying "I don't know."
svn:r1426
2009-09-11 18:21:37 +00:00
Nick Mathewson
f65b8b0964 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
2009-08-19 20:55:25 +00:00
Nick Mathewson
2c1b0e4428 Fix build warnings and add changelog entry for evhttp patches.
svn:r1424
2009-08-16 19:22:15 +00:00
Nick Mathewson
c8b0fe4ad7 Define evhttp_del_accept_socket
[Patch from David Reiss]

svn:r1423
2009-08-16 19:22:10 +00:00
Nick Mathewson
6c53334c65 Define evhttp_{bind,accept}_socket_with_handle
[Patch from David Reiss]

svn:r1422
2009-08-16 19:22:04 +00:00
Nick Mathewson
4bcd5646d8 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
2009-08-16 19:21:57 +00:00
Nick Mathewson
0755833e84 Minor documentation fixes
[Patch from David Reiss]

svn:r1420
2009-08-16 19:21:50 +00:00
Nick Mathewson
22bd5b4287 Support sendfile on solaris: patch from Caitlin Mercer.
svn:r1419
2009-08-16 16:40:42 +00:00
Nick Mathewson
f22823982f New function to put an SSL bufferevent into a renegotiating state.
svn:r1418
2009-08-14 20:07:35 +00:00
Nick Mathewson
46a61869ca Disable whichever struct event we don't want during ssl handshaking.
svn:r1417
2009-08-14 20:07:17 +00:00
Nick Mathewson
58b0708e18 Only send a connected event _after_ we've adjusted the SSL state.
This is important if the callback adjusts it to something else.

svn:r1416
2009-08-14 20:07:09 +00:00