]> granicus.if.org Git - libevent/log
libevent
15 years agoAdd an option to disable the timeval cache.
Nick Mathewson [Mon, 9 Nov 2009 18:30:33 +0000 (18:30 +0000)]
Add an option to disable the timeval cache.

svn:r1518

15 years agoImplement queued timeouts for case where many timeouts are the same.
Nick Mathewson [Mon, 9 Nov 2009 17:16:30 +0000 (17:16 +0000)]
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

15 years agoWe do not work any more without an event-config.h; stop pretending that it is meaning...
Nick Mathewson [Fri, 6 Nov 2009 21:46:57 +0000 (21:46 +0000)]
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

15 years agoFix kqueue.c build on GNU/kFreeBSD systems.
Nick Mathewson [Fri, 6 Nov 2009 21:13:25 +0000 (21:13 +0000)]
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

15 years agoFix a miscalculated realloc() size in win32select.c.
Nick Mathewson [Fri, 6 Nov 2009 17:12:39 +0000 (17:12 +0000)]
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

15 years agoActually add the new dns-example.c code. :p
Nick Mathewson [Thu, 5 Nov 2009 22:24:21 +0000 (22:24 +0000)]
Actually add the new dns-example.c code. :p

svn:r1512

15 years agoMove the evdns sample code into the sample directory and fix it not to use any deprec...
Nick Mathewson [Thu, 5 Nov 2009 22:19:09 +0000 (22:19 +0000)]
Move the evdns sample code into the sample directory and fix it not to use any deprecated APIs.

svn:r1511

15 years agoFix some build warnings on MSVC, mostly related to signed/unsigned comparisons.
Nick Mathewson [Thu, 5 Nov 2009 21:22:23 +0000 (21:22 +0000)]
Fix some build warnings on MSVC, mostly related to signed/unsigned comparisons.

svn:r1510

15 years agoExport nmakefiles in source distribution.
Nick Mathewson [Thu, 5 Nov 2009 20:45:07 +0000 (20:45 +0000)]
Export nmakefiles in source distribution.

svn:r1509

15 years agoAdd nmake files to build with MSVC.
Nick Mathewson [Thu, 5 Nov 2009 20:40:11 +0000 (20:40 +0000)]
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

15 years agoBuild fixes for MSVC
Nick Mathewson [Thu, 5 Nov 2009 20:37:19 +0000 (20:37 +0000)]
Build fixes for MSVC

svn:r1506

15 years agoRename win32.c to win32select.c, and take it out of the WIN32-Code ghetto.
Nick Mathewson [Thu, 5 Nov 2009 18:49:08 +0000 (18:49 +0000)]
Rename win32.c to win32select.c, and take it out of the WIN32-Code ghetto.

svn:r1504

15 years agoFix another ssize_t user
Nick Mathewson [Thu, 5 Nov 2009 18:25:46 +0000 (18:25 +0000)]
Fix another ssize_t user

svn:r1503

15 years agoRemove win32-code/config.h. It was apparently confusing.
Nick Mathewson [Thu, 5 Nov 2009 18:07:27 +0000 (18:07 +0000)]
Remove win32-code/config.h.  It was apparently confusing.

svn:r1502

15 years agoFix a few types to use compatible versions
Nick Mathewson [Thu, 5 Nov 2009 15:57:22 +0000 (15:57 +0000)]
Fix a few types to use compatible versions

svn:r1501

15 years agoImplement size limits on HTTP header length and body length.
Nick Mathewson [Wed, 4 Nov 2009 20:17:32 +0000 (20:17 +0000)]
Implement size limits on HTTP header length and body length.

Patch from Constantine Verutin, simplified a little.

svn:r1500

15 years agoCommit ConnectEx code to get connect working with async bufferevents.
Nick Mathewson [Wed, 4 Nov 2009 05:19:26 +0000 (05:19 +0000)]
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

15 years agoAdd a missing include for win32.
Nick Mathewson [Wed, 4 Nov 2009 03:54:05 +0000 (03:54 +0000)]
Add a missing include for win32.

svn:r1498

15 years agoOops; add missing bufferevent_evdns.c file
Nick Mathewson [Tue, 3 Nov 2009 20:42:32 +0000 (20:42 +0000)]
Oops; add missing bufferevent_evdns.c file

svn:r1497

15 years agoAdd a bufferevent function to resolve a name then connect to it.
Nick Mathewson [Tue, 3 Nov 2009 20:40:48 +0000 (20:40 +0000)]
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

15 years agoFix one IOCP-callback signature I missed
Nick Mathewson [Tue, 3 Nov 2009 20:05:06 +0000 (20:05 +0000)]
Fix one IOCP-callback signature I missed

svn:r1495

15 years agoRemove compat/sys/_time.h
Nick Mathewson [Tue, 3 Nov 2009 19:54:56 +0000 (19:54 +0000)]
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

15 years agoFix remaining AcceptEx issues.
Nick Mathewson [Mon, 2 Nov 2009 20:59:13 +0000 (20:59 +0000)]
Fix remaining AcceptEx issues.

svn:r1492

15 years agoClean up acceptex code some more: add locking, single-threading, enable/disable.
Nick Mathewson [Mon, 2 Nov 2009 20:20:40 +0000 (20:20 +0000)]
Clean up acceptex code some more: add locking, single-threading, enable/disable.

svn:r1491

15 years agoRefactor IOCP callback interface
Nick Mathewson [Mon, 2 Nov 2009 19:51:26 +0000 (19:51 +0000)]
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

15 years agoCompilation and correctness fixes for IOCP listener code.
Nick Mathewson [Mon, 2 Nov 2009 19:31:29 +0000 (19:31 +0000)]
Compilation and correctness fixes for IOCP listener code.

svn:r1489

15 years agoFix a major parenthesis bug in EVUTIL_UPCAST.
Nick Mathewson [Mon, 2 Nov 2009 19:30:25 +0000 (19:30 +0000)]
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

15 years agoAdd more IOCP tests. They might not pass yet.
Nick Mathewson [Mon, 2 Nov 2009 17:42:16 +0000 (17:42 +0000)]
Add more IOCP tests.  They might not pass yet.

svn:r1487

15 years agoMore refactoring for IOCP listener code
Nick Mathewson [Mon, 2 Nov 2009 17:42:09 +0000 (17:42 +0000)]
More refactoring for IOCP listener code

svn:r1486

15 years agoCall the bufferevent_flush_mode variable "mode" more consistently in the documentatio...
Nick Mathewson [Mon, 2 Nov 2009 16:31:13 +0000 (16:31 +0000)]
Call the bufferevent_flush_mode variable "mode" more consistently in the documentation. Spotted by Alex.

svn:r1485

15 years agoFix an errant user of ssize_t to use ev_ssize_t.
Nick Mathewson [Mon, 2 Nov 2009 16:17:06 +0000 (16:17 +0000)]
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

15 years agoRemove some duplicate code in kqueue.c and fix a small memory leak.
Nick Mathewson [Fri, 30 Oct 2009 22:43:53 +0000 (22:43 +0000)]
Remove some duplicate code in kqueue.c and fix a small memory leak.

svn:r1483

15 years agoAdd a "many events" regression test.
Nick Mathewson [Fri, 30 Oct 2009 22:43:30 +0000 (22:43 +0000)]
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

15 years agoKeep openssl errors associated with the right bufferevent object.
Nick Mathewson [Fri, 30 Oct 2009 21:08:29 +0000 (21:08 +0000)]
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

15 years agoRefactor evconnlistener to allow multiple implementations; add an (incomplete, not...
Nick Mathewson [Thu, 29 Oct 2009 19:25:33 +0000 (19:25 +0000)]
Refactor evconnlistener to allow multiple implementations; add an (incomplete, not-yet-integrated) IOCP implementation.

svn:r1480

15 years agoExtract XP-only functions when initializing the IOCP port
Nick Mathewson [Thu, 29 Oct 2009 18:30:43 +0000 (18:30 +0000)]
Extract XP-only functions when initializing the IOCP port

svn:r1479

15 years agoreformat weird indentation in dns tests
Nick Mathewson [Thu, 29 Oct 2009 17:11:12 +0000 (17:11 +0000)]
reformat weird indentation in dns tests

svn:r1478

15 years agoUnit test for reverse ipv6 lookup
Nick Mathewson [Thu, 29 Oct 2009 17:10:36 +0000 (17:10 +0000)]
Unit test for reverse ipv6 lookup

svn:r1477

15 years agoMore documentation and unit tests for event_tagging.
Nick Mathewson [Thu, 29 Oct 2009 16:35:20 +0000 (16:35 +0000)]
More documentation and unit tests for event_tagging.

svn:r1476

15 years agoActually use the logic in select.c designed to make the out_sets threadsafe.
Nick Mathewson [Thu, 29 Oct 2009 16:35:15 +0000 (16:35 +0000)]
Actually use the logic in select.c designed to make the out_sets threadsafe.

svn:r1475

15 years agoUnit test for strlcpy
Nick Mathewson [Thu, 29 Oct 2009 16:35:09 +0000 (16:35 +0000)]
Unit test for strlcpy

svn:r1474

15 years agoFix from Chris Davis: get error-logging to be happy on win32.
Nick Mathewson [Tue, 27 Oct 2009 18:25:19 +0000 (18:25 +0000)]
Fix from Chris Davis: get error-logging to be happy on win32.

svn:r1473

15 years agoAvoid calling exit() during event_base_new*()
Nick Mathewson [Tue, 27 Oct 2009 06:47:25 +0000 (06:47 +0000)]
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

15 years agoDo not call the locking variant of event_add or event_active in some cases when we...
Nick Mathewson [Tue, 27 Oct 2009 05:16:32 +0000 (05:16 +0000)]
Do not call the locking variant of event_add or event_active in some cases when we know we have the lock.

svn:r1471

15 years agoRefactor event_assing even more to avoid unnecessary calls
Nick Mathewson [Tue, 27 Oct 2009 05:16:23 +0000 (05:16 +0000)]
Refactor event_assing even more to avoid unnecessary calls

svn:r1470

15 years agoGive event_assign a return value, and make it less inclined to exit().
Nick Mathewson [Tue, 27 Oct 2009 04:25:45 +0000 (04:25 +0000)]
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

15 years agoDo not add a newline to the end of log statements.
Nick Mathewson [Tue, 27 Oct 2009 04:04:07 +0000 (04:04 +0000)]
Do not add a newline to the end of log statements.

svn:r1468

15 years agoRefactor kq_init error handling.
Nick Mathewson [Tue, 27 Oct 2009 04:03:58 +0000 (04:03 +0000)]
Refactor kq_init error handling.

svn:r1467

15 years agoNew test flag to suppress logging for one test.
Nick Mathewson [Tue, 27 Oct 2009 04:03:50 +0000 (04:03 +0000)]
New test flag to suppress logging for one test.

svn:r1466

15 years agoNote assert-related change in changelog
Nick Mathewson [Mon, 26 Oct 2009 20:07:06 +0000 (20:07 +0000)]
Note assert-related change in changelog

svn:r1465

15 years agoUse EVUTIL_ASSERT() consistently instead of assert.
Nick Mathewson [Mon, 26 Oct 2009 20:00:43 +0000 (20:00 +0000)]
Use EVUTIL_ASSERT() consistently instead of assert.

svn:r1464

15 years agoAdd an EVUTIL_ASSERT() to replace our calls to assert().
Nick Mathewson [Mon, 26 Oct 2009 20:00:08 +0000 (20:00 +0000)]
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

15 years agoAPI to replace all calls to exit() with a user-supplied fatal-error handler.
Nick Mathewson [Mon, 26 Oct 2009 19:59:51 +0000 (19:59 +0000)]
API to replace all calls to exit() with a user-supplied fatal-error handler.

Also, add unit tests for logging.

svn:r1462

15 years agoTweaks to IOCP interface.
Nick Mathewson [Fri, 23 Oct 2009 22:38:35 +0000 (22:38 +0000)]
Tweaks to IOCP interface.

svn:r1461

15 years agoFix my fix for the bufferevent_connect_fail() test.
Nick Mathewson [Fri, 23 Oct 2009 22:07:05 +0000 (22:07 +0000)]
Fix my fix for the bufferevent_connect_fail() test.

svn:r1460

15 years agoExpose a narrow window to the IOCP code.
Nick Mathewson [Fri, 23 Oct 2009 22:00:29 +0000 (22:00 +0000)]
Expose a narrow window to the IOCP code.

svn:r1459

15 years agoImprove the behavior of le-proxy in a few cases.
Nick Mathewson [Fri, 23 Oct 2009 17:40:00 +0000 (17:40 +0000)]
Improve the behavior of le-proxy in a few cases.

svn:r1458

15 years agoMake the bufferevent_connect_fail test faster on OSX.
Nick Mathewson [Wed, 21 Oct 2009 19:21:05 +0000 (19:21 +0000)]
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

15 years agoTreat the bitwise OR of two enum values as an int.
Nick Mathewson [Wed, 21 Oct 2009 18:48:22 +0000 (18:48 +0000)]
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

15 years agoTest failing case of bufferevent_connect().
Nick Mathewson [Wed, 21 Oct 2009 07:00:19 +0000 (07:00 +0000)]
Test failing case of bufferevent_connect().

Code by Chris Davis.

svn:r1455

15 years agoFix win32 connect() event handling.
Nick Mathewson [Wed, 21 Oct 2009 07:00:14 +0000 (07:00 +0000)]
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

15 years agoOSX compilation issues
Nick Mathewson [Wed, 21 Oct 2009 06:03:00 +0000 (06:03 +0000)]
OSX compilation issues

svn:r1453

15 years agoRemove an EVBASE_RELEASE_LOCK that I missed.
Nick Mathewson [Wed, 21 Oct 2009 05:36:27 +0000 (05:36 +0000)]
Remove an EVBASE_RELEASE_LOCK that I missed.

svn:r1452

15 years agoFix win32 compilation.
Nick Mathewson [Wed, 21 Oct 2009 04:45:59 +0000 (04:45 +0000)]
Fix win32 compilation.

svn:r1451

15 years agoAdd locking to event_base_loop.
Nick Mathewson [Wed, 21 Oct 2009 03:54:00 +0000 (03:54 +0000)]
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

15 years agoFix windows compilation warnings.
Nick Mathewson [Wed, 21 Oct 2009 02:14:16 +0000 (02:14 +0000)]
Fix windows compilation warnings.

svn:r1449

15 years agoFix compilation for listener.h for C++ - missing extern "C". Patch from Ferenc Szalai.
Niels Provos [Mon, 19 Oct 2009 16:20:12 +0000 (16:20 +0000)]
Fix compilation for listener.h for C++ - missing extern "C".  Patch from Ferenc Szalai.

svn:r1448

15 years agoAdd a note that we should change previous_to_last to last_with_space
Nick Mathewson [Fri, 16 Oct 2009 13:20:16 +0000 (13:20 +0000)]
Add a note that we should change previous_to_last to last_with_space

svn:r1447

15 years agoCorrect the signatures for the evmap_io_* functions to use evutil_socket_t.
Nick Mathewson [Fri, 16 Oct 2009 13:20:09 +0000 (13:20 +0000)]
Correct the signatures for the evmap_io_* functions to use evutil_socket_t.

svn:r1446

15 years agoSpelling fixes in comments and strings.
Nick Mathewson [Fri, 16 Oct 2009 13:19:57 +0000 (13:19 +0000)]
Spelling fixes in comments and strings.

svn:r1445

15 years agoWhen a bufferevent_connect() call fails, give the client an error callback.
Nick Mathewson [Wed, 14 Oct 2009 00:46:47 +0000 (00:46 +0000)]
When a bufferevent_connect() call fails, give the client an error callback.

Patch from Christopher Davis.

svn:r1444

15 years agoFix some crash bugs when initializing evdns
Nick Mathewson [Wed, 14 Oct 2009 00:46:40 +0000 (00:46 +0000)]
Fix some crash bugs when initializing evdns

svn:r1443

15 years agoDeclare struct timezone in util.h so that borken mingw versions do not complain
Nick Mathewson [Mon, 12 Oct 2009 21:06:30 +0000 (21:06 +0000)]
Declare struct timezone in util.h so that borken mingw versions do not complain

svn:r1441

15 years agoAdd changelog for last commit
Nick Mathewson [Fri, 2 Oct 2009 03:07:29 +0000 (03:07 +0000)]
Add changelog for last commit

svn:r1440

15 years agoDo not notify the main thread more than needed.
Nick Mathewson [Fri, 2 Oct 2009 03:03:58 +0000 (03:03 +0000)]
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

15 years agoApply Ka-Hing Cheung's event_base_got_[break|exit] patch, with locking and whitespace...
Nick Mathewson [Thu, 1 Oct 2009 15:29:08 +0000 (15:29 +0000)]
Apply Ka-Hing Cheung's event_base_got_[break|exit] patch, with locking and whitespace fixes.

svn:r1438

15 years agoDo not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
Niels Provos [Thu, 24 Sep 2009 22:18:19 +0000 (22:18 +0000)]
Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec

svn:r1436

15 years agoForward-port: fix android compilation
Nick Mathewson [Wed, 23 Sep 2009 23:51:26 +0000 (23:51 +0000)]
Forward-port: fix android compilation

svn:r1435

15 years agoFix the assert I added to epoll.c: spotted by Dmitry Novikov
Nick Mathewson [Wed, 16 Sep 2009 17:17:57 +0000 (17:17 +0000)]
Fix the assert I added to epoll.c: spotted by Dmitry Novikov

svn:r1432

15 years agoTreat events with fd == -1 as addable.
Nick Mathewson [Fri, 11 Sep 2009 21:02:19 +0000 (21:02 +0000)]
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

15 years agoMake epoll use less RAM.
Nick Mathewson [Fri, 11 Sep 2009 18:47:35 +0000 (18:47 +0000)]
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

15 years agoAdd a trivial race-fix from Chromium: do not try to re-detect whether we have a monot...
Nick Mathewson [Fri, 11 Sep 2009 18:21:57 +0000 (18:21 +0000)]
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

15 years agoTreat a negative number of bytes to read as the kernel saying "I don't know."
Nick Mathewson [Fri, 11 Sep 2009 18:21:37 +0000 (18:21 +0000)]
Treat a negative number of bytes to read as the kernel saying "I don't know."

svn:r1426

15 years agoOn connect, call only one of BEV_EVENT_CONNECTED or writecb.
Nick Mathewson [Wed, 19 Aug 2009 20:55:25 +0000 (20:55 +0000)]
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

15 years agoFix build warnings and add changelog entry for evhttp patches.
Nick Mathewson [Sun, 16 Aug 2009 19:22:15 +0000 (19:22 +0000)]
Fix build warnings and add changelog entry for evhttp patches.

svn:r1424

15 years agoDefine evhttp_del_accept_socket
Nick Mathewson [Sun, 16 Aug 2009 19:22:10 +0000 (19:22 +0000)]
Define evhttp_del_accept_socket

[Patch from David Reiss]

svn:r1423

15 years agoDefine evhttp_{bind,accept}_socket_with_handle
Nick Mathewson [Sun, 16 Aug 2009 19:22:04 +0000 (19:22 +0000)]
Define evhttp_{bind,accept}_socket_with_handle

[Patch from David Reiss]

svn:r1422

15 years agoMake evhttp_bound_socket visible, and provide an accessor to its fd
Nick Mathewson [Sun, 16 Aug 2009 19:21:57 +0000 (19:21 +0000)]
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

15 years agoMinor documentation fixes
Nick Mathewson [Sun, 16 Aug 2009 19:21:50 +0000 (19:21 +0000)]
Minor documentation fixes

[Patch from David Reiss]

svn:r1420

15 years agoSupport sendfile on solaris: patch from Caitlin Mercer.
Nick Mathewson [Sun, 16 Aug 2009 16:40:42 +0000 (16:40 +0000)]
Support sendfile on solaris: patch from Caitlin Mercer.

svn:r1419

15 years agoNew function to put an SSL bufferevent into a renegotiating state.
Nick Mathewson [Fri, 14 Aug 2009 20:07:35 +0000 (20:07 +0000)]
New function to put an SSL bufferevent into a renegotiating state.

svn:r1418

15 years agoDisable whichever struct event we don't want during ssl handshaking.
Nick Mathewson [Fri, 14 Aug 2009 20:07:17 +0000 (20:07 +0000)]
Disable whichever struct event we don't want during ssl handshaking.

svn:r1417

15 years agoOnly send a connected event _after_ we've adjusted the SSL state.
Nick Mathewson [Fri, 14 Aug 2009 20:07:09 +0000 (20:07 +0000)]
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

15 years agoRemove an extraneous puts().
Nick Mathewson [Fri, 14 Aug 2009 20:07:01 +0000 (20:07 +0000)]
Remove an extraneous puts().

svn:r1415

15 years agotab/whitespace fixes in bufferevent_sock.c
Nick Mathewson [Fri, 14 Aug 2009 20:06:48 +0000 (20:06 +0000)]
tab/whitespace fixes in bufferevent_sock.c

Also note that write() doesn't usually say 0.

svn:r1414

15 years agoWhen running with deferred callbacks, always send the "connected" event
Nick Mathewson [Tue, 11 Aug 2009 19:47:46 +0000 (19:47 +0000)]
When running with deferred callbacks, always send the "connected" event
before any read/write events, and send timeout/error/eof events after.

svn:r1413

15 years agoAdd a few missing changelog entries
Nick Mathewson [Sun, 9 Aug 2009 20:18:00 +0000 (20:18 +0000)]
Add a few missing changelog entries

svn:r1412

15 years agoWhen bufferevent_socket_connect is called with no address, assume that our existing...
Nick Mathewson [Sun, 9 Aug 2009 20:17:29 +0000 (20:17 +0000)]
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

15 years agoAdd an evbuffer_search_range() to search a bounded range of a buffer
Nick Mathewson [Fri, 7 Aug 2009 17:16:52 +0000 (17:16 +0000)]
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

15 years agoAdd a couple more evdns tests. Libevent is now, for me, at 80.02% coverage.
Nick Mathewson [Mon, 3 Aug 2009 20:50:56 +0000 (20:50 +0000)]
Add a couple more evdns tests.  Libevent is now, for me, at 80.02% coverage.

svn:r1409