Bring libevent patches up to a0912e32068621eb776d678224e4108511d281e3

commit a0912e32068621eb776d678224e4108511d281e3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 10:39:05 2012 -0400

    Check more setsockopt return values when binding sockets. Found by coverity

commit a1a0e675318da89f2b13eb65a1f8cab601123bf9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 10:38:29 2012 -0400

    memset sockaddr_in before using it. Found by coverity.

commit a2006c008740dfc6b4260d8848f80d76b192f75a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 10:37:47 2012 -0400

    Move assignment outside tt_assert in ssl unit tests. Appeases coverity.

commit b9e7329751e9adf97839833c77d5b11648b408d0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 10:37:13 2012 -0400

    Add checks to various return values in unit tests. Found by coverity

commit 6a4ec5c2b580a6174f2713ba1743e76851e1ca3c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 10:34:06 2012 -0400

    Avoid possible needless call to writev. Found by coverity.

commit 6355b2a4caeacf25cab5f790ae7e163b1fe0d1f0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 10:16:47 2012 -0400

    Remove unused variable; spotted by coverity

commit 3cde5bf57a993e61a735c53999160e8c480d85f2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 10:04:43 2012 -0400

    Avoid more crashes/bad calls in unit tests; found by coverity

commit f021c3d762991d9cc81a222a631b6c075b1a76c0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 09:59:47 2012 -0400

    Add some missing null checks to unit tests; found by coverity

commit 270f279fb5aec1cc4e628936882472b3494ba0d3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 09:53:20 2012 -0400

    Fix resource leaks in the unit tests; found by coverity

commit 4f3732d75eb148f93efae797511213e92467f7a2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 26 09:35:43 2012 -0400

    Fix various check-after-dereference issues in unit tests: found by coverity

commit f1ce15d936ea6f0b68ebc21cff169dfd1da2e1c1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jul 25 16:18:33 2012 -0400

    Set umask before calling mkstemp in unit tests. Found by coverity

commit 2259777cc8d90740974323787763255505cacf6a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jul 25 16:05:36 2012 -0400

    Fix possible uninitialized read in dns regression tests. Found by coverity.

commit 555334670aa13135050c95128c66d6149cc02b0c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jul 25 15:59:50 2012 -0400

    Remove deadcode in http regression tests. Found by coverity.

commit 11c8b317542c86eca2cca585d31f93da285c10a7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 17 11:08:25 2012 -0400

    Fix a memory leak on error in evhttp_uriencode

    If we ran out of memory in evhttp_uriencode when allocating the
    output buffer, we would neglect to call evbuffer_free() on our
    temporary buffer.  Now we always free the temporary buffer.

    Fixes sourceforge issue 3539887. Thanks to Andrew Cox for reporting
    this one.

commit 160e58b67d28967bc7b1800835a082bcd7052d82
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 16 15:34:18 2012 -0400

    Win32: avoid crash when waiting forever on zero fds.

commit be7a95c62995a679ee24146b0d641b7392cbab51
Author: Simon Liu <simohayha.bobo@gmail.com>
Date:   Fri Jun 15 01:01:05 2012 +0800

    Make event_pending() threadsafe.

    (Commit message by Nick)

commit 117e3273dce5f6aa61b1867a64c8345b78dc1620
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jun 14 13:25:10 2012 -0400

    Add GCC annotations so that the vsprintf functions get checked properly

commit 60f65403412c940f51a10c6e283acea9fe6b79cf
Merge: fcec3e8 3b2529a
Author: Nick Mathewson <nickm@freehaven.net>
Date:   Wed Jun 6 14:10:11 2012 -0700

    Merge pull request #57 from rosslagerwall/memleak

    Fix a couple of memory leaks (found with Valgrind).

commit 3b2529acf2717e5cbe17d4682baafc0754119796
Author: Ross Lagerwall <rosslagerwall@gmail.com>
Date:   Wed Jun 6 21:57:12 2012 +0200

    Fix a couple of memory leaks (found with Valgrind).

commit fcec3e80c43722954ee4f63150b5eb1a6343f06e
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Fri Jun 1 05:23:29 2012 +0200

    Correctly check for arc4random_buf

    Apparently it's necssary to do an explicit comparison with NULL here.
    This also gets rid of a compile warning

commit bff5f9407341030c77a29fc1c398083ccdb4e277
Author: Greg Hazel <ghazel@gmail.com>
Date:   Tue May 29 12:39:12 2012 -0700

    check for arc4random_buf at runtime, on OS X

    (Tweaked by nickm: Fix up the arcr4andom_buf OSX hack so that the
    fallback case isn't compiled into the code when we have
    arc4random_buf() and we are not on OSX.  Also add a comment
    explaining what's up.)

commit faa92253e96172a4b2002a6bbc5385a7d710238f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 3 16:34:29 2012 -0400

    Bump version to 2.0.19-stable-dev

commit 8a9b0cdf63427f0c037bec0bd2f719835570b0ff
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 3 12:33:36 2012 -0400

    Increment version to 2.0.19-stable

commit e06206ebd8e799f75258e66e6eb391436481ee56
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 3 12:15:11 2012 -0400

    Oops; fix the *right* windows compile issue

commit be7a0be8166b749dd34e5c3a5a13e8e52a0ec7d3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 3 12:05:52 2012 -0400

    Fix win32 build issues: sleep, pid_t

commit cecb111bcd9af40a14a456fb07e3be4059fd46f0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 2 17:09:11 2012 -0400

    Start changelog for 2.0.19-stable

commit 265e6779dd1b936298f50a8036e2fb565a785c83
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 2 16:52:27 2012 -0400

    Fix evdns build with threads disabled

    The last evdns change apparently broke it, by using a "base"
    variable that we were only declaring with threads turned on.

commit 3d9e52ac5661fda80d2967df22a22a4d92fd1cdf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 1 19:52:55 2012 -0400

    When retransmitting a timed-out DNS request, pick a fresh nameserver.

    Otherwise, requests initially sent to a failing nameserver would
    stay there indefinitely, even if other nameservers would work.

    Fix for sourceforge bug 3518439

commit d873d6787c80c4438dd139118ef89c5ce62a3c34
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 1 19:52:49 2012 -0400

    Make some evdns.c debug logs more verbose

commit 6610fa5a270472c4b79cfc219343ab63b1db0c4e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 1 17:07:50 2012 -0400

    dns-example.c can now take a resolv.conf file on the commandline

commit 30f0671526c758772b7d93caf865d75ab1d6698e
Merge: b3887cd 2bfda40
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 30 21:45:43 2012 -0400

    Merge remote-tracking branch 'github/20_active_prio_inv' into patches-2.0

commit b3887cdf3b2ca715a1e496b7dcf2ee583e236338
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 11 21:33:27 2012 -0400

    Work-around a stupid gcov-breaking bug in OSX 10.6

    This only affects the unit tests.

    Fix found at http://rachelbythebay.com/w/2011/07/12/forkcrash/

    (Backport from 2.1)

commit 4e62cd167b66f33e20344bff776253f19e2bc3e6
Author: Mark Ellzey <socket@gmail.com>
Date:   Fri Mar 30 15:08:40 2012 -0400

    Fixed potential double-readcb execution with openssl bufferevents.

    the function do_read() will call SSL_read(), and if successful, will
    call _bufferevent_run_readcb() before returning to consider_reading().

    consider_reading() will then check SSL_pending() to make sure all
    pending data has also been read. If it does not, do_read() is called
    again.

    The issue with this is the possibility that the function that is
    executed by _bufferevent_run_readcb() called
    bufferevent_disable(ssl_bev, EV_READ) before the second do_read(); In
    this case, the users read callback is executed a second time. This is
    potentially bad for applications that expect the bufferevent to stay
    disabled until further notice. (this is why running openssl bufferevents
    without DEFER_CALLBACKS has always been troublesome).

commit 2bfda4012c92566e84de137a5fd9165051c6efc6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 30 17:30:48 2012 -0400

    If a higher-priority event becomes active, don't continue running events of the current priority.

    Bug found by Ralph Castain.

commit 30b6f889f7d8a6dc3174a35641772d3c9294eaec
Author: Zack Weinberg <zackw@panix.com>
Date:   Fri Apr 27 09:32:51 2012 -0400

    Generate event-config.h with a single sed script

    This approach should make the creation of the file more atomic, to
    fix a bug reported by Dinh.

    This patch has one change from Zack's original version: it avoids
    $<, since Dave Hart tells me he thinks that's not so portable.

    (commit message by nickm)

commit 03614a16cb9594058b96d19d6ee16a50c86984b7
Merge: 37c4fc8 dfd808c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 20 11:51:13 2012 -0400

    Merge branch '20_periodic_event_overload_v2' into patches-2.0

commit dfd808cbad491bdb6610e9050a3f98dd49d42e84
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 19 00:25:12 2012 -0400

    If time has jumped so we'd reschedule a periodic event in the past, schedule it for the future instead

    Fixes an issue reported on libevent-users in the thread "a dead
    looping bug when changing system time backward". Previously, if time
    jumped forward 1 hour[*] and we had a one-second periodic timer event,
    that event would get invoked 3600 times.  That's almost certainly not
    what anybody wants.

    In a future version of Libevent, we should expose the amount of time
    that the callbac kwould have been invoked somehow.

    [*] Forward time jumps can happen with nonmonotonic clocks, or with
    clocks that jump on suspend/resume.  It can also happen from
    Libevent's point of view if the user exits from event_base_loop() and
    doesn't call it again for a while.

commit bec22b41768738b87ff7ee5eb27dad56fd8444f4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 19 18:15:12 2012 -0400

    Refactor event_persist_closure: raise and extract some common logic

commit 37c4fc8d0cf39d6fbb80ca7fce6915ef5286b4c5
Merge: d1a03b2 46b8060
Author: Nick Mathewson <nickm@freehaven.net>
Date:   Thu Apr 19 08:11:05 2012 -0700

    Merge pull request #52 from ghazel/20_evdns_probe

    cancel the probe request when the server is freed, and ignore cancelled probe callbacks

commit 46b806084e5426982fbf94cb8f4cf1a95ded6c54
Author: Greg Hazel <ghazel@gmail.com>
Date:   Wed Apr 18 21:41:48 2012 -0700

    remove redundant DNS_ERR_CANCEL check, move comment

commit 94d23360708d5c96b81e3c10fbf29b4c289f7462
Author: Greg Hazel <ghazel@gmail.com>
Date:   Wed Apr 18 21:29:21 2012 -0700

    cancel the probe request when the server is freed, and ignore cancelled probe callbacks

commit d1a03b2ff1bdba30a46a2cb291204f7e6f8a4d52
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 3 18:31:08 2012 -0400

    Backport: provide EVENT_LOG_* names, and deprecate _EVENT_LOG_*

    This is a partial backport of cb9da0bf and a backport of c9635349.

    Because C doesn't like us to declare identifiers starting with an
    underscore, Libevent 2.1 has renamed every such identifier.  The
    only change that affects a public API is that the _EVENT_LOG_*
    macros have been renamed to start with EVENT_LOG instead.  The old
    names are still present, but deprecated.

    I'm doing this backport because it represents the deprecation of a
    Libevent 2.0 interface, and folks should have the opportunity to
    write code that isn't deprecated and works with both 2.0 and 2.1.

commit f775521c3159bb5dbbc6896374b0dbbb1cbfbf17
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 3 17:25:36 2012 -0400

    Fix the website URL in the readme

commit 4a6fd43313782e16fc79841048942291e19257df
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Tue Apr 3 05:31:20 2012 +0200

    Configure with gcc older than 2.95

    I don't know why people use such ancient gcc versions, but the fix seems
    straightforward enough to maybe just do it.

commit 4c7ee6b0c9b9e376dc36cdf7d5a3acb1e3aa9b60
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 2 18:12:44 2012 -0400

    Add missing ) to changelog; spotted by rransom

commit 336dcaeaef4037f9ce62c7739f45ebbeb7a27bf2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 30 10:26:50 2012 -0400

    Fix a compilation error with MSVC 2005 due to use of mode_t

    MSVC apparently doesn't have a mode_t defined, though mingw does.

    Found by Savg He.

commit 98e9119fab5c3737e448957058f752f086fc48a7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Mar 25 18:56:15 2012 -0400

    Fix a typo in the bufferevent documentation

commit 25a424fb8c797b27604628e4558c3d7d2ea13a1a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 22 14:35:23 2012 -0400

    Add an empty changelog section for 2.0.19-stable

commit f0fb2c271cdbfe6d14c69a0093d1aeb29d66dd97
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 22 14:34:01 2012 -0400

    Bump version to 2.0.18-stable-dev

commit 75401035f019e06b49f9cb51fedbc30ac3d548a4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 22 14:00:54 2012 -0400

    Bump version to 2.0.18-stable

commit 90c0a7df84429021f51514ceb2fcceb71d372243
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 22 13:47:01 2012 -0400

    Add credits to README

commit 773429265278b7606a07fc0bd02367b06b14de02
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 22 12:49:08 2012 -0400

    Changelog for libevent 2.0.18-stable

commit c41c1a2b80f2254ec580346b0897e95d0829f619
Merge: c2c7b39 083296b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Mar 13 15:49:49 2012 -0400

    Merge remote-tracking branch 'sebastian/clang_unknown_warning_options' into patches-2.0

commit c2c7b39d0dbf934d183db48a44c8d16965a35026
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Tue Mar 13 08:33:06 2012 +0100

    Properly zero the kevent in kq_setup_kevent()

    Detected by clang

commit 083296bc27be80a9ef4e6c9ae998ad8c961480e5
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Tue Mar 13 06:40:56 2012 +0100

    Don't do clang version detection when disabling some flags

    When clang 2.9 was around we hoped they'd introduce support for the
    normalized=id and override-init warnings by 3.0, but they haven't. We
    should only add the version detection back in when clang actually
    supports those warnings.

commit bec50680a31834619e66cb8b97edd6d5b5f15701
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 15 20:12:32 2012 -0500

    Stop crashing in evdns when nameserver probes give a weird error

    When a nameserver is down, we periodically try sending a "probe"
    message to that nameserver to see if it has come back up.  If a
    nameserver comes up, we cancel any pending probe messages.

    Cancelling a probe message while handling the probe's response would
    result in a access-after-free or a double-free, so when we notice that
    we're about to call a nameserver up because of having received a probe
    from it, we need to check whether current response is the response
    from the probe.

    There was a case where we didn't to that, though: when the resolver
    gave us an unusual error response to our request that it resolve
    google.com.  This is pretty rare, but apparently it can happen with
    some weird cacheing nameservers -- the one on the mikrotik router, for
    example.  Without this patch, we would crash with a NULL pointer
    derefernce.

    Thanks to Hannes Sowa for finding this issue and helping me track it
    down.

commit 2d67b638536d33bd84173238a9c933f04aaed15c
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Tue Feb 14 15:37:58 2012 -0500

    Changed OPENSSL_LDFLAGS to OPENSSL_LIBADD

commit 92781968475c7553a08f5b4161f1df631c6ef01f
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Tue Feb 14 15:01:02 2012 -0500

    Added OPENSSL_LDFLAGS env variable which is appended to SSL checks.

    If openssl is not installed system-wide or not compiled as a shared library,
    some systems require various link flags (e.g., -ld).

commit 03dce42dfa0380a96bdfc2e9c18b15318ec0ba5b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 11 21:17:18 2012 -0500

    Tweak the evutil_open_closeonexec patch to work on windows, old unixes.

    Windows doesn't have a mode_t as far as I can tell.

    Some unixes, iirc, don't like three-argument open without O_CREAT.

commit d2b5f7223abe4825410392a54ac34dc973465faf
Author: Ross Lagerwall <rosslagerwall@gmail.com>
Date:   Sat Feb 11 17:23:17 2012 +0200

    Make uses of open() close-on-exec safe by introducing evutil_open_closeonexec.

    In a multi-process/threaded environment, opening fds internally
    without the close-on-exec flag could leak fds to child processes.

commit 0c483170be2f447c6d1d1cfe103506976e1523d4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 10 22:20:05 2012 -0500

    Add an empty section to the changelog for 2.0.18-stable

commit 5a807b7aa21ccef7743fadfc7534277ba86e3480
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 10 22:17:59 2012 -0500

    Correct a name in the credits. oops

commit 2d7bf0f78dce4537ec818eb67791d823aa572c95
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 10 22:16:14 2012 -0500

    Bump version to 2.0.17-stable-dev

commit 83e58ccd3099167908edbba12d7d228a70900007
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 10 18:39:31 2012 -0500

    Update the credits in the readme

commit 0cdbd642e3fcef348e220c808fd33c4adccc282a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 10 18:36:10 2012 -0500

    Finalize the changelog

commit e49e2891292ee84e08c319bc5031fe607efc4245
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 10 17:29:53 2012 -0500

    Update copyright notices to 2012

commit 8152b4c2b3705151a7db7edd65d5ebbc8a640a49
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 10 16:49:05 2012 -0500

    Bump version to 2.0.17-stable

commit 5d7bfa1519b9dcfec4d9af8ca5cc5dc4e12c5156
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 10 11:24:51 2012 -0500

    In the kqueue backend, do not report EBADF as an EV_READ

    We were doing this because of (correct) reports that NetBSD gives an
    EBADF when you try to add the write side of a pipe for which the
    read side has been closed.  But on most kqueue platforms, that
    doesn't happen, and on *all* kqueue platforms, reporting a
    nonexistent fd (which we usually have if we have seen EBADF) as
    readable tends to give programs a case of the vapors.

    Nicholas Marriott wrote the original patch here; I did the comment
    fixes.

commit 19715a60e28ec2490bbdb45ab36921f5a47fc74d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 9 15:07:19 2012 -0500

    Avoid crash when freeing event_iocp and using event_set_mem_functions

    There was a calloc that needed to be an mm_calloc.

    Reported by "fffvvvzz" on sourceforge.  Ticket 3486114

commit 6f6cebe3561e886396737a011b82c2028d7468c7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 6 21:18:25 2012 -0500

    Bring the changelog up to date

commit 5b4b8126de52c8a895094cfea61724a91e179e71
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 6 12:24:49 2012 -0500

    Loop on filtering SSL reads until we are blocked or exhausted.

    This is not a perfect fix, but it's much much better than the
    current buggy behavior, which could lead to filtering SSL
    connections that just stopped reading.

    Based on ideas by Maseeb Abdul Qadir and Mark Ellzey.

commit d84d917099e9e31df62ab4461019bd7613dc24f1
Author: Greg Hewgill <greg@hewgill.com>
Date:   Mon Nov 21 09:41:55 2011 +1300

    Use C-style comments in C source files (for compatibility with compilers such as xlc on AIX).

commit d6094b160f63fa6c6279de2d1826c444dc0f15e2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 1 14:56:43 2012 -0500

    evdns: fix a bug in circular-queue implementation

    found by Wang Qin

commit 9f9e259fdabbacff2ddbadda2784f91cd4ec94ce
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 26 15:04:24 2012 -0500

    Better workaround for Linux 3.2 edge-triggered epoll bug

    On further investigation, it appears that this problem is limited to
    AF_UNIX sockets, so let's just do the test on AF_INET sockets.

commit c94a5f2a2cce7b6751a95343e0d80b7d150add31
Author: Nate R <nate_r@example.com>
Date:   Tue Jan 24 17:15:50 2012 -0500

    Do a memberwise comparison of threading function tables

    Doing a memcmp risks comparing uninitialized padding bytes at the
    end of the structure.

commit 438d4ff2bd2459cbb6778750f840c3667a302bfb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 24 15:29:39 2012 -0500

    Make event_base integrity check work on windows

commit edc6d7d7fa390923bf7bb8bb2c30f07a36f1f7a7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 24 15:09:04 2012 -0500

    Start writing a changelog for 2.0.17-stable

commit 5408ff3b89677c77b4cb67afd8c65b36dc23a930
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 24 11:16:26 2012 -0500

    Oops:remove an accidentally committed "sleep(1)" in a unit test

commit dab91877bc0e4a1fc31df89a1d1d42e73c3996e1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 24 11:04:19 2012 -0500

    Workaround in the unit tests for an apparent epoll bug in Linux 3.2

commit 3f18ad1b5f9ca180337fa3d348fe9100d4a0a9b0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 23 18:15:44 2012 -0500

    Fix a fd leak in event_reinit()

    We were supposed to be closing the ev_signal_pair sockets.

commit 6e41cdc16b6e01840c0d54b5d7b09af3f1ed3cf4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 23 17:59:16 2012 -0500

    Fix a list corruption bug when using event_reinit() with signals present

    While re-adding all the events, event_reinit() could add a signal
    event, which could then cause evsig_add() to add the
    base->sig.ev_signal event.  Later on its merry path through
    base->eventqueue, event_reinit() would find that same event and give
    it to event_io_add a second time.  This would make the ev_io_next
    list for that fd become circular.  Ouch!

commit 3312b02036302c6dfe5eb4977fa7a642bf8ccbbe
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 23 17:43:35 2012 -0500

    Check event_base correctness at end of each unit test

commit 27737d55ae3af09d3a4f6fd07521ef4b341934c8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 21 12:55:15 2012 -0500

    Add function to check referential integrity of an event_base

commit 790f6b3b10462db3e7581eff1355b1de9950d514
Author: Catalin Patulea <catalinp@google.com>
Date:   Tue Jan 10 18:33:58 2012 -0500

    Force strict validation of HTTP version in response.

    This sometimes accepted invalid versions like 'ICY' (n = 0, major = undefined, sometimes > 1).

commit 7206e8cdd4213a1d70f9d69e344f27464a6fa16f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 16 14:45:31 2012 -0500

    Suppress a gcc warning from ignoring fwrite return in http-sample.c

    Found by Steve Snyder

commit cba48c7d46a5442f64be19b7b08aebad5968b64a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 9 16:44:53 2012 -0500

    Fix a race condition in the dns/bufferevent_connect_hostname test.

    As originally written, the test would only pass if the accept()
    callbacks for the evconnlistener were all invoked before the last of
    the CONNECTED/ERROR callbacks for the connecting/resolving bufferevent
    had its call to event_base_loopexit() complete.  But this was only
    accidentally true in 2.0, and might not be true at all in 2.1 where
    we schedule event_base_once() callbacks more aggressively.

    Found by Sebastian Hahn.

commit ecfc720a4f7666d468413a3b9b29908bff5ddb82
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 9 11:49:41 2012 -0500

    Make evconnlistener work around bug in older Linux when getting nmapped

    Older Linuxes sometimes respond to some nmap probes by having accept()
    return a success but with socklen 0.  That can lead to confusing behavior
    when you go to process the sockaddr.

commit f03251671879fdc9fb37acd6e724c65adfc43bd6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 9 11:33:38 2012 -0500

    Remove bogus casts of socket to int before calling ev_callback

    This should make 64-bit windows act better.

    Found by Mark Heily.

commit da70fa705bede0b39c8057c49cbd69fdc586df02
Author: Arno Bakker <abakker@users.sourceforge.net>
Date:   Wed Dec 14 16:17:19 2011 -0500

    Backport evhttp_connection_get_bufferevent to Libevent 2.0

    Backport by Arno Bakker; original implementation in 8d3a8500f4

commit 7bbf6ca7712bac9081d955c0f673691122ccbf5c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 8 14:36:32 2011 -0500

    Slightly clarify evbuffer_peek documentation

commit c986f2321dc49c927435fadbc404eb9ffd1b1bab
Author: Zack Weinberg <zackw@panix.com>
Date:   Thu Dec 8 14:30:20 2011 -0500

    Fix behavior of evbuffer_peek(buf,-1,NULL,NULL,0)

    (Patch altered by nickm to not affect the behavior of
    evbuffer_peek(buf,-1,NULL,vec,n_vec).)

commit 358c745e5432f7648b6f8b3188f32b5551cbf9d6
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Thu Dec 8 11:39:48 2011 -0500

    check for sysctl before we use it

    Not all C libraries under Linux support the sysctl() func.

commit 19277763b22af105cec14330d380d3d0faf0572e
Author: Colin Watt <cwatt@users.sourceforge.net>
Date:   Tue Dec 6 13:35:54 2011 -0500

    Fix a silly compilation error with the sun compiler

    Apparently, other compilers were allowing "return free(x)" in a
    function returning void.

commit 11f36a5f76c25043412b68765b57d09095173880
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Dec 5 15:02:27 2011 -0500

    Be absolutely sure to clear pncalls before leaving event_signal_closure

    I thought we'd fixed the cases where this could come up, but
    apparently having an event_base_break() happen while processing
    signal events could get us in trouble.

    Found by Remi Gacogne.  Sourceforge issue 3451433 .

commit ba4d66961ef10e425ccdc7c91db609985916a4dd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 18 15:34:37 2011 -0500

    Increment version to 2.0.16-stable-dev

commit 5de3fa3208c6d6221f188b623fb4b78992fda89a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 18 15:27:06 2011 -0500

    Increment version to 2.0.16-stable

commit 31c99bd28f3a9d9b4a6efaa02af3267577768296
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 18 15:14:50 2011 -0500

    Revise 2.0.16-stable changelog

commit ebf82199dfc91c437b304649829fb0a259726d5c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 17 17:42:45 2011 -0500

    add comment to new consider_reading code

commit 2aa036fa0403977fa51812e711a1d5040c9fb5c9
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Thu Nov 17 11:59:41 2011 -0500

    Avoid spinning on OpenSSL reads

    Previously, if some sender were generating data to read on an
    OpenSSL connection as fast as we could process it, we could easily
    wind up looping on an openssl do_read operation without ever
    considering other sockets.

    The difference between this and the original method in
    consider_reading() is that it only loops for a single completed
    *frame* instead of looping until fd is drained or an error condition
    was triggered.

    {Patch split out by nickm}

commit 96c562fa495ccd325b93a59affcba5d06de250ec
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 17 11:54:07 2011 -0500

    Move SSL rate-limit enforcement into bytes_to_read()

commit a186e7320054ed8f508a18876adc9f770c9c4e2e
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Thu Nov 17 11:45:49 2011 -0500

    Refactor amount-to-read calculations in buffervent_ssl consider_reading()

    Split up consider_reading()'s conditional checks into another function
    can_read() for simplicity sake.

    {Split into a separate patch by nickm}

commit 6660c9a347d3557baee7b9b79d84ad4378be5009
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 15 18:34:24 2011 -0500

    Revert "Avoid potential SSL read spinlocks"

    This reverts commit fc52dbac87f4937f8306759506d6a2ad15ca244c.

commit a62346dec779c7262ded5afdf2fac17a5eac6674
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 15 18:33:50 2011 -0500

    Revert "openssl bufferevent has the same issue with writing as prior commit."

    This reverts commit 7353663eb7c0b2a1caaaa5acd818515f156cf2ca.

commit 34045c8fd43d44729b200bf1b14ea408a950407f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 15 17:22:12 2011 -0500

    Add new entries to changelog, new credits to README

commit b17b0eec02beb6d984f74096535bf4c706474b57
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 15 17:11:42 2011 -0500

    Fix DNS memleak checks when running with malloc-replacement/debugging disabled

commit e78741332985be96f2a44e71226b4adfe55aee7e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 14 17:33:02 2011 -0500

    Don't try to make notifiable event_base when no threading fns are configured

commit 4e797f388f736756b1531ce47ef210bd2119515f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 14 17:32:22 2011 -0500

    Warn when unable to construct base because of failing make_base_notifiable

commit 7353663eb7c0b2a1caaaa5acd818515f156cf2ca
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Mon Nov 14 10:57:15 2011 -0500

    openssl bufferevent has the same issue with writing as prior commit.

commit fc52dbac87f4937f8306759506d6a2ad15ca244c
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Mon Nov 14 10:24:07 2011 -0500

    Avoid potential SSL read spinlocks

    OpenSSL bufferevents with deferred callbacks enabled under high load will
    spinlock in the function consider_reading(). This loop continues until all
    data has been read.

    Because of this condition; openssl bufferevents will never return back into
    event_base_loop() until SSL_read has determined data is no longer ready.

    As of yet I have not found a reason why this while loop exists, so this patch
    just swaps out while for if.

    If needed I can write same code which would trigger this effect; optionally
    libevhtp has a test.c program which can be run with the following flags:

    ./test -s <keyfile.pem>

    curl -vvvv -k -d@<HUGE_ASS_FILE> https://127.0.0.1:8081/

    The return data will include the number of times the readcb got data and the
    length of that read.

    Without this patch, you are likely to see a small amount of "bytes read....",
    otherwise the "bytes read..." return data should show much more reasonable
    numbers.

commit a3f320e83d97dbd58afa883d8a1e2cf3cdc1ac39
Author: Gisle Vanem <gvanem@broadpark.no>
Date:   Wed Nov 9 00:17:56 2011 -0500

    Improve win32 behavior of dns-sample.c codex

commit 674bc6a29e9a33e0c057508f46f3c9b6035a3e96
Author: Mansour Moufid <mansourmoufid@gmail.com>
Date:   Thu Nov 3 11:43:49 2011 -0400

    Fix typo in whatsnew-2.0.txt

commit c37069cd794cfc844a58619a6211d0dc93d3e129
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 2 16:09:15 2011 -0400

    Fix an evbuffer crash in evbuffer_remove_buffer()

    Found by Greg Hazel.

commit 7eb52eb85e99a81e37c53e5a0c730c7c7d0f423e
Author: Greg Hazel <ghazel@gmail.com>
Date:   Wed Nov 2 15:19:05 2011 -0700

    improve test to remove at least one buffer from src

commit 90bd620fa3d0c8e3de6a838d8c6659733486f694
Author: Greg Hazel <ghazel@gmail.com>
Date:   Tue Nov 1 13:44:40 2011 -0700

    unit test for remove_buffer bug

commit 447b0bad15dcc1ca56c73e3ecca5c636cc332ba0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Oct 30 22:32:18 2011 -0400

    Fix compile warning from saying event2/*.h inside a comment

    Based on a patch by Adrian Chadd

commit 1aee718362f8bc88369d750bdb87b4f8af48af28
Author: Jamie Iles <jamie.iles@mathembedded.com>
Date:   Wed Oct 26 13:24:30 2011 +0100

    epoll: close fd on alloc fail at initialization

    If the memory allocations fail then we free any other allocated
    structures but don't close the file descriptor resulting in an leak of
    fd's.

commit 3c824bd3347a4f317481af56f26f3f7dc58e5e90
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 24 13:18:09 2011 -0400

    Update copyright dates to 2011.

commit 724bfb56ef0f83776be74cc0458a0aadc0b2dc66
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 19 22:59:47 2011 -0400

    Add note about evhttp_send_reply_end to its doxygen

commit 9e6a4efa51b14acbe1259386bd9e4f1ff323932c
Author: Leonid Evdokimov <leon@darkk.net.ru>
Date:   Wed Oct 19 17:44:17 2011 +0400

    More detailed message in case of libevent self-debugging failure.

commit 5e42202d5935bd7cc65296743176b888d51c9db5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 19 22:41:11 2011 -0400

    Style and comment tweaks for dns/leak* tests

commit f7841bfc70adf97171b124d2157c4838654d8ce5
Author: Leonid Evdokimov <leon@darkk.net.ru>
Date:   Tue Oct 18 17:49:40 2011 +0400

    Test for commit aff6ba1

commit 21a08d6869d53c81268ef131eb88cb1dd74a71f0
Author: Leonid Evdokimov <leon@darkk.net.ru>
Date:   Wed Oct 19 22:38:37 2011 +0400

    Empty DNS reply with OK status is another way to say NODATA.

    Sometimes DNS reply has nothing but query section. It does not look like
    error, so it should be treated as NODATA with TTL=0 as soon as there is
    no SOA record to deduce negative TTL from.

commit d58c15ee8436796e20346cf0b62afbf7a6a4d038
Author: Leonid Evdokimov <leon@darkk.net.ru>
Date:   Wed Oct 19 22:36:12 2011 +0400

    Tests for 94fba5b and f72e8f6

commit 8589f6c45bb873e5c81d0b183f557a9a2f81b78d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 12 01:00:23 2011 -0400

    Bump version to 2.0.15-stable-dev

commit c54c2358e5a05bb65d29239e2999763d5ce39c92
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 12 00:39:22 2011 -0400

    Credit a patch from a one-named user

commit 4d9529fcfa5691412e74a3c425c6658fc42e3699
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 12 00:22:17 2011 -0400

    Increment version to 2.0.15-stable

commit 7c3e06120bdff790e29db30bb225e9b296a1ab90
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 12 00:16:12 2011 -0400

    Add changelog for 2.0.15-stable

commit ba5c27d47f5c74ed38be3baea704508cd8b5875d
Author: Greg Hazel <ghazel@gmail.com>
Date:   Mon Oct 10 08:24:43 2011 -0700

    refer to non-deprecated evdns functions in comments

commit 706aa5f416a65107a3b40511ea91cff5ed048024
Merge: 39c0cf7 0ba0af9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 6 15:11:50 2011 -0400

    Merge remote-tracking branch 'github/20_addfile_ssl' into patches-2.0

commit 39c0cf7ca44e887f84ef8199d5e40e10a0f16629
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 3 12:49:02 2011 -0400

    Fix some "value never used" warnings with gcc 4.6.1

commit 2b768479e474d299b7afc8882cbb543c3fa86288
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 3 12:45:36 2011 -0400

    Make write-checking fixes use tt_fail_perror

commit c3b62fd7fde20ff9891ea969c949228e5cdd2792
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Tue Jul 12 13:05:36 2011 -0400

    Fixed compiler warnings for unchecked read/write calls.

commit 0ba0af9c6c3dbf4dfec8c3cd53b0d90b49153016
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 29 09:30:04 2011 -0400

    Prefer mmap to sendfile unless a DRAINS_TO_FD flag is set. Allows add_file to work with SSL.

    The sendfile() implementation for evbuffer_add_file is potentially more
    efficient, but it has a problem: you can only use it to send bytes over
    a socket using sendfile().  If you are writing bytes via SSL_send() or
    via a filter, or if you need to be able to inspect your buffer, it
    doesn't work.

    As an easy fix, this patch disables the sendfile-based implementation of
    evbuffer_add_file on an evbuffer unless the user sets a new
    EVBUFFER_FLAG_DRAINS_TO_FD flag on that evbuffer, indicating that the
    evbuffer will not be inspected, but only written out via
    evbuffer_write(), evbuffer_write_atmost(), or drained with stuff like
    evbuffer_drain() or evbuffer_add_buffer().  This flag is off by
    default, except for evbuffers used for output on bufferevent_socket.

    In the future, it could be interesting to make a best-effort file
    segment implementation that tries to send via sendfile, but mmaps on
    demand.  That's too much complexity for a stable release series, though.

commit 1ef1f68462cb5509d978ae490efeff0c73569f25
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 28 09:22:17 2011 -0400

    Make evbuffer callbacks get the right n_added value after evbuffer_add

    Patch from Alex.

commit 296d29a12c9faf9cf23ae74c41f64932c4e33539
Merge: 7f82382 4e8eb6a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 26 11:07:58 2011 -0400

    Merge branch '20_loopbreak_in_signal' into patches-2.0

commit 7f82382a7dafbd8203da6d7572dcf5de0642e9b0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Sep 25 07:39:00 2011 -0400

    Use _SOURCES, not _sources, in sample/Makefile.am

    Found by Adrian Chadd

commit 9ae061acca0b309d740b48463b6e41f1e9ce9ca4
Author: Sergey Avseyev <sergey.avseyev@gmail.com>
Date:   Thu Sep 15 13:06:38 2011 +0300

    le-proxy and regress depend on openssl directly

commit 94fba5b9acd6608c69befff99cf083cf60bde098
Author: Leonid Evdokimov <darkk@yandex-team.ru>
Date:   Wed Aug 10 15:58:47 2011 +0400

    Add DNS_ERR_NODATA error code to handle empty replies.

commit 2b6eae5999b9a55475f29e1478340e178787757e
Author: Leonid Evdokimov <darkk@yandex-team.ru>
Date:   Wed Aug 10 15:58:19 2011 +0400

    Fix docstring in dns.h

commit 4e8eb6a59549e82468d0aa6fbd0fa351e7e5d1fb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 9 20:53:30 2011 -0400

    When a signal callback is activated to run multiple times, allow event_base_loopbreak to work even before they all have run.

    Found by Abilio Marques.

commit f72e8f6643992e4369eba64fb4c6e48e119086e4
Author: Leonid Evdokimov <darkk@yandex-team.ru>
Date:   Wed Aug 31 00:56:45 2011 +0400

    DNS: add ttl for negative answers using RFC 2308 idea.

commit a718b6c31cd476a9188ffa05f6bcf082f4b183fd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 31 11:25:11 2011 -0400

    Increment version to 2.0.14-stable-dev

commit ac9f2adb45e12f3f43760995a4ca98349fe0a507
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 31 00:23:20 2011 -0400

    Credit new contributors for 2.0.14-stable

commit da90a9be691e89216cc28d769e3585b837d0c885
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 30 22:35:51 2011 -0400

    Pick a release date for the changelog

commit 85976ddfa4742a7c838139506b3dd8f7fd6c7c05
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 30 22:28:02 2011 -0400

    Bump version to 2.0.14-stable

commit 54f7e61ba389ab46320f05b8cdd5dfb7cd9fe1f5
Author: Joachim Bauch <mail@joachim-bauch.de>
Date:   Mon Aug 29 23:39:26 2011 +0200

    clear read watermark on underlying bufferevent when creating filtering bev to fix potentially failing fragmented ssl handshakes

commit 6476d92d105fecd796c8a51990a84da5b8e01a7d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 29 13:40:03 2011 -0400

    Checkpoint changelog entries for 2.0.14-stable

commit e6af35d762822e56e97cca3708ffee291c867d20
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 24 21:39:28 2011 -0400

    Correctly terminate IO on an async bufferevent on bufferevent_free

commit 0ff2c5a92246083495ff4d672372b8afe510105b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 24 18:42:12 2011 -0400

    Have test-ratelim.c support IOCP

commit a98da7bfc9148fd4c51d46320f51a6d28eed3463
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 24 18:41:35 2011 -0400

    Make IOCP rate-limiting group support stricter and less surprising.

    Previously, we wouldn't decrement read/write buckets because of IOCP
    reads and writes until those reads and writes were complete.  That's
    not so bad on the per-connection front.  But for group limits, the
    old approach makes us launch a huge amount of reads and writes
    whenever the group limit becomes positive, and then decrement the
    limit to a hugely negative number as they complete.

    With this patch, we decrement our read buckets whenever we launch an
    IOCP read or write, based on the maximum that tried to read or
    write.  Later, when the operations finish, we re-increment the
    bucket based on the portion of the request that couldn't finish.

commit c75341b077d14f6f9f76b304295a10dafec2a069
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 24 18:42:00 2011 -0400

    Support negative arguments to _bufferevent_decrement_(read/write)_buckets()

commit 2f51dc0311566fab4f0a4b820ac8120fa803499a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 28 14:03:10 2011 -0400

    Cleanup on 7c11e51e1ab: fix strtol usage

commit 6056d6e0df8900a9e8878cb8321f1f33c04de187
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 28 14:02:40 2011 -0400

    Cleanup on 7c11e51e1ab: restore c90 declaration compliance

commit 7c11e51e1ab19e1eebc7f03d1a7a51f54acf7c32
Author: Harlan Stenn <stenn@ntp.org>
Date:   Sat Aug 27 05:48:11 2011 -0400

    Clean up some problems identified by Coverity.

commit 5b18f13048d4d6e65ee93438a052e4d904f3f639
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 24 16:17:05 2011 -0400

    Make rate limiting work with common_timeout logic

commit 6736852eaa0e6df52b32eb2ed666688ca8d80429
Merge: 04656ea 6acfbdd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 18 15:09:44 2011 -0400

    Merge branch '20_iocp_fixes' into patches-2.0

commit 6acfbdd83ab0ecd435928db4eafac862209080ea
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 18 12:35:27 2011 -0400

    Make overlapped reads result in evbuffer callbacks getting invoked

commit 495c227f59093543dcc8f72e699e146ec9f82d10
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 18 11:41:55 2011 -0400

    IOCP: don't launch reads or writes on an unconnected socket

commit 04656ea85a1b6ec0fbe1fa126f8c81e9b17abab5
Author: Dave Hart <hart@ntp.org>
Date:   Mon Aug 15 14:40:32 2011 -0400

    Try to fix 'make distcheck' errors when building out-of-tree

commit e067d0e3ac81ca6ac1dab1a728a490a22c342bf4
Merge: 643922e 6d5440e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 17 21:47:19 2011 -0400

    Merge branch '20_low_ratelim' into patches-2.0

commit 643922e9079c2d2b5dd534cda8ca94f43025889c
Author: Michael Herf <herf@pobox.com>
Date:   Mon Aug 15 13:39:10 2011 -0400

    Solaris sendfile: correctly detect amount of data sent

    Original message:

       Solaris sendfile seems to fail when sending moderately large (<1GB)
       files. Not a 32/64 problem, but a buffer problem.

       Anyone else ever try this? It is definitely broken in http-server.c.

       It seems to be broken in the following way:

       When sendfile sends partial data (EAGAIN, would block), "res" is
       always -1, rather than the amount sent.

       Here's a patch that reads from the "offset" pointer instead to
       discover what was sent. This seems to work:

commit aff6ba15a1712567ca65d3d4d0b6f0c2fabc672b
Author: Leonid Evdokimov <darkk@yandex-team.ru>
Date:   Thu Aug 11 03:24:06 2011 +0400

    Fix request_finished memory leak with debugging turned on.

commit 9b724b288a81db16e7d19bddb0c18a0ddb995ba3
Author: Leonid Evdokimov <darkk@yandex-team.ru>
Date:   Thu Aug 11 03:10:08 2011 +0400

    Fix evsig_dealloc memory leak with debugging turned on.

commit 50be5a14b5aa4d14be2803ef994a232198ec9178
Author: Leonid Evdokimov <darkk@yandex-team.ru>
Date:   Thu Aug 11 03:06:07 2011 +0400

    Another docstring fix.

commit 6d5440e80e7ecd95c52b3f3d5217e1693294404e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 11 15:15:17 2011 -0400

    Fix handling of group rate limits under 64 bytes of burst

    The "min_share" logic, which was designed to prevent piles of
    extremely small writes when running up against a group rate limit,
    could lead to confusing behavior if you ever set a min_share less
    than your burst rate.  If that happened, then as soon as your group
    rate limit was exhausted, you'd stop reading/writing, and never
    start again, since the amount readable/writeable would never
    actually hit min_share.

    We now cap min_share at the rate per tick.

    Found by George Kadianakis

commit 5d1b255b1475602707d61337107e2ab6e5a94da9
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Wed Aug 10 19:11:55 2011 +0200

    Ignore deprecation warnings on OS X

    Starting with Lion, Apple decided to deprecate the system openssl. We
    can start requiring users to install their own openssl once OS X doesn't
    ship with it anymore.

commit b4423029b940eb5c71ac8aca7fdaeddce1a25316
Author: Mitchell Livingston <livings124@users.sourceforge.net>
Date:   Mon Aug 8 17:06:46 2011 -0400

    Allow OS-neutral builds for platforms where some versions have arc4random_buf

commit 4a343943bd5c93ea1a4c0b80633bc417aeb63969
Author: Joachim Bauch <mail@joachim-bauch.de>
Date:   Tue Jul 26 10:31:18 2011 +0200

    Propagate errors on the underlying bufferevent to the user.

commit 1183f7e24eb1d4baab8365d1d9cb993cdfc76473
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 1 10:27:56 2011 -0400

    Fix typo in event_compat.h comments.

commit a2fdf9b04f4251be72536e9152be9a1cbfd61204
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 18 23:37:59 2011 -0400

    Bump version to 2.0.13-stable-dev

commit 80414e22a7f635732eea90f88d3b1d3d287f5374
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 18 18:19:25 2011 -0400

    Bump version to 2.0.13-dev

commit 62b8ce587716d0ca7739a6f7d050b6b39ef9bcc5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 18 17:05:20 2011 -0400

    acks and changelog for 2.0.13-stable

commit b3b425eb1077bf293c19fa1bfdf681f44eee5405
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 18 12:45:50 2011 -0400

    Give Makefile.am echo a non-null argument. msys likes this

commit 00a7a0e4781bd903551f506e4b18309c0f6a71a7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Jul 17 21:48:38 2011 -0400

    Fix a warning in evutil_rand when building with threads disabled

commit 4a5c82d617fdd127814a18d1e17695c5bd9c2995
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 15 10:20:01 2011 -0400

    Use AM_CPPFLAGS in sample/Makefile.am, not AM_CFLAGS

    Reported by Dagobert Michelsen.

commit d5bd604a8b8317a347f62db40bab085d8650fbec
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 5 14:57:08 2011 -0400

    Add doxygen to .gitignore

commit caf695afdb8682d9cbe6b69c517ea855cf43772c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 5 14:55:09 2011 -0400

    Fix up test_evutil_snprintf

commit af6a05f723bf8b13e34c1b6e94bacab62fd707e6
Merge: 341e1b0 3203f88
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 5 14:51:24 2011 -0400

    Merge remote-tracking branch 'github/20_size_fmt' into patches-2.0

commit 341e1b03a83f1d60197549fd5e793db94f81cf61
Merge: 49d1136 aea0555
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 5 13:04:30 2011 -0400

    Merge branch 'doxygen' into patches-2.0

commit aea0555b76f8083836f36c4b0aff70f027f35d4d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 4 23:14:19 2011 -0400

    Update Doxyfile to produce more useful output

commit 2888faccd1a7e979a066c9241b273371a4838d68
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 4 23:02:11 2011 -0400

    Revise the event/evbuffer/bufferevent doxygen for clarity and accuracy

commit 49d11362051bcbd3ffe2165ca98a21eeab3672bc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 5 00:11:59 2011 -0400

    Fix select.c compilation on systems with no NFDBITS

commit e7fe92709e7f83e5189cbcf485ec3a040f0710b5
Merge: f87f568 cb6ecee
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 4 12:16:08 2011 -0400

    Merge remote-tracking branch 'github/20_global_locks_init' into patches-2.0

commit f87f56894dddaadac9e285c0452bf16b3875091b
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Mon Jul 4 11:47:24 2011 -0400

    Speed up invoke_callbacks on evbuffers when there are no callbacks

    This fixes a performance regression against 1.4

commit e050703d474b2d73abebb4b133f9fc504fadd9a8
Author: Joachim Bauch <jojo@struktur.de>
Date:   Mon Jul 4 11:36:14 2011 -0400

    Fix bug in SSL bufferevents backed by a bev with a write high-watermarks

    Original mail:

       the logic that handles write watermarks in "bio_bufferevent_write"
       is not working. It currently doesn't write any data if the high
       watermark is *above* the amount of data to write (i.e. when there
       is actually enough room available).

commit 8ee9f9c1cf3d2b7e3c17e9fedb9d740361bf8a69
Author: Nicholas Marriott <nicholas.marriott@gmail.com>
Date:   Sat Jul 2 21:49:07 2011 -0400

    Fix a few warnings on OpenBSD

    - redeclaration of dst_size

    - arpa/inet.h requires netinet/in.h first

    - don't use a local with the same name as a global - it isn't needed so
      remove it

commit e934096490f6909cf22c8fbe34fe6ad41e5083af
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jun 22 11:22:35 2011 -0400

    Fix AIX build issue with TAILQ_FOREACH definition

    Reported by Lawnstein Chan.

commit e23cda3daee1146ca5efb9eb6e7e0932911b0c99
Author: Harlan Stenn <stenn@ntp.org>
Date:   Tue Jun 21 10:05:28 2011 -0400

    Don't install event_rpcgen.py when --disable-libevent-install is used

commit 79ff78d2e7d48ca32df5f0dee10ec932d2812108
Merge: b031adf 1fd34ab
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jun 16 13:19:43 2011 -0400

    Merge branch '20_kqueue_badf' into patches-2.0

commit b031adf112e058595c04d44565c069d15f7ab257
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jun 14 14:37:49 2011 -0400

    Don't break when building tests from git without python installed

commit 812d42e8863a7b9ccba8b03c5a7e32b31a1e4155
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 11 01:26:54 2011 -0400

    Simplify windows commandname logic in tinytest

    Instead of using a dup'd pointer, let's use a static array, so we
    don't need to free it.  This patch also makes tinytest build on
    non-windows again.

commit 57def3460af9cd3992626d6a39f4e5b93a7d3fc0
Author: Ed Day <edday2000@gmail.com>
Date:   Sat Jun 11 00:49:24 2011 -0400

    Fix tinytest invocation from windows shell

    Original post:

      This post is in response to a posting last December on a Windows
      regression fork failure ([Libevent-users] Re: Libevent 2.0.10-stable
      is released by Dongsheng Song).  I noticed the question was not
      answered and I recently experienced the same error myself when
      trying to run the Windows regression tests myself.

      I checked the return status from the CreateProcess call and found it
      was "file not found".  This led me to look at the command-line I was
      using which was .\regress in a Visual Studio 2008 command prompt
      window.  Windows could not find the file because it did not have the
      .exe extension on the end.  The code that builds the command should
      be modified to ensure the extension is present.

commit 3203f88c5f1fb13b2b3988ff0d1d802d70a143d9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jun 8 17:18:03 2011 -0400

    Use the correct printf args when formatting size_t

    Based on a patch from Mansour Moufid

commit 446cc7a0a1160f9214bef3b2d5140c2ddca9cee0
Author: Mansour Moufid <mansourmoufid@gmail.com>
Date:   Fri May 27 18:40:31 2011 -0400

    Check if the `evhttp_new_object' function in `http.c' returns NULL.

commit 1fd34ab424b45f48dfeece108910978c79a8b7f6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jun 8 14:56:19 2011 -0400

    Report kqueue ebadf, epipe, and eperm as EV_READ events

    When asked to add one side of a pipe, and the other side has been
    closed, kqueue on NetBSD will say EBADF; kqueue on FreeBSD will say
    EPIPE, and kqueue on OpenBSD will say EPERM.  So treat all of these
    as EV_READ events, to give the user an opportunity to notice that
    the pipe is closed.

    Diagnosed by Nicholas Marriott and Dale Rahn; based on a patch by
    Nicholas Marriott.

commit 09fe97da3b0dcdb6ee172ff8e4f710e0baad2d1c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jun 8 14:24:45 2011 -0400

    Replace an assertion for event_base_free(NULL) with a check-and-warn

    event_base_free(NULL) means "free the current event base".
    Previously, it would assert if there was no 'current' base.  Now it
    just warns and returns.

    Reported by Gilad Benjamini

commit 89d5e09e4d3a4666bf5eba7d6807e183e861a70a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jun 8 14:18:41 2011 -0400

    Add some missing checks for mm_calloc failures

    Found by Gilad Benjamini

commit 4461f1a096621db8b24edafac409e0f05072d35a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jun 6 15:11:28 2011 -0400

    Fix incorrect results from evbuffer_search_eol(EOL_LF)

    Our evbuffer_strchr() function [which was only used for
    search_eol(EOL_LF) could give incorrect results if it found its answer
    in the first chunk but didn't start searching from the front of the
    chunk.

    Also, this patch adds unit tests for evbuffer_search_eol, particularly
    in those cases that evbuffer_readln() tests didn't exercise.

commit 60c1426f2c16ffe1e4e14b4779e335d824f64aee
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 4 21:36:34 2011 -0400

    Bump version to 2.0.12-stable-dev

commit 281ab5c5f3c7eb500d8eacbe8b9053b8044d823c
Merge: be5e857 452a834
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 4 21:12:53 2011 -0400

    Merge branch 'patches-2.0' of ssh://levent.git.sourceforge.net/gitroot/levent/libevent into patches-2.0

commit 452a8342f5b615c9ba5a08a3a30fc719a30ad253
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 4 21:11:09 2011 -0400

    tweak date on changelog

commit be5e857584418720cd9aaa3a7638a7e3db559823
Merge: 27ce38b c355583
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 4 10:34:14 2011 -0400

    Merge branch 'patches-2.0' of ssh://levent.git.sourceforge.net/gitroot/levent/libevent into patches-2.0

commit c355583750fb88e72069040234c94529ce872c7c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jun 3 17:08:30 2011 -0400

    Changelog and new credits for 2.0.12-stable

commit 7283facdb9741cfd7ab5df3574d9afa619258501
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jun 3 17:08:14 2011 -0400

    Bump version to 2.0.12-stable.  Not release just yet

commit bdfb8330dfcf865fbfe82184cf0db85304c943b2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jun 3 17:06:17 2011 -0400

    Fix regress_ssl.c build on openbsd

commit 27ce38b618025682465e369fd19699ae849d8cd2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jun 1 17:27:28 2011 -0400

    Avoid a segfault when all methods are disabled or broken

commit d54d3fc40dd3cdaf832a2d7f248a07f0f10d57a0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jun 1 13:48:02 2011 -0400

    cygwin: make it possible to build DLLs

    Patch from Brian Koehmstedt

commit 87c0dff6aa31e77c048c89bed36e4edccb41cff2
Merge: f47c15e d90149d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 30 12:06:36 2011 -0400

    Merge branch '20_select_nfds' into patches-2.0

commit d90149d4b6fb9273aa363e5a18223250e8721034
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 30 11:53:19 2011 -0400

    Fix a fencepost bug in the select backend

    This bug would sometimes lead us to looking one bit off the end of
    the fdset arrays, and trying to activate a (nonexistent) event if
    that bit was set.

    Found by Harlann Stenn.  Fixes a test failure on OpenSolaris.

commit f47c15e7bac217f0b0282a6e535f03f26e1e9d9d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 27 23:28:17 2011 -0400

    Make the new http_connect_fail_test use a multicast addr, not broadcast

    Turns out that FreeBSD does _not_ give a ENETUNREACH error when
    told to make a TCP socket to 255.255.255.255, but it is quite happy
    to do so for 239.10.20.30.  So that's what we'll do.

    Found by Robert Ransom and Dave Hart.

commit 816115a17ef5ce6148cf45389ddf8e8a327f206b
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Thu May 26 10:10:57 2011 +0200

    InitializeCriticalSectionAndSpinCount requires _WIN32_WINNT >= 0x0403.

commit 203ba2742f2750fd27967b902ba403b6331e40a5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 27 15:08:25 2011 -0400

    Fix a couple of signed/unsigned warnings in http.c

commit c11c6fcd82c97f528f530177071171f012ca3c97
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 27 14:57:55 2011 -0400

    Disable main/many_events_slow_add with evport backend

    In 2.0 and earlier, evport only reports up to 8 events at a time, which
    confuses this test badly.

commit dbb3c65288e219ce3f05efc3fb6c84ff96cf24a9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 26 17:43:17 2011 -0400

    Fix compilation.

commit f0c9b51cc7155a465b5cc73988d3ee32f8b188fb
Merge: d1b2d11 1814ae9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 26 17:34:15 2011 -0400

    Merge branch 'intcmp_overflow_fixes' into patches-2.0

commit 1814ae967705202b76ddf81bc6a43a1ae67df3be
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Wed May 25 18:52:07 2011 -0400

    updated EV_S(s)IZE definitions

commit 84560fc4dcf1f58f46a7c962ea31946424c4fea9
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Wed May 25 14:31:09 2011 -0400

    Added overflow checks in evhttp_read_body and evhttp_get_body

commit a27927229f8e66a9f8e0d0b6888d71ed10d99e18
Author: Mark Ellzey <mark.thomas@mandiant.com>
Date:   Wed May 25 12:58:59 2011 -0400

    Added several checks for under/overflow conditions in evhttp_handle_chunked_read

commit d1b2d11bb58852d8b62e9b2ced315a4cb298fd56
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Thu May 26 02:05:54 2011 +0200

    Always use evutil_snprintf, even if OS provides it

    In test/tinytest_local.h we can't redefine snprintf if the OS has it
    defined already.

commit 0de87fe69c0e1e8499c083a2a02f8d547a0d11db
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 25 15:11:01 2011 +0200

    Use evutil_gettimeofday instead of relying on the system gettimeofday.

commit 3d768dc96761e283750e0f0550172d181b04fe31
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 25 11:04:43 2011 +0200

    Fix winsock2.h #include issues with MSVC

    Define WIN32_LEAN_AND_MEAN, so that windows.h does not bring in
    winsock.h which in turn makes it impossible to #include <winsock2.h>
    (at least with MSVC)

commit 8fa030c032d63871b4434333c1d1e1ff98a81052
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Thu May 26 00:03:38 2011 +0200

    Make sure TINYTEST_LOCAL is defined when building tinytest.c

commit fe93022a6694ab8d69c96043c10817e23084a318
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 25 10:58:48 2011 +0200

    unistd.h and sys/time.h might not exist.

commit 70be7d17e4467e61eb343ad7eb242afc3a463c66
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 25 10:57:16 2011 +0200

    MSVC does not provide S_ISDIR, so provide it manually.

commit f3c7a4c165066bafed3da149f5bf2aecee43cd47
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 25 10:56:32 2011 +0200

    Bring in the compile script from automake, if needed.

commit 07c41bead2097de223def8b6975f08a2f65e908c
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 25 10:55:41 2011 +0200

    Make the tests build when OpenSSL is not available.

    Don't #define HAVE_OPENSSL (to zero) when OpenSSL is not available.
    Code written as #ifdef HAVE_OPENSSL do not expect that.

commit 86090ee198ce45e857c6367d7ec71cca7a953159
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 25 10:54:06 2011 +0200

    Link with -lshell32 and -ladvapi32 on Win32.

    SHGetSpecialFolderPath is in Shell32.dll and the RegOpenKey (et al) and
    CryptGenRandom (et al) functions are in -ladvapi32.dll. MinGW is "nice"
    and brings those in automatically, but specify them explicitly for
    other tool chains.

commit 06a714ffe4a58866a33ff3e139e2cb298835b9c5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 25 16:51:25 2011 -0400

    Fix new warnings from GCC 4.6

commit 06c51cdf9302967be1547a00fa449d9889ab4666
Author: Mansour Moufid <mansourmoufid@gmail.com>
Date:   Mon May 23 18:01:24 2011 -0400

    Prevent size_t overflow in evhttp_htmlescape.

    Modified the `html_replace' function so that it returns the length of
    the replacement string instead of the string itself. This is used to
    easily check for overflows of the `new_size' variable in the first for
    loop of the `evhttp_htmlescape' function, and thus potential out of
    bounds writes in the second for loop (if an overflow occurs in
    new_size, then new_size < old_size). Also check that new_size + 1
    doesn't overflow in mm_malloc(new_size + 1).

    Removed the `scratch_space' variable from the `evhttp_htmlescape'
    function since it wasn't actually used; also removed the `buf'
    variable from the `evhttp_htmlescape' function since it was only used
    by `scratch_space'.

commit 74760f1864b5a25a68d43b1bf22cc4a31d94866f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 23 17:45:14 2011 -0400

    Fix a bug that prevented us from configuring IPv6 nameservers.

commit 57ddda7845d36fce2ebe7131f6b7e98e85a576f5
Author: Kevin Ko <kevin.s.ko@gmail.com>
Date:   Mon May 23 01:40:05 2011 -0400

    Test case for 0848814ac49616

     "I'm not sure if you'll like my use of the limited broadcast address
      for simulating an ENETUNREACH error with a TCP connection, but it's
      the best that I could think of.  Basically, we want to trigger a
      non-EINPROGRESS error in evutil_socket_connect() immediately at the
      connect() in order to bring about the assertion in the
      evhttp_connection_fail() error handling code."

commit 0848814ac496167133bec5f8d564387b5111440f
Author: Kevin Ko <kevin.s.ko@gmail.com>
Date:   Fri May 20 23:23:44 2011 -0400

    Fix failing assertion introducd in commit 0d6622e

    Patch in question:
     - Fix the case when failed evhttp_make_request() leaved request in the queue.
     - http://levent.git.sourceforge.net/git/gitweb.cgi?p=levent/libevent;a=commit;h=0d6622e

    The above patch introduces a failing assertion in
    evhttp_connection_fail().  This happens because the patch defers the
    assignment of the outstanding request to the evcon->requests list,
    while evhttp_connection_fail() assumes that the request lies in the
    list.

    One scenario in which this can happen is when the request list is
    empty and a connection is made to an unreachable host.  The assertion
    will then fail after bufferevent_socket_connect() errors out (with
    ENETUNREACH in my case).

commit 09d39a120dd7e4b007ef4c607a6fd0ab431e659f
Author: Dave Hart <hart@ntp.org>
Date:   Fri May 20 14:18:08 2011 -0400

    Fix compilation with GCC 2, which had no __builtin_expect

commit 5786b91e2e779a9cab7292493b11ed82e057d18e
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Thu May 5 18:02:42 2011 +0200

    Fix a compile warning with zlib 1.2.4 and 1.2.5

    I took this fix from Tor (commit 1a52e39c22d5, author Nick Mathewson,
    Copyright (c) 2007-2011, The Tor Project, Inc.) and adapted it slightly
    for libevent.

commit 66193853fd98d6280ab25ddfab38876d6a759046
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Thu May 5 16:27:55 2011 +0200

    Correctly detect openssl on windows

commit ceb03b90c487c5b1633ef93e2272c7cb71ff783a
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Thu May 5 15:51:11 2011 +0200

    Move the win32 detection in configure.in

commit 292092eb29ba6e98bde2839e0cfab2f03f9bd7a2
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Thu May 5 15:49:38 2011 +0200

    Use OPENSSL_LIBS in Makefile.am

commit 7b819f2d97fae57da07f00fd53fa82b02d39fe59
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 4 16:37:58 2011 +0200

    Libtool brings in the dependencies of libevent_openssl.la automatically

commit 274dd0369afa57448369ee4f85fb7e24883f5172
Author: Peter Rosin <peda@lysator.liu.se>
Date:   Wed May 4 16:34:28 2011 +0200

    libssl depends on libcrypto, not the other way around.

commit d11e9e0f71072ab9e51de47ee805697782ae84ac
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 3 14:22:48 2011 -0400

    Oops; that new unit test breaks for epoll.  Fix it.

commit 28317a087e58dceff85a448c22bbbafebed0b6ab
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 3 13:54:57 2011 -0400

    Fix a warn-and-fail bug in kqueue by providing kevent() room to report errors

    Apparently, kevent fails gracefully if there is not enough space in its
    output events array to report every _event_... but it just dies and returns
    -1 if there is not enough space to report every _error_.

    There are a couple of possible fixes here.  One would to handle -1
    returns from kevent better by re-growing the array and retrying... but
    that seems a little error prone.  Instead, I'm just going to say that
    the events array must be large enough to handle all the errors.

    This patch also adds a unit test designed to make sure that our
    many-events-out code works even if not all the events are added at
    once.

commit 9556a7d1f647f61634fb782ae7ba814e5a20535e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 2 23:22:09 2011 -0400

    Add missing words to EVLOOP_NONBLOCK documentation

commit e7529fa45bc2094e2853e91f1ead1156ca900002
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 27 21:28:11 2011 -0400

    Bump version to 2.0.11-stable-dev

commit d4d55196bd27ea6aee7f80098f3400d461d58b14
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 27 20:25:57 2011 -0400

    Increment version number to 2.0.11-stable

commit 8255fda708d600e68391ff007bddeef65140bbf5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 27 20:15:20 2011 -0400

    Add more people to the acknowledgments

commit d30466fc260eacbc6d518e65a559cae674b08399
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 27 20:03:46 2011 -0400

    Changelog for 2.0.11-stable

commit e49e64e7745c0ef4ffeac9a379cfa26d422fdb6e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 26 23:42:01 2011 -0400

    Fix clang warning when resetting connection

    This was a regression on 2.0.10-stable: clang was warning about
    values that were unused (because event_debug wasn't using them unless
    USE_DEBUG was defined).  Found by Sebastian Hahn.

commit ea0d019b7161e0f990b6a6c1e537b0a1b6d08afa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 23 02:35:17 2011 -0400

    Use AM_CONDITIONAL, not AC_SUBST, to tell automake to build regress

    For some reason, this makes mingw much happier about building
    regress.exe by default.  No, I'm afraid I don't know why.

commit 7739c86da0e5a659c5dce4bead736e184be5ae9b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 23 02:31:04 2011 -0400

    Fix msvc build: it needed to know about _EVENT_HAVE_STRUCT_SOCKADDR_STORAGE

commit 53d1e450f4a5ed21c4eec216392524ff2ab7a7a7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 23 01:48:11 2011 -0400

    Try to fix up CHECK_REGRESS hack to not break on win32

commit dd68cce439ae01d906e46b0f361f3ef625d5abec
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 23 01:47:43 2011 -0400

    Add missing header for regress_http compilation on win32

commit 99f147d9f668dc70866c694b9c140021a00eaf2d
Merge: 646f9fe 52f9bae
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 23 01:47:11 2011 -0400

    Merge branch '20_iocp_conn_sockopt' into patches-2.0

commit 52f9baeee2afd77d852d6e8d63ed8414d0f28f74
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 22 10:54:02 2011 -0400

    call setsockopt correctly on connecting() IOCP-bufferevents so shutdown() will work

commit 646f9feb261d7e45b75dc2fcf65b9e719dd5f829
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Sat Apr 23 02:22:08 2011 +0200

    Zero a struct sockaddr_in before using it

    Found by Dave Heart

commit 744c7456c7f31529d4b9eeb86f2b6551a0a38346
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Sat Apr 23 02:20:59 2011 +0200

    Remote some dead code from dns-example.c

    Found by Dave Heart

commit 93a1abb374851c908b9999c217b5fc6bb1af88c8
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Apr 11 18:26:48 2011 +0200

    Check return value of evbuffer_add_cb in tests

    Caught by clang's static analyzer

commit 4bac793e3e7238543883c4026600515244469af7
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Apr 11 18:03:02 2011 +0200

    Be nice and "handle" error return values in sample code

    Caught by clang's static analyzer

commit 48c44a6ddaf995ddbb8cc93d07beedf113f5cbac
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Apr 11 17:48:23 2011 +0200

    Refactor test_getaddrinfo_async_cancel_stress()

    Turns out it didn't need an event base set up.

    Spotted by clang's static anaylzer

commit 65707d7c3cd71e11ed58c18f5840847e44f5ec69
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Apr 11 17:40:14 2011 +0200

    add some (void) casts for unused variables

    All these places already have an XXX marker, so we know we need to fix
    them later. Let's not clutter the static analysis results with them.

commit b693c324cac8efe637dc344ece6bac83ac55c199
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Apr 11 17:32:03 2011 +0200

    Actually send NULL request in http_bad_request_test

    Issue caught by clang's static analyzer

commit 3819b62ceaf3f7ba3913f174233efb73a6b74346
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Apr 11 17:23:08 2011 +0200

    Add a forgotten return value check in the unit tests

    Spotted by clang's static analyzer

commit b0ff7eb5ce55679cf6b47088078563bf37fef1c9
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Sun Apr 10 14:03:39 2011 +0200

    Add an assert to appease clang's static analyzer

    It got confused because in EVLOCK_ASSERT_LOCKED(lock) there is an if
    (lock) check.

commit 5208544edc9d17f9902429f837d277125d3d3ca4
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Mar 14 04:24:33 2011 +0100

    Fix possible NULL-deref in evdns_cancel_request

    The clang static analyzer complained that base might be dereferenced
    without being set, but this patch should fix another dereference issue.

commit 12311ff46e72d3a3ffe9625ccba42a2f15ff0827
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Mar 14 04:13:55 2011 +0100

    Add a forgotten NULL check to evhttp_parse_headers

    Issue detected by the clang static analyzer

commit ad9ff5834a3cb2ee485353ab03d6c509e2200f17
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Sun Apr 10 17:23:11 2011 +0200

    Fix compilation under LLVM/clang with --enable-gcc-warnings

    When compiling using clang (2.9 or lower) do not enable
    -Wnormalized=id or -Woverride-init when --enable-gcc-warnings
    or --enable-gcc-warnings-advisory is set as these options
    are unsupported.

    This commit is based on a patch for Tor
    (git commit 56bdc844ba68ac0911efc7ad3398f1eafeaaac76 by Steven
    Murdoch), Copyright (c) 2007-2011, The Tor Project, Inc.

commit cb6ecee7f6199777c10815ac15aad4d808e7375f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 22 12:40:07 2011 -0400

    Complain if the caller tries to change threading cbs after setting them

    We never supported this; it was always fraught with errors; and I
    don't believe there is a good reason to _want_ it to work.

commit b683cae3cb98b48c4dc5caa0b1768f7bb13b92f1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 22 12:01:25 2011 -0400

    Avoid race-condition when initializing global locks

    Previously, we did stuff like
       if (!lock)
          EVTHREAD_ALLOC_LOCK(lock,0);
    for the evsig base global lock, the arc4random lock, and the debug_map
    lock.  But that's potentially racy!  Instead, we move the
    responisiblity for global lock initialization to the functions where
    we set up the lock callbacks.

    (Rationale: We already require that you set up the locking callbacks
    before you create any event_base, and that you do so exatly once.)

commit b4f89f00c607689d867a83d9d52535f371c5d750
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 21 17:33:13 2011 -0400

    Fix a memory leak on win32 socket->event map.

    This would lose some memory every time an event_base was freed on win32.

    Found by Dimitre Piskyulev.

commit 364291e9a9a4abe5c7612f587b82a601e07af942
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 21 17:11:41 2011 -0400

    Handle calloc failure in evdns. (Found by Dave Hart)

commit dde3b7396358392f897aa2215384c839310e8242
Merge: 2e9f665 00e91b3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 21 13:30:22 2011 -0400

    Merge branch '20_evdns_circular_list_patch' into patches-2.0

commit 00e91b3c8de2096ee0a8c6a341c305ecaf801f46
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 20 13:27:31 2011 -0400

    Fix a crash bug in evdns server circular list code

    Really, this should use a circleq.  That's a change for 2.1, though.

commit 2e9f66554897279f9aae2ce5a3933b99b6e08e38
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 14 14:15:13 2011 -0400

    Fix a couple of memory leaks in samples/http-server.c. Found by Dave Hart.

commit 3417f6808d4c86b02148cde4f7a32b18d8d260b4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 13 11:20:30 2011 -0400

    Avoid a free(NULL) if out-of-memory in evdns_getaddrinfo. Found by Dave Hart

commit 1a21d7b840ea1011d4bef1675ee3c7309d48ab3e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 5 17:21:12 2011 -0400

    Fix the check for multicast or broadcast addresses in evutil_check_interfaces

    First of all, it is totally okay to have an address end with .255,
    depending on what your netmask is, so we shouldn't reject a local
    address if it ends with .255.

    Second, our check for ending with .255 was broken.  So was our check
    for class-d addresses.

    Found by Dave Hart.

commit fc7f34bd4dac0738a16e4d3732e997c83fd8f88c
Merge: 0d6622e 637d17a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 5 17:17:51 2011 -0400

    Merge branch '20_socktype_protocol_nomem' into patches-2.0

commit 637d17a1b975ad33334c64c5ce8d0a19898e5c14
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 5 16:32:39 2011 -0400

    Check for allocation failures in apply_socktype_protocol_hack

commit 0d6622e26a83c1efac4a26a5b98e86ca61dc0a7f
Author: Tomash Brechko <tomash.brechko@gmail.com>
Date:   Thu Mar 31 19:11:10 2011 +0400

    Fix the case when failed evhttp_make_request() leaved request in the queue.

commit 218cf19743e3671924ec01edc9dc26be8b6f1ae8
Author: Tomash Brechko <tomash.brechko@gmail.com>
Date:   Thu Mar 24 15:52:34 2011 +0300

    Fix subtle recursion in evhttp_connection_cb_cleanup().

commit 272823f8b0fb3c5f752ea5ff79b9b223b4d1b453
Author: Tomash Brechko <tomash.brechko@gmail.com>
Date:   Wed Mar 23 12:05:33 2011 +0300

    Reset outgoing connection when read data in idle state.

    Imagine server side is buggy and miscalculates Content-Length: in the
    reply.  Data arriving in idle state shouldn't make us crash, instead we
    can just reset the connection.

commit c621359122c0b86f917407c6c544d51c4b49cd1b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 23 16:32:42 2011 -0400

    Add comment to configure.in to explain gc-sections test logic

    (Basically, we need access to conftest.err for the test to work properly.)

commit 6bb23e4bb17701ccc319c76797e4673897db8f77
Author: Dave Hart <hart@ntp.org>
Date:   Wed Mar 23 16:22:57 2011 -0400

    Fix for --gc-sections on NetBSD

    This patch fixes http://bugs.ntp.org/1844, works around
    http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=40401, by
    improving the test for support of --gc-sections to run a program which
    reads a file using stdio built with --gc-sections, instead of simply
    link the binary.  This catches the buggy linker as the garbage
    collection removes a tag NetBSD uses to distinguish its own elf
    binaries from Linux ones, causing it to treat conftest as a Linux
    binary and run it with the wrong syscall table.

commit b5a1f9f74bd4ffa342e388897de895611d6ea9ca
Author: Dave Hart <hart@ntp.org>
Date:   Wed Mar 23 16:22:24 2011 -0400

    Fix make distcheck & installation of libevent 1 headers

    libevent/Makefile.am corrects a typo (thanks to Harlan for spotting it
    once we realized make distcheck was broken when building the libevent
    tearoff).  The result was the include/ev*.h were not distributed nor
    installed whether or not --disable-libevent-install was used.  This
    was introduced with the final round (3/3) of
    --disable-libevent-install patch from me.

commit 4b8f02f14751c6c2d53cad3597a711a1a008e07f
Author: Christophe Fillot <cf@utc.fr>
Date:   Sat Mar 12 12:08:19 2011 -0500

    Fix incorrect assertions and possible use-after-free in evrpc_free()

    Original description:

      The following patch fixes incorrect assertions in evrpc_free():
      evrpc_unregister_rpc() and evrpc_remove_hook() return 0 for success.

      Also, in evrpc_unregister_rpc(), it is better to free RPC structure
      at the end: evrpc_free() uses rpc->uri as "name" parameter when
      calling evrpc_unregister_rpc(), then rpc->uri is freed, but we have
      "registered_uri = evrpc_construct_uri(name)". So at this time "name"
      is invalid.

commit 5209fadfd07af3f3379ac607582c37933b33e044
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Mar 7 22:59:19 2011 -0500

    Disable lazy gettimeofday/clock_gettime comparison for now

commit 9193dc4ecd12be779654e045a14ab32e1e616ddd
Merge: c8baac9 a459ef7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Mar 7 22:45:10 2011 -0500

    Merge branch '20_timescale' into patches-2.0

commit c8baac90231ab3dc4179b302568c640ab4ae05c8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Mar 7 21:55:47 2011 -0500

    Followup for Tomash Brechko's http patch

    This patch makes bufferevent_disable_hard() non-public, and
    adds a comment about what it's for and why it's used.

commit 5dc566284d736cb692f88685a3bcec70595a7689
Author: Tomash Brechko <tomash.brechko@gmail.com>
Date:   Thu Feb 24 12:30:40 2011 +0300

    Workaround libevent bug
    https://sourceforge.net/tracker/index.php?func=detail&aid=3078187&group_id=50884&atid=461324

    The problem is that bufferevent_disable() doesn't disable EV_WRITE
    when 'connecting' flag is set.  However from evhttp_connection_reset()
    we want to disable EV_WRITE for sure (we are closing the socket next).
    So we add bufferevent_disable_hard(), which acts like
    bufferevent_disable(), but resets 'connecting' flag before the call to
    the actual handler.

    TODO: bufferevent_disable_hard() shouldn't be public, remove it from
    event2/bufferevent.h.

commit a459ef70ec82eaa07680b0a4bc25e5d05efcc6fb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 3 15:34:22 2011 -0500

    Have event_base_gettimeofday_cached() always return wall-clock time

    Based on code by Dave Hart

commit ab008c7d0588887e88dffd35986005150e5a53e6
Author: Dave Hart <hart@ntp.org>
Date:   Thu Mar 3 12:57:17 2011 -0500

    Make --no-libevent-install apply to event1 headers too

commit b5ab955531c2008d33e46437ec926f5e0f0df3cd
Author: Dave Hart <hart@ntp.org>
Date:   Fri Feb 25 10:35:12 2011 -0500

    Make --no-libevent-install apply to headers too

commit 3f79a3a01a4a39fcaf24486f828a2b115b0542c0
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Wed Feb 23 09:19:08 2011 +0100

    Continue AM_CFLAGS to AM_CPPFLAGS correction

    9c469db300e1b270a93c6b04c1709ac0f7751136 had started with the conversion
    but left out another instance of incorrectly used AM_CFLAGS.

    Dave Hart provided the suggestion for this fix.

commit 5dc200b7c840188288facc7e9803f51d6396697f
Merge: 2fba21d 95060b5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 22 18:53:55 2011 -0500

    Merge branch '20_uri_nonconformant' into patches-2.0

commit 2fba21d8676f941b0b7d61850f440b12f0fb61cc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 22 16:20:42 2011 -0500

    Make -ffunction-sections off-by-default in 2.0.x

    I don't see how this can burn anybody, but I don't want to take
    chances: new build options are something that should be done in an
    alpha.  To turn -ffunction-sections on, pass
    --enable-function-sections to configure.

commit 7d913f4c8e98a22e75ab2ddea6587f00ef050dbf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 22 16:14:16 2011 -0500

    Remove nonfunctional enable_libevent_(install|regress)_def variables

commit 15b2408c9bc4f2b307df8fdecf3ef5a7401f60d2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 22 16:13:49 2011 -0500

    Use $(), not @@, for LIBEVENT_GC_SECTIONS

commit f95bafb60854d07dd8af5033d55656bc371c43f7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 22 00:34:49 2011 -0500

    Be explicit about how long event loops run in event.h documentation

commit 039b9bd0e3ab6e02cd9709d213f1abf32dbd13f0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 22 00:31:56 2011 -0500

    Use %s with printf in test.sh

commit 9c469db300e1b270a93c6b04c1709ac0f7751136
Author: Dave Hart <hart@ntp.org>
Date:   Sun Feb 13 02:27:42 2011 -0500

    Correct an AM_CFLAGS to an AM_CPPFLAGS in test/Makefile.am

commit 49e9bb7fb014a84de677f265cedac58f4d8a8ad5
Author: Dave Hart <hart@ntp.org>
Date:   Sun Feb 13 02:05:04 2011 -0500

    Add configure options to disable installation, regression tests

    The main reason for disabling installation is if you're building
    libevent as a subpackage for embedding: you want to have your main
    package's "make all" build libevent, but you don't want your main
    package's "make install" to install libevent.

commit 0b334799d6c48a5830774ee1f62fc2540810051e
Author: Harlan Stenn <stenn@ntp.org>
Date:   Sun Feb 13 02:00:10 2011 -0500

    Add -D_OSF_SOURCE to fix hpux builds

commit 0965c563568e49448955aea30bd43df30e544b92
Author: Dave Hart <hart@ntp.org>
Date:   Sun Feb 13 01:50:40 2011 -0500

    Use the gcc -ffunction-segments feature to allow gc when linking with static libevent

commit af08a94085e49e6942835b4c6b50a774536d5b5b
Author: Harlan Stenn <stenn@ntp.org>
Date:   Sun Feb 13 01:42:58 2011 -0500

    Check for getservbyname even if not on win32.

commit 833e5e9fcd3d06adfbd7c47d4f1fe42f46fbb26b
Author: Harlan Stenn <stenn@ntp.org>
Date:   Sun Feb 13 01:39:10 2011 -0500

    Fix autoconf bracket issues; make check for getaddrinfo include netdb.h

commit a317c068fe573050677599736a59b0b101bfa07c
Author: Harlan Stenn <stenn@ntp.org>
Date:   Sun Feb 13 01:34:40 2011 -0500

    Skip check for zlib if we have no zlib.h

commit 05a2c22fee8821e7d36837e1b3cba3b105dd5dfc
Author: Harlan Stenn <stenn@ntp.org>
Date:   Sun Feb 13 01:30:37 2011 -0500

    Make test-eof fail with a timeout if we never get an eof.

    Previously, it would just wait forever.

commit 4eb281c8a96e246b7493570a89686f8c56c75853
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 13 01:29:54 2011 -0500

    FIX: comment internal headers used in sample code.

commit eb692be9c8ea2d52e28a0b7b8258bd76483c3f3c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 13 01:27:06 2011 -0500

    NM: Fix sample/http-server ipv6 fixes

    Fix 1: Use #include "../xyz" rather than #include <../xyz>

    Fix 2: util-internal.h includes ipv6-internal.h, which in turn defines
           a replacement AF_INET6 on platforms that don't have it.  As such,
           the AF_INET6 checks shouldn't be needed.  (right?)

commit bbf55150b65a5de2edf7c77e3acd1c52caf364a9
Author: Harlan Stenn <stenn@ntp.org>
Date:   Sun Feb 13 01:25:33 2011 -0500

    Include util-internal.h as needed to build on platforms with no sockaddr_storage

commit 10c834c4dfda193c031a6bab9e86e0dcb818a061
Author: Harlan Stenn <stenn@ntp.org>
Date:   Sun Feb 13 01:22:25 2011 -0500

    Include arpa/inet.h as needed on HPUX

commit 63a715e125cd6ad24b672411b10946ff89d113fe
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 21 23:25:13 2011 -0500

    Correctly detect and stop non-chunked http requests when the body is too long

    Based on analysis and code from Bas Verhoeven and from
    Constantine Verutin.

commit deb2f73879102b4a65df772972910f62e3a64649
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 18 16:17:22 2011 -0500

    fix spelling mistake in whatsnew-2.0.txt

commit f665924649b3d6306eb3c24df8f77c3671b7a082
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 15 11:33:40 2011 -0500

    Correct evhttp_del_accept_socket documentation on whether socket is closed

    Thanks to Constantine Verutin for pointing this out.

commit 0c9be76804608dbff0bd8d4b96c633f4780437cf
Merge: 926f816 b42ce4b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 13 02:51:27 2011 -0500

    Merge branch '20_evport_pollhup' into patches-2.0

commit 926f8165a72f58f59583d21a091ffaf6bfd307b6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 13 00:54:21 2011 -0500

    Clarify event_set_mem_functions doc

commit 95060b54fe9dba5ec5e22bee3454a1e83b888d48
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 13 00:41:22 2011 -0500

    Make URI parser able to tolerate nonconformant URIs.

    If the EVHTTP_URI_NONCONFORMANT flag is passed in (which it is when
    parsing URIs we get over the wire), then we relax our checks a lot.
    Specifically, we do nothing to check for correct characters in the
    path, query, and fragment parts of such a URI.

    We could do much more here: we could relax our hostname requirements,
    deal with spaces differently/better, trap some errors but not others,
    etc.  But this should solve the worst user-agent compatibility issues
    for now; the other issues can wait for a later release.

commit f73619808622c6267aee1ee6cbeb35e2d02c460f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 8 22:24:06 2011 -0500

    Fix a type error in our (unused) arc4random_stir()

commit f663112fa238a3f5a1bdfddfd26c17e625e182df
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Thu Oct 14 20:15:04 2010 +0200

    Fix warnings about AC_LANG_PROGRAM usage

    Autoconf 2.68 introduced some new warnings that were triggered during
    autogen.sh. Fix those.

commit b4f89b608acfdaafb3c14d753a5055ca9f291182
Author: Dave Hart <hart@ntp.org>
Date:   Tue Feb 1 01:15:48 2011 -0500

    Fix test.sh output on solaris

    Solaris echo -n doesn't omit newlines, but printf omits newlines in
    more places.

commit c1260b0e7ccda55b1ab20f59e9c271e8f4576d40
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 31 17:36:49 2011 -0500

    Do not check for gethostbyname_r versions if we have getaddrinfo

commit 3c8f4e758e5a636e79f518b70319b115c39b1f23
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 31 16:44:06 2011 -0500

    Add compile-time check for AF_UNSPEC==PF_UNSPEC

commit 6092f1265f956f1968185bf669b8730edd7e3eaa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 31 16:37:27 2011 -0500

    Fix http unit test on non-windows platforms without getaddrinfo

commit cb921139790bed29427fdd5c07e804f26ea4c334
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 31 16:32:05 2011 -0500

    Build on systems without AI_PASSIVE

commit 713c254d21449e73b2877d6f69ee6c41aa56f182
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 24 18:55:10 2011 -0500

    Try to build correctly on platforms with no IPv6 support

commit 9184563e49562f07efdfcb76618b74822f03e273
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 24 18:29:20 2011 -0500

    Build correctly on platforms without sockaddr_storage

commit 453317b28cf8286a6bb849ab425fcce74d4148f3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 24 18:22:32 2011 -0500

    Fall back to sscanf if we have no other way to implement strtoll

commit 3267703658799e76ee661d5354bc5cff69b75863
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 24 17:42:23 2011 -0500

    Make --enable-gcc-warnings a no-op if not using gcc

commit 0c0ec0be2ba977b8133294e27b076a65a2d65711
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 12 20:28:47 2011 -0500

    Correctly free selectop fields when select_resize fails in select_init

commit 83e805a41554a9e69ab7d2d75e56c30f3147ffa6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 7 13:18:09 2011 -0500

    Handle resize failures in the select backend better.

commit 3f8d22a123aef2698ce2e7d6ca1ad96d13760cef
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Sat Dec 18 02:40:22 2010 -0200

    Use event_err() only if the failure is truly unrecoverable.

commit 666b09669187daad7107b340dd7dde50070a2feb
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Sat Dec 18 01:07:27 2010 -0200

    Detect and handle more allocation failures.

commit 0144886e7e9fdfb5dc630dcf0567846b952994bd
Author: Trond Norbye <trond.norbye@gmail.com>
Date:   Sun Jan 2 10:17:15 2011 +0100

    Check for POLLERR, POLLHUP and POLLNVAL for Solaris event ports

commit cb8059d2d399a2db5f3de1e911b5b9947d6c7339
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 1 21:37:21 2011 -0500

    Fix compilation on Windows with NDEBUG

    Dongsheng Song reports that when building on windows with NDEBUG, you
    run into an attempt to do EVUTIL_ASSERT(x) where x is a bitfield,
    which turns into _EVUTIL_NIL_CONDITION(x), which takes sizeof(x),
    which is illegal.  This patch fixes _EVUTIL_NIL_CONDITION to work on
    bitfields too.

commit b42ce4bf08c8e70bf6b357d4e2e95885fff0d530
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 1 21:17:31 2011 -0500

    Fix evport handling of POLLHUP and POLLERR

    In other backends, they make _all_ events trigger; with evport they
    previously triggered nothing.  Found by Phua Keat Yee.

commit 05f0195dd94fa8a84a2006bda8900f5f6b30cd40
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 16 12:57:23 2010 -0500

    Bump version to 2.0.10-stable-dev

commit 5a12d8359727e8f10d08f8cd2b36c9f78747908f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 15 14:31:08 2010 -0500

    Add changelog for 2.0.10-stable

commit d34d21d959974682e2d163f0143806890b5c123a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 15 14:30:04 2010 -0500

    Add more acknowledgements to the readme for 2.0.10-stable

commit bffc411ed64313d04b01248fbbdb92b4ce78d995
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 15 14:29:50 2010 -0500

    Set the version to 2.0.10-stable

commit b63ab1776b3bbf3fe47406d0ca9639b299c4348d
Author: Evan Jones <evanj@mit.edu>
Date:   Mon Dec 6 14:17:44 2010 -0500

    EVUTIL_ASSERT: Use sizeof() to avoid "unused variable" warnings.

commit 18adc3f0159949a628b4e77dfeed857cc4b924a4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 9 12:17:58 2010 -0500

    Add stuff to whatsnew based on reading include changes since August.

commit 57689c4484ba3fd098739bcea1557c329a8fa16b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 9 12:17:11 2010 -0500

    Document that the cpu_hint is only used on Windows with IOCP for now

commit bb0d2b4e85dcb674ecee0e4cb4db18d03f64d4d9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 9 11:47:54 2010 -0500

    Consistentize tabs

commit 22f4af6580bb330c073350580fc7e49d1051a8cf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 9 11:43:12 2010 -0500

    Remove end-of-line whitespace

commit 74f75758cbc942b748b4aff271871e51def93f89
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 9 11:40:35 2010 -0500

    tweak readme, whatsnew

commit 7011f9ec1f96f8fa2939beec685e292c57e5addf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 7 11:45:14 2010 -0500

    Fix a signed/unsigned comparison in the last commit

commit d23839fc6e30e265e139d763d7155b14934bab0a
Author: Constantine Verutin <cverutin@gmail.com>
Date:   Tue Dec 7 11:43:52 2010 -0500

    Reject overlong http requests early when Expect:100-continue is set

commit c0bf63cecbaa8ce061bd3f64978445fdf90e82e6
Author: Evan Jones <evanj@mit.edu>
Date:   Thu Dec 2 14:13:33 2010 -0500

    tests: Use relative includes ("") instead of system includes (<>)

commit 4f332091c38ac73a05e3d2b148cd9975799afbcf
Author: Evan Jones <evanj@mit.edu>
Date:   Thu Dec 2 14:09:52 2010 -0500

    tests: Use new event2 headers instead of old compatibility headers.

commit fbe64f216cbcf3980e436ca6bb708416c4d856a4
Author: Evan Jones <evanj@mit.edu>
Date:   Thu Dec 2 10:26:12 2010 -0500

    Use relative includes instead of system includes consistently.

commit ef5e65a484406586c161f3e7bf7eafc162ee858e
Author: Evan Jones <evanj@mit.edu>
Date:   Thu Dec 2 10:27:06 2010 -0500

    bufferevent-internal.h: Use the new event2/util.h header, not evutil.h

commit 5beeec9d43cbf7de700a9a0fd7d144a341e102c2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 1 21:28:03 2010 -0500

    Correctly notify the main thread when activating an event from a subthread

commit 2599b2d5f55cdb36e0601c41cea0f3b0ecd9dc52
Author: Kelly Brock <Kerby@inocode.com>
Date:   Tue Nov 30 11:34:26 2010 -0500

    Minor fix for IOCP shutdown handling fix

    Call setsockopt() on the actual new socket, not on as->s, which was
    set to INVALID_SOCKET.

commit 2b0b06d7a3f5dacff55df382094f32cc8b9516f7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 30 02:19:25 2010 -0500

    Increment version to 2.0.9-rc-dev

commit ce46db99b94389a8fed0248f64f88d047cdac416
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 30 01:21:00 2010 -0500

    Give the correct date for 2.0.9-rc in the changelog

commit 9ce4cc4ed9a580f131bf857e69a820eaa818a2af
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 23 11:17:24 2010 -0500

    Increment version to 2.0.9-rc

commit 79957b89d6dd446add398de269f5507e607aaa9d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 23 11:17:06 2010 -0500

    Bump VERSION_INFO to 5:0:0

commit 0c54f17605c1637b5c24ab6c0a8354bdc9fab482
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 23 11:08:30 2010 -0500

    Changelog and acknowledgments for 2.0.9-rc

commit 13fd242ddba16bc02c1e54c7209b4be4d85ac906
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 30 00:53:16 2010 -0500

    Fix win32 build of http-server.c with unicode enabled

commit 04861d5e62d42e9626c08d74c43b1050e28c8858
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 30 00:05:54 2010 -0500

    Correctly detect timeouts during http connects

commit 0faaa395921e3da1da5202befd849614c6e9c37c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 29 22:44:18 2010 -0500

    Try to fix an assertion failure related to close detection

    f700566c removed a line from evhttp_connection_stop_detectclose that
    cleared the EVHTTP_CON_CLOSEDETECT flag.  I think this was an
    accident, and suspect that it may be the cause of bug 3069555.

commit 29f7623c82207914b1ff3123bb1eec3745e3dab2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 29 22:14:54 2010 -0500

    Possible crash fix when freeing an underlying bufferevent of an openssl bufferevent

commit 0c4d54598b12ce08ba438b14861984a2501b7dde
Merge: 18d0327 fa9305f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 29 21:56:23 2010 -0500

    Merge remote branch 'chrisd/http_continue'

commit fa9305f8f5a9641bf7edf7577b186455b6c43ac6
Author: Christopher Davis <chrisd@torproject.org>
Date:   Mon Nov 29 18:25:04 2010 -0800

    Preliminary support for Continue expectation in evhttp.

commit 18d0327666a6d92bd045eacf91b538bf90e82a04
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 29 20:39:09 2010 -0500

    make http-server example code build on win32

commit ad66dfd064d8e246f699c9512f9c3c6a5a0b2b69
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 29 20:13:19 2010 -0500

    Fix http-server.c compilation on freebsd

commit a12839b0838cb6b24f6993b17b2a284a3944d1c5
Merge: 026ac5d 4feedef
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 29 14:25:33 2010 -0500

    Merge remote branch 'chrisd/http_fixes2'

commit 4feedef94b254f5aaf8e7cf7cd104ddfffd8496a
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Mon Nov 29 07:18:32 2010 -0800

    Add a few more comments.

commit 026ac5d5ada4a5d2f107e652916b50ebd17c8609
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 26 13:29:56 2010 -0500

    add http-server to gitignore

commit 4881778c5c898577bcb756c2b23ed15003c4a0bc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 26 13:28:48 2010 -0500

    Fix a misplaced ) in http_server.c

commit d40aa673c23c4120fc1bab7a51d0a23c7fbb9463
Merge: 4e794d5 ec5c5ae
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 26 12:59:02 2010 -0500

    Merge branch '20_empty_body'

commit 4e794d5d3910c053aed7aa1d7900531894ed0dd7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 18 13:44:05 2010 -0400

    Add a basic example of how to write a static HTTP server.

commit aab8c38b768597274104bc5ecdf267de4ff3c7c9
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Fri Nov 5 11:17:07 2010 -0700

    Add evhttp server alias interface, correct flagging of proxy requests.

    evhttp needs to be mindful of all hostnames and addresses that clients
    use to contact the main server and vhosts to know the difference between
    proxy requests and non-proxy requests.

commit 2e5a175bf387bd5c80b88f276b4ba7dcf9eaaf08
Merge: 3239073 057a514
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 25 23:03:46 2010 -0500

    Merge remote branch 'github/20_once_fixes'

commit 32390732d75d1d4680a562404ef4298869f37b12
Author: Kevin Bowling <kevin.bowling@kev009.com>
Date:   Tue Nov 23 19:40:23 2010 -0700

    Fix snprintf related failures on IRIX.

commit 1cd45e56608b50b594a629433ca48368dc1a9074
Author: Kevin Bowling <kevin.bowling@kev009.com>
Date:   Tue Nov 23 19:26:34 2010 -0700

    If not WIN32, include <sys/socket.h> in event2/util.h.

commit c2e5e22c4c47073fecf0acc300d8d73aaccdab2d
Author: Kevin Bowling <kevin.bowling@kev009.com>
Date:   Tue Nov 23 14:09:03 2010 -0700

    xlC doesn't obey C99 comments here.  autoconf isn't invoking full C99
    mode.

commit c4dc3353412733345010114220378f45f1951bb1
Author: Kevin Bowling <kevin.bowling@kev009.com>
Date:   Tue Nov 23 00:22:01 2010 -0700

    Add some checks since lack of TAILQ_FOREACH doesn't imply lack of FIRST,
    END, NEXT, or INSERT_BEFORE.  Quiet some warnings in XL C.

commit 2e2a3d7bb6c7a7d6e8f0ccd7282c65308c6226f7
Author: Kevin Bowling <kevin.bowling@kev009.com>
Date:   Tue Nov 23 19:09:08 2010 -0700

    Reworked AIX __ss_family workaround to use AC_STRUCT_MEMBER.

commit a3a9f6b2d9fbc853e9f54f1af3132adce760e9bb
Author: Kevin Bowling <kevin.bowling@kev009.com>
Date:   Mon Nov 22 20:44:10 2010 -0700

    select comes from <sys/select.h> according to POSIX.1-2001, or from a
    variety of other standard headers on older systems, but not <select.h>.
    AIX build fix.

commit ec5c5aec6d5373e47936891c6b8111716d16f3e6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 23 20:31:28 2010 -0500

    Handle evhttp PUT/POST requests with an empty body

    When we call evhttp_get_bodylen() [when transfer-encoding isn't set],
    having req->ntoread == -1 means that we have no content-length.  But a
    request with no content-length has no body!  We were treating the
    absent content-length as meaning "read till closed", which only holds
    for replies, not requests.

    This patch also allows PATCH requests to have a body.

commit 652024b6b1c43a4898f7c3f13aeff5d3736f4ce5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 23 13:08:07 2010 -0500

    Remove _event_initialized(); make event_initialized() a function(); make it consistent on windows and non-windows

commit 88be27dc0613eb15f6f5499ea18b8253631ad92e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 23 12:26:46 2010 -0500

    Document event_get_assignment

commit e431bcd6861fd75051ea6dca8af8db966eb7f636
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 23 12:26:34 2010 -0500

    Note that reentrant calls to libevent from logging cbs may fail badly

commit 7bcace2d549f5afc65665a9be6cbb4daf7360273
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 22 21:02:34 2010 -0500

    Fix some irix compilation warnings spotted by Kevin Bowling

commit 150d7d0a497b52968e2223178c8ed6e4cd8659b0
Merge: 26049c2 e874982
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 22 20:24:03 2010 -0500

    Merge remote branch 'kev009/master'

commit e87498231c5f1d0cbda6e16f6a9f721d96affd6f
Author: Kevin Bowling <kevin.bowling@kev009.com>
Date:   Mon Nov 22 16:40:31 2010 -0700

    Fix IRIX build.  sa_family collides with a #define in sys/socket.h on IRIX.

commit 26049c2f93e3266819d8456cb7481521b7b255fa
Merge: 568ac4f da1bf52
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 22 16:24:52 2010 -0500

    Merge remote branch 'github/20_getaddrinfo_cancel_v2'

commit da1bf528110d2676ab9a32c3a92d50ec5665e926
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 22 16:24:09 2010 -0500

    Add a stress test for getaddrinfo_cancel

commit 568ac4fd1b5e325c21ca2d30f2c17b452b622985
Merge: ece974f 4f228a1 3ab578f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 22 15:52:34 2010 -0500

    Merge remote branches 'github/20_epoll_nochangelist_v4', 'github/20_openssl_closeonfree' and 'github/20_cloexec'

commit ece974fbba32db1b21a411adfdfce6f37f63ab59
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 22 14:13:24 2010 -0500

    Reorder backends in test.sh to match preference order in event.c

commit aed7e02979886ec07bad56daa0d7bdda290bc509
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 22 14:10:01 2010 -0500

    Make unit tests for epoll-with-changelist pass

    The only changes needed were to handle the fact that the methodname
    "epoll (with changelist)" matches the environment variable
    EVENT_NOEPOLL rather than the imaginary "EVENT_EPOLL (WITH CHANGELIST)".

commit 9531763ab0b57e8d4249db58ef162800c6fb116b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 14 17:52:16 2010 -0500

    Disable changelist for epoll by default because of Linux dup() bug; add an option and/or an envvar to reenable it for speed.

    Rename option to control epoll changelist; make epoll changelist off by default

commit 3ab578f848b024da14a5cdf3dff24d666275bada
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 20 01:41:34 2010 -0500

    Make sure the CLOEXEC flag is set on fds we open for base notification

commit 3a67d0bf42c69423fca36d001023d563b0326399
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 19 17:09:30 2010 -0500

    Resolve an evport bug in the thread/forking test

commit d51b2fc6556de1ad086683ce1d0201910f7c6e00
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 19 12:14:18 2010 -0500

    Make evdns_getaddrinfo_cancel threadsafe

commit c7cfbcf466780755c40a9889fd15a3c571799ca3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 19 12:01:05 2010 -0500

    Fix some more cancel-related bugs in getaddrinfo_async

    Also imposed a new rule to make this much much simpler: no freeing
    the getaddrinfo request until both dns callbacks have been invoked.

commit abf01ed13af22637ceeb4c5732c2347fd25a8c03
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 19 11:33:48 2010 -0500

    Avoid double-invocation of user callback with EVUTIL_EAI_CANCEL

commit 494186129fdec5d47db0bd0b582922c1b37abe0f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 16 12:55:10 2010 -0500

    Use the US-English "canceled", not the UK "cancelled".

commit 8faf223ac593a2c8a93a9bb16eb314f858fce59b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 17 00:09:10 2010 -0500

    Fix a memory leak in evhttp_uri_free.

commit 4f228a1fc1569cb26c9ae7dde4a1b79ca25cb0ce
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 14 19:52:18 2010 -0500

    Fix bug in bufferevent_connect on an openssl bufferevent that already had an fd

    The problem was that we were using openssl's BIO code's shutdown flag
    whenever BEV_OPT_CLOSE_ON_FREE was set.  This made the BIO close the
    socket when it was freed... but it would be freed whenever we did a
    setfd on the bufferevent_openssl, even the no-op setfd in
    bufferevent_connect.

    So instead, we just set the shutdown flag to 0, and handle closing the
    fd ourselves.

    Spotted by Linus Nordberg

commit 057a51468e1368384478788800f66c6d82e2bce3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 14 19:34:49 2010 -0500

    Clarify EVLOOP_* documentation to be more precise.

commit 2d5e1bd0be546efb848006652b8df612d6d3d681
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 14 19:32:13 2010 -0500

    Do not let EVLOOP_ONCE exit the loop until all deferred callbacks have run

commit 0617a818204397790e5e4c9bcb9e91ae5ea7817a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 14 19:25:54 2010 -0500

    Make EVLOOP_ONCE ignore internal events

    Merely getting an internal notification event from having an event
    added or deleted from another thread should not cause
    event_base_loop(base, EVLOOP_ONCE) to exit; previously, it did.

commit 1ac5b2303aab11dee3d2030a2c9bee466f002772
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 9 15:18:59 2010 -0500

    Only clear underlying callbacks when the user hasn't reset them.

commit fc7b1b005c906d720e03975224ae809974402f55
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 9 11:43:47 2010 -0500

    When closing a filtering bufferevent, clear callbacks on the underlying bufferevent

    Previously, if BEV_OPT_CLOSE_ON_FREE wasn't set on a
    bufferevent_filter or a filtering bufferevent_openssl, when we went
    to free the filtering bufferevent, we'd leave the underlying
    bufferevent unchanged.  That's not so good, since the callbacks are
    set to activate stuff in the filtering bufferevent that we're about
    to free.  Instead, set all the callbacks to NULL.

commit 5c8a59e8867a45b5791e45a548a73eb135a6a3ea
Merge: 9ed30de 0512487 a38140b 3db6bc0 52aa419 34b84b9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 9 10:19:05 2010 -0500

    Merge remote branches 'github/20_evdns_cancel_segfault_v2', 'github/20_http_close_detect', 'github/20_http_versions', 'github/20_more_http_methods', 'github/20_shutdown_iocp_listener' and 'github/20_win64_fixes'

commit a38140be18b764e98b899ed435b61ea2aa6447bc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 9 10:14:32 2010 -0500

    Refactor http version parsing into a single function

    Based on a suggestion by Chris Davis to make
    evhttp_parse_response_line tolerate odd versions too.

commit 3db6bc007949366e89cb83efa5027ea9da9af102
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 9 10:03:00 2010 -0500

    Remove some debugging puts() calls from allow_methods test

commit 52aa419bf69bc2f46f203800919abcfc25ea98fe
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 4 15:40:44 2010 -0500

    Set SO_UPDATE_ACCEPT_CONTEXT on sockets from AcceptEx so that shutdown() can work

    Based on patch (and lots of debugging work) by Kelly Brock.

commit 229714d123824d686bece18e6d2d157ed401abd4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 4 16:04:28 2010 -0400

    Fix a mistake in http documentation found by Julien Blache

commit 05124879d34731eafe8a31698c943c0f5e7e24bf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 4 14:05:08 2010 -0400

    Never call evhttp_readcb while writing.

commit c76640b5c29390ca3a11eba6614bf51a92e7a2ca
Author: Felix Nawothnig <felix.nawothnig@gmail.com>
Date:   Tue Jun 1 04:45:55 2010 +0200

    Don't disable reading from the HTTP connection after sending the request to be notified of connection-close in time

commit 75e3320efd318634ec367327e4e286fa68178179
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 4 12:41:13 2010 -0400

    Units test for unexpected evhttp methods.

commit 536311a46b407902ca0ee52d504c327ec54cfdf1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 4 12:39:41 2010 -0400

    evhttp: Return 501 when we get an unrecognized method, not 400.

commit f5b391e22eb119304877b3829f32a241a0688fa3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 4 11:53:34 2010 -0400

    Tweak interface for allowed methods

commit 75a73414a402005ddc2d2adde5a3acffc00d6382
Author: Felix Nawothnig <felix.nawothnig@gmail.com>
Date:   Thu Nov 4 11:25:35 2010 -0400

    Define enumerators for all HTTP methods, including PATCH from RFC5789

    This patch defines enumerators for all HTTP methods that exist
    (including PATCH introduced in RFC 5789).

    It also makes them bit-masky (that's not a word, is it?), breaking
    binary- but not source-code compatibility.

    evhttp now stores a bitmask specifying for which methods requests to
    dispatch and which ones to reject with "405 Method Not Allowed".

    By default that's the ones we currently have (GET, POST, HEAD, PUT,
    DELETE), thereby keeping functional compatibility (besides the minor
    change that one of the other methods will now cause 405 instead of
    400. But I believe that could even be considered a bug-fix).

    evhttp is extended by evhttp_set_allowed_methods() with which the
    user can change that bitmask.

    no regressions here and my test-app still works. Haven't yet
    actually tested any of the new methods.

    What's obviously missing here is the special logic for the methods:

    OPTIONS: We should be fine here - I believe our current dispatch
    logic should work fine. Some convenience functions would be fine
    though.

    TRACE: I'm pretty certain we should never dispatch this to the
    callbacks and simply implement the necessary functionality built-in.

    CONNECT: Pretty straight-forward to implement (and considering the
    framework in which we implement it very efficient too). Should
    probably go built-in.

    PATCH: Except for checking the RFC against our pre-dispatch logic
    (there just might be some "MUST not have Some-Header" lurking
    somewhere) there is nothing to be done here, this is completely up
    to the user. Nothing to do.

commit 9ed30de7ffeb3e5acede92a4e47f3aeb7c6af255
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 12:37:37 2010 -0400

    Don't free evdns_request handles until after the callback is invoked

    Previously, once the callback was scheduled, it was unsafe to cancel
    a request, but there was no way to tell that.  Now it is safe to
    cancel a request until the callback is invoked, at which point it
    isn't.

    Found and diagnosed by Denis Bilenko.

commit 34b84b972775db759f5c2da301967cb288439e93
Author: Christopher Davis <chrisd@torproject.org>
Date:   Wed Nov 3 14:38:45 2010 -0700

    Fix more wn64 warnings.

commit 78762383b74ad8159d8c6176fb73c9fdb9ce9623
Merge: aa5f55f 985430a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 15:18:34 2010 -0400

    Merge branch 'http_nolegacy_v2'

commit 985430aed122a8c61ca7260779940d523f78ce23
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 15:17:57 2010 -0400

    Remove need for http_compat.h in http tests

commit 0b137f452ee4516d479ea61ae54d458888cfa8e9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 15:14:29 2010 -0400

    Stop accessing http request struct directly from in the unit tests.

commit 22e0a9b2e8f752bfdcff7b0d96065c2da391bf03
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 15:12:08 2010 -0400

    Add evhttp_response_code to remove one more reason to include http_struct.h

commit c91622d18cb4dda945d92b983a712d1c3a37b45e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 15:04:44 2010 -0400

    Stop using event_compat.h in regress_http

commit 9bb8239375b78a7be65ce17b4545159590894dc3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 14:31:23 2010 -0400

    Convert the rest of the http tests to be non-legacy unit tests.

commit 353402a87ad41788997d4100bbf00bfc21693b4c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 14:13:20 2010 -0400

    Rename the confusing "base" static variable in regress_http.c

commit 8505a7449cfb6bca91daee1c4d9bae80be92fa26
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 3 13:55:20 2010 -0400

    Start porting http tests to not use legacy interfaces

commit 647e094ca2ff90da79bfc3081848f50583d2042c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 2 15:19:12 2010 -0400

    Replace exact-version checks for HTTP/1.1 with >= or < checks

commit aa5f55face7347a7fa766ff37534d9413486fcfe
Author: Joachim Bauch <mail@joachim-bauch.de>
Date:   Tue Nov 2 13:50:57 2010 -0400

    reset "chunked" flag when sending non-chunked reply

commit ba014569991ead06594e3418705ad42e4818cb33
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 2 12:42:35 2010 -0400

    Use the label_len local variable in evdns instead of recalculating it over and over

commit a3245afec2a7c7035cf62bdb67bab482e5986a8c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 1 14:23:33 2010 -0400

    Fix win32 build in response to fixes from win64 build.

commit 74a91e5aafcb62f9518615dbc1021dfde113e001
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 1 14:16:39 2010 -0400

    fix signed/unsigned warnings in http.c

commit f8095d64e21d7abd16649a65080fd077bf0f0488
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 1 14:15:34 2010 -0400

    Fix a typo in 7484df61c981fc33db2~

commit 545a61145ca8ae38c3d19f5404ff3be18c275308
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 1 13:59:04 2010 -0400

    Fix even more win64 warnings: buffer, event_tagging, http, evdns, evrpc

commit 7484df61c981fc33db2152f75ddac689791b9929
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 1 13:43:43 2010 -0400

    Fix even more win64 warnings

commit b6a158ca22359831475e4cb10498063f72b07823
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 1 11:48:57 2010 -0400

    Rename "size" variables in win32select that were really fd counts.

commit f8064762ae697d34b15039c32d74e55f5491e5bd
Author: Christopher Davis <chrisd@torproject.org>
Date:   Thu Oct 28 10:11:25 2010 -0700

    Increase the skew tolerance to 2 seconds in thread/deferred_cb_skew

    This is to make the test not fail on Sebastian Hahn's Win7 box.

commit 7b40a0005062e67423f5217e1c8082d0f7d36f1b
Author: Christopher Davis <chrisd@torproject.org>
Date:   Thu Oct 28 10:08:17 2010 -0700

    Make sure IOCP evconnlistener uses virtual events.

commit 598d13360918e557d1ce5e37078364f4ddd24e36
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 27 22:57:53 2010 -0400

    Try to clear up more size_t vs int/long issues.

commit b81217f78dc511782451e793b0505624d8159499
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 27 17:37:32 2010 -0400

    Fix signal handler types for win64.

commit 1ae82cd8c6aba98d21342d242facd1bb5e461555
Author: Dimitre Piskyulev <piskyulev@users.sourceforge.net>
Date:   Wed Oct 27 17:32:41 2010 -0400

    Set _EVENT_SIZEOF_VOID_P correctly on win32 and win64

commit f817bfa4d37448f21d6f753769f6ad91d113dd7c
Author: Dimitre Piskyulev <piskyulev@users.sourceforge.net>
Date:   Wed Oct 27 17:31:52 2010 -0400

    Fix some ints to evutil_socket_t; make tests pass on win64.

commit 19c71e7454305e4e10c7d0c6ed1520fe5e1521df
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 27 10:36:08 2010 -0400

    Fix som event_warns that should have been event_warnx

commit e8a903cee8b3bfc56423a58ba313ee1a030ae6f1
Merge: 5d389dc f5ad31c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 27 10:27:04 2010 -0400

    Merge remote branch 'trondn/master'

commit f5ad31c186ec68c78f0106da4474dca3b660bca0
Author: Trond Norbye <trond.norbye@gmail.com>
Date:   Wed Oct 27 12:47:07 2010 +0200

    Check return value for ioctlsocket on win32

commit 5d389dc0f0acd8077b51eb053bb98bc4c1b3baa4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 22:27:57 2010 -0400

    Fix some uses of int for socket in regress

commit 84a7053e412c08269535431aa845264b90a5a0c2
Merge: 73bf07f 74c0e86
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 21:33:22 2010 -0400

    Merge remote branch 'github/20_http_read_after_write'

commit 73bf07fe9b133a39440c03a7fd9ac2f0c2f32f28
Merge: 093fb98 a4063c0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 21:33:13 2010 -0400

    Merge remote branch 'github/20_abi_breaks'

commit 093fb989ecd3ae65700289e00511b678d8b4896c
Merge: 4f20eea 2cbb1a1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 21:33:05 2010 -0400

    Merge remote branch 'github/20_ratelim_size'

commit 4f20eeaa0966f01485be21df3a6529edc20451e9
Merge: fbaf077 e4f34e8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 21:32:53 2010 -0400

    Merge remote branch 'github/20_chain_realign'

commit fbaf0770a709aaf7ed50914e26ea3d5a350e189d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 12:09:20 2010 -0400

    Fix bugs in posix thread-id calculation when sizeof(pthread_t) != sizeof(long)

    When pthread_t was smaller, our calculated thread IDs would include
    uninitialized RAM, and so our unit tests would fail because thread_ids
    would never match one another.

    When pthread_t was larger and alignment was big-endian, our calculated
    thread IDs would only have the most significant bytes of the
    pthread_t, when in practice all the entropy is in the low-order bytes.

    Found with help from Dagobert Michelsen.

commit ac1931ac3d3ed4977c95f3aedf047e7c3adedc7f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 11:07:26 2010 -0400

    Remove event-config.h from .gitignore; it moved to include/event2

commit e56ff65af118163e4bed33fa33c5cabcea067839
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 11:01:58 2010 -0400

    Fix a minor syntax error that most compilers didn't care about

commit a4063c06f9a904930631abba6a2b5b8028b10383
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 10:38:30 2010 -0400

    Note that 2.0.9 will break the ABI, and make changes we were postponing.

    We had to turn a couple of 32-bit size arguments into 64-bit arguments
    or size_t arguments (since otherwise we would have had to do it post
    2.0.x-stable, and that would be worse).

commit 2cbb1a161e843a0f50f3d42f622d58d5c58c510d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 26 10:27:29 2010 -0400

    Make rate-limits go up to SIZE_MAX/EV_SSIZE_MAX, not just INT32_MAX

    Someday, when networks are far faster and people frequently want a
    burst value greater than 2GB per tick, this will seem very forsightful
    indeed.

    For now, it breaks ABI, but not source.  Fixes bug 3092096.

commit e4f34e8a0fec22a0300d6d529a5899ced3d0582a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 22:36:23 2010 -0400

    Correct logic for realigning a chain in evbuffer_add

    The old logic was both too eager to realign (it would move a whole
    chain to save a byte) and too reluctant to realign (it would only
    realign when data would fit into the misaligned portion, without
    considering the space at the end of the chain).

    The new logic matches that from evbuffer_expand_singlechain: it only
    realigns a chain when not much data is to be moved, and there's a
    bunch of space to be regained.

    Spotted by Yan Lin.

commit 74c0e862984edc5585b34abce9e6decd6aa05969
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 21:53:15 2010 -0400

    Avoid missed-request bug when entire http request arrives before data is flushed

    The trigger for starting to read the first line of a request used to
    be, "When data has arrived and we're looking for the first line."
    But that's not good enough: if the entire next request gets read
    into our bufev->inbuf while we're still processing the current
    request, we'll never see any more data arrive, and so will never
    process it.

    So the fix is to make sure that whenever we hit evhttp_send_done, we
    call evhttp_read_cb.  We can't call it directly, though, since
    evhttp_send_done is reachable from the user API, and evhttp_read_cb
    can invoke user functions, and we don't want to force everyone to
    have reentrant callbacks.  So, we use a deferred_cb.

    Found by Ivan Andropov.  This is bug 3008344.

commit 8e342e563060a5dfc4c33bd46a2a6819a5d5b2f7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 16:09:11 2010 -0400

    Correctly count req->body_size on http usage without Content-Length

    There was a dumb bug where we would look at the length of the input
    buffer immediately _after_ we drained it.

commit 58a1cc6bc8d4c309a6d8a7bd937479615d4bbffc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 16:00:47 2010 -0400

    Fix a bug where we would read too much data in HTTP bodies or requests.

    We were using evbuffer_add_buffer, which moved the entire buffer
    contents.  But if we had a valid content_length, we only wanted to
    move up to the amount of data remaining in ntoread.  Our bug would
    make us put our ntoread in the negative, which would in turn make us
    read all data until the connection closed.

    Found by Denis Bilenko.  Should fix bug 2963172.

commit 525da3e1eb5fc227e2af245bf3acae02b0627162
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 15:49:42 2010 -0400

    Fix Content-Length when trying send more than 100GB of data (!) on an evhttp.

commit f1250eb69836eff5a0bca69b48fbd5efe9d742cc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 15:23:41 2010 -0400

    add a requested docstring for event_rpcgen.CommandLine.__init__

commit 9c71a3413ab8f52797e504fdbd9ab52ff88f951a
Merge: ac7e52d 006efa7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 15:13:32 2010 -0400

    Merge remote branch 'github/http_and_listener'

commit ac7e52d84df955bab7845f4b52a43bf228946fc9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 14:29:30 2010 -0400

    Make evbuffer_add_file take ev_off_t, not off_t

    This change has no effect on non-windows platforms, since those
    either define off_t to 64-bits, or allow you to decide whether
    it should be 64-bits yourself via some LARGEFILE-like macro.

    On Windows, however, off_t is always 32-bit, so it's a bad choice
    for "file size" or "file offset" values.  Instead, I'm adding
    an ev_off_t type, and using it in the one place where we used
    off_t to mean "the size of a file" or "an offset into a file" in the
    API.

    This breaks ABI compatibility on Windows.

commit 006efa7dbbcaec4d412670107b893f04d38f0d83
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 11:50:51 2010 -0400

    Functions to actually use evhttp_bound_socket with/as evconnlistener.

commit 46ee061ca011346ec3d99c896cae8571847bdf70
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 25 11:47:05 2010 -0400

    Add a function to change a listener's callback.

    You can also now initialize listeners with no callbacks set; if so,
    they won't get enabled until the callback is set to non-NULL.

commit 2c66983a6d46cbd863b079a1c92c916b41efe0ba
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Oct 24 11:51:14 2010 -0400

    Simplify the logic for choosing EPOLL_CTL_ADD vs EPOLL_CTL_MOD

    Previously, we chose "ADD" whenever old_events==new_events, (since
    we expected the add to fail with EEXIST), or whenever old_events
    was==0, and MOD otherwise (i.e., when old_events was nonzero and not
    equal to new_events).

    But now that we retry failed MOD events as ADD *and* failed ADD
    events as MOD, the important thing is now to try to guess right the
    largest amount of the time, since guessing right means we do only
    one syscall, but guessing wrong means we do two.

    When old_events is 0, ADD is probably right (unless we're hitting
    the dup bug, when we'll fall back).

    And when old_events is set and != new_events, MOD is almost
    certainly right for the same reasons as before.

    But when old_events is equal to new events, then MOD will work fine
    unless we closed and reopened the fd, in which case we'll have to
    fall back to the ADD case.  (Redundant del/add pairs are more common
    than closes for most use cases.)

    This change lets us avoid calculating new_events, which ought to
    save a little time in epoll.c

commit c281aba30e69a501fc183d068894bfa47f891700
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Oct 24 11:38:29 2010 -0400

    Fix a nasty bug related to use of dup() with epoll on Linux

    Current versions of the Linux kernel don't seem to remove the struct
    epitem for a given (file,fd) combo when the fd is closed unless the
    file itself is also completely closed.  This means that if you do:
       fd = dup(fd_orig);
       add(fd);
       close(fd);
       dup2(fd_orig, fd);
       add(fd);
    you will get an EEXIST when you should have gotten a success.  This
    could cause warnings and dropped events when using dup and epoll.

    The solution is pretty simple: when we get an EEXIST from
    EPOLL_CTL_ADD, we retry with EPOLL_CTL_MOD.

    Unit test included to demonstrate the bug.

    Found due to the patient efforts of Gilad Benjamini; diagnosed with
    help from Nicholas Marriott.

commit bf11e7ddf7a3f8d6e6bd13aec944dcd37f1763ff
Merge: 70e1b60 bc98f5e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 15:33:13 2010 -0400

    Merge branch 'http_uri_parse'

commit bc98f5e6bad6a8502895d992cc3413b118969e01
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 14:53:21 2010 -0400

    Unit tests for evhttp_uri_set*

commit 45f6869c753218a72dd44660a880237aa8daa386
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 14:41:12 2010 -0400

    Make evhttp_uri non-public, and give it accessor functions.

commit 70e1b607d67657c573cdfc5c1ee832bc64391ddd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 14:05:04 2010 -0400

    Document that two bufferevent functions only work on socket bufferevents

commit aab49b6069bc86a5cae7f0e8433f3844956dfa8e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 14:04:24 2010 -0400

    Add a bufferevent_get_base function

commit d9ffa899fa382c8e9a4640e4bacb434e128d0b06
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 12:48:13 2010 -0400

    Update the HTTP regression tests to use Libevent2 apis for non-http stuff

commit 1f507d754107355c316fe55295a8b2f8b2ba00c1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 12:27:16 2010 -0400

    Stop using Libevent-1 headers in regress_http

commit 2a3b5872fe1a2fa0f67d1b435b4650d337c16c4d
Merge: cd00079 90b3ed5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 12:23:10 2010 -0400

    Merge branch 'http_small_tweaks'

    Conflicts:
    	http-internal.h

commit cd00079b2266893472fac795a69fe8aaea6c52e0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 21 12:19:28 2010 -0400

    Add evhttp_connection_get_base() to get the event_base from an http connection

    Based on a patch by Mark Ellzey from 27 July 2010.

    Closes ticket 3052406

commit 1213d3dd8b477faa80b4828e16edc467d1007f20
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 20 13:41:02 2010 -0400

    Fix a 100%-CPU bug where an SSL connection would sometimes never stop trying to write

    If an SSL connection becamse disabled or suspended before became open,
    it could (under the right circumstances) wind up without ever getting
    its write callback disabled.

    The most correct fix is probably more subtle, and involves checking
    all caseswhen a write callback is enabled or disabled.  This fix is
    more blunt, and explicitly checks whether the callback should have
    been disabled at the end of the callback to prevent infinite looping.

    Diagnosed with help from Sebastian Hahn

commit 2075fbcff0d8a9e06e2c3287b1cf4d400394c285
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 19 13:15:48 2010 -0400

    Add evhttp_parse_query_str to be used with evhttp_uri_parse.

    The old evhttp_parse_query() doesn't work well with struct
    evhttp_uri.query, since it expects to get whole URIs, rather than
    just the query portion.

commit 3a33462827ec1c31083c297a16aa0287c92a8bfe
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 19 13:02:18 2010 -0400

    Document behavior of URI parsing more thoroughly.

    Also, move evhttp_uri struct into http.h, since it is part of the API.

commit a5a76e689c185fb9f6f430fd8e989645b627bdb3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 19 12:35:50 2010 -0400

    Add a huge pile of tests for the new URI functions, and make them pass.

commit ad923a11f1e110b3bf03b7179cdcd15ccfcfedd6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 19 12:33:50 2010 -0400

    Improvements to tinytest_macros.h

    First, handle cases where we have %s in a tt_want or tt_assert.

    Second, add tt_want_*_op that do a tt_*_op test, but do not exit the
    test on failure.

    We should push these upstream to tinytest some time.

commit eaa5f1d9edd8ae2a5f637a3a07928dfee113accc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 19 11:26:59 2010 -0400

    Revise evhttp_uri_parse implementation to handle more of RFC3986

commit fadbfd4e6e2d9badd4b61d5f847c589ed84dd2c8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 18 14:43:54 2010 -0400

    Clean up error handling in uri_parse a little

commit 7d45431e15dc0d8aa88fddc4fc406e19fe54d004
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 18 14:38:48 2010 -0400

    Do not silently truncate URIs in evhttp_uri_join. Also avoid evbuffer_pullup.

commit 86212341c5f38a973e3190a2c5c36ea947ef7253
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 18 14:34:20 2010 -0400

    Make evhttp_uri_parse and friends conform to memory management standards

commit 86dd720a666aca5b95c4f913c3f705d6b7a8f17d
Author: Pavel Plesov <pavel.plesov@gmail.com>
Date:   Sun Aug 8 16:46:39 2010 +0400

    Introduce absolute URI parsing helpers.

    See evhttp_uri_parse(), evhttp_uri_free() and evhttp_uri_join() for details.

commit f13e449b531bb14d076e28660e2d33fb6fb255ab
Merge: 9dc5f44 49f4bf7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 18 14:20:06 2010 -0400

    Merge branch 'http_parse'

commit 49f4bf7c577790fad711324250ed571a0aceac8b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 18 13:58:02 2010 -0400

    Add evhttp_request_get_command so code can tell GET from POST without peeking at the struct.

commit e5870690fcd68fbb02c1367dede73864fd6a61dc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 18 13:53:31 2010 -0400

    Modernize header usage in bench_http.c

commit 9dc5f44a19a749e3d5091a2a8003741efb91cf91
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 22:12:32 2010 -0400

    Increment version in git to 2.0.8-rc-dev

commit ef18c994c3f80c6b7e2699309227b50a9b6dc77d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 18:36:07 2010 -0400

    Increment the version to 2.0.8-rc

    NOTE: This is not the official release until I tag it.  If you see
        this commit, and you decide that Libevent 2.0.8-rc is now
        finalized, you might get something besides 2.0.8-rc.

commit 15be0493f6fc10f9484570339f50ee363fdcc42e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 18:35:11 2010 -0400

    Changelog and readme for 2.0.8-rc

commit 4ebf9509f741b4cd85ff925a4009b41d62223e7c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 14:40:40 2010 -0400

    Fixes for MSVC compilation

commit d3b096c011606836d9b550f009a827c18445844a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 13:54:15 2010 -0400

    Make the --enable-gcc-warnings option include signed comparison warnings

commit e06f514d4e7bbc5d777c40400f5aecbded667854
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 13:51:24 2010 -0400

    Fix signed/unsigned warnings on win32

commit 6be589ae687531a992e5ce4c32de78ba5197d1d3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 13:48:40 2010 -0400

    Fix signed/unsigned warnings on opensolaris, where iov_len is signed

commit e5c214a4235d77610ce19298d47b01b95c2fe4c9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 13:16:41 2010 -0400

    Fix -Wsigned-compare warnings in test/*

commit f2763fa864a0d84c5ec9433a8693b7815a89f400
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 13:16:00 2010 -0400

    add limits.h to event_tagging.c so opensolaris will build

commit 5e4bafbb89623f36666e80a5bc9c956990a9ccb1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 13:15:32 2010 -0400

    fix a signed/unsigned warning in kqueue.c

commit 02f6259fc3f0430936defb62a94a26aba7db64a8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 11:44:32 2010 -0400

    New unit test for ssl bufferevents starting with connected SSLs.

commit 93bb7d8e1965054eb46b4c84b19a580928b174ee
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 11:41:10 2010 -0400

    Fix a case where an ssl bufferevent with CLOSE_ON_FREE didn't close its fd

    This could happen when we got an SSL with a BIO already set on it.

commit 223ee40fde947db7b5abe18ac4b91da7aee46a46
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 14 10:53:26 2010 -0400

    Avoid spurious reads from just-created open openssl bufferevents

    When handshaking, we listen for reads or writes from the
    transport. But when we're connected, we start out with writes enabled
    and reads disabled, which means we should not have the transport read
    for us.

commit 34331e456d0abb2f19e2ecfa28249deeaf410de2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 8 01:09:02 2010 -0400

    The corrected bufferevent filter semantics let us fix our openssl tests

commit ac27eb827655b344a08207bf92a0c25da94ac7eb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 8 00:59:02 2010 -0400

    Correct logic on disabling underlying bufferevents when disabling a filter

    Previously, whenever writing was disabled on a bufferevent_filter (or
    a filtering SSL bufferevent), we would stop writing on the underlying
    bufferevent.  This would make for trouble, though, since if you
    implemented common patterns like "stop writing once data X has been
    flushed", your bufferevent filter would disable the underlying
    bufferevent after the data was flushed to the underlying bufferevent,
    but before actually having it written to the network.

    Now, we have filters leave their underlying bufferevents enabled for
    reading and writing for reading and writing immediately.  They are not
    disabled, unless the user wants to disable them, which is now allowed.
    To handle the case where we want to choke reading on the underlying
    bufferevent because the filter no longer wants to read, we use
    bufferevent_suspend_read().  This is analogous to the way that we use
    bufferevent_suspend_write() to suspend writing on a filtering
    bufferevent when the underlying bufferevent's output buffer has hit
    its high watermark.

commit 34d64f8a347147aa5a6ac222f302e12b142a8f2e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 12 13:46:14 2010 -0400

    Fix serious bugs in per-bufferevent rate-limiting code

    Our old code was too zealous about deleting the refill events that
    would actually make connections able to read or write again after
    they had run out of bandwidth.  Under some circumstances, this could
    cause a bufferevent to never actually refill one of its
    rate-limiting buckets.

    Also, the code treated setting a per-connection rate-limit on a
    connection that already had a group-limit as if it were changing the
    limit on a connection whose allocation had already run out.

    This patch fixes both of those problems.

commit 819b1715723f1ab8bdf6f3d21d6eac859cf8950e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 12 12:59:13 2010 -0400

    Handle rate-limiting for reading on OpenSSL bufferevents correctly.

    We were looking at the number of bytes read on the wbio, not in the
    rbio.  But these are usually different BIOs, and the reading is
    supposed to happen on the rbio.

commit 7ad90f6a25a952836892fbd12b7ad9a43feac9be
Merge: 08ebd26 90651b3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Oct 9 00:02:31 2010 -0400

    Merge branch '20_internal_prio'

commit a8148cedcd4cbff429cbe60e31ee084d236ccc43
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 8 13:05:13 2010 -0400

    New evhttp_uri(encode|decode) functions to handle + and NUL characters right

    The old evhttp_decode_uri() function would act as tough it was doing
    an (illegal, undefined) decode operation on a whole URL at once, and
    treat + characters following a ? as different from + characters
    preceding one.  But that's not useful: If you are decoding a URI
    before splitting off query parameters, you are begging to fail as soon
    as somebody gives you a value with an encoded & in it.

    The new evhttp_uridecode() function takes an argument that says
    whether to decode + signs.  Both uridecode and uriencode also now
    support encoding or decoding to strings with internal 0-valued
    characters.

commit 2e63a604da3f3c77800d2a2ff1681d8397ecdac6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 8 12:57:11 2010 -0400

    evhttp_encode_uri encodes all reserved characters, including !$'()*+,/:=@

    Perviously, some characters not listed as "unreserved" by RFC 3986
    (notably "!$'()*+,/:=@") were not encoded by evhttp_encode_uri.  This
    made trouble, especially when encoding path components (where @ and /
    are bad news) and parameters (where + should get encoded so it doesn't
    later decode into a space).

    Spotted by Bas Verhoeven.

commit 08ebd26730036feed0609b18e62ecf3f3cc783fb
Merge: 1205703 fdc640b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 7 21:06:25 2010 -0400

    Merge branch 'iovmax'

commit 120570356be98c931beb91bb345c5c7a8fa44461
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 7 18:05:01 2010 -0400

    Turn some booleans in evconnlistener_iocp into one-bit bitfields.

commit 62b429afa8a8138635a891ff668613e7be3c3aa7
Author: Christopher Davis <chrisd@torproject.org>
Date:   Thu Oct 7 13:41:39 2010 -0700

    Make iocp/listener/error work; don't accept again if lev is disabled.

commit 481ef920860cbdf8be2772ee332c03b0fb57da2d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 23 17:41:49 2010 -0400

    Fix allocation error for IOCP listeners. Probably harmless, since struct event is big

commit 127d4f2195638bbfa8b693558f3eb408abdcdf24
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 23 16:49:58 2010 -0400

    Add a LEV_OPT_THREADSAFE option for threadsafe evconnlisteners

commit 3b844893859c08a17c039dccef2e07e42e7c2f69
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 6 12:35:38 2010 -0400

    Tweak evhttp_parse_query hack to avoid breaking abi

commit b1756d019d23656170d0295ed05e13c2fc201ca7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 6 11:48:52 2010 -0400

    Let evhttp_parse_query return -1 on failure

    We already detected certain malformed queries, but we responded by
    aborting the query-parsing process half-way through without telling
    the user.  Now, if query-parsing fails, no headers are returned, and
    evhttp_parse_query returns -1.

commit fdc640b02dada6d731452c5a02475a7766d1ecfa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 5 21:34:07 2010 -0400

    Fix an EINVAL on evbuffer_write_iovec on OpenSolaris.

    The writev() call is limited to at most IOV_MAX iovecs (or UIO_MAXIOV,
    depending on whom you ask).  This isn't a problem anywhere we've
    tested except on OpenSolaris, where IOV_MAX was a mere 16.

    This patch makes us go from "use up to 128 iovecs when writing" to
    "use up to 128 iovecs when writing, or IOV_MAX/UIO_MAXIOV, whichever
    is less".  This is still wrong if you somehow find a platform that
    defines IOV_MAX < UIO_MAXIOV, but I hereby claim that such a platform
    is too stupid to worry about for now.

    Found by Michael Herf.

commit 5b7a37063647760646823215361df8605c36acd6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 5 14:29:48 2010 -0400

    Fix warnings on mingw with gcc 4.5

commit 145f221e8f1f12809a54f0ed3168a930255feee3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 5 13:06:32 2010 -0400

    Define symbolic constants to use in place of SHUT_RD etc

commit e0fd87085d5392039f7406445d1abac47fdde2f5
Author: Christopher Davis <chrisd@torproject.org>
Date:   Tue Oct 5 13:01:54 2010 -0400

    Send a shutdown(SHUT_WR) before closing an http connection

    This avoids getting an ECONNRESET from the TCP stack.

    Fixes bug 2928690

commit 0faaee016583a46006b46c5c2c82440dad1aefb8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 30 23:15:47 2010 -0400

    Fix a spurious-call bug on epoll.c

    We were trying to check whether any events had really been
    notified on an fd before calling evmap_io_active on it, but instead
    we were checking for an event pointer, which was always true.

    In practice, this patch shouldn't change much, since epoll_wait
    shouldn't return an event unless there is actually an event going
    on.

    Spotted by an anonymous bug reporter on Sourceforge.  Closes bug
    3078425.

commit a8b7674cd5e3636ce36aef9dc1a0cdb4bd3584f2
Merge: a78ac0f 9c8db0f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 28 01:09:17 2010 -0400

    Merge remote branch 'github/signed_compare'

commit a78ac0facb406a056554a3fe9247e4c7fb9209a5
Merge: b395392 d49b5e3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 27 16:05:20 2010 -0400

    Merge remote branch 'github/win_lib'

commit d49b5e33260d0c5373187e6d0ef08e489f9a0592
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 27 15:12:55 2010 -0400

    Do not search outside of the system directory for windows DLLs

    Hardens against some attacks.

commit b395392746f93516bb14cc81ca8b48409b3c359f
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Mon Sep 27 21:14:28 2010 +0200

    Fix compile in kqueue.c

    Commit 38d09606 removed the evsigbase pointer, but forgot to remove
    an assignment to it in kqueue.c.

commit 9c8db0f804360325e37f032c56c46ef627d2aaf7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 23 22:45:55 2010 -0400

    Fix all warnings in the main codebase flagged by -Wsigned-compare

    Remember, the code
       int is_less_than(int a, unsigned b) {
          return a < b;
       }
    is buggy, since the C integer promotion rules basically turn it into
       int is_less_than(int a, unsigned b) {
          return ((unsigned)a) < b;
       }
    and we really want something closer to
       int is_less_than(int a, unsigned b) {
          return a < 0 || ((unsigned)a) < b;
       }
    .

    Suggested by an example from Ralph Castain

commit 045eef4cdea75c12be49327f961d6d2002c105dd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 23 14:23:45 2010 -0400

    Unit tests for listener error callbacks

commit c4be8d82b36a17537b6cc805945e0cf21ab1724c
Author: Simon Perreault <simon.perreault@viagenie.ca>
Date:   Mon Sep 20 12:47:39 2010 -0400

    Add error callback to evconnlistener

commit e1198997bc58403376ec5909ebd8ef872ee48591
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 21 22:44:39 2010 -0400

    Make event.c debugging messages report fds

commit ec2b05edddee6144c33ceff23421598fea7c406f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 21 22:23:32 2010 -0400

    Make debugging output for epoll backend more comprehensive

commit 90651b327a9819e890e8ababe1e46f3fa989850c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 17 00:24:50 2010 -0400

    Put internal events at highest priority

    (If we allow user events to starve internal events, then internal events
    never actually happen, signals don't get acked, etc)

commit 38d09606acd9dfa9aba64390435a0901e491317f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 15 12:50:31 2010 -0400

    Remove event_base.evsigbase; nothing used it.

commit 4858b7949c665c3b6dafbf69665b9d126fc33e8f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 15 01:54:51 2010 -0400

    Remove the now-useless evsig_caught and evsig_process

commit 95a7d418ab4ff332bc299813e6fc83c9be4ed0ec
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 15 01:40:02 2010 -0400

    Make default signal backend fully threadsafe

    Jason Toffaletti discovered with helgrind that our signal handler was
    messing with evsig_base, which can be set from lots of places in the
    code.  Ordinarly, we'd just stick a lock on it, except that it is
    illegal (and genuinely error-prone) to call pthread_mutex_acquire()
    from inside a signal handler.

    The solution is to only store the fd we write to in a static variable,
    write the signal number to the fd, and put evsig_cb in charge of
    activating signal events.

    I have no idea how we'll cope if we want to enable this to handle
    siginfo (where available) in the future.

commit 720bd933c8a4e9f0b850be075e055eea98767665
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 15 01:08:39 2010 -0400

    Warn when using the error-prone EV_SIGNAL interface in an error-prone way.  Also, fix a couple of race conditions in signal.c

    When using the signal.c signal backend, Libevent currently only allows
    one event_base to actually receive signals at a time.  (This has been
    the behavior since at least 1.4 and probably much earlier.)  Now, we
    detect and warn if you're likely to be racing about which signal goes
    to which thread.

    We also add a lock to control modifications of the evsig_base field,
    to avoid race conditions like those found by Jason Toffaletti.

    Also, more comments.  Comments are good.

commit 040a019f52a7933b2478fe41c3ab0b56835012b1
Author: Simon Perreault <simon.perreault@viagenie.ca>
Date:   Thu Sep 9 17:19:20 2010 -0400

    Obey enabled status when unsuspending

commit f0bd83ea88788c595fa78ed5da4a91efd36eca48
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 9 16:13:09 2010 -0400

    Bump to the latest version of tinytest

    This lets us do without libevent-specific code in tinytest.c, and
    lets us add a feature to skip individual tests from the command
    line.

commit a5ce9ad4aff34fc10689d0c3b01ab2b7d55fabf0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 9 16:01:42 2010 -0400

    Make SSL tests cover enabling/disabling EV_READ.

    I want my 80% coverage.

commit 5811d74c6b39b5b619b19a2cebe0e709942effc3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 9 15:59:18 2010 -0400

    Bump version to 2.0.7-rc-dev

commit fe008ed656766266b93cdf2083f5b8bc50e6aad3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 9 14:59:27 2010 -0400

    Make all versioning changes for 2.0.7-rc, and add ChangeLog

commit d98511c027320d6c425ff11720e87e04e5594626
Author: Christopher Davis <chrisd@torproject.org>
Date:   Thu Sep 9 14:36:45 2010 -0400

    Make event_base_virtual_del() notify the base if needed

commit 2756a10cd94485109caae29dc0c914acd25f5137
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 9 13:43:31 2010 -0400

    Add a missing time.h include to test/regress_thread.c

commit fb36f9a7e5456db948263dfb800d2e5bddb27765
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 9 13:00:54 2010 -0400

    Fix an uninitialized-variable warning on windows

commit 71b680142120293fb730ac34576c80f63541cd63
Author: Christopher Davis <chrisd@torproject.org>
Date:   Wed Sep 8 20:33:21 2010 -0700

    Don't decrement virutal event count twice in connect_complete.

commit 3ec65d6984833310ec125a91c88ef8f7654464f4
Author: Christopher Davis <chrisd@torproject.org>
Date:   Wed Sep 8 19:55:13 2010 -0700

    Fix a few Windows compile warnings.

commit 25b6a74be68bc1e8bfcb69193505e7e6d4d39ef5
Merge: 6f82171 1115366
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 14:53:57 2010 -0400

    Merge branch 'tests'

commit 6f8217101366642d54d89694c9ff31a9b9a85789
Merge: de41294 e7dc501
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 14:52:37 2010 -0400

    Merge remote branch 'github/win_notify'

commit de412948a1f2cf0dce9e0f4c5095e2a5ce5c076e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 14:52:24 2010 -0400

    Add a missing header for regress_thread.c

commit e7dc501ee5254083feaee97a93d4a47b04b93553
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 14:40:51 2010 -0400

    Implement EVBASE_NEED_NOTIFY on win32

commit 911e0db8f095e9fd386fd90087603327a5339c7c
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Wed Sep 8 20:29:39 2010 +0200

    Fix a compile warning in regress_thread.c

commit 3658b1696df8784b156cc6643a36f7cfa69e0213
Merge: 9580e28 17a14f1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 14:12:12 2010 -0400

    Merge remote branch 'chrisd/iocp-fixes4'

    Conflicts:
    	test/regress_thread.c

commit 9580e282d7e5801802e935956902a1948525d474
Merge: 57d3413 ce85280
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 14:00:45 2010 -0400

    Merge branch 'th_notify_fd_reinit'

commit ce85280beb56c4b1c7e69c542878a8f1fe647f28
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 13:29:06 2010 -0400

    Improve testing of when thread-notification occurs

commit 4632b78e01a312ae716bc17322c462be53182eca
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 13:22:55 2010 -0400

    Minimize calls to base_notify implementation functions, thereby avoiding needless syscalls

    The trick here is that if we already told the base to wake up, and it
    hasn't woken up yet, we don't need to tell it to wake up again.  This
    should help lots with inherently multithreaded code like IOCP.

commit c7a06bfaee7f96327779972214e8b744170531ff
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 13:02:58 2010 -0400

    Avoid needlessly calling evthread_notify_base() when the loop is not running

    Also make sure that we always hold the base lock when calling evthread_notify_base.

commit 57d3413c55689d623dad4eb2765d8a3bed9b586b
Merge: 4209007 5de2bcb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 8 11:39:24 2010 -0400

    Merge remote branch 'github/globals'

commit 17a14f1af2ace0201baa1b5bbba031296e62d879
Author: Christopher Davis <chrisd@torproject.org>
Date:   Wed Sep 1 11:04:57 2010 -0700

    Only process up to MAX_DEFERRED deferred_cbs at a time.

    If threads queue callbacks while event_process_deferred_callbacks is
    running, the loop may spin long enough to significantly skew timers.
    A unit test stressing this behavior is also in this commit.

commit 2447fe88860c40e968261ad8ea059166cb84a280
Author: Christopher Davis <chrisd@torproject.org>
Date:   Sat Aug 28 04:07:48 2010 -0700

    Add event_config_set_num_cpus_hint for tuning thread pools, etc.

commit 499452f4c24f172bf6846599e3886838a4207aca
Author: Christopher Davis <chrisd@torproject.org>
Date:   Sat Aug 28 02:44:11 2010 -0700

    IOCP-related unit test tweaks

commit 76f7e7ae745ad730795f0a4a3bc1299a00137cc2
Author: Christopher Davis <chrisd@torproject.org>
Date:   Tue Aug 17 05:02:00 2010 -0700

    Some IOCP bufferevent tweaks.

    - Increment reference count of bufferevents before initiating overlapped
      operations to prevent the destructor from being called while operations
      are pending. The only portable way of canceling overlapped ops is to
      close the socket.

    - Translate error codes to WSA* codes.

    - Better handling of errors.

    - Add an interface to add and del "virtual" events. Because IOCP
      bufferevents don't register any events with the base, the event loop
      has no way of knowing they exist. This causes the loop to terminate
      prematurely. event_base_{add,del}_virtual increment/decrement base's
      event count so the loop runs while there are any enabled IOCP
      bufferevents.

commit d844242f9b138be4896942ded25d74a91bf29901
Author: Christopher Davis <chrisd@torproject.org>
Date:   Sat Aug 28 02:08:27 2010 -0700

    Stop IOCP when freeing the event_base.

commit 03afa209de96d67f1a4b935460aeabe63f5ef24f
Author: Christopher Davis <chrisd@torproject.org>
Date:   Mon Aug 16 01:23:57 2010 -0700

    IOCP-related evbuffer fixes.

    - Prevent evbuffer_{add,prepend}_buffer from moving read-pinned chains.
    - Fix evbuffer_drain to handle read-pinned chains better.
    - Raise the limit on WSABUFs from two to MAX_WSABUFS for overlapped reads.

commit 1115366e95388de70996b5aafda17363db2a44fd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 7 10:28:15 2010 -0400

    Fix a few memory leaks in the tests

commit 42090072c15fedc50231bfbce347d4ffb5432e31
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 6 15:47:07 2010 -0400

    Move the "function to getsockname() on a listener" to regress_testutils

    This reverts commit fab50488fcb741884ccdfa7b83643eac3e5c9cbf.

    The function was, on reflection, not important enough to break the feature
    freeze, since it's trivial to build on your own.

commit c51826ff50fe030f734a1b1687949e1fb621ea67
Merge: b0f284c ca9048f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 6 15:40:13 2010 -0400

    Merge remote branch 'github/sysqueue_include_order'

commit b0f284cb18a6aecb8a5c2a398b0738ba3662c4bc
Author: Shuo Chen <giantchen@gmail.com>
Date:   Mon Sep 6 10:10:17 2010 -0400

    Fix event_del(0) instance in bench.c

commit 749128b2cfe400755b08981f217064e2a5a64641
Merge: 150599e e50c0fc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Sep 4 22:02:32 2010 -0400

    Merge remote branch 'github/win32_posix_underscore'

commit 150599e6e2a6b8a6d8a5b55cee59406c13a73e2f
Merge: b5dd806 4788277
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Sep 4 22:00:38 2010 -0400

    Merge remote branch 'github/cdecl'

commit b5dd8064fc42bd788c0ee46b483741419c152e39
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 3 22:00:25 2010 -0400

    Fix uninitialized port var in http_delete_test.  Last one, I hope.

commit 3b3fb7438dd7e7108d77c8d61290cbd68f7633b4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 3 21:03:25 2010 -0400

    Fix uninitialized variables in http_bad_request_test. (oops)

commit a97320ac579e58e685c19393e2599accfb5edbe5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 3 18:48:31 2010 -0400

    Allow more than one copy of regression tests to run at once

    Mostly this was a matter of just removing all the hardwired ports in
    the test code.  The http/connection_retry test is still a little
    screwy, though.

commit 195214360c7cb107e86bfaa389812c879873f19c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 3 16:42:16 2010 -0400

    Expose a function to add a nameserver by sockaddr

commit fab50488fcb741884ccdfa7b83643eac3e5c9cbf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 3 16:41:16 2010 -0400

    Expose a function to getsockname() on a listener's fd.

commit 7ea8e89d5cce36c7f27ea62c9a68a9208266d569
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 3 15:12:35 2010 -0400

    Prefer autoreconf -ivf to manual autogen.sh

    Suggested by Ralph Castain

commit 478827739c0365f398a63f86c08f588ae9a12401
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 2 13:21:17 2010 -0400

    Fix pointer-to-__cdecl-function syntax

commit e50c0fcc85245881eb67dacb5f5e54e0b2482655
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 2 11:10:50 2010 -0400

    Use the _func() replacements for open, fstat, etc in evutil.c on win32

    Remember that in a fit of ANSI C compliance, Microsoft decided to
    screw portability by renaming basically all the functions in unistd.h to
    get prefixed with an understore.

    For some reason, mingw didn't seem to mind, but at least some people's
    compilers did: see bug 3044490.

commit f0056d041bd890dff8757a3472dd5fa9a1066405
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 2 12:06:58 2010 -0400

    Declare signal handler function as "__cdecl" on Windows.

    I swear, they must have half a dozen different calling conventions.

    (goes to check)

    Holy crud.  They actually do.  There's __cdecl, __stdcall, __fastcall,
    "thiscall", "naked" and the obsolete "__pascal", "__fortran", and
    "__syscall".  And don't forget WINAPI and __far.

    Anyways, this should fix 3044488 if I got it right.

commit ca9048f12cf441625ac3e90edb219d7f4c60b430
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 2 11:36:44 2010 -0400

    Move evkeyvalq into a separate header for evhttp_parse_query users

    The evhttp_parse_query API is a bit misdesigned; all the other
    evkeyvalq stuff is abstract and lets you get away with having a header
    stub, but evhttp_parse_query seems to require that you instantiate an
    empty evkeyvalq of your own.

commit d3ceca800eb6478b9e0b74680e2bd247d8213187
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 2 11:27:57 2010 -0400

    Declare evkeyvalq and event_list even if event_struct.h comes before sys/queue.h

    Fixes bug 3036645 reported by Mihai Draghicioiu

commit 495ed66705d5790de031f9591b47afcbe4fc1156
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 1 16:36:30 2010 -0400

    Close th_notify_fds and open a new pair on reinit

    After a fork, you want subthreads to wake up the event_base in the
    child process, not to have the child process and the main process
    fight over who wakes up whom.

    Related to a problem found by Nicholas Marriott while debugging
    3048812.

commit 5de2bcb70fa7905d26e608728db24ece01f0c675
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 1 16:03:39 2010 -0400

    On windows, make lock/thread function tables static

    This requires us to have a separate implementation of the lock macros
    that indirects to a set of functions.  Fortunately, this isn't too
    hard to do.

    This may be a fix for bug 3042969, where our openssl dll and our
    libevent dll each got their own version of the thread stuff.

commit 5218d2a8b186bcf28ffe0a61e321a29585683b45
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 1 15:56:22 2010 -0400

    Make defer-internal.h use lock macros, not direct cess to lock fns

commit 1fdec20f8fb1a4e1bc2eeb66831f9ad5c3455888
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 1 15:01:39 2010 -0400

    Stop using global arrays to implement the EVUTIL_ctype functions

    These apparently made libtool sad on win32, and the function call
    overhead here should be negligable anyway.

commit acc4aca49e246a46e03f8978517c9b3d23b1baea
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 30 11:35:06 2010 -0400

    Fix a bug in our win32 condition implementation

    The do ... while loop in our wait code could spin while waiting
    because the event object wasn't reset until there were no longer any
    events waiting to be woken up.  We also want to reset the event object
    if the count of events to wake up reaches zero.

    Found by Chris Davis.  Fixes bug 3053358.

commit d61b2f33861eacdc0f9d343d38522fd91c1b7e72
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 26 15:09:58 2010 -0400

    Fix an issue with forking and signal socketpairs in select/poll backends

    Nicholas Marriott identifies an issue where a signal socketpair
    doesn't get recreated if the event backend doesn't set event_reinit.

    See bug 3048812

    There may be a similar issue with respect to th_notify_fd

commit 041989fb6600e9eb4abe3075da721199e771e920
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 17 14:44:12 2010 -0400

    Rename regress_pthread.c to regress_thread.c

commit f1074b776a08aa1735752484e25377889140a622
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 23 12:01:45 2010 -0400

    Detect events with no ev_base; warn instead of crashing

commit 743f8665395e7e06800e1a09a0ae701b72290d02
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 23 11:48:46 2010 -0400

    Honor NDEBUG; build without warnings with NDEBUG; make NDEBUG always-off in unit test code

commit 970e6ad2ba4e42963d51c032ae8f9d2bdf2cefda
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 19 14:00:06 2010 -0400

    Avoid deadlock when activating signals.

    Fixes bug 3048812.

    Based on patch by Nicholas Marriott.

commit 6123d1298fb3433986f35b2eef90d28282e53132
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 19 09:38:44 2010 -0400

    Fix kquue correctness test on x84_64

    Apparently, in our configure.in check for a working kqueue, we were
    leaving some fields unset that seemed to irritate 64-bit kqueue a lot.

    Found by Christopher Layne

commit 4c32b9de2c707beaf09178e0b7793efa3f585669
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 18 12:02:25 2010 -0400

    Fix logic error in win32 TRY_LOCK that caused problems with rate-limiting

commit d0b884338f62fba233e3f0d00193e6908c84ee2f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 18 10:49:12 2010 -0400

    Set close-on-exec bit for filedescriptors created by dns subsystem.

    Based on patch for 1.4 by Ralf Schmitt.

commit da6e7cd49588f6149166e05e7b7b725b360ab72c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 17 13:26:03 2010 -0400

    Correctly detect failure to delete bufferevent read-timeout event

    Gilad Benjamini noted that we check the error code for deleting a
    write-timeout event twice, and the read timeout not at all.  This
    shouldn't be a bit problem, since it's really hard for a delete to
    fail on a timeout-only event, but it's worth fixing.

    Fixes bug 3046787

commit 5fb10958249a89b2e7f3711fe0eed624086c5336
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 16 22:55:45 2010 -0400

    Add a unit test for conditions

commit d74ae381e00cec22e562c72583739d70bc9aa1bd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 16 12:38:22 2010 -0400

    Make the regress_pthread.c tests work on windows with current test APIs

commit e0972c21389a45c60606ce2b842311c27fea2147
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 17 13:18:18 2010 -0400

    Use conditions instead of current_event_lock to fix a deadlock.

    Avi Bab correctly noted as bug 3044479 the fact that any thread
    blocking on current_event_lock will do so while holding
    th_base_lock, making it impossible for the currently running event's
    callback to call any other functions that require th_base_lock.

    This patch switches the current_event_lock code to instead use a
    condition variable that we wait on if we're trying to mess with
    a currently-executing event, and that we signal when we're done
    executing a callback if anybody is waiting on it.

commit d4977b52f07d61e215e5d5e98af2216719c06d16
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 17 13:15:34 2010 -0400

    Add a condition variable backend, with implementations for pthreads and win32

    The interface from the user's POV is similar to the locking
    implementation: either provide a structure full of function
    pointers, or just call evthread_use_*_threads() and everything will
    be okay.

    The internal interface is meant to vaguely resemble pthread_cond_*,
    which Windows people will better recognize as *ConditionVariable*.

commit 3920172821c2ad7862c2e4dab4d45adb1356a724
Author: Gilad Benjamini <gilad@altornetworks.com>
Date:   Fri Aug 13 17:19:18 2010 -0400

    Make definition of WIN32_LEAN_AND_MEAN in event.h conditional.

    (Inclusion order might trigger a warning for redefinition on Windows.)

commit 60433a0a1a4f9efb5c2eb130f0dcd721cab67ec7
Author: Gilad Benjamini <gilad@altornetworks.com>
Date:   Fri Aug 13 17:08:59 2010 -0400

    Clean up syntax on TAILQ_ENTRY() usage

    Though the C standards allow it, it's apparently possible to get MSVC
    upset by saying "struct { int field; } (declarator);" instead of
    "struct {int field; } declarator;", so let's just not do that.

    Bugfix for 3044492

    (commit msg by nickm)

commit a4af9be10a7b725d77a2ddbfa5d6ef8712521500
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 13 11:41:37 2010 -0400

    Make include/event2/event-config.h not included in source dist

    As a generated file, it shouldn't get included in our source
    distribution.  Apparently there is an automake incant for this:
    nobase_ even stacks with nodist_ .

commit 4022b287f8b096edeea9b461b4a0e5eb3e7ebebf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 13 11:34:39 2010 -0400

    Change include order in Makefile.nmake

    If there is an event-config.h in include/event2 (either because we
    screwed up packaging like in 2.0.6-rc or because we previously tried
    building with mingw and we didn't make distclean in the middle), we
    want MSVC to find the one one in WIN32-Code/include/event2 first.

    Found by Gilad Benjamini.

commit 4991669b7c7a781ec11740dd7b41683c0175ab4b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 10 21:05:52 2010 -0400

    Update the whatsnew-2.0.txt document

commit 33200e72de88d505c036c2ae1fec28f519ac72af
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 10 15:03:14 2010 -0400

    Document that DNS_NO_SEARCH is an obsolete alias for DNS_QUERY_NO_SEARCH

commit 3808168d21afac0846758dbd2d913f49da8a4155
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 10 15:02:50 2010 -0400

    Completely remove the (mostly-removed) obsolete thread functions.

commit 9b5c19ac870eae15039146c55f574eea744d31b3
Merge: 0bffe43 ebcb1f0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 10 11:46:00 2010 -0400

    Merge branch 'more_pkgconfig'

commit ebcb1f0387efa1805a01a4a325da67ad786ca201
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 10 11:11:25 2010 -0400

    Add pkgconfig files for libevent_{openssl,pthreads}

commit 90b3ed5bc840480f1c1d40f93bc2d850e3830d64
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 9 13:25:50 2010 -0400

    Add some comments to http.c and make a few functions static.

commit 0bffe43a15fbd43bc7826acb88a3bada528c8adf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 9 12:08:40 2010 -0400

    Fix a nasty dangling-event bug when using rate-limiting groups

    When we freed a bufferevent that was in a rate-limiting group and
    blocked on IO, the process of freeing it caused it to get removed
    from the group.  But removing the bufferevent from the group made
    its limits get removed, which could make it get un-suspended and in
    turn cause its events to get re-added.  Since we would then
    immediately _free_ the events, this would result in dangling
    pointers.

    Fixes bug 3041007.

commit ff481a8e43999c4ba1556bc472b5e69fce7ea353
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 6 23:22:01 2010 -0400

    Increment vesion to 2.0.6-rc-dev

commit 556d0f4001ae5dae2e98584a7b23e3def6339681
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 6 21:19:44 2010 -0400

    Increment versions to 2.0.6-rc

commit f65826404179bdc059eefb4fe4f156170569e034
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 6 21:11:01 2010 -0400

    Changlog and new acknowledgements for 2.0.6-rc

commit ec347b92251e188a13cbbfe0fe2e00aa14aeeca5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jul 7 16:45:03 2010 -0400

    Move event-config.h to include/event2

    This change means that all required include files are in event2, and
    all files not in event2/* are optional.

commit 5fa30d2bf443e9fc4c6ab9bf01f761006b97132d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 6 17:13:27 2010 -0400

    Fix evdns build with -DUNICODE

    It turns out that GetProcAddress always takes its second argument as
    a C string, regardless of whether unicode is on or not.

commit 28f31a4f8da9367a950e89f28a4ec2314d0e48e0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 6 16:36:23 2010 -0400

    Fix unit tests with -DUSE_DEBUG enabled

    If you were to enable USE_DEBUG and slog through all 700+ MB of
    debugging output, you'd find that one of the unit tests failed,
    since it tested the debug logging code, but the string it expected
    and the string it logged differed by a tab vs 2 spaces.

commit ea1ea3d6eedcaa95ab10eb29401aaa600356e028
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 6 13:34:51 2010 -0400

    Make test-changelist count cpu usage right on win32

commit 9b602096758de9361fdb61b658260da58b03333f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 6 13:03:17 2010 -0400

    Use AF_INET socketpair to test sendfile on Solaris

commit 57b30cd7ccf7aca1d89812389a1e320d012f7a9e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 6 13:01:32 2010 -0400

    Turn our socketpair() replacement into its own function

    This patch splits the formerly windows-only case of evutil_socketpair()
    into an (internal-use-only) function named evutil_ersatz_socketpair(), and
    makes it build and work right on non-Windows hosts.

    We need this for convenience to test sendfile on solaris, where socketpair
    can't give you an AF_INET pair, and sendfile() won't work on AF_UNIX.

commit de1f5d6d87c8122ede59124ea5d9255cb609af78
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Fri Aug 6 09:33:55 2010 -0400

    Remember to initialize timeout events for bufferevent_async

    Fixes segfaults in unit tests.

commit 170ffd2b1d3d8458d39d9f74099c0b381557544b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 5 15:57:30 2010 -0400

    Increase the tolerance in our unit tests for sloppy clocks.

    (Apparently openbsd in virtualbox just doesn't keep very accurate time.)

commit e996b3d411dcdf58f0d8b4e527402db089cc878d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 5 15:51:16 2010 -0400

    Make tests quieter on local dns resolver failure

commit 4558ce23220e28e22140afd61a60399f0a8fbb76
Merge: b2c6202 009f300
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 4 17:31:28 2010 -0400

    Merge branch 'openssl_ratelim'

commit b2c6202d65f3a057ed76f0296b52156980f2482a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 4 15:52:32 2010 -0400

    Fix an assertion bug in test-ratelim

    If the rate limit was low enough, then the echo_conns wouldn't finish
    inside the 300 msec we allowed for them to close.  Instead, count the
    number of connections we have, and keep waiting until they are all
    closed.

commit 42f6b6241444ff66b08956a7c7f4e13f2f5f49f3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 4 15:51:14 2010 -0400

    Add option to test-ratelim to test min_share

commit 6ae53d676242227bc199c69de9244d6c3599ab44
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 4 15:44:08 2010 -0400

    Add an interface to expose min_share in ratelimiting groups

commit 009f300532481d4f3b7237f9a59fd306b371b8c0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 4 14:54:38 2010 -0400

    Fix rate-limit calculation on openssl bufferevents.

    When you're doing rate limiting on an openssl connection, you nearly
    always want to limit the number of bytes sent and received over the
    wire, not the number of bytes read or written over the secure
    transport.

commit 13b912e4acb6fea5802ae3005898535af2ae5263
Author: Trond Norbye <trond.norbye@gmail.com>
Date:   Sun Aug 1 21:39:48 2010 +0200

    Fixed compilation of sample/le-proxy.c on win32

commit 42a8c7111264ff1469083e50bd5b0c0ee494725b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jul 31 17:10:04 2010 -0400

    Build more cleanly with NetBSDs that dislike toupper(char)

    To be fair, when char can be signed, if toupper doesn't take negative
    characters, toupper(char) is a very bad idea.  So let's just use the
    nice safe EVUTIL_TOUPPER instead.  (It explicitly only upcases ASCII,
    but we only use it for identifiers that we know to be ASCII anyway).

commit 840a72fbd52197e443efe413650ef3556cfcee60
Author: Joachim Bauch <mail@joachim-bauch.de>
Date:   Thu Jul 29 20:32:40 2010 -0400

    Fix badly-behaved subtest of dns/bufferevent_connect_hostname

    The bufferevent_connect_hostname test was specifying AF_INET, but the
    gethostbyname test we were using to see what error to expect was using
    PF_UNSPEC, leading to possible divergence of results.

commit 9e725f72e72cb9b37b39915a260f9aee265f2c59
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 29 18:12:05 2010 -0400

    Improve error message for failed epoll to make debugging easier.

commit cc2379d2642d2b9d0cbb1098ce1b3095e14551b3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 26 14:48:32 2010 -0400

    Constify a couple of arguments to evdns_server_request_add_*_reply

commit e1c1167cbe7c3c7e60267abe242a2fa91f4c2dfe
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 22 14:38:08 2010 +0200

    Replace (unused,always 0) is_tcp argument to evdns_add_server_port*() with flags

    Since we weren't using it for anything, and we always failed if it was
    set, we're allowed to change the future semantics of setting it.

commit 7e87a599bb004574de8e6a9cdd13a27f561df7e9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jul 21 14:33:42 2010 +0200

    Stop asserting when asked for a (unsupported) TCP dns port. Just return NULL.

commit c991317409f7787223fc11541100d0b0f60afa20
Author: Mike Smellie <mike.j.smellie@gmail.com>
Date:   Mon Jul 19 15:31:19 2010 +1200

    Change bufferevent_openssl::do_write so it doesn't call SSL_write with a 0 length buffer

    I was running into a problem when using bufferevent_openssl with a
    very simple echo server.  My server simply bufferevent_read_buffer 'd
    data into an evbuffer and then passed that evbuffer straight to
    bufferevent_write_buffer.

    The problem was every now and again the write would fail for no
    apparent reason. I tracked it down to SSL_write being called with the
    amount of data to send being 0.

    This patch alters do_write in bufferevent_openssl so that it skips
    io_vecs with 0 length.

commit 7c926916b21b88d6c3d6f6aff36406023c4aa89c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 19 15:14:10 2010 +0200

    Make test/test.sh call test-changelist

    Eventually test-changelist should expand to try more cases, maybe
    query the status of the actual changelist somehow, and integrate it
    with the rest of the unit tests.

    Also, add test-changelist to gitignore.

commit cb927a51731188a4135906b6d7518c04ce12b05e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 19 15:03:43 2010 +0200

    Fix whitespace.

commit b00d4c0452e59b9ca8c8d4454078e1538a3bac8b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 19 14:58:08 2010 +0200

    Remove unused variables in test/test-changelist.c

commit cf249e7d997743523ef5bf8b5328697751d303bc
Author: Mike Smellie <mike.j.smellie@gmail.com>
Date:   Mon Jul 19 13:44:56 2010 +1200

    Possible fix to 100% cpu usage with epoll and openssl

    I'm running a fairly simple bit of test code using libevent2 with epoll and
    openssl bufferevents and I've run into a 100% cpu usage problem.

    Looking into it 100% usage was caused by epoll_wait constantly
    returning write events on the openssl socket when it shouldn't really have
    been looking for write events at all (N_ACTIVE_CALLBACKS() was returning 0
    also).

    Looking a bit deeper eventbuffer_openssl socket seems to be requesting
    that the EV_WRITE event be removed when it should, but the event isn't
    actually being removed from epoll.

    Continuing to follow this I think I've found a bug in
    event_changelist_del.

    For evpoll event_del calls event_changelist_del which caches the change
    which is then actioned later when evpoll_dispatch is called.

    In event_changlist_del there is a check so that if the currently changed
    action is an add then the cached action is changed to a no-op rather than a
    delete (which makes sense). The problem arises if there are more than
    two add or delete operations between calls to dispatch, in this case it's
    possible that the delete is turned into a no-op when it shouldn't have
    been.

    For example starting with the event on, a delete followed by an add and
    then another delete results in a no-op when it should have been a delete (I
    added a fair bit of debug output that seems to confirm this behaviour).

    I've applied a small change that checks the original old_event stored with
    the change and only converts the delete to a no-op if the event isn't on in
    old_event. This seems to have fixed my problem.

commit 928b7d4960e609e312180b93952c09449bf2d8e3
Merge: 65abdc2 fc5e0a2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 16 12:38:23 2010 -0400

    Merge branch 'pncalls_fix'

commit 65abdc2011fe1019471cddff78d3cf596b2bccbe
Author: niks <niksniksniks@sourceforge.net>
Date:   Fri Jul 16 09:11:09 2010 -0400

    Fix wrong sie calculation of iovec buffers when exact=1

    The old code had a bug where the 'exact' flag to 1 in
    _evbuffer_read_setup_vecs would never actually make the iov_len field
    of the last iovec get truncated.  This patch fixes that.

commit 7c2dea1615fa1488c9cadc9f5aeb885c1ba26a60
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 13 11:06:08 2010 -0400

    Pass flags to fcntl(F_SETFL) and fcntl(F_SETFD) as int, not long

    Everybody but Linux documents this as taking an int, and Linux is
    very tolerant of getting an int instead.  If it weren't, everybody
    doing fcntl(fd,F_SETFL,O_NONBLOCK) would break, since the glibc
    headers define O_NONBLOCK as an int literal.

commit e73cbde15f7fe71649c2d9783a03a805edc10027
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 8 14:41:02 2010 -0400

    Suppress a spurious EPERM warning in epoll.c

    It's okay for us to get an EPERM when doing an EPOLL_DEL on an fd; it
    just means that before we got a chance to the EPOLL_DEL, we closed the
    fd and reopened a new non-socket that wound up having the same fd.

    Partial fix for Bug 3019973.

commit fc5e0a23442f04ccb3b10355a8c5d05419bf0f6c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 5 14:39:39 2010 -0400

    Don't race when calling event_active/event_add on a running signal event

    There was previously no lock protecting the signal event's
    ev_ncalls/ev_pncalls fields, which were accessed by all of
    event_signal_closure, event_add_internal, event_del_internal, and
    event_active_nolock.  This patch fixes this race by using the
    current_event_lock in the same way it's used to prevent
    event_del_internal from touching an event that's currently running.

commit 61e1eeec6f914a0c00955e7f376f17010446c78e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 5 13:24:45 2010 -0400

    Tidy up the code in evthread_make_base_notifiable a little

    Previously, we had a few conditional statements with the "if (...)"
    inside an #ifdef and the body outside.  That kind of thing is hard to
    read.

commit a5bc15b2e114a39d7b4f14bd1ba17182d6f07ed2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 5 13:24:12 2010 -0400

    Drain th_notify_fd[0] more bytes at a time.

commit 17522d2af846bdeb18bd7e39527caea03a021afa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 5 13:17:47 2010 -0400

    Fix a deadlock related to event-base notification.  Diagnosed by Zhou Li, Avi Bab, and Scott Lamb.

    The problem was that the thread doing the notification could block on
    write in evthread_notify_base_default while holding the th_base_lock.
    The main thread would never drain th_notify_fd[0], since it would need
    th_base_lock to actually trigger events.

commit d89fdba424c654445d0f927670691d9b55f20846
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 5 12:28:22 2010 -0400

    Make sample/hello_world	work on	windows

    We forgot to include the WSAStartup call in main().

    Patch from an anonymous user on Sourceforge.

    Fixes bug 3025354.

commit 085987093f186dc6eb1145ae861af0d34fc0d9fd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 5 12:26:21 2010 -0400

    never let bufferevent_rlim functions return negative

commit 142500317e84517472a548637efb2844d63cbd47
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Wed Jun 23 01:15:15 2010 +0200

    Really only add libevent_core.la to LIBADD on mingw

    Commit fdc629736e1 tried to do this, but added it for mingw and
    for everything else. Fixes a segfault in bufferevent unittests.

commit 215e629cd4244f40769e09df5951c6cbe66ed246
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jun 21 12:26:21 2010 -0400

    Add bufferevent_lock()/bufferevent_unlock()

    Although bufferevent operations are threadsafe, sometimes you need
    to make sure that a few operations on a single bufferevent will all
    be executed with nothing intervening.  That's what these functions
    are for.

commit 7b259b6796fc34948402805e88184c29400db159
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jun 21 12:24:49 2010 -0400

    Fix sentence fragment in docs for event_get_struct_event_size()

commit 7510aac3b900d876024f968d8fbbb72f6f49671b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jun 21 12:23:32 2010 -0400

    Unit test for event_get_struct_event_size()

commit 9659eced03c101bf83205c56383f7f52f7f9ee09
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 19 18:23:16 2010 -0400

    Add a comment to describe our plan for library versioning

commit b2d7440a9121ab372e8b2b6bf2cec8185bb6b10e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 19 18:22:48 2010 -0400

    Set library version for libevent_pthreads correctly

commit e21f5d15ebcc42a2f3300f59afad0c599a0f41a2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 19 18:21:40 2010 -0400

    Document a change in the semantics of event_get_struct_event_size()

commit 8a4406230824ed7d6bc5b9c12b2d8a9293f71c94
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jun 17 10:33:06 2010 -0400

    Have autogen.sh pass --force-missing to automake

    Previously, our autogen.sh script wouldn't tell automake to update
    older versions of its copied-in scripts, which would cause problems if
    they got sufficiently out-of-date.

commit 9b14911654dec0ab521f29c3868774fea5a492b3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jun 17 10:31:35 2010 -0400

    Remove some automake-generated files from version control.

commit 276e7ee97eedd3f3745bff2eecccb4f29fcbfdac
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jun 11 11:57:13 2010 -0400

    Fix a pedantic gcc 4.4 warning in event2/event.h

commit 29b2e233a7a4eb0f1842368770d545a685743d80
Author: Felix Nawothnig <felix.nawothnig@gmail.com>
Date:   Sun May 30 03:17:48 2010 +0200

    Fix possible nullptr dereference in evhttp_send_reply_end()

    (The existing implementation had sanity-checking code for the case where
     its argument was NULL, but it erroneously dereferenced it before actually
     doing the sanity-check. --nickm)

commit 17a8e2d72b156f82c7ecaba989a996c943f03042
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jun 7 12:06:43 2010 -0400

    Add a function to retrieve the other side of a bufferevent pair

commit 44d57eee93724a8f6db24c466de34a410ab22d79
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jun 3 11:25:54 2010 -0400

    Add test for behavior on remote socket close

    On all the backends on this little mac laptop, that behavior is to
    report a remote socket close as both EV_READ and EV_WRITE.
    Historically, we had problem for some of these behaviors on some
    backends, so let's make sure that such behaviors don't come back.

commit 3467f2fa3bbff0dab6865a0ed08475ed3573c230
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 28 15:05:32 2010 -0400

    Fix logic in correcting high values from FIONREAD

    The old logic made sense back when buffer.c was an enormous linear
    buffer, but it doesn't make any sense for the chain-based
    implementation.

    This patch also refactors the ioctl{socket}? call into its own function.

commit 0798dd1247407fcbae7c8401a41a082b64060e1d
Author: Pierre Phaneuf <pphaneuf@gmail.com>
Date:   Thu May 27 22:37:09 2010 -0400

    Close the file in evutil_read_file whether there's an error or not.

    evutil_read_file would close the file if there was an error, but not if things went normally.

commit c21c6631618c71575dd8f372c534af8eedf2f871
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 27 01:32:11 2010 -0400

    Add the libtool-generated /m4/* stuff to .gitignore

commit 39906698ca5db840495af1b68923ae6bd12ae1dd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 26 12:58:02 2010 -0400

    Let evhttp_send_error infer the right error reasons

commit 06bd05634d2f1d098b81859c7b7309a5a4b4a746
Author: Felix Nawothnig <felix.nawothnig@googlemail.com>
Date:   Wed May 26 12:50:59 2010 -0400

    Fix the default HTTP error template

    The current template...

    <HTML><HEAD><TITLE>%s</TITLE>
    </HEAD><BODY>
    <H1>Method Not Implemented</H1>
    Invalid method in request<P>
    </BODY></HTML>

    is highly confusing. The given title is easily overlooked and the
    hard-coded content is just plain wrong in most cases (I really read
    this as "the server did not understand the requested HTTP method)

    This patch changes the template to include the error reason in the
    body as well as in the header, and to infer the proper reason from
    the status code whenever the reason argument is NULL.

    This patch also removes a redundant evhttp_add_header from
    evhttp_send_error; evhttp_send_page already adds a "Connection:
    close" header.

commit 3689bd2d497d8af224532282c263581ea47b6db5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 26 13:32:32 2010 -0400

    Have the unit tests report errors from test.sh

    The default behavior of test.sh was to suppress all output from
    test/regress, and say nothing but OKAY or FAILED.  This wasn't so good
    for getting bugs reported, since lots of people didn't know to set
    TEST_OUTPUT_FILE, or re-run ./test/regress on its own.

    Now, when you don't specify an output file for test.sh, it runs
    regress with the --quiet option.  This option makes the unit tests
    only print output on failure, which is what we probably wanted.

commit faf2a04fa5e4c44a356d635502cc7e2dbead34d3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 26 13:31:41 2010 -0400

    Make test.sh exit with nonzero status if tests fail

    This behavior makes "make verify" actually fail when the tests fail,
    which is what it's supposed to do.

commit 8bc1e3d6d109c4f72b2c3962e721c0b9399fb855
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 26 13:19:08 2010 -0400

    Remove all non-error prints from test/regress.c

    Now, running ./test/regress --quiet will indeed only inform you
    about errors.  Previously, it would also spew extra output.

commit e73f1d792a1c3e8e97a0339fbc20c062c880669a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 26 13:18:30 2010 -0400

    Remove the now-obsolete setup_test() and cleanup_test() functions

commit 899b0a39abdac0af5be956c160b176392c5e6233
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 24 15:24:03 2010 -0400

    Use generic win32 interfaces, not ASCII-only ones, where possible.

commit 4ff247b293c98bae4dc1576f3e9631554cfeb00a
Merge: 47c5dfb b14f151
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 19 10:49:49 2010 -0400

    Merge branch 'evdns_no_empty_handles'

commit 47c5dfbea9b84e41f4b1579fe245307d3a7fc5a4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 18 17:28:51 2010 -0400

    Remove some dead assignments

commit b14f151b42ca9fddd52bee7c323e1217b28ae8af
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 18 17:27:06 2010 -0400

    If no evdns request can be launched, return NULL, not a handle

    Some of our evdns code was willing to return an evdns_request with
    handle->current_req set to NULL.  Really, those cases should just
    return NULL.

commit d14bb926b42a91a1ac48c10b41cfe3a96e8408b9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 18 14:05:01 2010 -0400

    Use -Wlogical-op on gcc 4.5 or higher

    It exposed one bug for us (see 8c3452bcb294e07888), and might
    prevent more.

commit 8c3452bcb294e07888f9044030d5e93825537c08
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 18 13:55:32 2010 -0400

    Correctly recognize .255 addresses as link-local when looking for interfaces

commit bda21e7ff96dafd679f8308eed5fa9c7e83a2d93
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 17 11:58:07 2010 -0400

    Avoid close of uninitialized socket in evbuffer unit test

    Attempts to fix a crash bug found by Brodie Thiesfield.

commit caca2f451c3ecc97745f578bae9b4ad40145d84d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 14 14:36:49 2010 -0400

    Replace (safe) use of strcpy with memcpy to appease OpenBSD

    If Libevent uses strcpy, even safely, it seems OpenBSD's linker will
    complain every time a library links Libevent.  It's easier just not to
    use the old thing, even when it's safe to do so.

commit 75701e897b7a077beb57d49cc1b13df84ec23fb9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 14 14:30:09 2010 -0400

    Add some missing includes to fix Linux build again

commit b5bfc44d6bf97f404e47217a38b80bf75338d6e7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 13 15:38:39 2010 -0400

    Make test-ratelim clean up after itself better.

commit 6d195109eb4c7233486fefe7cef834e912f610ec
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 13 14:59:33 2010 -0400

    Avoid event_del on uninitialized event in event_base_free

    This was mostly harmless, since the event was cleared with calloc, but
    still it's not a correct thing to do.

commit 2b44dccaaf632794b22e8e0e3e407702b1719851
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 13 12:01:30 2010 -0400

    Add options to test-ratelim.c to check its results

    The new options let you specify a maximum deviation of bandwidth used
    from expected bandwidth used, and make test-ratelim.c exit with a
    nonzero status when those deviations are violated.

    This patch also adds a test-ratelim.sh script to run test-ratelim with
    a few sensible options for testing.

commit 218a3c372c9eb0fab8325833342fa7e8e0ce8e86
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 13 11:24:07 2010 -0400

    Do not check that event_base is set in EVBASE_ACQUIRE_LOCK

    In every place that we call EVBASE_ACQUIRE_LOCK, the base is either
    set, or must be set, so the test is redundant.

commit fdfc3fc502bf04b2cedf0b9a812e52af315e32b7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 13 11:23:12 2010 -0400

    Remove the now-unusable EVTHREAD_LOCK/UNLOCK constants

commit 33bbbed9dde90b68d3bf88dca1f21b557425db4b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 13 10:57:30 2010 -0400

    Mark the event_err() functions as __attribute__((noreturn))

    This attribute tells gcc (and anything else that understands gcc
    attributes) that the functions will never return control, and helps
    the optimizer a little.  With luck, it will also tell
    less-than-full-program dataflow analysis tools that they don't need to
    worry about any code path that involves calling one of these functions
    and then returning.

    This patch also forces event_exit() to always exit, no matter what the
    user-supplied fatal_callback does.  This means that the old unit tests
    for the event_err* functions don't work any more, since they assume it
    is safe to call event_err* if you've given it a bogus fatal_callback
    that doesn't exit.  Instead, we have to make the unit tests fork
    before calling event_err(), and have the main unit test process wait
    for the event_err() test to exit with a sane exit code.  On unix,
    that's trivial.  On windows, let's not bother and just assume that
    event_err* works.

commit dfb75ab207f105c780a9819414c78f235548773d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 12 15:38:28 2010 -0400

    Test the unlocked-deferred callback case of bufferevents

commit c5bab56002bd2cdbfe4687b80a6abf5397786d76
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 11 11:44:07 2010 -0400

    Remove the obsolete evthread interfaces

    These were added in 2.0.1, and deprecated in 2.0.4 and 2.0.5; we've
    promised that they would be removed, and warned whenever they were
    invoked.  Users should call evthread_set_lock_callbacks instead...  or
    ideally just call evthread_use_windows_threads or
    evthread_use_pthreads.

commit 9cb5bc86a9a03a1fb81764ae5fcd54e98772c767
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 10 14:51:32 2010 -0400

    Bump version to 2.0.5-beta-dev

commit ad9b7f153d4774c444793f335990983b47b68811
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun May 9 00:22:08 2010 -0400

    Increment version numbers for 2.0.5-beta

commit f6aaf176d26e57d1640ed4308e91cf0ce046fea7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun May 9 00:16:35 2010 -0400

    Add a changelog for 2.0.5-beta

commit 7c519dfd4fc62493d4ed07f77f9aa4a7bb472cd6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 23:29:29 2010 -0400

    Fix some autoconf issues on OpenBSD

    Issue 1: autoconf gets accept when a header works properly with cpp
    but not with cc.  This was true of the sys/sysctl.h header on
    openbsd.  The fix: include sys/param.h (if present) when testing for
    sys/sysctl.h

    Issue 2: Somehow, autoconf's macro generation code is messed up on
    some versions of openbsd (including mine, and other people's too) so
    that instead of SIZEOF_VOID_P, it makes SIZEOF_VOID__.
    evutil/util.h now works around that.

commit c1cd32a156b75fa692471def021261126df33f88
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 22:21:52 2010 -0400

    Define _REENTRANT as needed on Solaris, elsewhere

    It turns out that _REENTRANT isn't only needed to make certain
    functions visible; we also need it to make pthreads work properly
    some places (like Solaris, where forgetting _REENTRANT basically
    means that all threads are sharing the same errno).  Fortunately,
    our ACX_PTHREAD() configure macro already gives us a PTHREAD_CFLAG
    variable, so all we have to do is use it.

commit 3d9e05b17498c8b982a8d34031341fbe9b6dbb0e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 19:56:25 2010 -0400

    Fix test.sh on freebsd

    It turns out that in all conformant shells, "unset FOO" removes FOO
    both from the shell's variables and from the exported environment.
    (I've tested this on msys, opensolaris, linux, osx, and freebsd.)

    And in nearly every shell I can find, "unset FOO; export FOO" does
    the same as unset FOO... except in my FreeBSD VM, where the "export
    FOO" sets the exported value of FOO equal to "".  This broke test.sh
    for us.

    The fix is simple: remove the needless exports!

commit 0ee6f6ce805570576755142d28022c27446e27cc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 18:00:26 2010 -0400

    Make test.sh support mingw/msys on win32

    This required:
       - Adding another WIN32 section in test.sh
       - not running "touch /dev/null"
       - calling WSAStartup in all the test binaries
       - Fixing a dumb windows-only bug in test-time.c

commit 935e1504b1bb090119c4b9b42f3b34141290523c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 19:36:05 2010 -0400

    Fix whitespace in evutil.c

commit 35570716988ba70f28f9580818903437b6409bcb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 19:16:47 2010 -0400

    Fix another nasty solaris getaddrinfo() behavior

    Everybody else thinks that when you getaddrinfo() on an ip address
    and don't specify the protocol and the socktype, it should give you
    multiple answers , one for each protocol/socktype implementation.

    OpenSolaris takes a funny view of RFC3493, and leaves the results set
    to 0.

    This patch post-processes the getaddrinfo() results for consistency.

commit 2cf2a286e42356601514d754acbcefc3cf0b23ad
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 21 11:57:55 2010 -0400

    Fix getaddrinfo with protocol unset on Solaris 9. Found by Dagobert Michelsen

    Apparently when you call Solaris 9's getaddrinfo(), it likes to leave
    ai_protocol unset in the result. This is no way to behave, if I'm
    reading RFC3493 right.

    This patch makes us check for a getaddrinfo() that's broken in this way,
    and work around it by trying to infer socktype and protocol from one
    another.

    Partial bugfix for 2987542

commit c44de06c766906a7d90f5dcb99877caafad241af
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 18:09:27 2010 -0400

    Numerous opensolaris compilation fixes

    For future note, opensolaris doesn't have sys/sysctl.h, doesn't like
    comparing iov_buf to a chain_space_ptr without a cast, and is (predictably)
    unforgiving of dumb syntax errors.

    Also, we had accidentally broken the devpoll backend test in configure.in

commit f89168e7eafb40bc68e17b8fa3323c23343e400a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 19:11:50 2010 -0400

    Make test for bufferevent_connect_hostname system-neutral

    Previously, the be5_outcome field for the dns error would be set to
    something dependent on our system resolver.  It turns out that you
    can't rely on nameservers to really give you an NEXIST answer for
    xyz.example.com nowadays: too many of them are annoyingly broken and
    like to redirect you to their locked-in portals.  This patch changes
    the bufferevent_connect_hostname test so that it makes sure that the
    dns_error of be5_outcome is "whatever you would get from resolving
    the target hostname"

commit 88a543fc190c7c3f339e0650b833adfe81caa12e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 19:09:09 2010 -0400

    Make unit test for add_file able to tell "error" from "done"

    Importantly, we don't actually want to call evbuffer_write() when
    the buffer is empty.  This makes it an error to ever get a -1 return
    value from evbuffer_add_file(), which makes it safe for us to test
    the return value.

commit 384d124581e929e4a9765a8ad16c0edddc0efc2e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 17:15:52 2010 -0400

    Fix bench_http build on win32.

commit 05de45d63fa79bb495f9cee5eae707c57f26eb78
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 16:47:07 2010 -0400

    add more (currently skipped) add_file tests on win32

commit ad811cdc2b33c0fc72fdd3ae684a5c3763033d90
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 16:41:01 2010 -0400

    Fix unused-variable warning when building with threads disabled

commit dcdae6b743b1cfc2dceff0b95b3236dd83742f61
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 16:34:18 2010 -0400

    Make evbuffer_add_file() work on windows

    Right now only the add_file() mode is supported, when it would be
    nicer to have mmap support.  Perhaps for Libevent 2.1.x.

commit b4f12a17aaa6e9badb25409e59cd32d0c549dbb7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 14:49:59 2010 -0400

    Implement regress_make_tempfile on win32 to test evbuffer_add_file

    (Conclusion: evbuffer_add_file is broken on win32, since it
    uses recv on a file.)

commit 90d4225137d00bc58eeee82f1a5fa4272dc17bd1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 8 15:31:54 2010 -0400

    Fix some crazy macro mistakes in arc4random.c

commit f37cd4c227397bfbc8c0b635417f0bf85d7ded33
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 21 12:25:29 2010 -0400

    Detect broken unsetenv at unit-test runtime

    If we have an unsetenv function that doesn't work, we can't run the
    main/base_environ unit test, so we should skip it.

commit fdc629736e1cedb7bb4ab201e49cb1638c69888e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 6 14:37:23 2010 -0400

    Only add libevent_core.la to LIBADD on mingw

    Chris Davis reports that this is also necessary to fix building with
    shared libraries on OSX for him.  Should fix bug 2997775.

    There is probably a better fix for the issues solved by commit
    3cbca8661f, but for now, we're trying to get a beta out the door.

commit 25433b96dc071b6b53914b069fd6525a19b839ac
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 6 14:37:23 2010 -0400

    Only specify -no-undefined on mingw

    It turns out that commit 3cbca8661f broke building with shared
    libraries on OSX.  Since -no-undefined is only necessary on platforms
    like win32, only use it there.

    There may be a better fix for this.  Should fix bug 2997775.

commit a62c8433407c5c6d762394a3395470e34fb20f49
Merge: 7731ec8 0ef4070
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 6 14:16:50 2010 -0400

    Merge commit 'chrisd/connect-hostname-report-err'

commit 7731ec882833e3ca660db3875a61432058495a02
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 6 13:26:05 2010 -0400

    Stop distributing and installing manpages: they were too inaccurate

    It would be great to have the manpages come back some time, perhaps
    from a refactoring of my asciidoc book, but for now the existing
    manpages were the single worst, most incomplete, and most misleading
    libevent documentation we had.  (Less misleading: the doxygen output,
    the header files, and my reference book.)

commit c16e68448c546c99d3c0d1a1447214a55e137b35
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 4 13:27:36 2010 -0400

    Rename current_base symbol to event_global_current_base_

    The "current_base" symbol was never actually declared in an exported
    header; it's hideously deprecated, and it was the one remaining
    exported symbol (fwict) that was prefixed with neither ev nor
    bufferevent nor _ev nor _bufferevent.

    codesearch.google.com turns up no actual attempts to use our
    current_base from outside libevent.

commit 99e50e90bd2a03638f9bef11dae12d9951b0c793
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 4 12:57:40 2010 -0400

    Fix symbol conflict between mm_*() macros and libmm

    Our mm_malloc, mm_calloc, etc functions were all exported, since C
    hasn't got a nice portable way to say "we want to use this function
    inside our library but not export it to others".  But they apparently
    conflict with anything else that calls its symbols mm_*, as libmm does.

    This patch renames the mm_*() functions to event_mm_*_(, and defines
    maros in mm_internal so that all the code we have that uses mm_*()
    will still work.  New code should also prefer the mm_*() macro names.

    Reported by Gernot Tenchio.  Fixes sf bug 2996541

commit 20fda296c5faada095c7122244ecd6beff1c0931
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 3 13:00:00 2010 -0400

    Try /proc on Linux as entropy fallback; use sysctl as last resort

    It turns out that the happy fun Linux kernel is deprecating sysctl,
    and using sysctl to fetch entropy will spew messages in the kernel
    logs.  Let's not do that.  Instead, let's call sysctl for our
    entropy only when all other means fail.

    Additionally, let's add another means, and try
    /proc/sys/kernel/random/uuid if /dev/urandom fails.

commit 71afc525804f416cfaabf4ec253f725fe3ec6822
Author: Frank Denis <chrysalis@users.sourceforge.net>
Date:   Mon May 3 11:37:16 2010 -0400

    Fix nonstandard TAILQ_FOREACH_REVERSE() definition

    Every current BSD system providing TAILQ_* macros define
    TAILQ_FOREACH_REVERSE in this order:

    TAILQ_FOREACH_REVERSE(var, head, field, headname)

    However, libevent defines it in another order:

    TAILQ_FOREACH_REVERSE(var, head, headname, field)

    Here's a trivial patch to have libevent compatible with stock queue.h headers.

    -Frank.

    [From sourceforge patch 2995179. codesearch.google.com confirms that
    the only people defining TAILQ_FOREACH_REVERSE our way are people
    using it in a compatibility header like us.  Did we copy this from
    OpenSSH or something?]

    -Nick

commit 953e2290fc9a649c465d5bcc7b26bdb0d5693c3b
Author: Frank Denis <chrysalis@users.sourceforge.net>
Date:   Mon May 3 11:29:22 2010 -0400

    Refuse null keys in evhttp_parse_query()

    evhttp_parse_query() currently accepts empty keys, that don't make any
    sense.

    -Frank

    [From sourceforge patch 2995183]
    -Nick

commit bd1ed5f3c5015999c91a33bd5d7ed69b8b7b81d5
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Sun May 2 12:51:35 2010 +0200

    Fix a compile warning introduced in 739e688

commit 739e6882757a0b6b398f95859da4720ca60269c8
Author: Pierre Phaneuf <pphaneuf@gmail.com>
Date:   Wed Apr 28 21:33:13 2010 -0700

    Allow empty reason line in HTTP status

commit 50ec59f4a6aa662fd80e070b9efd795e627b8d59
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 28 15:16:32 2010 -0400

    Remove redundant checks for lock!=NULL before calling EVLOCK_LOCK

    The EVLOCK_LOCK and EVLOCK_UNLOCK macros already check to make sure
    that the lock is present before messing with it, so there's no point
    in checking the lock before calling them.

    A good compiler should be able to simplify code like
      if (lock) {
         if (lock)
            acquire(lock);
      }
    , but why count on it?

commit 40c301b76c81257fdf1275eb4cc618b1124391a7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 28 14:56:51 2010 -0400

    Fix compilation when openssl support is disabled

    Previously, we'd fail if OpenSSL was present but openssl support was
    disabled.  Now we don't.

commit 9ecf0d486dbfaba16451676ab3ecefa631d63e6a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 28 12:03:08 2010 -0400

    Catch attempts to enable debug_mode too late

    Debug mode needs to be enabled before any event is setup or any
    event_base is created.  Otherwise, we will not have recorded when events
    were first setup or added, and so it will look like a bug later when we
    delete or free them.

    I have already confused myself because of this requirement, so let's
    make Libevent catch it for the next poor forgetful developer like me.

commit cb6707405cc07e34925e9c9f81a0c4d34ef9b135
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 28 11:51:56 2010 -0400

    Make debug mode catch mixed ET and non-ET events on an fd

    Of the backends that support edge-triggered IO, most (all?) do not
    support attempts to mix edge-triggered and level-triggered IO on the
    same FD.  With debugging mode enabled, we now detect and refuse attempts
    to add a level-triggered IO event to an fd that already has an
    edge-triggered IO event, and vice versa.

commit a5208fe4228b0e2c77d43dd2e3991f2fbac9148a
Author: Joachim Bauch <jojo@struktur.de>
Date:   Tue Apr 27 13:42:26 2010 -0400

    Release locks on bufferevents while executing callbacks

    This fixes a dead lock for me where bufferevents in different event
    loops use each other and access their input/output buffers (proxy-like
    scenario).

commit 0ef407065e5fb98f704b426d1d4fc878a85a391d
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Sat Apr 24 00:06:38 2010 -0700

    Report DNS error when lookup fails during bufferevent_socket_connect_hostname.

commit 25c442e5825d7ca468b61926c729b2766c75442b
Merge: 601a3ff f6ab2a2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 24 00:15:15 2010 -0400

    Merge branch 'rpc_leaks'

commit 601a3ff98c0152a740aa6710bad1c4443960d35d
Merge: 96730d3 a47a4b7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 24 00:01:31 2010 -0400

    Merge branch 'arc4seed'

commit f6ab2a2811477547347b395789c0340c38603944
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 23 23:55:30 2010 -0400

    Fix a memory leak when unmarshalling RPC object arrays

    The old code would use type_var_add() for its side-effect of expanding the
    array, then leak the new object that was added to the array.

    The new code adds a static function to handle the array resizing.

commit 94ee1251cb0984ca2683c682dda0bb4ab8148508
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 23 23:55:03 2010 -0400

    fix a leak when unpausing evrpc requests

commit 96730d319134f2754533ebf7e9a9bd4c0e0acdca
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 23 23:13:26 2010 -0400

    Make http_base_test stop leaking an event_base.

commit d49b92a8358c42d9fe7208571e9ef0cee9b045a8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 23 23:04:20 2010 -0400

    Remove one last bug in last_with_datap logic. Found with valgrind

commit 9d8edf2ff5882aff3c85f2fa6b5eeaf05ef8c9b4
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 23 18:59:22 2010 -0700

    do not leak the request object on persistent connections

commit a47a4b7e7e52ad8722771c36c4bc147f679c88d1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 23 16:08:09 2010 -0400

    Fix a couple of bugs in the BSD sysctl arc4seed logic

    Of course, FreeBSD has its own arc4random() implementation, so this should
    never actually be needed.  Still, it's good to paint the underside of the
    wagon.

commit a5bf43abb0671ee2ceac7b38cbe36424f621934a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 4 01:14:32 2010 -0500

    Document evutil_secure_rng_init() and evutil_secure_rng_add_bytes()

commit f9807167075aacc512ad7bca007064449eee93d9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 23 15:17:10 2010 -0400

    Make evutil_secure_rng_init() work even with builtin arc4random

commit 71fc3eb08b9acd359ba61b31059bf4220808a03b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 4 01:13:51 2010 -0500

    Seed the RNG using sysctl() as well as /dev/urandom

    William Ahern points out that if the user has chrooted, they might not
    have a working /dev/urandom.  Linux and many of the BSDs, however,
    define a sysctl interface to their kernel random number generators.

    This patch takes a belt-and-suspenders approach and tries to do use the
    sysctl _and_ the /dev/urandom approach if both are present.  When using
    the sysctl approach, it tries to bulletproof itself by checking to make
    sure that the buffers are actually set by the sysctl calls.

commit b1c795007fd6db4655a66ee2dfb306803a43fc1e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 23 14:42:25 2010 -0400

    Make evdns logging threadsafe

    The old logging code was littered with places where we stored messages in
    static char[] fields.  This is fine in a single-threaded program, but if you
    ever tried to log evdns messages from two threads at once, you'd hit a race.

    This patch also refactors evdns's debug_ntop function into a more useful
    evutil_sockaddr_port_format() function, with unit tests.

commit ceefbe87303c8c96dc809ad8afc736f2dbaa194a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 23 14:04:03 2010 -0400

    Add a comment to explain why evdns_request is now separte from request

commit 39b870b8a0a40a63851c37b8854399ba370ed2b1
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Thu Apr 22 21:49:05 2010 -0700

    Add dns/search_cancel unit test.

commit 67072f3c3bf362654e2069bd468045a3d354190c
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Thu Apr 22 21:46:05 2010 -0700

    Assert for valid requests as necessary.

    A valid request has an associated handle, and the handle must point
    to the request.

commit a62584000af5b2563ee98596f174a3a36c1ae6c1
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Wed Apr 21 22:20:10 2010 -0700

    Free search state when finished searching to avoid an infinite loop.

commit beaa14a46f5db71d890c3aa9326eb223ff176bdf
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Wed Apr 21 22:01:59 2010 -0700

    Move domain search state to evdns_request.

    It doesn't seem to make sense to copy the state to each new request
    in the search.

commit 15bb82d690ae0a5df0625b83addcd18d9246afab
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Wed Apr 21 21:21:21 2010 -0700

    Ensure that evdns_request is a persistent handle.

    When searching is enabled, evdns may make multiple requests before
    calling the user callback with the result. This is a problem because
    the same evdns_request handle is not retained for each search request,
    so the user cannot reliably cancel the request.

    This patch attempts to ensure that evdns_request persists accross
    search requests.

commit b84b598eae8293dc02bf91cfb4f1cde9516f2fe0
Author: Gilad Benjamini <gilad@altornetworks.com>
Date:   Wed Apr 21 01:15:19 2010 -0400

    Clean up properly when adding a signal handler fails.

    Previously, when a signation() or signal() call failed, we would free
    the element we added to sh_old, but not actually clear the pointer.
    This would leave a dangling pointer in sh_old that could cause a
    crash later.

commit 899c1dcc9807650ec90e0d5c847d2997fce9b751
Author: Sebastian Sjöberg <Sebastian.Sjoberg@axis.com>
Date:   Wed Apr 14 15:42:57 2010 -0400

    Replace EVUTIL_CLOSESOCKET macro with a function

    The EVUTIL_CLOSESOCKET() macro required you to include unistd.h in your
    source for POSIX.  We might as well turn it into a function: an extra
    function call is going to be cheap in comparison with the system call.

    We retain the EVUTIL_CLOSESOCKET() macro as an alias for the new
    evutil_closesocket() function.

    (commit message from email by Nick and Sebastian)

commit 0861d1708ba6d035ff4c834e2aac0b5855f64afa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 14 14:41:03 2010 -0400

    Add ctags/etags files to .gitignore

commit 755fbf16c3ce94bfa09e1bf5da27ccdfc1e7e725
Author: Shuo Chen <giantchen@gmail.com>
Date:   Wed Apr 14 14:27:29 2010 -0400

    Add void* arguments to request_new and reply_new evrpc hooks

    This makes evprc setup more extensible, and helps with Shuo Chen's
    work on implementing Google protocol buffers rpc on top of Libevent 2
    evrpc.

    This patch breaks binary compatibility with previous versions of
    Libevent, since it changes struct evrpc and the signature of
    evrpc_register_generic().  Since all compliant code should be calling
    evrpc_register_generic via EVRPC_REGISTER, it shouldn't break source
    compatibility.

    (Code by Shuo Chen; commit message by Nick)

commit 07edf784fab4e25c31eef3fdcccec3975e2741db
Author: Shuo Chen <giantchen@gmail.com>
Date:   Wed Apr 14 14:23:03 2010 -0400

    Expose the request and reply members of rpc_req_generic()

    This code adds two accessor functions to evprc, and helps integrate
    evrpc with Google protocol buffers.

    (Code by Shuo Chen; commit message by nickm)

commit a0983b67f9d077d59739ed7111cafdd81dd95876
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 14 00:36:09 2010 -0400

    Initialize last_with_datap correctly in evbuffer_overlapped

    Fixes bug 2985406

commit 3cbca8661f2ad267ca890304a3dc5acefb8ba630
Author: Giuseppe Scrivano <gscrivano@gnu.org>
Date:   Mon Apr 12 12:52:31 2010 +0200

    Create shared libraries under Windows

commit 10c4c9045032c822463cd48caa46bd3254883057
Author: Giuseppe Scrivano <gscrivano@gnu.org>
Date:   Mon Apr 12 12:50:17 2010 +0200

    Do not inhibit automake dependencies generation

    It fixes make parallel builds.

commit d469c503c57df97f3744070ed96950b0990b6124
Author: Giuseppe Scrivano <gscrivano@gnu.org>
Date:   Mon Apr 12 12:18:57 2010 +0200

    Fix compiler warnings under WIN32

commit ab30e553c40b41e124474208a9315763c87c2e2e
Merge: fd90274 eb86c8c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 13 01:46:29 2010 -0400

    Merge branch 'evbuffer_copyout'

commit eb86c8c5ffc43a4e52881a20132eb03c3f9da283
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 12 22:24:54 2010 -0400

    Add evbuffer_copyout to copy data from an evbuffer without draining

    The evbuffer_remove() function copies data from the front of an
    evbuffer into an array of char, and removes the data from the buffer.
    This function behaves the same, but does not remove the data.  This
    behavior can be handy for lots of protocols, where you want the
    evbuffer to accumulate data until a complete record has arrived.

    Lots of people have asked for a function more or less like this, and
    though it isn't too hard to code one from evbuffer_peek(), it is
    apparently annoying to do it in every app you write.  The
    evbuffer_peek() function is significantly faster, but it requires that
    the user be able to handle data in separate extents.

    This patch also reimplements evbufer_remove() as evbuffer_copyout()
    followed by evbuffer_drain().  I am reasonably confident that this
    won't be a performance hit: the memcpy() overhead should dominate the
    cost of walking the list an extra time.

commit fd902740568c93a2bcf3c27584af9f7d59ff88ce
Merge: 819f949 8f9e60c
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Sat Apr 10 11:26:53 2010 -0700

    Merge branch 'safetimevalms'

commit 8f9e60c825768c6dbc22fb6a2874b1f47cb34287
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Fri Apr 9 19:16:09 2010 -0700

    Always round up when there's a fractional number of msecs.

commit 819f949f4ab61c4c5add40105d299e73c190e94f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 9 19:16:49 2010 -0400

    Limit the maximum number of events on each socket to 65535

    This lets us use less RAM for the evmap_io structure, which in turn
    can let us have fewer cache misses for evmap operations.

commit 99210dd9e0f6c2dfbd53c65854bd317cf13054be
Merge: 1234b95 c247adc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 9 19:14:25 2010 -0400

    Merge branch 'comment'

commit c247adc79c483638890f8150edf2c3213a32c20e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 9 13:32:08 2010 -0400

    Add a few more evmap/changelist comments

commit 1234b95a7593750a248f63af969dcb32def40709
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 9 17:19:39 2010 -0400

    Test another case of evbuffer_prepend

commit 8c83e9957907be7f33529a9f0913690520436091
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 9 16:40:53 2010 -0400

    Add more unit tests for evbuffer_expand

commit 06a4443abed28d3e0e9e27bcb99cf3191c0d3674
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 9 15:28:26 2010 -0400

    Unit-test every evbuffer_add_file() implementation.

    Previously, we'd only test the default one, even if the others were still
    compiled in.

commit 28bfed47e289b21e32390411a1a9ea8e057b0e10
Author: Christopher Davis <chrisd@torproject.org>
Date:   Fri Apr 2 19:08:32 2010 -0400

    Clean up a mistake in pointer manipulation in evbuffer_remove

commit 850c3ff232659125262bb5e30bef8451fac386bf
Author: Christopher Davis <chrisd@mangrin.org>
Date:   Wed Mar 31 20:30:55 2010 -0700

    Add evutil_tv_to_msec for safe conversion of timevals to milliseconds.

    This is useful for backends that require their timeout values be in
    milliseconds.

commit d5ebcf370debb006964814e0529e73736dcad93b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Mar 30 16:47:37 2010 -0400

    Rewrite evbuffer_expand and its users

    The previous evbuffer_expand was not only incorrect; it was
    inefficient too.  On all questions of time vs memory tradeoffs, it
    chose to burn time in order to avoid wasting memory.  The new code
    tries to be a little more balanced: it only resizes an existing chain
    when doing so doesn't require too much copying, and when failing to do
    so would waste a lot of the chain's space.

    This patch also rewrites evbuffer_chain_insert to work properly with
    last_with_datap, and adds a few convenience functions to buffer.c.

commit 45068a312c0c2c6c4e9a144a837fd2f9d5310840
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 31 12:03:43 2010 -0400

    Fix a memory leak when appending/prepending to a buffer with unused space.

commit 8e227b04da54b7c4a029a2c9d335c582da4a5dcc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Mar 27 00:09:25 2010 -0400

    Make the no_iovecs case of write_atmost compile

    Apparently nobody had tested it before on a system that had sendfile.
    Why would you have sendfile and not writev?  Perhaps you're trying to
    test the no-iovecs code to make sure it still works.

commit 96865c47834f0397a46a38ad992f35167cf12796
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Mar 30 12:48:56 2010 -0400

    Turn the increasingly complex *_CHAIN() macros into functions

commit b7442f8e8354b09f66d0110f2c5c970373a730cb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 26 23:18:40 2010 -0400

    Replace last_with_data with a slightly smarter version

    To implement evbuffer_expand() properly, you need to be able to
    replace the last chunk that has data, which means that we need to keep
    track of the the next pointer pointing to the last_with_data chunk,
    not the last_with_data chunk itself.

commit cda56abf194eb70f00c8e6ce95ec31f226048f9f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 31 12:29:26 2010 -0400

    Fix critical bug in evbuffer_write when writev is not available

    evbuffer_pullup() returns NULL if you try to pull up more bytes than
    are there.  But evbuffer_write_atmost would sometimes ask for more
    bytes to be pulled up than it had, get a NULL, and fail.

commit c87272b7b91b4f443092eb2a81f03c83457ab03a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 26 14:51:39 2010 -0400

    Make evbuffer_prepend handle empty buffers better

    If the first chunk of a buffer is empty, and we're told to prepend to
    the buffer, we should be willing to use the entire first chunk.
    Instead, we were dependent on the value of chunk->misalign.

commit 5c0ebb33f4a646919267fbca11c36eba24003561
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 26 14:50:45 2010 -0400

    Do not use evbuffer_expand() to add the first chain to a buffer

    (It's a big function, and using it this way is overkill.)

commit 2014ae4ac630d727f23ca91dad5d0ebf56b694de
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 26 14:30:14 2010 -0400

    Increase MIN_BUFFER_SIZE to 512 (1024 on 64-bit)

    This constant decides the smallest (and typical) size of each evbuffer
    chain.  Since this number includes sizeof(evbuffer_chain) overhead,
    the old value (256) was just too low: on 64-bit platforms, it would
    spend nearly 20% of the allocations on overhead.  The new values mean
    that we'll be spending closer to 5% of evbuffer allocations on overhead.

    It would be nice to get this number even lower if we can.

commit 6f20492fa27f08524af25914c02bc72d357b4197
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 26 14:20:10 2010 -0400

    Fix a free(NULL) in minheap-internal.h

commit a5276180b790fd3571a8e157c1fdd1a296421681
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 26 13:56:01 2010 -0400

    Fix minheap code to use replacement malloc functions

    minheap-internal.h still had an extra realloc and an extra free that
    needed to be replaced with mm_realloc and mm_free().

commit 7204b916669f9b9ff0dae689088a5ab0344edebd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 26 13:46:29 2010 -0400

    Remove a needless min_heap_shift_up_() call

    Previously, every call to min_heap_shift_down_() would invoke
    min_heap_shift_up_() at the end.  This used to be necessary in the
    first version of the minheap code, since min_heap_erase() would call
    min_heap_shift_down_() unconditionally.  But when patch 8b7a3b36763
    from Marko Kreen fixed min_heap_erase() to be more sensible, we left
    the weird behavior of min_heap_shift_down_() in place.

    Fortunately, "cui" noticed this and reported it on Niels's blog.

commit e1e703d2f5d35118e80be6a0e780682284ce8bc3
Author: Patrick Galbraith <patg@patg.net>
Date:   Tue Mar 23 16:04:59 2010 -0400

    Make evutil_signal_active() match declaration.

commit 3eb044d0a9cdaa9bc6a8fc202f1725bd7eda5e0b
Author: Trond Norbye <trond.norbye@gmail.com>
Date:   Tue Mar 23 13:27:10 2010 -0400

    Never test for select() on windows

    On 64-bit windows, configure actually _finds_ select when it tests for
    it, and due to the ordering of the io implementations in event.c it is
    chosen over the win32select implementation.

    This modification skips the test for select on win32 (we don't want
    that anyway, because Windows has its own), causing my windows box to
    get the win32select implementation.

    (edited by Nick)

commit 7960af51133b76dc2bd48bcf69bc2213fd354206
Merge: 8398641 9eb2fd7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Mar 22 13:37:39 2010 -0400

    Merge branch 'build'

commit 9eb2fd75becc336b6b9c38071ad4d4495bc83b9a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Mar 22 13:27:47 2010 -0400

    Use dist_bin_SCRIPTS, not EXTRA_DIST, to distribute scripts

commit 83986414b0de36923f32c2c3330db6cbf4b0455f
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Fri Mar 12 06:04:56 2010 -0300

    Fix infrequent memory leak in bufferevent_init_common().

commit b557b175c00dc462c1fce25f6e7dd67121d2c001
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Mar 21 13:28:48 2010 -0400

    Detect and refuse reentrant event_base_loop() calls

    Calling event_base_loop on a base from inside a callback invoked by
    that same base, or from two threads at once, has long been a way to
    get exceedingly hard-to-diagnose errors.  This patch adds code to
    detect such reentrant invocatinos, and exit quickly with a warning
    that should explain what went wrong.

commit fb366c1d880e49a19c40c9d62cbd7cbef297c6e7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Mar 21 13:16:31 2010 -0400

    Functions to track the total bytes sent over a rate limit group.

commit 33874b05286834b6ec690ee2ae22912691ec6d85
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Mar 16 13:37:15 2010 -0400

    Make 'main/many_events' test 70 fds, not 64.

    This is mainly intended to ensure that we don't get hung up on
    the 64-handle limit that lots of O(n) Windows functions (but FWICT
    not select) like to enforce.

commit 657d1b6d3f0f27484d368bca39f99c2c5da107b6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Mar 13 01:06:57 2010 -0500

    Set mem_offset for every bufferevent type

commit 0cf1431e5d85411ac8174ffe3b802c6a37f6e3a8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Mar 13 01:04:30 2010 -0500

    Avoid an (untriggerable so far) crash bug in bufferevent_free()

    We were saying
         mm_free(bufev - bufev->be_ops->mem_offset);
    when we should have said
         mm_free(((char*)bufev) - bufev->be_ops->mem_offset);

    In other words, if mem_offset had ever been nonzero, then instead of
    backing up mem_offset bytes to find the thing we were supposed to free, we
    would have backed up mem_offset*sizeof(struct bufferevent) bytes, and freed
    something completely crazy.

    Spotted thanks to a conversation with Jardel Weyrich

commit 274a7bd9a11fd25339c4b978a25367f6d5ff0238
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Mar 13 00:55:39 2010 -0500

    Fix some memory leaks in the unit tests

    These don't matter except inasmuch as they give real memory leaks
    a place to hide.

    Found with valgrind

commit 859af6772c8ff929ec73b862bb3b64dc0e57bada
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Mar 13 00:53:54 2010 -0500

    Free evdns_base->req_heads on evdns_base_free

    It looks like when we moved from one big inflight-requests list to an
    n-heads structure, we didn't make evdns_base_free() free the array of
    heads.  This patch should fix that.

    Found with valgrind

commit 68dc742bf1adc6fb7033788a41520625c516bf48
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 20:38:25 2010 -0500

    Fix a write of uninitialized RAM in regression tests

    Not actually harmful, but not something we should be doing.

    Found by valgrind.

commit b34abf3069bada10c15f09a0073052e32b686708
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 18:36:18 2010 -0500

    Do not close(-1) when freeing an uninitialized socket bufferevent

commit 70a44b61bb574d4e550ef7a4f933b95efc1a5316
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 18:35:15 2010 -0500

    Avoid a spurious close(-1) on Linux

    On Linux, we use only one fd to do main-thread signaling (since we have
    eventfd()), so we don't need to close th_notify_fd[1] as we would if we were
    using a socketpair.

commit 75018951ece71668b56ce688740a62f9d4db9277
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Mar 13 00:23:06 2010 -0500

    Fix a possible double-free bug in SSL bufferevents with CLOSE_ON_FREE

    With CLOSE_ON_FREE set, we were telling the BIO to free the bufferevent when
    it was closed, and also freeing it ourselves.

commit 0d047c3f11b4639236816c8f7a166e233d88d10c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Mar 13 00:29:15 2010 -0500

    Fix an obnoxious typo in the bufferevent_timeout_filter test

    We were using the same bufferevent as the child of two filtering parents,
    orphaning another.  This made one get freed twice, and the other not at all.

    Possible fix for bug 2963306 spotted by Doug Cuthbertson.

commit f1bc125eb453af61cbb750652103532b77c271b0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 23:00:49 2010 -0500

    Improve robustness for refcounting

    Document that we do intend to double-decref underlying bufferevents under
    some circumstances.  Check to make sure that we don't decref past 0.

commit 77c917ded058a18480685a026622eef94ebb450e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 14:37:54 2010 -0500

    Give a better warning for bad automake versions.

    If you tried to build with automake-1.6 or earlier, we would
    previously spit out pages and pages of garbage output.  Now, automake
    should just say "Hey, I'm not new enough for this."

commit 0794b0d29c7485d10f8e752339b2ed58ffbb5be3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 14:21:52 2010 -0500

    Remove an orphaned RELEASE flag in Makefile.am

commit 2e898f542bb6dd5dcf13a0612ecd1e5855a014ef
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 14:16:30 2010 -0500

    Switch to using AM conditionals in place of AC_LIBOBJ

    AC_LIBOBJ is really only meant for defining missing library functions,
    not conditional code compilation.  Sticking our conditionally compiled
    modules in SYS_SRC should make stuff easier to maintain.

commit b660edf9db50bff0e437a262506a72f125763756
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 13:22:47 2010 -0500

    Remove redundant stuff from EXTRA_DIST

    To a first approximation, sources that are mentioned anywhere in an
    automake file don't need to get mentioned in EXTRA_DIST.

commit 426c8fbe9345ee1d3ee0b05c8e35391ef380ad2c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 13:09:28 2010 -0500

    Support the standard 'make check' target in place of 'make verify'

    Based on patch 2816088 from Zack Weinberg

commit 6c83e6c9725ad61f8d28955ee7a5d1f3162d74d0
Merge: ee41aca 17da042
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 12:26:06 2010 -0500

    Merge branch 'evbuffer_insert_point'

commit ee41aca63e27f6c5a91a01978b409f5994d03817
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 12 00:46:39 2010 -0500

    Functions to manipulate existing rate limiting groups.

    This patch adds a function to change the current rate limit of a rate
    limiting group, and another to free an empty rate limiting group.

commit cdd4c4905be7e56675c1fcccf9d04c1777ae0da1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 11 00:38:46 2010 -0500

    Try to comment some of the event code more

commit 17da042db6b8f7fec9064747dc53fa2855e96ab7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 11 15:39:44 2010 -0500

    Add some glass-box tests for the last_with_data code.

commit 1e7b986827f2654de500678ef56dcbaecd5a08d4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 11 14:23:02 2010 -0500

    Fix last_with_data compilation on windows

commit 78772c3503215eb0d55a370f5fc192eca713d0ad
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 11 00:18:02 2010 -0500

    Clarify Christopher Clark's status as writer of original ht code.

commit e470ad3c354c586a3a995ce3a1fe7d093ebf999c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 10 23:39:30 2010 -0500

    Allow evbuffer_read() to split across more than 2 iovecs

    Previously it would only accept 2 iovecs at most, because our
    previous_to_last nonsense didn't let it take any more.  This forced us
    to do more reallocations in some cases when an extra small malloc
    would have sufficed.

commit 6f47bd12ed27085f68573a02dfa2e2761eb1e6b0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 10 23:28:51 2010 -0500

    Remove previous_to_last from evbuffer

commit c8ac57f1f58358dfdb1030143ab043b6addd0c3c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 10 23:24:14 2010 -0500

    Use last_with_data in place of previous_to_last

    This actually makes some of the code a lot simpler.  The only
    ones that actually used previous_to_last for anything were reserving
    and committing space.

commit 2a6d2a1e4be261e071f5ddb95be183e172643916
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 10 22:16:14 2010 -0500

    Revise evbuffer to add last_with_data

    This is the first patch in a series to replace previous_to_last with
    last_with_data.  Currently, we can only use two partially empty chains
    at the end of an evbuffer, so if we have one with 511 bytes free, and
    another with 512 bytes free, and we try to do a 1024 byte read, we
    can't just stick another chain on the end: we need to reallocate the
    last one.  That's stupid and inefficient.

    Instead, this patch adds a last_with_data pointer to eventually
    replace previous_to_last.  Instead of pointing to the penultimated
    chain (if any) as previous_to_last does, last_with_data points to the
    last chain that has any data in it, if any.  If all chains are empty,
    last_with_data points to the first chain.  If there are no chains,
    last_with_data is NULL.

    The next step is to start using last_with_data everywhere that we
    currently use previous_to_last.  When that's done, we can remove
    previous_to_last and the code that maintains it.

commit c7f1b820fcf3181bccae4dc72dd2d16fbe712887
Merge: b2f2be6 8111fac
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 10 21:21:33 2010 -0500

    Merge branch 'evport'

commit b2f2be6edca55ed6f51bb3dc77c43cd4e47aa4af
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 10 16:25:16 2010 -0500

    Make evdns use the regular logging system by default

    Once, for reasons that made sense at the time, we had evdns.c use its
    own logging subsystem with two levels, "warn" and "debug".  This leads
    to problems, since setting a log handler for Libevent wouldn't actually
    trap these messages, since they weren't on by default, and since some of
    the warns should really be msgs.

    This patch changes the default behavior of evdns.c to log to
    event_(debugx,warnx,msgx) by default, and adds a new (internal-use-only)
    log level of EVDNS_LOG_MSG.  Programs that set a evdns logging
    function will see no change.  Programs that don't will now see evdns
    warnings reported like other warnings.

commit 13e4f3bd89225b3a339ac06ac051090e7e4bcab7
Author: Brodie Thiesfield <brofield2@jellycan.com>
Date:   Mon Mar 8 13:46:48 2010 -0500

    Avoid errors in http.c when building with VC 2003 .NET

commit b677032ba239157c0c98a7b74050e730d96f99ab
Author: Brodie Thiesfield <brofield2@jellycan.com>
Date:   Mon Mar 8 13:46:04 2010 -0500

    Avoid errors in evutil.c when building with _UNICODE defined

commit 2c2618d85861c1508f12787f2757459e02f9a002
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 5 13:00:15 2010 -0500

    more whitespace normalization

commit c7cf6f004951615cf775431d4f47663a20f2db6e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Mar 5 12:47:46 2010 -0500

    Replace users of "int fd" with "evutil_socket_t fd" in portable code

    Remeber, win32 has a socket type that's actually a handle, so if
    there's a chance that code is run on win32, we can't use "int" as the
    socket type.

    This isn't a blind search-and-replace: sometimes an fd is really in
    fact for a file, and not a socket at all.

commit 38b7b571c81d1545bb4b6a1c5e4fd9e1bf0f542d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 4 01:40:32 2010 -0500

    Add Christopher Clark and Maxim Yegorushkin to the LICENSE file

commit 17efc1cdfa5dbd275cbe7ab11e1382170df8a18b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Mar 4 01:25:51 2010 -0500

    Update all our copyright notices to say "2010"

commit cc1600afefc0c30586b12d916bb2a98ecf2d727b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Mar 2 17:00:06 2010 -0500

    Improve the speed of evbuffer_readln()

    This makes some cases of bench_http about 5% faster.

    Our internal evbuffer_strpbrk() function was overly general (it tried
    to handle all character sets when we only used it for "\r\n"), and
    not very efficient (it called memchr once for each character in the
    buffer until it found a \r or a \n).  It actually showed up in some
    profiles for HTTP testing, since evbuffer_readln() calls it when doing
    loose CRLF detection.  This patch replaces it with a faster
    implementation.

commit 2fac0f70a388d3a35a2d7883eeb673c6fbbe16e1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Mar 3 12:15:15 2010 -0500

    Remove signal_assign() and signal_new() macros.

    These were introduced and deprecated in the same version (2.0.1-alpha),
    presumably in two-stage process.  Everybody sane should be using
    evsignal_assign() and evsignal_new() instead.

commit 1273d2f519a386c30149143a85e5175e100cb980
Author: Christopher Davis <chrisd@torproject.org>
Date:   Tue Mar 2 15:16:28 2010 -0800

    VC has no getopt(), so do without in bench_http.

commit 4ac38a5c38f915298a65b10d34bf45c8e9654860
Author: Christopher Davis <chrisd@torproject.org>
Date:   Tue Mar 2 14:34:30 2010 -0800

    Get bench_http to work on Windows; add a switch to enable IOCP.

commit bf3bfd0c044a3110b49ca06621f1b2ca0621dd84
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Mar 1 22:12:04 2010 -0500

    Revert the broken part of 2cffd6c937

    It looks like I accidentally removed most of WIN32-Code/event-config.h
    when I was bumping the version.  Fortunately, this happened when I
    bumped to 2.0.4-alpha-dev rather than when I bumped to 2.0.4-alpha. :)

    This patch restores the deleted parts of WIN32-Code/event-config.h

commit 22aff0492dc51c8c9ce967871652e62e0144833d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Mar 1 22:06:12 2010 -0500

    Distribute libevent.pc.in, not libevent.pc

commit 2cffd6c937af5097db6a19cdebed3412c5454775
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 28 16:53:42 2010 -0500

    Bump version to 2.0.4-alpha-dev

commit 9669ade5250a159b1c9addd5b329b32176f38440
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 28 12:55:29 2010 -0500

    Bump the version to 2.0.4-alpha

commit 3a5cfb0d381a1b9e7d69903c3005abf1e447658b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 28 12:49:03 2010 -0500

    Add a changelog for 2.0.4-alpha from Git, sorted by hand

commit ad85908a4f6bd8fc1cbfb869fa0b4774f4249e0f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 28 12:52:39 2010 -0500

    Fix compilation with --disable-debug-mode

commit 57b72488233f749cd402d6133b5e4b1fb83878d3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 27 22:27:13 2010 -0500

    Small cleanups on freebsd-connect-refused patch.

    There should be no need to call be_socket_enable: that does an
    event_add().  What we really want to do is event_active(), to make
    sure that the writecb is executed.

    Also, there was one "} if () {" that was missing an else.

    I've noted that the return value for evutil_socket_connect() is
    getting screwy, but since that isn't an exported function, we can fix
    it whenever.

commit 7bc48bfd3ac61aa4ff118cacb44145c6ecda366e
Author: Niels Provos <provos@freebsd.localdomain>
Date:   Sat Feb 27 18:59:06 2010 -0800

    deal with connect() failing immediately

commit 98edb891f89911ab5bdfa2a26ba2c549c66a3b1f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 25 17:14:41 2010 -0500

    Fix arc4random compilation on MSVC.

commit 1e14f826695eeeb856c614e4da57a88a7c8202b4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 25 17:11:28 2010 -0500

    Try to define a sane _EVENT_SIZEOF_SIZE_T for msvc compilation

commit 23170a69f8f3394574652377e446604210d0c464
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 25 16:57:57 2010 -0500

    Fix mingw compilation

commit 7ffd3875747f5a824d2f17872372278704b2ae27
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 24 13:40:06 2010 -0500

    Delete stack-alloced event in new unit test before returning.

commit f3dfe46206d28eb99cd82beec0033ea7fd795f95
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 23 23:59:26 2010 -0500

    Use new timeval diff comparison function in bufferevent test

commit 8fcb7a1b0419b275bd1570044f0e2024723fe4dd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 23 23:55:32 2010 -0500

    Add test for periodic timers that get activated for other reasons

    This was already independently verified by the new bufferevent
    timeout tests, but it's good to explicitly check that our code
    does what it should.

commit c02bfe12f8cb695e67ec895443c592d1f3e9bc36
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 23 16:36:52 2010 -0500

    Add a test for timeouts on filtering bufferevents.

commit d3288293fdc6aef510cc217b171187aac19c444b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 20 18:44:35 2010 -0500

    Provide consistent, tested semantics for bufferevent timeouts

    The different bufferevent implementations had different behavior for
    their timeouts.  Some of them kept re-triggering the timeouts
    indefinitely; some disabled the event immediately the first time a
    timeout triggered.  Some of them made the timeouts only count when
    the bufferevent was actively trying to read or write; some did not.

    The new behavior is modeled after old socket bufferevents, since
    they were here first and their behavior is relatively sane.
    Basically, each timeout disables the bufferevent's corresponding
    read or write operation when it fires.  Timeouts are stopped
    whenever we suspend writing or reading, and reset whenever we
    unsuspend writing or reading.  Calling bufferevent_enable resets a
    timeout, as does changing the timeout value.

commit 38ec0a773b73375410cbb5a4eaeece3d0ab1caa0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 23 14:24:10 2010 -0500

    Fix a bug in resetting timeouts on persistent events when IO triggers.

    When we fixed persistent timeouts to make them reset themselves
    based on the previous scheduled time rather than the current
    time... we made them do so regardless of whether the event was
    triggering because of a timeout or not!

    This was of course bogus.  When a _timeout_ triggers, we should
    schedule the event for N seconds based on the last
    _schedule_ time... but when IO triggers, we should reset the
    timeout for N seconds after now.

commit e2642f0a880dcee81114c1c25766f0380672ee30
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 23 15:14:57 2010 -0500

    Fix some race conditions in persistent events and event_reinit

    I found these by adding an EVENT_BASE_ASSERT_LOCKED() call to most
    of the functions in event.c that can only be called while holding
    the lock.

    event_reinit() never grabbed the lock, but it needed to.

    event_persist_closure accessed the base to call event_add_internal()
    and gettime() when its caller had already dropped the lock.

    event_pending() called gettime() without grabbing the lock.

commit 4b37e6a5eab3d85e01920a679201d1e3a7ed2aa4
Merge: 162ce8a b2fbeb3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 23 00:39:02 2010 -0500

    Merge remote branch 'github/split_free_from_decref'

commit 162ce8a856224bdb3119db41d93fb94194886ddd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 23 00:38:30 2010 -0500

    Expose view of current rate limit as constrained by group limit

commit b2fbeb3f074258e4559aa879ef0cbe0ef415ed0f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 22 15:38:23 2010 -0500

    Make bufferevent_free() clear all callbacks immediately.

    This should end the family of bugs where we call bufferevent_free()
    while a pending callback is holding a reference on the bufferevent,
    and the callback tries to invoke the user callbacks before it releases
    its own final reference.

    This means that bufferevent_decref() is now a separate function from
    bufferevent_free().

commit db08f640d543bd4ef32ffe1f83c8aeca77bb0ce0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 20 12:55:59 2010 -0500

    Suspend read/write on bufferevents during hostname lookup

    When we're doing a lookup in preparation for doing a connect, we
    might have an unconnected socket on hand, and mustn't actually do
    any reading or writing with it.

commit 4faeaea90e5d7a5d76acd8891ba88d4ed099edbd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 19 03:39:50 2010 -0500

    Clean up formatting: function/keyword spacing consistency.

    - Keywords always have a space before a paren.  Functions never do.

    - No more than 3 blank lines in a row.

commit e5cf98795e3526fadd9e779d4368ed6fbafd6e91
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 17:46:56 2010 -0500

    Clean up formatting: remove trailing spaces

commit e5bbd40ad7f66f80170454683342076ec1e92d31
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 17:41:15 2010 -0500

    Clean up formatting: use tabs, not 8-spaces, to indent.

commit 8fdf09c09d2f92d7bc1a333b24a6490f65d5369c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 17:08:50 2010 -0500

    Clean up formatting: Disallow space-before-tab.

commit 7515de91fe6c721d304d06cedc8af8d334916eaf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 14:50:44 2010 -0500

    When connect() succeeds immediately, don't invoke the callback immediately.

    We need this to get unit tests to pass on freebsd.

commit b72be50d7a3ff0f69f440edafd5ad5fd86e0c2d9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 13:52:04 2010 -0500

    Add some headers to fix freebsd compilation

commit 1ba6bed89a342d7485aadeacd8f9ff6dd1c2eeac
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 13:50:15 2010 -0500

    Add the "compile" script to gitignore.

commit 48a29b681619bfd431e987c7cbd623121ef91b13
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 01:43:37 2010 -0500

    Add a unit test for secure rng.

    Mostly, this is just to make sure our arc4random_buf() implementation isn't
    dumb.

commit ff2a134d6e2ab74f2aa3eb5832128478202dd137
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 00:54:44 2010 -0500

    Fix getpid() usage on Windows

    On Windows, getpid() is _getpid(), and requires that we first include
    <process.h>.  arc4random.c previously didn't know that.

    Actually, I question whether arc4random needs to do its getpid() tricks
    on Windows.  They exist only so that we remember to re-seed the ARC4
    cipher whenever we fork... but Windows has no fork(), so I think we're
    in the clear.

commit cb52838fc501b1c18eec6bad367d29e87654d45b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 18 00:27:35 2010 -0500

    When working without a current event base, don't try to use IOCP listeners

    This fixes a bug turned up with the http unit tests, where we create
    the evhttp object using an implicit (NULL) event_base.  This failed
    pretty badly when we tried to use IOCP-based listeners.  We could
    hunt for the current base from inside listener.c in the future, or
    get the iocp base some other way, but for now this is probably the safest
    solution.

commit 32c6f1bacdb40f0d1b57aa6e8b2ce4eaf3979d08
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 15 19:54:15 2010 -0500

    Construct Windows locks using InitializeCriticalSectionAndSpinCount

    Previously we were using InitializeCriticalSection, which creates a
    lock that blocks immediately on contention and waits to be
    rescheduled.  This is inefficient; it's better to wait for a little
    while before telling the US to reschedule us, in case the lock becomes
    available again really soon (since most locks mostly do).

    Good pthreads implementations do this automatically.  On Windows,
    though, we need to call this magic function, and we need to pick the
    spin count ourselves.

commit ca46d25b01aaf28b319965ee03b8df7816101767
Merge: 7116bf2 e15e1e9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 17 23:02:28 2010 -0500

    Merge branch 'arc4random'

commit e15e1e9486b12b6790ecb4d5d6a23d049a713826
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 17 22:54:43 2010 -0500

    Add the arc4random.c license to the LICENSE file.

commit 7116bf231433d565da33cee3b7292e212e026c7d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 15 21:03:52 2010 -0500

    Fix two unlocked reads in evbuffer.

    Some initializers (in evbuffer_read and evbuffer_commit) were reading
    the last and/or previous_to_last fields without grabbing the evbuffer
    lock.

    This may fix a hard-to-trigger race condition or two.

commit aae7db5256e26ef70ba420a1d8f03eb1037221f8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 15 17:53:24 2010 -0500

    Update event-config.h version number to match configure.in

commit 60753da0e941f400ef02c5ea93abad616c9fd302
Merge: 63e868e 2f782af
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 15 17:07:26 2010 -0500

    Merge commit 'niels/http_close_connection'

commit 63e868e69f404112505e64067a870890c98e3d94
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 15 16:45:19 2010 -0500

    Increment the submicro version number.

    We've changed a couple of APIs introduced in 2.0.1-alpha, so it
    behooves us to give high-needs apps (like Tor) a way to tell we've
    done this.

    Sensible apps will just say "is it 2.0.3-alpha or 2.0.4-alpha" and
    ignore the existence of 2.0.3-alpha-dev, which is just as it should
    be.

commit 2f782af35b0f17615a43fff0ddc34cde5da39268
Author: Niels Provos <provos@gmail.com>
Date:   Sat Feb 13 17:04:17 2010 -0800

    validate close cb on server when client connection closes

commit e8a9782c1d8a87efb66878c59f4da401da585f43
Author: Niels Provos <provos@gmail.com>
Date:   Sat Feb 13 16:59:37 2010 -0800

    clean up terminate_chunked test

commit 4ec8fea68e59f5e847f3f31af28f7c1f9c9cdccb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 13 00:11:44 2010 -0500

    Make RNG work when we have arc4random() but not arc4random_buf()

commit 3fe60fdf478101cec0f06a3fc4e1f69aa570ef6e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 12 23:40:13 2010 -0500

    Use off_t for the length parameter of evbuffer_add_file

commit d4de062efcf3facf451c826deee9240fac478bfd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 10 17:19:18 2010 -0500

    Add an arc4random implementation for use by evdns

    Previously, evdns was at the mercy of the user for providing a good
    entropy source; without one, it would be vulnerable to various
    active attacks.

    This patch adds a port of OpenBSD's arc4random() calls to Libevent
    [port by Chris Davis], and wraps it up a little bit so we can use it
    more safely.

commit 1dd7e6dc3aeff29f9de44678d2aeea3bb82e4f24
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 5 01:16:23 2010 -0500

    Remove the 'flags' argument from evdns_base_set_option()

    The 'flags' argument made sense when passed to
    evdns_(base_)?parse_resolv_conf when it said which parts of the
    resolv.conf file to obey.  But for evdns_set_option(), it was really
    silly, since you wouldn't be calling evdns_set_option() unless you
    actually wanted to set the option.  Its meaning was basically, "set
    this to DNS_OPTIONS_ALL unless you want a funny surprise."

    evdns_base_set_option was new in 2.0.1-alpha, so we aren't committed
    to keeping it source-compatible.

commit 6810bdb10156f5fda1c8172114ea22c61da6e4c5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 5 13:50:51 2010 -0500

    Always use our own gai_strerror() replacement.

    This is necessary if we have any errors that the platform gai_strerror()
    doesn't know how to handle.

commit c18490e6429cf5b2c476d3aee26fa046d2b6f8a7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 5 01:09:01 2010 -0500

    Add a check to make soure our EVUTIL_AI flags do not conflict with the native ones

commit cfe7a9ff4cb1eb3bc321fda904e5d5dfe8e7c1db
Merge: a7a9431 3978180
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 4 10:15:39 2010 -0500

    Merge remote branch 'niels/http_chunk'

commit a7a943106cc45cc8d9bbfe813cbcf463a9647e87
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 23:49:22 2010 -0500

    Fix some additional -DUNICODE issues on win32.

    Brodie's patch didn't catch the ones that were new since 1.4.

commit 000a33ec83daec1c37c84a4370f509b97585dc37
Author: Brodie Thiesfield <brofield2@jellycan.com>
Date:   Wed Feb 3 23:27:40 2010 -0500

    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.

commit 397818011b6a0a5f17cb1243e2e46ee3d3612382
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 3 16:54:18 2010 -0800

    make evhttp_send() safe against terminated connections, too

commit e2d15d81c38925b30891751505ad20679d35d4fd
Merge: 60742d5 93d7369
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 17:52:55 2010 -0500

    Merge remote branch 'niels/http_chunk'

commit 93d736910616ad32e6d8c2f7f377b12f5848f5d5
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 3 14:34:56 2010 -0800

    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.

commit 60742d581bef0e8c234c2ce7343a59556a1af2c9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 17:01:45 2010 -0500

    Add the rest of the integer limits, and add a test for them.

commit 8f654678484b7c4ad95626593c0ccdc696d841e8
Merge: 85047a6 ec34533
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 16:25:34 2010 -0500

    Merge remote branch 'github/http_listener'

    Conflicts:
    	http.c

commit 85047a69836391bf095b98c36ec2b17876b2e325
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 15:12:04 2010 -0500

    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.

commit aba1fff33a9c1060a6a721f01f4d09c884a4ed5d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 14:37:42 2010 -0500

    Add EV_*_MAX macros to event2/util.h to expose limits for ev_* types.

commit da6135e356b4ff8489b7810682a70d5a70ac7197
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 02:09:19 2010 -0500

    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.

commit 27c9a40f15701244bca209f05abc07792499dbb4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 02:08:08 2010 -0500

    Fix a dumb typo in ev_intptr_t definitions.

    We said "#define ev_uintptr_t" twice instead of ever saying
    "#define ev_intptr_t".

commit e244a2ea7478c67352f32f89c6af32484e2c69c4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 01:26:07 2010 -0500

    Add the msvc-generated .lib files to .gitignore.

commit 6c21c895d9943f2be9662f71ea425cde8cf24658
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 01:22:44 2010 -0500

    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.

commit f6b269498af6538d3c2a0c3bf0dae4630584c66a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 3 01:16:47 2010 -0500

    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.

commit d38a7a19316002da9e9184402f9252e11766712b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 2 15:44:10 2010 -0500

    const-ify a few more functions in event.h

commit f4190bfb8553387038ce773947caee047450e9f4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 27 01:47:36 2010 -0500

    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.

commit d60a1bd50c8388f6f74522bf0eadb3fe37d6e95a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 27 01:46:41 2010 -0500

    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.)

commit becb9f9cd320d9b3ac571ffc788a01423568e9d0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 27 01:46:23 2010 -0500

    Add a new "hello world" sample program

commit 137f2c602f440327b10e68f5af4e575e23d82362
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 26 12:08:34 2010 -0500

    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;
       }

commit cef61a2f1b6562b0576c56d5fe6e1717962e8755
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 26 12:08:17 2010 -0500

    Use ev_[u]intptr_t types in place of [u]intptr_t

commit 1fa4c81c71517c0b530b71cc6dd4d1812cab5996
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 26 12:06:41 2010 -0500

    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.

commit 439aea0d072b98daf13ebe3d6eff8ab8ee5bd875
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 25 14:07:01 2010 -0500

    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.

commit 361da8f2022fb6c9ca937297f1769eb75a5e56e8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 25 13:54:14 2010 -0500

    Note a missing ratelim function

commit a66e947b8b7ea6da7e246a02a6abf759c63dbe38
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 25 13:44:56 2010 -0500

    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.

commit a19b4a05e690601dde105d0a301c75118f013a46
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 25 13:38:07 2010 -0500

    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.

commit cd17c3acd57b6b5bdedb31fc4152584fb6e089f7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 22 00:34:37 2010 -0500

    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.

commit 70a4a3ef141e8e5f21549669fc4f67ae75d150f1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 23 16:47:54 2010 -0500

    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.

commit 5c7a7bca4c7c3d0bbda4bb8e4ff9f1b335f55499
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 23 20:07:05 2010 -0500

    Fix windows and msvc build

commit c8c6a8978e57fcf17135782933b5174b950231bf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 16 15:24:58 2010 -0500

    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.

commit 918e9c5e722f53e14396df7596d326ecdb89093e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 23 16:38:36 2010 -0500

    Fix a number of warnings from gcc -pedantic

commit e2ca403faed26e0e709728ddc2efce1da8bd99d7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 23 16:23:45 2010 -0500

    Make it compile under gcc --std=c89.

commit ff3f6cd42b8d58d6db9c2ceb2cf9868d1a8f7ec0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 22 16:14:49 2010 -0500

    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.

commit 7296971b105ffc2bc9d20b0a24a3055c2ecf5e69
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 29 16:38:03 2009 -0500

    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.

commit 97a8c79006d41b8196e37e0c64db45e70578e70e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 22 00:34:21 2010 -0500

    Fix compilation of rate-limit code when threading support is disabled

commit 26e1b6f298f4bb66d6d684ed23a468bb8d3f4a37
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 21 01:51:40 2010 -0500

    Remove some commented-out code in evutil

commit 8d4aaf9086b721c0379891ca4a1fea8736f19d8f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 20 12:56:54 2010 -0500

    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.

commit 068395038423cc42e05f7cd745f00e58b16a5f35
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 19 14:01:36 2010 -0500

    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.

commit 706700674c303ce32e23ead78a4b8ce2bc6d2d55
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 19 13:55:53 2010 -0500

    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)

commit 4b9f307d8d584c91ea606af687528199ea072aad
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 15 10:26:25 2010 -0500

    Add a forgotten header (changelist-internal.h)

commit 854645797b1dcef69ce551ac52599c2708da2901
Merge: 3225dfb 78a50fe
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 14 23:28:16 2010 -0500

    Merge commit 'niels/http_dns'

commit 78a50fe04cdbe3c69abdef7d1f15c6d09cd21f15
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 14 17:39:54 2010 -0800

    forgot to add void to test function

commit 26714ca19f7754c6ddfda7ebdde4d76fc21d2c1f
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 14 17:05:00 2010 -0800

    add a test for evhttp_connection_base_new with a dns_base

commit b8226390bcc865ad182449f9dc4ce9d332f83545
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 14 16:53:25 2010 -0800

    move dns utility functions into a separate file so that we can use them for http testing

commit 5032e52680f751ce64b3bda4fa4439bebfd13bb0
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 14 15:42:07 2010 -0800

    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

commit 3225dfb91d73a82939d6e4f848cc7bffb6a3ba5c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 14 17:04:08 2010 -0500

    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.

commit 45e5ae3717aa238050a1eb0148beb83f2711c743
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 14 16:31:05 2010 -0500

    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.

commit 27308aae4d921ecc286ab7a734693c2e27737a99
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 14 16:30:40 2010 -0500

    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.

commit ec34533a9c5aafab741e29e1f8af73654f5e767a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 30 00:41:03 2009 -0500

    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.

commit c698b77d197b809e606ee56881330af41c02fc04
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 30 00:11:27 2009 -0500

    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.

commit a334b31c6f4fac24eb30048edb16b188a3ee2250
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 14 14:46:16 2010 -0500

    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.

commit 94131e92b827ab2b46a4cb7ded52cdc143f807a8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 12 15:58:36 2010 -0500

    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.

commit b9f43b231fe738789110f99d7045f2535986e997
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 11 20:47:36 2010 -0500

    Add a comment on evthread_enable_lock_debuging.

commit 6cc79c6b40501e32360386fcd7f9e013d0804bda
Author: Pavel Plesov <mclap@users.sourceforge.net>
Date:   Mon Jan 11 19:04:11 2010 -0500

    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

commit 510ab6bce0783e49b6e52e8f00b456dd95e003e5
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Wed Dec 30 19:24:39 2009 -0200

    Comestic changes in evconnlistener_new(), new_accepting_socket(), accepted_socket_invoke_user_cb() and iocp_listener_enable().

commit fec66f96850b77f77f720d3983ae98fc3594f282
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Wed Dec 30 19:22:23 2009 -0200

    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.

commit 4367a33a205c64df92e604aa3c4b01ac40aa821d
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Wed Dec 30 19:09:14 2009 -0200

    Fixed a fd leak in start_accepting(), plus cosmetic changes

commit 2f33e00af3e617d4a1fbb22de37f7c382de6961b
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Fri Jan 1 04:13:05 2010 -0200

    Fixed a memory leak on windows threads implementation. The CRITICAL_SECTION was not being free'd in evthread_win32_lock_free().

commit 66c02c7826ed7b65ddbd071c6ac0a86b1407ebc4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 8 04:02:19 2010 -0500

    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.

commit 72dd666777d4e341fc5c066cd7dc1975d0dd0090
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Dec 7 17:21:41 2009 -0500

    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.

commit 0f7144fd8b05e95788ac2877caaf2b7c4688bf82
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Dec 7 17:21:13 2009 -0500

    Refactor code from evdns into a new internal "read a file" function.

commit eaaf27f1f7b834bf60a1003c4d9c32a9a346b1dc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 6 18:41:46 2010 -0500

    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.

commit 29151e65b754eb254e6cc3596f006a2de85fd2fb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 6 18:42:59 2010 -0500

    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.

commit ba2945f9314fa2f81afe09284d21724d2b5dc31d
Merge: 0546ce1 165d30e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 6 17:59:44 2010 -0500

    Merge branch 'ratelimit'

    Conflicts:
    	bufferevent_async.c

commit 0546ce11e88c6c8b20c3ac85cb05fb0155e73a59
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Wed Dec 30 05:03:54 2009 -0200

    Eradicated the last free() call. Let mm_free() take care of deallocation.

commit 165d30e31a167215c03a9104423f2767c9ff9c9a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 30 14:29:56 2009 -0500

    Fix compilation of rate-limiting code on win32.

commit 885b42734c2360e95b9acb7a5b202262f24b7626
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 30 13:50:52 2009 -0500

    Fix test-ratelim compilation on Linux.

    I'd forgotten to include time.h, and to link against libm.

commit 78ed097267f2db83c9b05915c76b5287cb2c89f7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 30 11:58:36 2009 -0500

    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.

commit 2e8eeea3e86b1f577e34ef2bc4f7099d848ae787
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 29 19:50:03 2009 -0500

    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.

commit 0b151a9fa1365ad9f6f2e58fcfcfb36840707403
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 29 18:11:52 2009 -0500

    Whitespace fixes in test.sh

commit 7dfbe94aa3873c7e5426deb4a1684a0423c85d41
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 29 18:07:51 2009 -0500

    Allow test.sh to be run as ./test/test.sh

commit c382de6421e1f2330105f74e2a465cf7cd1bfe23
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 29 17:59:55 2009 -0500

    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.

commit 1e56a32d081a68d03c8ad2a923f702f2a034e76b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 29 16:04:16 2009 -0500

    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.

commit ee4953f89e8b6505bdd7899795b2b7d2395ad4d5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 29 16:03:30 2009 -0500

    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.

commit d0939d2b971417cd5714b535dabfdbd4213b26cb
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Tue Dec 29 16:21:26 2009 -0200

    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.

commit 4df7dbcbdfc9bf169f70b3e74e0a3ec824065bf3
Author: Jardel Weyrich <jweyrich@gmail.com>
Date:   Tue Dec 29 16:19:24 2009 -0200

    Adjusted fcntl() retval comparison on evutil_make_socket_nonblocking().

    Apparently, a successful return value on F_SETFL is "anything but
    -1".

commit 8111fac0650c6e4dbb296dfc8f63453e4532f30b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 29 14:38:35 2009 -0500

    Add missing thread imports so that evport.c will build

    When I made the changes to release the base lock around the call to
    port_getn(), I didn't add evthread-internal.h to the includes in
    evport.c would build, and I didn't catch it since I haven't got a
    Solaris host to build on.  Tao Feng just reported this on
    Libevent-users.

commit 82743794d37b0ddece31c0d4f637d2f7d0896f2d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 24 17:47:14 2009 -0500

    Do not make bufferevent_setfd implicitly disable EV_READ and EV_WRITE.

    This obviates the need for BEV_SUSPEND_CONNECTING, and good riddance.

commit f0c0124e603945f4693ae1457c7b9ef2b08689bf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 23 07:54:13 2009 -0500

    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.

commit 737c9cd87b453d7371ea0b9774aa2bc51124c4eb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 27 13:16:54 2009 -0500

    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.

commit 47854a802a575b44291d27e4b57199942106cf62
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Dec 28 01:40:37 2009 -0500

    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.

commit 5a43df82b89f5f396d845ced49b9f3f65dee52ab
Author: Jardel Weyrich <jweyrich@users.sourceforge.net>
Date:   Mon Dec 28 16:03:47 2009 -0500

    Improve readability of evutil_unparse_protoname()

commit 0d64051f5b25ed9987c675e3270e7a452b18adf2
Author: Jardel Weyrich <jweyrich@users.sourceforge.net>
Date:   Mon Dec 28 16:01:59 2009 -0500

    Fix a bogus free in evutil_new_addrinfo()

commit 24fb502f7027e59b61934f6f0f586494bd22fdba
Author: Jardel Weyrich <jweyrich@users.sourceforge.net>
Date:   Mon Dec 28 16:01:12 2009 -0500

    Fix an fd leak in evconnlistener_new_bind().

commit 4c8b7cdc64d054e18be3bd6e3f85d277927c639c
Author: Jardel Weyrich <jweyrich@users.sourceforge.net>
Date:   Mon Dec 28 16:00:05 2009 -0500

    Make evutil_make_socket_nonblocking() leave any other flags alone.

    Fixes bug 2922121

commit fee2c77919196b59cc5a50bc532b048844972784
Author: Dagobert Michelsen <dmichelsen@users.sourceforge.net>
Date:   Mon Dec 28 15:53:01 2009 -0500

    Fix compilation of devpoll.c by adding missing thread includes.

    (Bug 2922156)

commit a47d88d7c2743d4924d395102d3b8e4585f61d6e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 23 07:53:19 2009 -0500

    Replace some cases of uint32_t with ev_uint32_t.

    Spotted by Roman Puls.

commit 4a5b53432b1348740534e8a562a82f825d31e3ca
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 23 07:48:43 2009 -0500

    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.

commit 390e056152ba4f92476aebae56ad3bba7bbfee0b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 22 15:52:02 2009 -0500

    Fix up behavior of never-defered callbacks a little

commit 5846bf6cddbed402dbdf51e6268795cf41dbf9ba
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 22 15:51:39 2009 -0500

    Simplify the read high-watermark checking.

commit c69d5a5d3c5e8e3cf406e2919441f30c400cf9e1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 22 12:03:46 2009 -0500

    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.

commit 292467c02e9a9c679d5760c171c74aaa090e0308
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Dec 22 00:58:52 2009 -0500

    Use evutil_socket_t, not int, when logging socket errors.

commit c51bb3c342a02536a74ed8c4e739dc76dd145c70
Author: unknown <Nick Mathewson@.(none)>
Date:   Mon Dec 21 16:36:40 2009 -0500

    Fix a few locking issues on windows.

commit 5a112d3c0748d8e65c0fd36c2717dd3fe7c0639b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Dec 18 23:37:50 2009 -0500

    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.

commit 67995270ff75fb971f7043afa3c8072a8ea8fe3d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Dec 18 17:04:37 2009 -0500

    Drop install-sh from our git repo: a mismatched version could break "make dist"

commit a773df54cef1707984fe2c8b4b5866b35ae0c66d
Author: Joachim Bauch <jojo@struktur.de>
Date:   Fri Dec 18 16:24:41 2009 -0500

    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.)

commit a6adeca72ccf1202c013001136d6e3ee3ddc0764
Author: Joachim Bauch <jojo@struktur.de>
Date:   Thu Dec 17 12:38:46 2009 -0500

    Fix a segfault when writing a very fragmented evbuffer onto an SSL

    Fixes bug 2916328.

commit f6430ac1e32e77870cd7a10c1e788c217afc621e
Author: Evan Jones <evanj@mit.edu>
Date:   Tue Dec 8 17:02:24 2009 -0500

    Update sample/signal-test.c to use newer APIs and not leak.

commit ea6b1df28806129316f4a6f1ed333b3dcb6052fb
Author: Joachim Bauch <jojo@struktur.de>
Date:   Tue Dec 8 15:38:34 2009 -0500

    Only define _GNU_SOURCE if it is not already defined.

commit 70cdfe49fae83a3662fa72ff803f2ff5b486af9b
Author: Sebastian Hahn <sebastian@torproject.org>
Date:   Sun Dec 6 02:59:19 2009 +0100

    Fix compile on Snow Leopard with gcc warnings enabled

commit 7ae94450fde617375a0a79387bed0090550debf7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Dec 4 16:37:43 2009 -0500

    Fix a snow leopard compile warning in the unit tests.

    Reported by Sebastian Hahn.

commit 0d744aa1738f6f16324a07f6185107d28c4f7fe4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 23 18:34:32 2009 -0500

    Refactor our 'suspend operation' logic on bufferevents.

    There are lots of things we do internally in bufferevents to indicate
    "the user would like this operation to happen, but we aren't going to
    try until some other condition goes away."  Our logic here has gotten
    entirely too complicated.

    This patch tries to fix that by adding the idea of 'suspend flags' for
    read and write.  To say "don't bother reading or writing until
    condition X no longer holds," bufferevent_suspend_read/write(bev,
    BEV_SUSPEND_X).  When X no longer holds, call
    bufferevent_unsuspend_read/write(bev, BEV_SUSPEND_X).

    Right now, only the read-watermark logic uses this.

commit 438f9ed26c63bd47c9e1a5cbe52731996f05c3ea
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 23 15:53:24 2009 -0500

    Add the abilitity to mark some buffer callbacks as never-deferred.

commit 689fc091a58dc90826ec90c1ca90a5d21b7184ad
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 28 11:31:39 2009 -0500

    New EVTHREAD_TRY_LOCK function to try to grab a lock.

commit 2b7abf038fc22c3f2b0ab05066733ca388b1a3d0
Merge: b62d979 6c7c579
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Dec 4 13:49:27 2009 -0500

    Merge commit 'niels/dnscrash'

commit 6c7c5799a4a3d590fac4c3b87c1c813d9e92f61c
Author: Yasuoka Masahiko <yasuoka@iij.ad.jp>
Date:   Fri Dec 4 10:44:46 2009 -0800

    Fix a crash when reading badly formatted resolve.conf; from Yasuoka Masahiko

commit b62d979b6804f8a7d89e863d1ae46424b4205aed
Author: unknown <Nick Mathewson@.(none)>
Date:   Wed Dec 2 01:24:37 2009 -0500

    Update nmake makefile to build evthread.c

commit 31687b4d8a8e870762d6aa4b115cc36cbeb47773
Author: unknown <Nick Mathewson@.(none)>
Date:   Wed Dec 2 01:22:07 2009 -0500

    Fix regress_iocp.c usage of old lock allocation macros.

commit bd6f1babf7c93c1a4b32ad9bbb0022d203398ac3
Author: Roman Puls <puls@x-fabric.com>
Date:   Wed Dec 2 01:15:15 2009 -0500

    Fix up evthread compilation on windows

commit 56771a3eedb8c5ef55d67a707be91b1906e5a45b
Author: William Ahern <william@25thandClement.com>
Date:   Sun Nov 29 10:20:46 2009 -0500

    Valgrind fix: Clear struct kevent before checking for OSX bug.

    William's original commit message:

       Valgrind complains on startup because kq_init passes to kevent only
       a partially initialized structure. The code doesn't expect kevent
       to look at .fflags, .udata, or .data, I suppose, because it merely
       tickles the kernel looking for an error response. But perhaps
       that's unwarranted chuminess (notwithstanding that it's checking
       for an OS X bug), and needless noise nonetheless.

commit 0cd3bb9f3a53cce9a64ce1536d6e171848e8da59
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 27 17:22:19 2009 -0500

    Improved optional lock debugging.

    There were a couple of places in the code where we manually kept lock
    counts to make sure we never accessed resources without holding a
    lock, and that we never released a lock we didn't have.  The
    lock-debugging code already puts counts on _every_ lock when lock
    debugging is enabled, so there is no need to keep these counts around
    otherwise.  This patch rewrites the ASSERT_FOO_LOCKED macros to all
    use a common EVLOCK_ASSERT_LOCKED().

    We also teach the lock debugging code to keep track of who exactly
    holds each lock, so that EVLOCK_ASSERT_LOCKED() means "locked by this
    thread."

commit 2df1f82bfa1b432a277b0e1f8fc65aed7898f5e5
Author: Zhuang Yuyao <mlistz@gmail.com>
Date:   Fri Nov 27 16:02:49 2009 -0500

    Fix an evdns lock violation.

    Original message:

       evdns contains a bug related to thread lock.

       enable thread lock by evthread_use_pthreads() will cause successive
       evdns_base_resolve_ipv4() (and other resolve functions i think) to
       hang on EVDNS_LOCK(base) after one or several successful call to
       evdns_base_resolve_ipv4().

commit da1718b28992076e5cceb68e1715244a7dbd9669
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 27 16:00:59 2009 -0500

    Fix a locking bug in event_base_loop()

    We previously were releasing the lock when we exited the main loop
    in some ways, but not in others.

commit d84d8385cda1bf795a927a019b26db8bb9d0a4c4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 27 15:24:32 2009 -0500

    Fix two use-after-free bugs in unit tests spoted by lock debugging

commit 76cd2b70bb64962636cba0073571d0694b9c237a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 27 16:44:47 2009 -0500

    Stop passing EVTHREAD_READ and EVTHREAD_WRITE to non-rw locks.

    Previously, our default lock model kind of assumed that every lock was
    potentially a read-write lock.  This was a poor choice, since
    read-write locks are far more expensive than regular locks, and so the
    lock API should only use them when we can actually take advantage of
    them.  Neither our pthreads or win32 lock implementation provided rw
    locks.

    Now that we have a way (not currently used!) to	indicate that we
    really want a read-write lock, we shouldn't actually say "lock this
    for reading" or "lock this for writing" unless we mean it.

commit 347952ffe0039369ff4e7c94c4e27e7333ba8ecb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 27 15:20:43 2009 -0500

    Revise the locking API: deprecate the old locking callbacks and add trylock.

    Previously, there was no good way to request different kinds of lock
    (say, read/write vs writeonly or recursive vs nonrecursive), or for a
    lock function to signal failure (which would be important for a
    trylock mode).

    This patch revises the lock API to be a bit more useful.  The older
    lock calls are still supported for now.

    We also add a debugging mode to catch common errors in using the
    locking APIs.

commit e1ffbb82e34d786d07a5acdb16077f6526f610c3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 21 01:11:49 2009 -0500

    Fix memory-leak of signal handler array with kqueue.

    It turns out that kqueue_dealloc wasn't calling evsig_dealloc()
    (because it doesn't use the main signal handler logic) so the sh_old
    array was leaking.

    This patch also introduces a fix in evsig_dealloc() where we set
    the sh_old array to NULL when we free it, so that main/fork can pass.

commit 07e9e9b4b1d6c29fbca214f105567717e29ade2b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 20 16:50:55 2009 -0500

    Parenthesize macro arguments more aggressively

commit f32b57505e7221db068979e22ade5518aa7b4559
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 20 16:38:01 2009 -0500

    Add a warning about the use of event_initialized.

commit 91fe23fc08b2b8e42140c54cbb4757ae1375b9a3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 20 15:46:04 2009 -0500

    Tolerate code that returns from a fatal_cb.

    Also, replace more abort() calls with EVUTIL_ASSERT() or event_errx.

commit 94d00651f458fdff584037900ad976419583ee4a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 20 12:56:29 2009 -0500

    Add stub header for 2.0.4-alpha changelog.

commit 0af10d5695ab987678b59e1dcdd22b5cb3695044
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 20 12:46:00 2009 -0500

    Add more people who wrote patches to the acknowledgments

    The names came from grepping ChangeLog for 'patch/code from/by'.

commit 0b4272681f35bb516594b88cf9437a24996d585b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 20 12:37:47 2009 -0500

    Improve the README with more information and links.

    (Also, try to test out the new commit script.)

commit ba3407142b07f7d9ea7dd61ff9873d2a6f639f8d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 20 12:17:14 2009 -0500

    Add a .gitignore file.

    .gitignore plays the same role in Git as the svn:ignore property does in
    subversion.

commit 505040a2b5d41834d69d3412a03bd2e20f6d8598
Author: Niels Provos <provos@gmail.com>
Date:   Fri Nov 20 00:18:35 2009 +0000

    call it 2.0.3-alpha

    svn:r1556

commit f169153956d9aa578b96d50cd574c47ee8fd7511
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 19 23:08:50 2009 +0000

    Remove most calls to event_err() in http and deal with memory errors instead

    svn:r1555

commit 986500de4db591134832923f5dd8d78477a62f2e
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 19 22:02:33 2009 +0000

    nick found a race condition in the pthreads test case

    svn:r1554

commit b8f222e055bbba81790ebf13d294cc30a292c49b
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 19 21:14:31 2009 +0000

    On FreeBSD and other OSes, connect can return ECONREFUSED immediately; instead of failing the function call, pretend with faileld in the callback.

    svn:r1553

commit bdfe72f3c5fe085806e53acc5d1bf8d39d16e252
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 19 00:21:48 2009 +0000

    Documentation adjustments

    svn:r1552

commit 7511b6a97c7eb055c3b886010423d85e0106f847
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 19 00:21:38 2009 +0000

    Fix a spelling error and remove some dead code

    svn:r1551

commit f070a4aed2129a722f10d23e6defc4f901143fea
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 18 23:18:55 2009 +0000

    Do the proper hack for the (Open)BSD getaddrinfo quirk.

    From evutil.c:

       Some older BSDs (like OpenBSD up to 4.6) used to believe that
       giving a numeric port without giving an ai_socktype was verboten.
       We test for this so we can apply an appropriate workaround.  If it
       turns out that the bug is present, then:

        - If nodename==NULL and servname is numeric, we build an answer
          ourselves using evutil_getaddrinfo_common().

        - If nodename!=NULL and servname is numeric, then we set
          servname=NULL when calling getaddrinfo, and post-process the
          result to set the ports on it.

       We test for this bug at runtime, since otherwise we can't have the
       same binary run on multiple BSD versions.

    svn:r1550

commit 07ce7f9991551c571759deabebb7a72527b40840
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 18 21:17:00 2009 +0000

    Make our failing-connection bufferevent test more tolerant.

    I thought we had a way to do connect() that would never fail
    immediately, but always wait for a moment before failing.  It
    turns out that on FreeBSD it can fail immediately.  This is not
    FreeBSD's fault, or even a real bug anywhere but in the unit test.

    svn:r1549

commit cf749e227c9a064894502d2a04901f0a18edd96a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 18 21:16:53 2009 +0000

    Add a temporary workaround for an ssl bug found on FreeBSD.

    Basically, we only want to report the 'connected' event because of
    the socket connect() finishing when we have an actual socket
    bufferevent; on an SSL bufferevent, 'connected' means 'SSL
    connection finished.'

    This isn't FreeBSD's fault: it just has a connect() that tends to
    succeed pretty early.

    svn:r1548

commit 9bf124bff6d43fd9283c3ceb9629683ed790c136
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 18 21:16:47 2009 +0000

    Build correctly with mm replacement turned off.

    svn:r1547

commit 767eb70f5016cf65c3fad8e91ded8b4362bc79b0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 18 21:16:33 2009 +0000

    Fix compilation with threading disabled.

    svn:r1546

commit d7d1f1da09f32a14ff4c08dc0f1f0e0673ed5afd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 17 20:31:09 2009 +0000

    Move responsibility for IOCP callback into bufferevent_async.

    This patch from Chris Davis saves some callback depth, and adds proper
    ref-counting to bufferevents when there's a deferred evbuffer callback
    inflight.  It could use a couple more comments to really nail down what
    its invariants are.

    svn:r1543

commit 201d8d0bafeb2ba1388746ed745cd5d8defb3689
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 17 18:29:44 2009 +0000

    Clarify even more about various system-specific problems with getaddrinfo

    svn:r1542

commit 9151d000e674560a2034313d696b39fbe2adc30b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 17 03:36:43 2009 +0000

    Use the common-case code from getaddrinfo_common *always*; OS differences are just too huge.

    svn:r1541

commit 3451c870dad6dc3555cfb798149087adb9192b33
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 17 02:57:32 2009 +0000

    Never pass our weird flags to the system getaddrinfo.  Make sure there is no overlap between flag values.

    svn:r1540

commit 625a261a530cc273fba062ac59fd6b6ca9ddc8ad
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 17 02:40:14 2009 +0000

    OpenBSD demands that sys/types.h be included before sys/socket.h

    svn:r1539

commit 888007f9a4617db574b0455919b52867cc8ce64d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 17 02:38:19 2009 +0000

    Windows *does* have getservbyname, no matter what autoconf says.

    TODO: figure out why autoconf is confused about this.

    svn:r1538

commit 86f5742015c6ac5e83ffcf5b747cb6ca1139d066
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 16 22:25:46 2009 +0000

    Add two implementations of getaddrinfo: one blocking and one nonblocking.

    The entry points are evutil_getaddrinfo and evdns_getaddrinfo respectively.
    There are fairly extensive unit tests.

    I believe this code conforms to RFC3493 pretty closely, but there are
    probably more issues.  It should get tested on more platforms.

    This code means we can dump the well-intentioned but weirdly-implemented
    bufferevent_evdns and evutil_resolve code.

    svn:r1537

commit 72bafc175a75f8775eae9ab7b3c828395bb0eaa6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 16 22:23:55 2009 +0000

    Remove the stupid brokenness where DNS option names needed to end with a
    colon.

    svn:r1536

commit f9de8670fd1a88f0db898acd46de38a73d764c18
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 16 22:23:06 2009 +0000

    Fix a declaration of __func__ in rpcgen.

    svn:r1535

commit 18a8cfac390a67ac3279b0119aa55d3c2015a00b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 15 19:00:12 2009 +0000

    Prefer calloc(a,b) to malloc(a*b).  via openbsd.

    svn:r1531

commit 629a61339823cd65351c7aeb294b3337db06dccb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 15 18:59:59 2009 +0000

    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

commit e2b2de79bfb3e50bfcb943b145ac45e7f68c9616
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 15 18:59:48 2009 +0000

    Use arc4random() for dns transaction ids where available.  Patch taken from OpenBSD

    svn:r1528

commit c79a45e0097dd34c7f7024598a5b4c3b1b0fb422
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 14 21:54:30 2009 +0000

    Fix a couple of event_debug calls.

    svn:r1527

commit 74871cacb8318116e2cf24958e1456e9b429542b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 19:37:27 2009 +0000

    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

commit cdf58009fc7c81e9b353cf953c8eda94337644fb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 19:37:21 2009 +0000

    Change an OOM err to a warn in event_tagging.c

    svn:r1524

commit 26573d3de3e35e956fc79eb8c8e3849ca714c109
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 19:37:15 2009 +0000

    Change an err to a warn in bufferevent_openssl

    svn:r1523

commit 37e23f806be8665f35b83ae61440faece86e7e61
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 18:50:20 2009 +0000

    Patch from Ryan Phillips: accept ipv6 addresses returned by getaddrinfo in http.c

    svn:r1522

commit b2fe4aedaae559761b5818a964b63deae02dbdf0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 18:36:34 2009 +0000

    Unit tests for got_break and got_exit.

    svn:r1521

commit e88079a82c52c213b0e335c52a25a00cd9fd1605
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 18:30:57 2009 +0000

    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

commit 59be8942c9e9b30ebc67b83bdf27866d5efb4636
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 18:30:48 2009 +0000

    Make sure that common timeouts are inserted in-order.

    This code should be a no-op, except under strange thread contention
    situations.

    svn:r1519

commit ab96b5f3f5247c7c7500a64536ceb345e0b8a65f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 18:30:33 2009 +0000

    Add an option to disable the timeval cache.

    svn:r1518

commit 693c24ef9d01c55c81f50fc1d70950dcfa2a524e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 9 17:16:30 2009 +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

commit 784b8773a452f36a68b71a42104e241074d208ee
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 6 21:46:57 2009 +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

commit 4d48cf61a2734aa37a7a5904f5c1454a62aa943a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 6 21:13:25 2009 +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

commit 5ec43fe446d399464125d7cc0d5d1182756c953f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Nov 6 17:12:39 2009 +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

commit ae5fbf492f2ba43f05063179a583f4711ddfec20
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 22:24:21 2009 +0000

    Actually add the new dns-example.c code. :p

    svn:r1512

commit d2e7e65d215a5de8a77ec5e4b7c0d79ddaba0107
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 22:19:09 2009 +0000

    Move the evdns sample code into the sample directory and fix it not to use any deprecated APIs.

    svn:r1511

commit ac633aebdfb094b19c8c322614e3fb4739dfb0d4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 21:22:23 2009 +0000

    Fix some build warnings on MSVC, mostly related to signed/unsigned comparisons.

    svn:r1510

commit 43ba66936aa24bde5e2e77a62365e3711cc427c2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 20:45:07 2009 +0000

    Export nmakefiles in source distribution.

    svn:r1509

commit 4ca9efeaef6a56ae4109053f20e21781bd2c5ea0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 20:40:11 2009 +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

commit 25a5e6819d9f49fd143308fad0d9189a8eef8a97
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 20:37:19 2009 +0000

    Build fixes for MSVC

    svn:r1506

commit d34019289ca58deb0c1c182f5fbd3cb6b93774ee
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 18:49:08 2009 +0000

    Rename win32.c to win32select.c, and take it out of the WIN32-Code ghetto.

    svn:r1504

commit d14c3b4570fd3e5e9db827d9b97e4eed69511c83
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 18:25:46 2009 +0000

    Fix another ssize_t user

    svn:r1503

commit a0b302631ff9ca2c440365a6ba70e78f0c3b11f2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 18:07:27 2009 +0000

    Remove win32-code/config.h.  It was apparently confusing.

    svn:r1502

commit 34f28e08b3eda22033089c5ca72b5650fa38a21b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 5 15:57:22 2009 +0000

    Fix a few types to use compatible versions

    svn:r1501

commit 47bad8abb70c49f1d2bc1ddbc13ec7ec96bc20f5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 4 20:17:32 2009 +0000

    Implement size limits on HTTP header length and body length.

    Patch from Constantine Verutin, simplified a little.

    svn:r1500

commit 86db1c851be804b13aadebcc0b1a21a4493192dd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 4 05:19:26 2009 +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

commit 6ca32df11ac92a4c3ab417d656253353e28a7dc3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 4 03:54:05 2009 +0000

    Add a missing include for win32.

    svn:r1498

commit f9c65580f0438dacb741cabe3ab96b89422aea33
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 3 20:42:32 2009 +0000

    Oops; add missing bufferevent_evdns.c file

    svn:r1497

commit 0b9eb1bffbd5af7d1dc6987f1a859e5f1e8c25e8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 3 20:40:48 2009 +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

commit fcc7668c008ce25d47834019c3d081819851c32d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 3 20:05:06 2009 +0000

    Fix one IOCP-callback signature I missed

    svn:r1495

commit 0fd0255fa4b1e60cd49324f79472657c1f1ed24f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 3 19:54:56 2009 +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

commit 0aa6f5136a10d4d6426ab4abb10ed4cbbde208bd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 20:59:13 2009 +0000

    Fix remaining AcceptEx issues.

    svn:r1492

commit e794d716a3ed525ca427d35cb1c80fc6bb9f8543
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 20:20:40 2009 +0000

    Clean up acceptex code some more: add locking, single-threading, enable/disable.

    svn:r1491

commit a84c87d76abcd023ddfb2c0985a65bafd522682b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 19:51:26 2009 +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

commit 9a772148f2efcbaadbe8ccc50a2bd5d0004f971d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 19:31:29 2009 +0000

    Compilation and correctness fixes for IOCP listener code.

    svn:r1489

commit 8283b2f0dcba87974db767e4838434896a92d402
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 19:30:25 2009 +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

commit 5f1d6e640f965d468122598b92be609a483d1923
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 17:42:16 2009 +0000

    Add more IOCP tests.  They might not pass yet.

    svn:r1487

commit 5d2c1650f3c39e89c0c7d687a2fec3f6f66955e4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 17:42:09 2009 +0000

    More refactoring for IOCP listener code

    svn:r1486

commit e90e14fb94f7bb54f822dd5d3bfbf476649451e5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 16:31:13 2009 +0000

    Call the bufferevent_flush_mode variable "mode" more consistently in the documentation. Spotted by Alex.

    svn:r1485

commit 7f0ad2f63cd5c7e41a1916e4d8a3a5606880b429
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 2 16:17:06 2009 +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

commit 315fde1a70da1c1e4b9565f38f52680e23114a84
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 30 22:43:53 2009 +0000

    Remove some duplicate code in kqueue.c and fix a small memory leak.

    svn:r1483

commit 96c6956e0247f615d8afd25d79586dfa5b478ef0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 30 22:43:30 2009 +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

commit 516452b71a4450f7201bc1a6bd31878c68a81e57
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 30 21:08:29 2009 +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

commit 20f5bdfd6b9c0f51c56f55a9bd349c35576fafc8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 29 19:25:33 2009 +0000

    Refactor evconnlistener to allow multiple implementations; add an (incomplete, not-yet-integrated) IOCP implementation.

    svn:r1480

commit fa313f28c57769a819c8d4194180571c6772acf8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 29 18:30:43 2009 +0000

    Extract XP-only functions when initializing the IOCP port

    svn:r1479

commit 9976f1e74c1a285a591d8a80af61727af50b4961
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 29 17:11:12 2009 +0000

    reformat weird indentation in dns tests

    svn:r1478

commit 3c2198cb48724c1eac117db04dbebf32bb883077
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 29 17:10:36 2009 +0000

    Unit test for reverse ipv6 lookup

    svn:r1477

commit 5b3fb5bfa50a23d2a3d973a66b1a0d76195a3cca
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 29 16:35:20 2009 +0000

    More documentation and unit tests for event_tagging.

    svn:r1476

commit 1eadb3e3a299da5c384422792a672ff022870f4c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 29 16:35:15 2009 +0000

    Actually use the logic in select.c designed to make the out_sets threadsafe.

    svn:r1475

commit c70c25937e6c6f2d20cdf3d19f95dd80790935e5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 29 16:35:09 2009 +0000

    Unit test for strlcpy

    svn:r1474

commit e9098203f7df0a3c30db2c07cebfc3a9680f7c06
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 27 18:25:19 2009 +0000

    Fix from Chris Davis: get error-logging to be happy on win32.

    svn:r1473

commit 904b5721cb239fd6cc1dd52471f81b4c89f42cbb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 27 06:47:25 2009 +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

commit a2a7d1d12316c7e317e5f4bd3f8a18aa91027c95
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 27 05:16:32 2009 +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

commit d386dc89b52fbbe218f1ac192169fd07484c0d8d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 27 05:16:23 2009 +0000

    Refactor event_assing even more to avoid unnecessary calls

    svn:r1470

commit e9ee1057e63b33d833b83b404232a0ccde34ae56
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 27 04:25:45 2009 +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

commit 10cf631e841a9b4272ca62100257b51d6a519654
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 27 04:04:07 2009 +0000

    Do not add a newline to the end of log statements.

    svn:r1468

commit 369aafc4d785a7ac65aad138ded6c602bc9381fe
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 27 04:03:58 2009 +0000

    Refactor kq_init error handling.

    svn:r1467

commit ed0e91e02af2aa19ed0e7340c52f2f31686cc9b6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 27 04:03:50 2009 +0000

    New test flag to suppress logging for one test.

    svn:r1466

commit 7f10fac34296eb856118fd882cc12a576ed39a04
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 26 20:07:06 2009 +0000

    Note assert-related change in changelog

    svn:r1465

commit 2e36dbe1a6b1056917c85350e2743a6babe96aa2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 26 20:00:43 2009 +0000

    Use EVUTIL_ASSERT() consistently instead of assert.

    svn:r1464

commit 37c3456d70b343588acf09b38b6dde6e9745b2f8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 26 20:00:08 2009 +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

commit a8267663de2feb27051682cb51f9596f59613e5f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 26 19:59:51 2009 +0000

    API to replace all calls to exit() with a user-supplied fatal-error handler.

    Also, add unit tests for logging.

    svn:r1462

commit 38aec9ec7cb7d4bd135b0a02ce9f186871d1f0b9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 23 22:38:35 2009 +0000

    Tweaks to IOCP interface.

    svn:r1461

commit 7b10724901aa87d8f819e93796c020463a8ba9f1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 23 22:07:05 2009 +0000

    Fix my fix for the bufferevent_connect_fail() test.

    svn:r1460

commit 879420a711453a67c0421968e9592b6cc9f0aae2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 23 22:00:29 2009 +0000

    Expose a narrow window to the IOCP code.

    svn:r1459

commit c119e4a13ff171aafff9e0f27f11f8cae389880e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 23 17:40:00 2009 +0000

    Improve the behavior of le-proxy in a few cases.

    svn:r1458

commit fdd11c00bb7a90d2f11a8933baa577ac199f74e3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 19:21:05 2009 +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

commit b73ad7bc4504882f7b50ed72c2643653fdc43a61
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 18:48:22 2009 +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

commit 4fbac2a5aef7bc3dee065241f20f3140c4f57b7e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 07:00:19 2009 +0000

    Test failing case of bufferevent_connect().

    Code by Chris Davis.

    svn:r1455

commit d8164d0cfc5eda8101ad08008e3f3de2032b26a9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 07:00:14 2009 +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

commit b89b58b5f4ea91792883c84e2f7b98befbc1a3a0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 06:03:00 2009 +0000

    OSX compilation issues

    svn:r1453

commit c9c4ec26eeca16400b9bffab26a8dc655b7354d5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 05:36:27 2009 +0000

    Remove an EVBASE_RELEASE_LOCK that I missed.

    svn:r1452

commit ed748a48ba8ebd573a3e5d047c9de15958d8417a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 04:45:59 2009 +0000

    Fix win32 compilation.

    svn:r1451

commit 6b22e74aa187f2bbabb58652070af27fff6f547e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 03:54:00 2009 +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

commit 50825466821c87f55a7549df47086f7412a5a726
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 21 02:14:16 2009 +0000

    Fix windows compilation warnings.

    svn:r1449

commit e1c9b84ae6ae5de9fa03a8028a7336f65c5a1d61
Author: Niels Provos <provos@gmail.com>
Date:   Mon Oct 19 16:20:12 2009 +0000

    Fix compilation for listener.h for C++ - missing extern "C".  Patch from Ferenc Szalai.

    svn:r1448

commit b812563a6e8f735403e1f1fbcee1d56bd5ff5b4f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 16 13:20:16 2009 +0000

    Add a note that we should change previous_to_last to last_with_space

    svn:r1447

commit f3dee9e8be0240a344e75fb275bbc3fb7541274a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 16 13:20:09 2009 +0000

    Correct the signatures for the evmap_io_* functions to use evutil_socket_t.

    svn:r1446

commit e3fd294a6d2f498aa72e92fe4b005a28a1b312f1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 16 13:19:57 2009 +0000

    Spelling fixes in comments and strings.

    svn:r1445

commit 25af6954411e369c41d452af5e6d95b9d5c73558
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 14 00:46:47 2009 +0000

    When a bufferevent_connect() call fails, give the client an error callback.

    Patch from Christopher Davis.

    svn:r1444

commit fc83ca3c7086fe1e1988722b95295c96d89a4152
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 14 00:46:40 2009 +0000

    Fix some crash bugs when initializing evdns

    svn:r1443

commit e6b747c34a69fbd93e40cbf58530054522f7e5f9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Oct 12 21:06:30 2009 +0000

    Declare struct timezone in util.h so that borken mingw versions do not complain

    svn:r1441

commit 633f3fb7aa15b29063de0b26823d1660d2ce6dd2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 2 03:07:29 2009 +0000

    Add changelog for last commit

    svn:r1440

commit ba8a17714ead9f36424c4ecc21c009735d1408e5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 2 03:03:58 2009 +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

commit d5b640fc16e9d9e1e709ec73eb938de9eeff3f2c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 1 15:29:08 2009 +0000

    Apply Ka-Hing Cheung's event_base_got_[break|exit] patch, with locking and whitespace fixes.

    svn:r1438

commit 8e8d94a3e08d4cfa9cb817ae36fd4181edea84d2
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 24 22:18:19 2009 +0000

    Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec

    svn:r1436

commit 18fe400805699b6d60bfc26896294a34c6990756
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 23 23:51:26 2009 +0000

    Forward-port: fix android compilation

    svn:r1435

commit 2622e5ace2863e8e869254d9dba86549bbd9159b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 16 17:17:57 2009 +0000

    Fix the assert I added to epoll.c: spotted by Dmitry Novikov

    svn:r1432

commit c2ead9f173b7d3b40132920fbc62d2319e4b9176
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 11 21:02:19 2009 +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

commit 85255a63974bf41d153e06b34fa346bd2d2f08b2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 11 18:47:35 2009 +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

commit e3f89fa2753da08e4a7b55d5e9d288eea92cba40
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 11 18:21:57 2009 +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

commit 3b461a6d03927220eae00e232d26053c71afd60f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 11 18:21:37 2009 +0000

    Treat a negative number of bytes to read as the kernel saying "I don't know."

    svn:r1426

commit f65b8b0964bfd2653b5c6c9fbf1196310b77e084
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Aug 19 20:55:25 2009 +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

commit 2c1b0e442826baec932e614e8c730fd13ab3cd07
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 16 19:22:15 2009 +0000

    Fix build warnings and add changelog entry for evhttp patches.

    svn:r1424

commit c8b0fe4ad76bab55fd089ee1a01720e4af31c7f5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 16 19:22:10 2009 +0000

    Define evhttp_del_accept_socket

    [Patch from David Reiss]

    svn:r1423

commit 6c53334c65769acd79b423cb89bbd456c7c83977
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 16 19:22:04 2009 +0000

    Define evhttp_{bind,accept}_socket_with_handle

    [Patch from David Reiss]

    svn:r1422

commit 4bcd5646d8f754a38eec606e2dda37a9696160bb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 16 19:21:57 2009 +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

commit 0755833e8410bed8835f75344cc80a7fd6a703d4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 16 19:21:50 2009 +0000

    Minor documentation fixes

    [Patch from David Reiss]

    svn:r1420

commit 22bd5b4287fdad8a627b286516392078aebcdcf6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 16 16:40:42 2009 +0000

    Support sendfile on solaris: patch from Caitlin Mercer.

    svn:r1419

commit f22823982fe9e21bf49529c366b021183e52b826
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 14 20:07:35 2009 +0000

    New function to put an SSL bufferevent into a renegotiating state.

    svn:r1418

commit 46a61869ca066405c47ac5d8036e8c9c5a676f52
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 14 20:07:17 2009 +0000

    Disable whichever struct event we don't want during ssl handshaking.

    svn:r1417

commit 58b0708e1881e82a4abf660c7cd8693b17cb594a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 14 20:07:09 2009 +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

commit d17c720c052ea639521da7b9d2bb50ec6c3f1bf8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 14 20:07:01 2009 +0000

    Remove an extraneous puts().

    svn:r1415

commit eff09a299cb7759a63c988cf542b4eeff7ed0c8f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 14 20:06:48 2009 +0000

    tab/whitespace fixes in bufferevent_sock.c

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

    svn:r1414

commit bd26bace0d2f97efe04c20f9cd949edeb541963c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Aug 11 19:47:46 2009 +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

commit 7a55c48d775e94f158fb6db0470c9a68abbec068
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 9 20:18:00 2009 +0000

    Add a few missing changelog entries

    svn:r1412

commit 800f9aa607e4fd48d50615c10bb6f71d831c7071
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 9 20:17:29 2009 +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

commit 8a99083f0123765b6b73d7b5efccae1e88fff608
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 7 17:16:52 2009 +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

commit 0c09fe5adac221d2c74fa9891f39fef4600b7461
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 3 20:50:56 2009 +0000

    Add a couple more evdns tests.  Libevent is now, for me, at 80.02% coverage.

    svn:r1409

commit 94e8f9b9010e748cfccfaf3c6c46ff1f5009ed1f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 3 20:15:45 2009 +0000

    Another DNS unit tests, to handle reissues.

    The evdns module is now up to ~72% coverage; Libevent is up to nearly 80%.

    svn:r1408

commit dc1f5b1ee0ae0ebca6f6f2f5228814f3e0dd9ac6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 3 20:15:39 2009 +0000

    why say fprintf(stdout, X) when you can say printf?

    svn:r1407

commit 213dc2a2ef719a310de867cbae858e98360952d0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 3 20:15:32 2009 +0000

    Fix an annoying evdns crash bug, and add more unit tests for evdns.

    svn:r1406

commit a5006d80cd5ef4d1b38155ee790255ac54ec7e09
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 3 16:15:57 2009 +0000

    Unit tests for DNS search.

    svn:r1405

commit d41347722a8599d6daf82a765efe53de573afd2b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 31 17:35:42 2009 +0000

    Refactor evbuffer_readln() into a search-for-eol function and an extract-line function.

    svn:r1404

commit a26d2d1b87f373a4d4e48a91575fb6fd4163186a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 31 17:34:47 2009 +0000

    Refactor evbuffer_readln to use evbuffer_ptr; remove old evbuffer_iterator.

    svn:r1403

commit 6dc488bd7ee616c84dd2867e34ec6ad26e5f49ac
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 31 17:34:18 2009 +0000

    Improved coverage for evbuffer_readln()

    svn:r1402

commit 7c688dd9a2380a8af3f1903d34510ef3feaaa275
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 31 14:41:45 2009 +0000

    New function to expose bufferevent.enabled

    svn:r1401

commit 621aafd27a3aafaab6c061f0522a27d62390b3bc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 22:11:23 2009 +0000

    Export sockaddr comparison functionality.

    svn:r1400

commit cf54d74a651064f93d2fa4074b15abbb2da42b45
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 20:41:41 2009 +0000

    More unit tests for Openssl, including initializing with no socket. Up to 75% coverage.

    svn:r1399

commit d1a2254bf25e449cf7f0f989e0e9e05792fb585a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 20:41:31 2009 +0000

    Fix some bugs in bufferevent_socket_connect

    svn:r1398

commit 7a2a51a3a1ea6ece8bab492f9f494dece207eaf7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 20:41:21 2009 +0000

    Add unit tests for SSL session renegotiation.

    This tickles the write-blocked-on-read code, and in this case turned
    up a bug in it.

    svn:r1397

commit 595f7e3877c7597ce2349e725b901f0d5c4e4479
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 20:41:12 2009 +0000

    Always retry SSL_write() with the same number you told it last time.

    svn:r1396

commit eecefc50e77041c588b2c281f57b5609ae80885c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 20:41:00 2009 +0000

    Add a function to extract the SSL object from a bufferevent_openssl.

    svn:r1395

commit d5a3f1f11685af21bd38ffceddcb949b7997cd46
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 20:40:50 2009 +0000

    Set the SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag, and explain why.

    svn:r1394

commit 44715517e869afed7fb32419aecd7410b4ab458c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 20:40:40 2009 +0000

    Use SSL_do_handshake in place of SSL_connect/SSL_accept

    svn:r1393

commit 8a3007efb97f1b0dd1091a366cf341fad6417c7f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 17:01:38 2009 +0000

    More evconnlistener unit tests: bump its coverage from 71% to 83%.

    svn:r1392

commit 7c20a6ae5231971a49596d12d64beeb98e1562f0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 17:01:21 2009 +0000

    Export an ev_socklen_t.

    svn:r1391

commit 75fe762e03be63577ccbfa78baf9c78e8be40d7f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 17:00:56 2009 +0000

    Accessor function to get a listener's associated fd

    svn:r1390

commit 625116295a25e438114f137323d0b5db1c748b4c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 30 17:00:46 2009 +0000

    Add unit test for parsing addresses with bad ports.

    svn:r1389

commit 3c99c79df9509ce4da489e237ead4c8104af7b21
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 28 19:45:54 2009 +0000

    Changelog entry for msvc fixes.

    svn:r1388

commit 72ea534f8e0eb217695035b549f734eed1695d9e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 28 19:41:57 2009 +0000

    Export evutil_str[n]casecmp as evutil_ascii_str[n]casecmp.

    svn:r1387

commit a826a75800ce614a06ae53ddb95c54ccaf2f51d2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 28 19:41:48 2009 +0000

    Some tweaks to Brodie Thesfield's MSVC patch.

    svn:r1386

commit 5b5b880be7452eaf42d401f3ad54474ae60a9dbf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 28 19:41:39 2009 +0000

    Various MSVC cleanups from Brodie Thiesfield.

    svn:r1385

commit 12199fa7a51ee93479fa0db30c2f7b9c8159bb94
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 28 17:11:03 2009 +0000

    Fix segfault during failed allocatino of locked evdns base.

    We need to comb the rest of the code to make sure that we don't blindly wrap
    functions in LOCK(x), UNLOCK(x) when those functions might contain a FREE(x)
    in the middle.

    Rocco Carbone found and reported this bug.

    svn:r1384

commit f8b527e6a1b3a1cc2b90397b827bf219d0ba3aa6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 28 05:09:06 2009 +0000

    Fix a dumb bug where we would allocate too little memory in event_get_supported_methods().

    svn:r1383

commit 709c21c48ca541c75bf803e6801c335d8ae3d043
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 28 04:03:57 2009 +0000

    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

commit b06b2649b4c7f5feaedea97c31001c14708e4d1f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Jul 26 01:29:39 2009 +0000

    Make "deferred callback queue" independent of event_base.

    This way, we can more easily have an IOCP bufferevent implementation
    that does not need an event_base at all.  Woot.

    svn:r1381

commit 8cc68835245dd3f542d28299ecfa5c2bc3d471eb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jul 25 03:35:32 2009 +0000

    Fix the main/methods unit test to pass from "make verify".

    The problem was introduced when we changed the semantics of
    get_supported_methods() to reflect all the methods that exist.
    Previously, it had not returned methods disabled from the environment,
    but the test didn't know that.

    svn:r1379

commit 6fbeb9237c68df4ae2ea6e5119ca6d9b8bc0ca1e
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jul 25 03:23:46 2009 +0000

    call it 2.0.2-alpha

    svn:r1378

commit 8eb155a1c0812da33fceb47462c9380d71c320d3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jul 23 14:48:24 2009 +0000

    Fix build on platforms (like Solaris 10, reportedly) which lack a MAP_FILE.

    svn:r1375

commit 49de08ef35c77d44cbf7fb4698d0d91612f616ad
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 21 19:20:44 2009 +0000

    Push coverage of event.c a little higher

    svn:r1373

commit 59e8e959dcaa9208bf0fa107a5709fa65a660f72
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 21 19:20:25 2009 +0000

    Add clarifying "static" to definitions of fns in event.c

    svn:r1372

commit 670658ebd7485e61e32932d35be0e26900a447b8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 21 18:32:57 2009 +0000

    Correct the signatures for evdns_configure_windows_nameservers(), now that it is exposed.

    svn:r1369

commit f4775918cd4faeddc090e7755c259cfcf0e094c6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 20 14:55:51 2009 +0000

    Refactor evtag tests into their own suite.

    svn:r1366

commit e8400a43ca3f67e44e7593907353c6e5335c304e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 20 14:55:35 2009 +0000

    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

commit dc031990e083bef785ec107271559ccc60705873
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 20 14:55:07 2009 +0000

    Add strcasecmp tests to improve evutil coverage a bit

    svn:r1364

commit 1fb2e818a6273571c01aed5ccce30a5d846a1663
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 21:47:45 2009 +0000

    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

commit 9cf4ee7e17aa9bb9b53f9135ec2efa9e6563bf23
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 21:47:35 2009 +0000

    Fix a simple warning

    svn:r1362

commit d3bef1a1e3b93190ef8b1a4459f2c6fb9c205095
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 20:32:25 2009 +0000

    Finish implementing new convention that whenever an optional function is declared, a corresponding macro is defined.

    svn:r1361

commit a386fde321dd20874a31f8659fa7337b170415de
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 20:28:03 2009 +0000

    Checking for MS_WINDOWS rather than WIN32 is a Tor-ism. Fix that!

    svn:r1360

commit c02b305ae59a2ac8c01bce36c6c0dbc195503195
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 20:23:12 2009 +0000

    Trivial tests to exercise deferred and locking bufferevent code.

    These are done as variations of test_bufferevent_connect, since that
    one exercises event callbacks as well as read/write callbacks.

    The coverage for bufferevent.c is now up to about 87%, from about 70%.

    svn:r1358

commit 61f2a45de165edbb149dd476ec03b9ff134afc63
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 20:23:05 2009 +0000

    Add a tinytest flag to initialize threading.

    svn:r1357

commit 4ba6eda48fb8cc451f649a19f5a3d2006995073d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 20:22:56 2009 +0000

    Make evthread_use_pthreads() actually return 0 on success.

    svn:r1356

commit ed038295cdaf1095776f2849b05b9c685fdc78f2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 20:22:48 2009 +0000

    Define a macro to indicate that we have defined one of the optional evthread_use macros

    svn:r1355

commit 69601fc2f63ff7ed144cd9b42c659d90a564b198
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 18:59:22 2009 +0000

    Update event_tv when time jumps backwards, so that we only note each jump once. Fix for 1939984

    svn:r1353

commit 9c2ecba7f819072cd562b8bf20060c78a4a63f97
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 18:42:12 2009 +0000

    Oops. -1 is an integer, not a pointer.

    svn:r1352

commit d6f2e199243ef6eb4b1b96dbff16793a5fe2c202
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 18:38:46 2009 +0000

    Unit tests for bufferevent_get(fd|_underlying)

    svn:r1351

commit 5d71b25b516332af4dec0fe29d44fea28c06ccd0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 18:38:38 2009 +0000

    Remove all trailing whitespace from end-of-line.

    svn:r1350

commit d4e3671fb43b8ab2c743fec0f1deb6634e382d7d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 18:38:21 2009 +0000

    Add a test to free_active_base to free a base with an active event.

    svn:r1349

commit 638116cacd7e6239760fc8ddd76f046a921549c2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 18:38:14 2009 +0000

    Add a check for event_add failure to evthread_make_base_notifiable()

    svn:r1348

commit a62283a9c3a46c4ba0d72eb3bc18a3db7f9648e2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 17 17:46:17 2009 +0000

    Always hold a reference to a bufferevent when calling its callbacks.

    Rationale: we hold a lock on the bufferevent when its callbacks are
    executing, so we need to release the lock afterwards.  But the
    callback might free the bufferevent, so unless we're holding a
    reference on the bufferevent, the lock might not be there for us to
    release.

    svn:r1347

commit e83a32dfe1c10c90c27ccf1f4f93a59820517108
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 14 19:31:20 2009 +0000

    Do not define _FORTIFY_SOURCE if the platform GCC already defined it for us.

    svn:r1346

commit 9fcd84d196205e3eb6dcd0477005cb04974e703f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 14 19:19:45 2009 +0000

    Include disabled methods in event_get_supported_methods() output.

    Previously, events that were disabled using EVENT_NO* were left out of
    event_get_supported_methods().  This was wrong, broke unit tests
    (under some circumstances) and left the user with no good way to tell
    which methods were actually compiled in.

    Fixes bug 2821015.

    svn:r1344

commit 043515bc52dcc11109c7460fcfd92b67105f3f2a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 14 18:50:06 2009 +0000

    Stop using C++ style comments.

    svn:r1343

commit e224321c6413d8245d88655b7d88e5b3a2da0690
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 14 18:49:42 2009 +0000

    Convert and expand free_active_base/event_base_new tests to avoid dbl-free. Patch from Zack Weinberg

    svn:r1342

commit 6b4b77a26590f862dff5b490630d2a4b1ea994cd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jul 14 16:54:48 2009 +0000

    Make event_del(E) block while E is running in another thread.

    This gives you the property that once you have called event_del(E),
    you know that E is no longer running or pending or active at all, and
    so it is safe to delete the resource used by E's callback.

    svn:r1341

commit d866f055857794b8bfad93d93b247b2936a4f7a0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 13 20:03:00 2009 +0000

    Patch from Zack Weinberg: normalize perror() tt functions and add tt_fail/tt_abort_printf

    svn:r1340

commit 0cc10e419c6d1bca947a31315138d32d5addf480
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jul 13 20:02:49 2009 +0000

    Use -version-info, not -release.

    Patch from Zack Weinberg.  His description:

    This one might be a little more controversial. Libtool's -release and
    -version-info options are supposed to be mutually exclusive, but it doesn't
    either enforce that or make it sufficiently clear in the manual. Using
    both makes the -version-info switch ineffective; you will get sonames like
    "libevent-2.0.so.1", "libevent-2.1.so.1", etc., even though version 2.1
    will presumably be backward ABI compatible with 2.0.

    This patch just takes out the -release switches and bumps the -version-info
    value to 2:0:0 so that people looking at the files in /usr/lib will not be
    confused (it'll be "libevent.so.2"). This does change the soname, but the
    current release is labeled an alpha, and it would be better to stop using
    both switches as soon as possible, before someone over at libtool
    headquarters decides to enforce the mutual exclusivity here...

    Note that libevent_pthreads is not being linked with any versioning
    switches I didn't change that because I wasn't sure whether it was
    intentional.

    svn:r1339

commit d3a8ccb8073c3d76b8bfbb4205cfddfd5a351831
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 10 19:38:16 2009 +0000

    Change use of AC_CHECK_LIB to AC_SEARCH_LIBS.

    Patch from Zack Weinberg.  His message:

      This one eliminates all use of AC_CHECK_LIB in the configure script.
      AC_CHECK_LIB has a serious flaw: if the library you mention *exists*
      but is not *necessary* for the function you want, it adds it to
      $(LIBS) anyway.  This was fine in the days of static libraries,
      because the linker would ignore an .a library that didn't contain
      anything you needed. However, ELF shared libraries are different
      (let's not get into why): the linker will by default record a
      DT_NEEDED entry for every shared object mentioned on the link
      command line. Thus, every use of AC_CHECK_LIB is a potential
      unnecessary DT_NEEDED, making extra work for the dynamic loader. The
      cure is simply to use AC_SEARCH_LIBS instead; it first tries to find
      the function you ask for in libc, and only if that doesn't work does
      it try to use the extra library you mention.

      For the same reasons, pkg-config .pc files should distinguish
      between the libraries to use for shared linkage (Libs:) and the
      additional libraries needed for static linkage (Libs.private:). I
      have also made that correction in this patch. I also took the
      opportunity to clean up the substitution variables a little and make
      absolutely sure that the core library does not get linked against
      zlib.

    svn:r1338

commit a501d6833bae3415381e62acd6e45f4a22fea5b6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jul 10 19:34:00 2009 +0000

    Add a lock/unlock pair inside the event callbacks in bufferevents.

    This fixes part of bug 2800642, I believe, though there is still a
    general race condition in multithreaded use of events that we need to
    think about.

    svn:r1337

commit 6469598e568a62072c35a3e9322ad09e102b81a7
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 3 17:43:26 2009 +0000

    Allow C identifiers as struct names; allow multiple comments in .rpc files; from Zack Weinberg; plus a tiny tweak

    svn:r1336

commit fbb181d1aaa0cbc22ac8c1ce91a8f2216be95ed9
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 3 17:31:17 2009 +0000

    Allow specifying the output filename for rpcgen; based on work by jmansion; patch from Zack Weinberg.

    svn:r1335

commit bbcc54ef9ce0dbbdf4a26b4bcc43cfb9c4e3bec4
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 3 17:25:45 2009 +0000

    fix preamble of rpcgen-generated files to rely on event2 includes; based on work by jmansion; patch from Zack Weinberg.

    svn:r1334

commit 37d3e16ce9fe71a7112fd4e35c31629e470dff04
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 3 17:20:56 2009 +0000

    Raise RpcGenError in event_rpcgen.py; from jmanison and Zack Weinberg

    svn:r1333

commit 342ad3550ba685c0b0e95a8aa98d86f1509f36ab
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jun 30 14:23:18 2009 +0000

    The truncated bit is in the 3rd byte of a dns reply, not the 4th. [fwd-port]

    svn:r1332

commit 5aefb8a6d62c5d9f346d0104fb831d33eb55b88d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jun 25 15:22:36 2009 +0000

    Fix type on freebsd sendfile. Patch from navin seshadri.  Fixes bug 2811991

    svn:r1330

commit f901f9867c3c8a18334e108cb087fa6880864e4e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jun 24 22:40:15 2009 +0000

    When our IP address changes, do not break all existing dns server sockets.  Patch from Christopher Davis

    svn:r1329

commit 01be8708e9cbccf4c7ca951853d072fdd2e48c9c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jun 11 19:09:08 2009 +0000

    Fix compile on cygwin.  This isnt the solution I would like: I would prefer to get pton and ntop to work even when AF_INET6 is not defined.

    svn:r1326

commit bbd14de0537bec133dd6fa8e686b5390704bee38
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jun 11 17:55:08 2009 +0000

    Add sometimes-needed header to regress_bufferevent.c

    svn:r1325

commit d1ffba1d7ce3979e8aefbdd0a26036fe974e5242
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jun 5 19:52:13 2009 +0000

    Replace some read/write instances with send/recv to work properly on win32.

    svn:r1324

commit a43a1c2b237b2bcd0806635055a62f7406a16f2f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 28 20:44:04 2009 +0000

    Fix compilation problems in win32.c

    svn:r1322

commit eb97bb76e1a99eed4850f78421392f4765c63a73
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 28 15:58:28 2009 +0000

    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

commit 0b4ab122514f391a24711af0f92b04b8dd0c6055
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 28 15:47:15 2009 +0000

    Spell-check the the headers

    svn:r1320

commit 3f0e49283b88c577b9d23fadcc89959a5676778f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 27 23:48:59 2009 +0000

    small doc fix.

    svn:r1319

commit cdaca02c2909452de23244738630f408b8eee8e1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 27 15:35:00 2009 +0000

    Activate fd events in a pseudorandom order on older backends.

    New backends like poll and kqueue and so on add fds to the queue in
    the order that they are triggered.  But the select backend currently
    activates low-numbered fds first, whereas the poll and win32 backends
    currently favor whatever fds have been on for the longest.  This is no
    good for fairness.

    svn:r1318

commit 11a178f2bdd533d4f4cf7448653b0adc30c9779f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 25 23:11:31 2009 +0000

    Defer EOF on paired bufferevent correctly.

    svn:r1317

commit 5232cfa357e2d1a7cf2c6936e565fd79dade7aae
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 25 23:11:20 2009 +0000

    Consistently say "eventcb" instead of "errorcb"

    svn:r1316

commit 2f655f008cf6d019114cbdd8cac30ffcd4c44140
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 25 23:10:47 2009 +0000

    Add documentation for bufferevent-internal.h stuff

    svn:r1315

commit 34574db0f8bad98f59e66e62b94a2abec6211d5f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 25 23:10:23 2009 +0000

    Add a generic mechanism to implement timeouts in bufferevents.

    Paired and asynchronous bufferevents didn't do timeouts, and filtering
    bufferevents gave them funny semantics.  Now they all should all work
    in a way consistent with what socket bufferevents do now: a [read/write]
    timeout triggers if [reading/writing] is enabled, and if the timeout is
    set, and the right amount of time passes without any data getting
    [added to the input buffer/drained from the output buffer].

    svn:r1314

commit 49f18a0aab4a6456f9da9d2367d9f680310039fc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 25 20:02:51 2009 +0000

    Add requirement in configure.in for autoconf 2.59c.  Needed for ssize_t test.  Spotted by Yang Hong.

    svn:r1313

commit dfe321e1ee27cc5d128c932f584535b089cd80d8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 22 20:11:29 2009 +0000

    Add missing windows include in time-test.c

    svn:r1311

commit e8343e9ff18b768fdc0944da18350349ef26cdf0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 22 19:11:59 2009 +0000

    work around missing __func__ in sample code

    svn:r1310

commit 0b22ca192991aa5fa95e958cd6b010d89915bdb3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 22 19:11:48 2009 +0000

    Use ev_ssize_t in place of ssize_t *everywhere*.

    svn:r1309

commit 7289d7f80071cffe1b0e4886c9efc6d688f6d3b1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 22 18:20:59 2009 +0000

    Fix a potentially very annoying evdns bug that we found in Tor.

    Generally speaking, it way better to event_assign() an event when you
    allocate it than to assign it before every time you event_add it: if
    it is already event_add()ed, the assign will mess it up so that it
    doesn't _look_ added, and event_add() will insert a second copy.
    Later, event_del() will only delete the second copy.  Eventually, the
    event_base will have a dangling pointer to freed memory.  Ouch!

    svn:r1307

commit 7a844735d531e9b5fc0de28a3eafb87e88199396
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 22 17:20:05 2009 +0000

    Fix some small win32 build issues on trunk.

    svn:r1306

commit 8c66eb2e9b13e409cda3b296d292c3def1c20cd1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 22 14:48:40 2009 +0000

    Try to contain the failure when we are running without socketpair().

    Some win32 systems (mostly those using Kaspersky, it would seem)
    prevent us from faking socketpair().  This makes our signal
    notification code just not work.  Our response since 1.4 has been to
    assert.  For users who would rather work without signals than not work
    at all, this has been a regression from 1.3e.

    This patch makes adding signal events fail in this case; there's no
    reason to kill the whole process.

    svn:r1303

commit 59cd49363c470195b892693e2c394f74ddc1f5ce
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 22 14:31:07 2009 +0000

    Do not free the event base lock until we are done removing all the events.  Spotted by Joachim Bauch; fixes bug 2795402.

    svn:r1302

commit 1ee65b7f94dd94ce0bc5159fd6117f916857dcd9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 21 20:59:17 2009 +0000

    Do not assume we know the value for FD_CLOEXEC.

    svn:r1301

commit 7e3ea82ee6f89d9d7035aec388c766e235752f79
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 21 20:59:09 2009 +0000

    Disallow backlog==0 in evconnlistener_new_bind().

    svn:r1300

commit 8997f234f23ce0599250ce7b831d56a04f240f61
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 21 20:59:00 2009 +0000

    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

commit 594842970ead07fd3e100234c908744563d0f734
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 20 12:24:13 2009 +0000

    Fix a deadlock: there were some LOCKs that should have been UNLOCKs.  Resolves bug 2794244

    svn:r1298

commit 66df9dafe1a8f25760f2a5eefb04aa3ad0a448d5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 19 21:49:53 2009 +0000

    Add changelog for last commit

    svn:r1297

commit 23243b8a985e26e19deafd81e58159d545a31f34
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 19 21:39:35 2009 +0000

    Replace reserve/commit with new iovec-based interface.  Add a new evbuffer_peek.

    svn:r1296

commit ed1bbc7a9f41be00607b3f56933378a625838d6a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 18 16:15:56 2009 +0000

    Tweak the evconnlistener interface a little.

    svn:r1295

commit dc4c7b95707864d09d710fbe4736f05a39e823a0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 15 22:44:18 2009 +0000

    Change the interface of evbuffer_add_reference: give the cleanup function more info.

    svn:r1294

commit bba69e03f8101ec3efe7db69973fc93151e242ba
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 15 20:23:59 2009 +0000

    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

commit b4886ec80d11a20f0b247db2378a5eea9dee1e24
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 15 18:44:44 2009 +0000

    Trim 22 bytes from struct event on 32 bit platforms, more on 64-bit platforms.

    svn:r1292

commit 85b0a7a23f83370af1f029b744fa1387cab6fa06
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 15 01:38:23 2009 +0000

    We were distributing the wrong event-config.h with our source distributions.  Fix that.

    svn:r1289

commit 27fef1ef2699f71faaaab1d0d2051704da05474a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 14 18:06:41 2009 +0000

    Note problems with some newer evbuffer interfaces.

    svn:r1286

commit 3e759a0172b935b900ac6058c62716cce7c9af52
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 14 18:06:29 2009 +0000

    Actually, do not provide a compatibility name "EVBUFFER_CONNECTED": there is no old code that uses it.

    svn:r1285

commit 31d89f274bc28655bca3e6aec19b90080cb09add
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 13 20:37:21 2009 +0000

    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

commit 83f46e51d77759cc1857519f4bc94e833404980d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 13 20:36:56 2009 +0000

    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

commit f11dff2c7a40ee723c7ef6d32c3c333d2538c3c4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 7 03:45:51 2009 +0000

    Add and use locale-independent strcasecmp functions.

    svn:r1280

commit 89109010200c3702b8f2c031aa7982ed80f86733
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 6 02:34:10 2009 +0000

    Addition to bufferevent_async unit test

    svn:r1279

commit a8bcbfd4160b7f55ace800f632108333b56dc327
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 6 02:33:37 2009 +0000

    Fix bufferevent_async to use lock/unlock, not unlock/unlock.

    You do NOT want to know what windows does when you unlock a lock that is already unlocked.

    svn:r1278

commit fe47003d06e4f036de6874c1d00098cd6a687de5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 5 16:52:37 2009 +0000

    Make unit tests for bufferevent_async compile and _almost_ work.

    Either I need to make the callbacks get deferred in a base with no events (doable), or I need to make it okay to call launch_read from inside the callback for read (tricky).

    svn:r1277

commit 02801e5be5e14ef783d5a4095cca32d21fc7da8f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 5 15:36:28 2009 +0000

    Add a trival start of a be_async test.

    svn:r1276

commit af8b82224bffd93c885dfcb84c64ca63a0e6cc7e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 5 15:30:58 2009 +0000

    Add missing include to buffer_iocp.c

    svn:r1275

commit b69d03b5a8eaf906575d44615e5bf0cab6fbe66a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 5 14:18:14 2009 +0000

    Add a constructor for bufferevent_async.

    svn:r1274

commit 6b21fe2be89c2be0974aa125fc2c3fe12e24522e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 5 03:01:24 2009 +0000

    oops; do not forget to distribute listener.h

    svn:r1273

commit 659d54d5304c476f5cf0ec502235e376e1d2d8a1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 5 02:59:26 2009 +0000

    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

commit 0fd70978c8d83f0f677a0d119f2737d0b68ac511
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue May 5 01:09:03 2009 +0000

    Add an event_get_base() function to remove one more reason to include event_struct.h

    svn:r1271

commit 0e63e72a0515559b972b9c525593d6d94471c949
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun May 3 18:56:08 2009 +0000

    Nothing ever sets event_sigcb or event_gotsig any more: remove them.

    svn:r1270

commit bd73ed48e5cfe72dae168e9534398accb88b349a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 2 16:24:23 2009 +0000

    Revise regress_pthreads.c to not use event_set

    svn:r1269

commit 5a3eddf03f9a2c2d9bf52326e504be1555e2882f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 2 16:24:05 2009 +0000

    Use fewer _compat.h headers in our own code.

    svn:r1268

commit d5ca076379a82677d7148456e975bcb2f9f1b4b5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 2 16:23:29 2009 +0000

    Move event_set() and friends to event2/event_compat.h.

    These functions are deprecated in favor of event_assign().

    svn:r1267

commit 00ecd1d8e4571e019406293b28042b0628a676fd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 2 16:23:08 2009 +0000

    Make evrpc use event2/rpc*.h, not evrpc.h

    svn:r1266

commit 7b24d72ad616fe4927f452518bd058164db44854
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 2 16:22:55 2009 +0000

    Remove some duplicated includes in evdns.c

    svn:r1265

commit a109d95c72635e6c4ea046af31a6b0cb261600ca
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 2 16:11:06 2009 +0000

    Add changelog entry for vc++ fixes

    svn:r1264

commit 1aebcd50476c0341d04a351351be228ed2b41d56
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 1 01:42:33 2009 +0000

    Initial core implementation of bufferevent_async.c

    svn:r1263

commit e865eb938ca5614b1897f265f50587bc71f2c6b1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 1 00:54:14 2009 +0000

    More msvc build tweaks.

    svn:r1262

commit b2e8fd0e41d3437d7214fb4604e22476ddc94e4d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 23:56:53 2009 +0000

    Apparently MSVC lacks a ssize_t.  Define an ev_ssize_t for headers, and make ssize_t work elsewhere.

    svn:r1261

commit ebf294559e47717872fb7cc31764bcfba2d0e840
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 23:49:15 2009 +0000

    Compilation fixes for vc++ 2008 express.  Not the end of them.

    svn:r1260

commit 7f9678079fdef0a1373b91dc4c8a7df62763f673
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 20:48:40 2009 +0000

    Initial unit test for overlapped evbuffer usage.  It's lame, but it doesn't crash any more.

    svn:r1259

commit efc24f7cf108e87b9b5b001af87deb08755d2425
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 20:47:38 2009 +0000

    Get launch_read and launch_write to (apparently) work.

    svn:r1258

commit 23121bfb41c70351877cd7e4a2f6a0b80671fad0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 19:56:23 2009 +0000

    Fix a reversed check in upcast_evbuffer

    svn:r1257

commit 16612eb936ef702c8bcdfc7330d159bb09a6bc28
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 19:20:42 2009 +0000

    Beef up the events in the last test a little.

    svn:r1256

commit ec1468832e182406049e975c7b546732329054a7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 19:05:43 2009 +0000

    Oops: actually commit changes to build and use regress_iocp

    svn:r1255

commit f1090833b2557bc18353aee293a61ee556da80df
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 19:04:44 2009 +0000

    First tests for IOCP loop, and related fixes.

    The fixes are: a shutdown mode that works, and a way to activate an
    arbitrary event_overlapped.

    svn:r1254

commit b45cead762ca0d9b59a71d9a97fe95ce9a4639c3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 30 18:05:33 2009 +0000

    Make environment-variable tests work on win32, which has only one method and lacks (un)setenv.

    svn:r1253

commit 24607a397c5f63c73d82b1ac55ce9b9530187a5f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 29 20:48:43 2009 +0000

    Note a place we might do better about lock releasing.

    svn:r1252

commit 50e20fe076ce1b4f6728a6fd715e14629b0b25ca
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 29 20:48:35 2009 +0000

    fix a typo in a comment

    svn:r1251

commit 37bc34662b22afd96e44e81c4da251383a1a8f15
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 29 20:48:28 2009 +0000

    Catch attempts to event_base_once a persistent event.

    svn:r1250

commit 1959414120308bd72d82a7a9736870fa7b32a927
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 29 20:48:21 2009 +0000

    Clarify semantics on event_pending()

    svn:r1249

commit 9ad45eef75a8dd6e6895707a7f1ace8c376732d2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 28 19:08:36 2009 +0000

    Patch from Eric Hopper: the test for EVENT_BASE_FLAG_IGNORE_ENV was inverted.

    svn:r1248

commit 586aa46886ae0868e690b5ac698733896d992b86
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 28 19:08:27 2009 +0000

    Unit test for disabling events with EVENT_NO*, and for EVENT_BASE_FLAG_IGNORE_ENV.

    svn:r1247

commit 2ebfd3bafde18cadc4c337d507e7d2739112a652
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 28 19:08:17 2009 +0000

    Oops. We never actually defined event_config_set_flag().

    svn:r1246

commit 11cab334189a473b4f51368787251df4fa655641
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 28 19:08:07 2009 +0000

    Fix compile: #elif FOO is not the same as #elif defined(FOO).

    svn:r1245

commit a146af1db892bf2e85cd80599ab992b8a79420ea
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 25 00:15:55 2009 +0000

    move more code directly into evrpc.c; provide backwards compatible vararg macros

    svn:r1244

commit b228ff91b857158933dd2162bdf872749a6b9cb8
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 25 00:15:31 2009 +0000

    remove vararg macros for accessing evrpc structs

    svn:r1243

commit f69cd80d17b6118503dc39dc676471ab452a59d4
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 25 00:15:09 2009 +0000

    refactor evrpc.h header filer

    svn:r1242

commit bbf79707f9b19c1b732baa75e9943ff106173a80
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 25 00:14:58 2009 +0000

    refactor evrpc.h header filer

    svn:r1241

commit 5c4c13d8c24ae4451d753c5b5bfa9444d7bc08da
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 24 03:24:22 2009 +0000

    make sendfile work on freebsd

    svn:r1239

commit a5897917da9549daf56173fc7a59c3ac97a92597
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 21:43:44 2009 +0000

    Changelog entry for r1237

    svn:r1238

commit ec6bfd033566562730d2f37333b3f26bf0ba1391
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 21:41:53 2009 +0000

    Fix for evbuffer_read() when all data fits in penultimate chain.

    Previously we were reading into the next-to-last chain, but incrementing
    the fullness of the last.  Bug found by Victor Goya.

    svn:r1237

commit faa756c7c19190dd8d5c27fa519870bac0c78cee
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 21:34:37 2009 +0000

    Oops. event_config.flags was never initialized.  Bugfix on 2.0.1-alpha.  Found by Victor Goya.

    svn:r1236

commit d70b0804888beef9d562ab73e4fde8962e1b5635
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 18:08:42 2009 +0000

    Make main/methods test pass on systems where only one backend exists.

    svn:r1235

commit 1ad03264408238061cf894e7b4a0ffb4b8660315
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 18:04:50 2009 +0000

    Fix win32 compilation issues.

    svn:r1234

commit c5c9589fb0a37bdbe101a05256ec93eaa865ea6f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 06:27:58 2009 +0000

    Add missing case to make http.c compile with warnings enabled.

    svn:r1232

commit 9516df0e2eeb28234f679a65062631d409781346
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 05:40:06 2009 +0000

    Fix c89 bugs reported by Cory Stup.

    Others may remain.  I wasn't able to get gcc --std=c89 to build libevent
    at all, so I don't know what compiler the original reporter is using here.

    Note that this change requires us to disable the part of our rpc code
    that uses variadic macros when using a non-gcc compiler.  This is a
    problem if we want our rpc api to be portable.

    svn:r1231

commit 8ba25b9ec7b66facafdd2c59bf55aefaeeab9042
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 05:20:08 2009 +0000

    Add missing regress_minheap.c file

    svn:r1230

commit 5c104cef5198473441d40e760fb4ea6fea989231
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 00:33:37 2009 +0000

    Add a randomized test for heap correctness.

    svn:r1229

commit df0617f28978f809a93bbaf1efc24372a2d8d39f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 00:21:23 2009 +0000

    Use signal.h, not sys/signal.h.

    This is patch 2673214 from mmadia.  It is correct, since we unconditionally
    include signal.h in many other places, and only sometimes include sys/signal.h.
    It is necessary to compile on Haiku, I'm told.

    svn:r1228

commit 8b7a3b3676375d145e0b89d3f3d9194c7031a760
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 00:01:24 2009 +0000

    Fix min_heap_erase when we remove an element from the middle of the heap.

    Previously, we could lose the heap property when we removed an item
    whose parent was greater than the last element in the heap.  We would
    replace the removed item with the last element, and consider shifting
    it down, but we wouldn't consider shifting it up.

    Patch from Marko Kreen.

    svn:r1226

commit 0068c98ad2653c3ed3ac70250893531d072c2fbb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 00:01:14 2009 +0000

    Make version test ignore the bottom byte of the version number.

    svn:r1225

commit e2b987ede1ee90a94977f5284e33e8e8ce153802
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 00:01:05 2009 +0000

    bump the numeric version; this is not the same as the alpha.

    svn:r1224

commit b21be2454553b245844c9bd91979257ee38d1140
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 23 00:00:55 2009 +0000

    Somehow free_active_base was using the socketpair, but not saying it needed it.  How did this ever work?

    svn:r1223

commit 253151c54cc224aefe0c7123d0fb44fa762b0f70
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 22 20:28:30 2009 +0000

    Detect and reject n_priorities less than 1.

    svn:r1222

commit 01bda2b8fa4c34a633efedacb95b64689d6b366a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 22 20:27:21 2009 +0000

    Add forgotten changelog.

    svn:r1221

commit 11ff74cf648f2b934a5b75d23611abbd92a88e7c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 22 19:41:23 2009 +0000

    Add a flag to disable checking the EVENT_* environment variables.

    svn:r1220

commit 1f9c9e5137128ba63831fe77f3dac1efebb350a2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 22 15:38:50 2009 +0000

    Add a missing "static".

    svn:r1219

commit 133a015dba3d80c99de89ac427108a783179b871
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:48:05 2009 +0000

    Make sure the test case for mem_functions hits strdup too.

    svn:r1218

commit d3fbe7fa05680ecf4c8a01c0db5277ef5d3db5f8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:47:53 2009 +0000

    Do not free the signal index unless it was at some point allocated

    svn:r1217

commit 7f1855d064a6676a82802b481b75e1eae4aec73f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:47:35 2009 +0000

    Add a basic test for set_mem_functions

    svn:r1216

commit ea8cc76cf8553ceff764407d49360e0b36bcd835
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:47:23 2009 +0000

    Fix the documentation of event_pending.

    svn:r1215

commit 386279d051a644b9d895a55414af648ca8d4e24b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:47:02 2009 +0000

    Add a test for event_pending; especially the timeout part.

    svn:r1214

commit ff1f429510b2fc946e65d46b57adb6f1c96e49f2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:46:43 2009 +0000

    Unit tests for event_base_once.

    svn:r1213

commit ea664bf29a76966ffbc613e10689e17d18245472
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:46:30 2009 +0000

    Refactor test wrappers to divide legacy items from useful stuff.

    svn:r1212

commit 122e934e92fe27e76d469dab58e50f47f0a358a9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:46:11 2009 +0000

    Add unit tests for version methods and feature-based backend selection

    svn:r1211

commit 7cf8a7b0e04e5c853734d1648d398ccc7e7aeb3d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 18:45:59 2009 +0000

    Call the main testcases "main", not "legacy".

    svn:r1210

commit 1bb8e010f99fa0bfe64f4440caf6e9ef80013fb4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 21 16:17:59 2009 +0000

    Format microseconds correctly in bench_httpclient

    svn:r1209

commit eda27f9557eaf25d10b02c0b498be1a292491874
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 19 20:54:12 2009 +0000

    Update copyright notices, add some missing license statements

    svn:r1208

commit 0c15d6ab7d50d7d17c5dce766ec46dc72d196825
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 19 13:33:52 2009 +0000

    defer-internal.h was missing from dist; so our first tar ball did not even compile. ouch.

    svn:r1207

commit b7907a7bfb3b44548ef47df2d0b1eef02b632036
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 19 01:59:25 2009 +0000

    Note dns work in changelog and whatsnew

    svn:r1206

commit 2d9619d78f05b475148b0efce59b6fd59382c36c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 19 01:59:09 2009 +0000

    Make dns callbacks run deferred

    svn:r1205

commit 327165b339bbe996cfee0eea12b06e43bdc5aa63
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 19 01:58:54 2009 +0000

    Add locks to evdns.

    svn:r1204

commit ac3fc9913a9336f0aed4a178a553200b9c01801e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 19 01:58:41 2009 +0000

    Use new-style headers in evdns.c

    svn:r1203

commit 4d8919ec442ede9e479c861f5d31476c8be946ab
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 19 01:58:26 2009 +0000

    Do not try to double-free the nameserver in regression test

    svn:r1202

commit b182ed765e3484719eab1281e1b0b440745feae4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 18 18:28:18 2009 +0000

    More tweaks to http stress-tester

    svn:r1201

commit a835c7cf1843a4232ba7f76b4a3c2bfedd39f833
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 18 18:27:56 2009 +0000

    fix a misindent

    svn:r1200

commit f00f0c253354b319b9ef23a7208daf20b14f78f2
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 18 04:34:45 2009 +0000

    make doxygen happier

    svn:r1199

commit e4f24219ee93f3b9dc20991b18e71230468b7b94
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Apr 18 00:12:52 2009 +0000

    Add a new bench_httpclient for a trivial codecon demo.

    svn:r1198

commit a98a512bc1dc85a87cd00fa7682aeccaeea2859c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 23:12:34 2009 +0000

    Add a generic way for any bufferevent to make its callback deferred

    svn:r1197

commit 99de18670e59616e6794c2b371ffde17f002d339
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 23:07:48 2009 +0000

    Bump version to 2.0.1-alpha-dev so that nobody mistakes a svn checkout for 2.0.1-alpha.

    svn:r1196

commit d047b323bd030d81cb03e286dac3a935862427c7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 17:22:32 2009 +0000

    Increment version to 2.0.1-alpha, and add a numeric version facility

    svn:r1193

commit b346038724c827ed487653d35a1ed1a05d10fc67
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:58:18 2009 +0000

    Even _more_ recent tinytest, designed to give better help output.

    svn:r1192

commit 2c4c294ed8168c3d9bea99d02896235cd8d7385f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:58:04 2009 +0000

    note new unit test framework.

    svn:r1191

commit 812800629b15c20c7d5fc15c6999c0df47136005
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:57:52 2009 +0000

    Add the latest tinytest.  This one supports a --terse flag and a --no-fork flag, and outputs nicer.

    svn:r1190

commit 91039e4d48c6306c749e44853891416d131cee6d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:57:38 2009 +0000

    Add reference counts to bufferevents.

    svn:r1189

commit 1351e61cf671c94f665b16c7fd97bae99266a350
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:57:25 2009 +0000

    Write a huge pile of whatsnew-2.0.txt

    svn:r1188

commit 49354138425021ecc2a576efc1d51a5bcad63ad5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:57:13 2009 +0000

    Oh hey.  There is no support for suspend/unsuspend.

    svn:r1187

commit 7fa8451d7e9310d0aac2f619ffecb3bd93dca267
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:56:57 2009 +0000

    Add a configure flag to hardcode all of our mm functions.

    svn:r1186

commit 64a37e61a12330b2e3793c63eb11bfa7025ffaf6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:56:36 2009 +0000

    Fix evmap indentation to be less stupid.

    svn:r1185

commit 9097c95b6ea003bcf5f7a9536adb7bc7d65a682d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:56:23 2009 +0000

    Rename whatsnew file to reflect actual version.

    svn:r1184

commit a8f6d961eb3bec921473e91c72675c1dbe853f2e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:56:09 2009 +0000

    Actually stop using EVBUFFER_LENGTH/DATA, and move them to buffer_compat.h

    svn:r1183

commit 796ba15fc6b6e2e0e17e78ac92e00ee79d4d69c0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:55:25 2009 +0000

    Stop claiming that APIs we have are missing.

    svn:r1182

commit 838d0a81c3343432897739d14e2af1a4e5edb7db
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:55:08 2009 +0000

    Document many internal functions and pieces of code.

    svn:r1181

commit 433e2339ca1605326f35c2d873a42f6d2abe505d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 17 06:54:28 2009 +0000

    Remove long copy-and-paste section full of windows api notes.

    svn:r1180

commit 30648529e888dd7438d13d7a0b86625a24c6abcf
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 17 01:03:07 2009 +0000

    have evhttp_set_cb return an int; -1 on failure, 0 on success; this is better than returning a pointer

    svn:r1179

commit edfc28caef29a203deaef4c0b808ad8caa7fa012
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 17 00:24:58 2009 +0000

    pkgconfig support from Ted Bullock

    svn:r1177

commit 0b987813537b74835a5c3990de756d35ea9b4fbc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 16 00:32:52 2009 +0000

    More hacking on event_iocp.c: make it compile, and give it more of an interface.  This code is now testable.

    svn:r1176

commit 09c23b6a5679b1a4a871bdd3143e615209aac05d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 16 00:27:32 2009 +0000

    It seems support for GetCompletionEventEx is not in my mingw.  Use the simpler interface instead, for now.

    svn:r1175

commit 93d4f884aa2f42d832b4fefa0fe4d39bb0098750
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 14 20:11:10 2009 +0000

    Make buffer iocp stuff compile happily

    svn:r1174

commit fe95df15d3c5ad424c76f75596452f0229e191b2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 18:32:24 2009 +0000

    Fix typo in mm_free

    svn:r1173

commit ca737ff3b5e0b5e93e3b2bd49d5434ff20e95d1e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 18:29:31 2009 +0000

    Add draft (nonworking) versions of iocp code to hack on more.

    svn:r1172

commit 4e8cdc6f086bcf0b31df203451aa38741e149ac3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 18:23:02 2009 +0000

    Fix two windows compilation bugs.

    svn:r1171

commit 915193e7df010fb3f280208b1e7af8c74b462686
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:17:19 2009 +0000

    Locking support for bufferevents.

    svn:r1170

commit 1becc4c4e656213d0f71938029a08a2da04dc97f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:08:11 2009 +0000

    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

commit 6567ecd4c587563be843ee8803417b53d3318cbd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:07:37 2009 +0000

    Remove if0 code in bufferevent_struct.h

    svn:r1168

commit 8dec59bb35c16aa18f90135f23cb4307817f140d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:07:17 2009 +0000

    Use freeze operations to prevent shenanegans on bufferevent pair evbuffers.

    svn:r1167

commit 0e32ba54dcccdd40e6cf02124827a9b57d9fd97d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:06:59 2009 +0000

    Do not remove an empty chain that we have pinned for reading when we drain the whole buffer.

    svn:r1166

commit 9f1a94ecec836aae50ce761f1a269881a5f42167
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:06:47 2009 +0000

    add pin/unpin functions, and a deref-and-free pair.

    svn:r1165

commit dcda7915acb64e67b8cb6089e2ff265e83f7ee3e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:06:27 2009 +0000

    Add a reference count to evbuffers.

    svn:r1164

commit b01891fe1d48fc2ee7a0f39e671447195ada8177
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:06:05 2009 +0000

    Make evbuffer_commit_space trigger callbacks.

    svn:r1163

commit 829b52b6c1af2c43aa240d3d4e832b5914c34124
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 13 03:05:46 2009 +0000

    Refactor the code that sets up iovecs for reading into its own function.  iocp needs this.

    svn:r1162

commit 0b47b125cfe584f6d6c12a748208ceec3430990e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 12 22:02:54 2009 +0000

    Add a new EVUTIL_UPCAST macro so that I do not need to keep figuring out the right offsetof magic over and over.

    svn:r1160

commit bbd6a332e17fd934d7ec9cac6b9dd2f327c60bcb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 12 22:02:12 2009 +0000

    reindent macros in util-internal.h

    svn:r1159

commit d475fb5861a6203fc4fa3bd9e6957e2a34159a91
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 12 00:38:31 2009 +0000

    http benchmark: add a way to change the size of the buffer; also use add_reference

    svn:r1158

commit d2794e65e018166c2ecf598f8e77c4f4d5abd2f4
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 11 15:26:29 2009 +0000

    document evhttp_parse_query better

    svn:r1157

commit 382a1587a040f2c771484d64c631832249fff14e
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 11 04:18:49 2009 +0000

    previous commit changed the semantics of evhttp_decode_uri; need a test for that

    svn:r1156

commit b29b875d8476d2e1603e7703ef5309cbd7cae79f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 10 20:43:08 2009 +0000

    Facility to make evbuffers get their callbacks deferred.

    svn:r1154

commit decdacfaf8265cf9520eabcf4215501566376d84
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 10 20:42:53 2009 +0000

    Better explanation for bufferevent_pair

    svn:r1153

commit 23085c92477035507c499530d4a200bceee5d8a1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 10 15:01:31 2009 +0000

    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

commit 8161662007e4ffe8c71e3f8267733b2131d8d619
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 10 14:58:15 2009 +0000

    A couple of tweaks for deferred callbacks.

    svn:r1151

commit 4868f4d217d19d4b0f4e45c4648460c21bc5f80f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 10 14:22:33 2009 +0000

    Initial support for a lightweight 'deferred callbacks'.

    A 'deferred callback' is just a function that we've queued in the
    event base.  This ability is needed for some mt stuff, and for complex
    callback chains.  For internal use only.

    svn:r1150

commit e3d82497c99d9cb3b1b23cc746b448811910e260
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 10 14:21:53 2009 +0000

    Don't allow internal events to starve lower-priority events.

    This is exceptionally important with multithreaded stuff, where we use
    an event to notify the base that other events have been made active.
    If the activated events have a prioirty number greater than that of the
    notification event, it will starve them, and that's no good.

    svn:r1149

commit ce146eb1cb02a6ed29beecc16da611030d471937
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 10 05:43:45 2009 +0000

    Fix parsing of queries where the encoded queries contained \r, \n or +

    svn:r1148

commit 6dece3e980a5f4d3f8dd40436603772d59e821dd
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 10 05:22:15 2009 +0000

    revert last commit; git user error

    svn:r1147

commit f43f1d14c50d54630b05b2da4ea792709b358d17
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 10 05:18:18 2009 +0000

    initial version of query decoding patch

    svn:r1146

commit f98385a4074a0d90bbec89ea57652e3baf112568
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 8 16:57:38 2009 +0000

    add a missing "static" to timeout_process.

    svn:r1145

commit 72b6ffe869f63180a55f7c3d2582dc1c37314cc5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 8 03:05:42 2009 +0000

    Prevent unsupported modifications to bufferevent_sock buffers.

    In particular, we don't allow adding any data to end front of inbuf
    (we do that when we read), or removing it from the front of outbuf (we
    drain data only when we write).

    svn:r1144

commit 747331d164ea4839a89e168f9f712159509984db
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 8 03:04:39 2009 +0000

    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

commit d9086fc00777ff841209fdc8373a1b3ae784dec6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 8 03:03:59 2009 +0000

    Add a new facility to "pin" the memory in an evbuffer chain.

    For overlapped IO (and possibly other stuff) we need to be able to
    label an evbuffer_chain as "pinned", meaning that every byte in it
    must remain at the same address as it is now until it unpinned. This
    differs from being "immutable": it is okay to add data to the end
    of a pinned chain, so long as existing data is not moved.

    svn:r1142

commit 68d0139f19c876fae18120689f384fc36779d676
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 7 04:49:25 2009 +0000

    Refactor the zlib and pthreads tests to appear in the regular tinytest tree structure.

    svn:r1141

commit 684c022a21d00214ebd598ad1ba8cf656f4432be
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 6 20:38:42 2009 +0000

    Avoid a double event_del() in evdns.c.

    The bug could occur when a nameserver was marked as up, but then an
    outstanding probe sent to the nameserver failed.  Now, evdns_up() cancels
    any outstanding probe.

    svn:r1140

commit d2e9caa6fcff77d5f69e10ef3b24d5e3e65d961e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Apr 6 20:38:19 2009 +0000

    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

commit 0f3c0983c0e1779f9d690830b3b1c2a0e1c94883
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 5 17:50:18 2009 +0000

    Fix a double-delete on the request timeout event.  Port from Tor.

    svn:r1138

commit 28255a26357afde52f2e73cd163bdde929480477
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 5 04:26:46 2009 +0000

    Finally, get unit tests to pass with threading turned off again.

    svn:r1137

commit 6a18f4b0057587a46a21503e3cc23f7e87046d52
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 5 04:15:01 2009 +0000

    Munge the read_suspended flag before re-enabling reads on the underlying bufferevent.  This makes it so the enabled thing has some idea whether reads are supposed to be suspended or not.

    svn:r1136

commit 661b5eea092920dcb316f8e1b4b0843096c707c7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 5 04:10:05 2009 +0000

    Actually, move EVUTIL_NIL_STMT to util-internal.h

    svn:r1135

commit 60e0d59b33277755c532dae8242d120e5877bef4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 5 02:44:17 2009 +0000

    Add locking to evbuffers.

    svn:r1134

commit d13b59ce372f167135ea1eaec1c6d7e399e9777d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 5 02:44:04 2009 +0000

    Fix build with thread support disabled, and make no-op macros a little more no-oppy.

    svn:r1133

commit 70ee390fc9696f555d383b64541c5fe205443d72
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Apr 5 02:43:55 2009 +0000

    Add some more utility macros to evthread-internal.h

    svn:r1132

commit f1b1bad415332f6d49a59eb40004ca1d7946c4da
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 3 14:27:03 2009 +0000

    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

commit f90500a5df9af60502215d640ccbf2ba031d30e0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 3 01:21:36 2009 +0000

    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

commit 0afb1f7ffbdb229c3adbaae18899c6b5c4774558
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 1 16:08:34 2009 +0000

    Glibc mkstemp requires exactly 6 Xs.

    svn:r1129

commit 994e85781c2b3ccd9736d7b751c4cc02b9f7c774
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 30 17:36:22 2009 +0000

    correct evbuffer_drain documentation from John Khvatov

    svn:r1127

commit 23655dfb87e88482a9152140ad62b0667b5fa916
Author: Niels Provos <provos@gmail.com>
Date:   Thu Mar 12 17:43:43 2009 +0000

    include Doxyfile in tar ball; from Jeff Garzik

    svn:r1125

commit 73094d595208ff45ec44d8d399b1811472156b8f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 13 13:43:35 2009 +0000

    Make tmpfile code compile without warnings

    svn:r1123

commit 79b7799bd1a2023864e1f2124444692a289ff72b
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 13 01:42:59 2009 +0000

    a simple test for evbuffer_add_file

    svn:r1122

commit ec35eb5520514769818fa4440d4801f803e8fb4c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 12 22:19:54 2009 +0000

    Make threading functions global, like the mm_ functions.  Use the libevent_pthread.la library in regress_pthread.

    svn:r1121

commit d0a9c90e9300f7dc5701e9682d80c85025504573
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 11 17:29:17 2009 +0000

    Fix some of the crazier indentation and tabbing choices in evdns.c

    svn:r1120

commit 77c80b8dcf26b2cef66bce03cb25835a9a939306
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 11 17:24:11 2009 +0000

    New bind-to option to allow DNS clients to bind to arbitrary ports for their outgoing addresses.

    svn:r1119

commit acaf65c359d7e0b0c2f7f4d44c97dd187ac2ed61
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 11 17:23:32 2009 +0000

    Make evutil_parse_sockaddr_port give a useful socket-length output.

    svn:r1118

commit f2a24d6e58df45229015f6d32fcf95f87faea701
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 11 17:22:40 2009 +0000

    Better comments for some confusing-to-me code.

    svn:r1117

commit c6f4dc987c153c9a347d6275d2e8d6bebbca9371
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 11 17:21:48 2009 +0000

    Port some evdns changes over from Tor.

    svn:r1116

commit ac36f4047e8c4b7cb9fb5908741e885f11cfdb35
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Feb 11 05:17:27 2009 +0000

    oops; coding too quickly on nil-filter patch.  Caught by niels.

    svn:r1115

commit cd731b77d7e6d0398010ff45bb80e9a3534eaccc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 21:40:12 2009 +0000

    Do not use ctypes functions in cases when we need the "net" locale.

    This patch adds a new set of EVUTIL_IS* functions to replace use of
    the ctypes is* functions in all cases where we care about characters'
    interpretations in net ascii rather than in the locale.  For example,
    when we're working with DNS hostnames, we don't want to do the 0x20
    hack on non-ascii characters, even if the host thinks they should be
    isalpha.

    svn:r1114

commit 1ed27048e4807fe2bf182e9544dc9c7b4741cbc0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 21:39:56 2009 +0000

    Stop rolling our own offsetof twice.

    svn:r1113

commit f04b90e5b3a6ebf0588c6e55ebe3b25364021a28
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:43:19 2009 +0000

    Make a couple of newer evdns functions more bulletproof.

    svn:r1112

commit da49d6a3b05cd7d3c9d417f4f08cb63431635617
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:43:11 2009 +0000

    Stop using platform inet_aton/inet_addr; they can behave strangely on certain misformed addresses.

    svn:r1111

commit 01456265c3113c401579895f60c410202d633788
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:39:22 2009 +0000

    Explode less badly in the case where we're told to prepend/append/remove a buffer to itself. Note some API/implementation deficiencies.

    svn:r1110

commit 20f809ce8c4001f279a208fe3118f51cd8a1abad
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:39:12 2009 +0000

    Make default (nil) filter use evbuffer_remove_buffer to respect the high-water mark of the target buffer.

    svn:r1109

commit e7fd1034cfc6cd8a28f03178b3d8fd2bd4729d27
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:39:03 2009 +0000

    Test some formerly untested prepend cases of evbuffer. Now evbuffer coverage is over 80 percent.

    svn:r1108

commit 9e3e7b360d1ccce5fbd94e32b3a0d10a3d15ebe2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:38:54 2009 +0000

    More unit tests for evbuffer_add_reference to make sure that certain interleaved data patterns work; that free invokes callback; that callbacks are not invoked too early or later; etc.

    svn:r1107

commit 98b7046b9761896e05f84413a4e3589730ffd117
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:38:43 2009 +0000

    A few more comments on evbuffer-internal structures.

    svn:r1106

commit edfdb698e3b2e5132bb474478b0b9daa6676e8fa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:38:34 2009 +0000

    Add an assertion to evbuffer_chain_align so we can't reuse it in the future.

    svn:r1105

commit 71604d85be2ee20d6d4408249217f34625b9bd20
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:38:25 2009 +0000

    Remove some needless includes

    svn:r1104

commit deb2a1210bffcf9a902ae449d7d79bb29c617f4a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:38:14 2009 +0000

    use new evutil_make_listen_socket_reuseable() in http.c

    svn:r1103

commit c7b2f8fdc955fa06999c73dbab58c07492cfb6e9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 10 19:38:05 2009 +0000

    New function to abstract SO_REUSEADDR.

    svn:r1102

commit f9e4e0f98e4ccce8a589948cfec3a4840b3aa2bf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 3 18:28:53 2009 +0000

    Move bufferevent tests to regress_bufferevent.c file.

    svn:r1101

commit cc049bfc306436d0d2ff94a4d47fa1c003a3c6e9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 3 05:22:57 2009 +0000

    Enable (and debug) WSARecv for evbuffer iovec-like reads.

    The two things we were missing: the flags parameter is not optional, and an error can actually indicate a close.

    svn:r1100

commit ea11f8195fae2e559b369ad868c334947d84e055
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 2 22:17:32 2009 +0000

    Compile http_connection_retry_test, but mark it skipped on win32.

    svn:r1099

commit 722885fba96b4195479d4c335946f714beb119eb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 2 21:59:53 2009 +0000

    Some mingws have AF_UNIX, which may have prevented our socketpair from working at all on them.  Fix that.

    svn:r1098

commit 3502a472b564e289acf89c06d0e3d6e8eaa21d2f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 2 21:24:04 2009 +0000

    convert new bufferevent_*.c files to event-config.h only.

    svn:r1097

commit 4d92e4261b5915658fbdc5dfb0f1c7a1dd86d9db
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 2 19:22:27 2009 +0000

    forward-port: Make evdns_resolve_reverse args const.

    svn:r1096

commit ea4b8724c088934412401bdf32f52f2e2f1840b1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 2 19:22:13 2009 +0000

    checkpoint work on big bufferevent refactoring

    svn:r1095

commit e84c765615352d094ce331aefe60c25c8c6a7702
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 1 05:26:47 2009 +0000

    Allocate callback entries with contents 0d out.

    svn:r1093

commit 2e3f0f682a94f4651143e912780ca0114be71c09
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 1 02:20:16 2009 +0000

    Enable the edge-triggered test again

    svn:r1092

commit 8d3a10f8f1a820ec6ebe2780dc2b676926dcfeb2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 1 01:43:58 2009 +0000

    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

commit e3e1153109c250bdd308e3bb2370f0d93648d9d7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 1 01:07:42 2009 +0000

    Unit tests for evbuffer callback manipulation

    svn:r1090

commit 2e50658d8d99ca071872eeca15b38ed5a0fa642e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 1 01:07:33 2009 +0000

    Fix a typo in buffer.h

    svn:r1089

commit ca37fef95164de326df95a626a398f13b3ca41c7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 1 01:07:22 2009 +0000

    Change evbuffer callbacks to use tinytest natively and never assert.

    svn:r1088

commit a30c9eb1ac05cbf71130e046959996025f18a939
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Feb 1 01:07:12 2009 +0000

    Move evbuffer tests into their own file.

    svn:r1087

commit ff7a5e1272dcdca3af5f8b74121da01a07bad597
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 19:32:20 2009 +0000

    slightly more coverage for evutil.

    svn:r1086

commit 12e8db5b23160e2d77db585230113992ca2001c1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 18:36:47 2009 +0000

    Convert evtag test.

    svn:r1085

commit 5831d11a4251eea6e63eb1bb5a63979c10600997
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 18:36:37 2009 +0000

    Move rpc_test to regress_rpc.

    svn:r1084

commit fa6ae16992c95632afea1b9c24669a48f2688f3b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 18:36:24 2009 +0000

    Convert RPC suite.  There are still some places it can exit(1), but those always run forked, so no big deal.

    svn:r1083

commit d9628ef4ffcaa2adf0298547894707ba7616ac8a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 18:36:08 2009 +0000

    Add missing initializers

    svn:r1082

commit eac75f91e4839ba289dd599ce36da5cf2a5303ef
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 07:32:14 2009 +0000

    Port DNS tests.

    svn:r1081

commit e6ba208ba30fd22f52508a865f448c24ffaaed96
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 07:32:00 2009 +0000

    Tinytest update: mostly just to allow test skipping.

    svn:r1080

commit 52eb4951302554dd696d6a0120ad5d3f6cffb7bb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 07:31:47 2009 +0000

    Build with the -fno-strict-aliasing flag on GCC.

    You do not want to know about the 2 hours I just spent tracking down
    an evdns bug that only affected me on some platforms to the way we
    were using sockaddr* and sockaddr_in*.  Suffice it to say that I do
    not think this is the only C99-aliasing-dubiousness in our code, nor
    that I am smart enough to keep my code correct with the GCC's strict
    aliasing optimizations in place.

    svn:r1079

commit 2546ea665e9ba4c4215f4b62a87c664d7bda6057
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 05:45:26 2009 +0000

    Do not attempt to pass a va_args to regular snprintf.  Hilarity will ensue.  Fortunately, 1.4 does not have this bug.

    svn:r1078

commit 4ec690d35ef82e98799497a89cb8b720153925e8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 31 05:45:16 2009 +0000

    Rename a couple of http tests so they all end with _test.  This lets us simplify the naming.

    svn:r1077

commit 153093ecc346b51fd3df20d8480a17414aeda1a6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 30 17:44:13 2009 +0000

    Port the HTTP unit tests.  Most are still legacy (since they use test_ok so much), but at least they no longer exit(1) on failure

    svn:r1076

commit 241690b230301fa9388cd84b33030938df7b1853
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 30 17:43:59 2009 +0000

    Move util tests to regress_util.c

    svn:r1075

commit 4e9470b481f2ad2e1ddb9967de8e5599d9b5fe6d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 30 17:43:48 2009 +0000

    Convert test_evutil_strtoll to new framework.

    svn:r1074

commit a8203b3490b3ab6ee17460ddd32c0efb355fee02
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 29 23:19:57 2009 +0000

    Refactor unit tests using my spiffy new "tinytest" framework.

    The big win here is that we can get process-level isolation.

    This has been tested to work okay on at least Linux and Win32.  Only
    the tests in regress.c have been converted wrapped in the new wrapper
    functions; the others are still on the old system.

    svn:r1073

commit 39c8dbe073bf13c9c08d8901465a0d7641119126
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 29 20:07:59 2009 +0000

    Make ht-internal.h get distributed.

    svn:r1072

commit cc7a53c152b4ef2b32d44545e281be843baea5d1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 29 18:15:36 2009 +0000

    fix signed/unsigned warning in unit tests.  can we just use "char*" on all new APIs?  this void/unsigned char*/char* business is awful.

    svn:r1071

commit 7dd362b15871096430e078a6b94406563634ebe7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 29 15:09:24 2009 +0000

    Have util-internal.h define socklen_t if we need it, and include it appropriately.  This fixes win32 compilation.

    svn:r1070

commit a0cae310d05d99a1f235a1814ba5ef7893959ec8
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 29 03:22:47 2009 +0000

    make it so that evbuffer_add_file where we read the complete contents of the file can fail without side effects

    svn:r1069

commit 66b2a7ffb72e68a059c7479362bfe4863e2331df
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 29 03:20:40 2009 +0000

    test evbuffer_add_reference

    svn:r1068

commit f13bede758cd419c407a9124a13b7955f8ea0068
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 28 20:31:19 2009 +0000

    Fix an unlikely degenerate case of evutil_vsnprintf

    svn:r1067

commit e3e696c822917fcf909e71b7822130c73f442e56
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 28 20:24:12 2009 +0000

    Use size_t for name length in DNS requests.  Not that it matters much.

    svn:r1066

commit b85b710cf5e693294e0d68ce682ecb1c5e357383
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 27 22:34:36 2009 +0000

    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

commit 8889a7703999d3ce5902b5b8e239107579c75ca0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 27 22:30:46 2009 +0000

    Replace all use of config.h with event-config.h.

    svn:r1064

commit 9993137cbbd9508dbf28e431e0f84d809c516128
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 27 21:10:31 2009 +0000

    Remove all trailing whitespace in all the source files.

    svn:r1063

commit 3065389973fcfb724981376c31a51b11b679abc0
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jan 27 16:35:28 2009 +0000

    make it so that test_persistent_timeout can call loopexit only once; reported by Alexander Drozdov

    svn:r1062

commit 1c927b7d2fad4b2f1d96cd2d91e116acf53f5123
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jan 27 16:29:48 2009 +0000

    fix memory leak whens etting up priorities; reported by Alexander Drozdov

    svn:r1061

commit 88f2b7a00fd60bbf353b4a33cb2374bc491e1ee7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 27 13:37:09 2009 +0000

    Fix some warnings on linux gcc with --enable-gcc-warnings

    svn:r1060

commit 1757cf717f487c3c78b7104b52738ff804f69c42
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jan 27 06:21:12 2009 +0000

    use %zu for off_t

    svn:r1059

commit 8b5bd77415fb6634fadf08357676926fecf5f032
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jan 27 06:18:45 2009 +0000

    make it compile on linux

    svn:r1058

commit fdf694933ceafbf379e038597e56eb2498dea1e0
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jan 27 06:05:38 2009 +0000

    sendfile/mmap and memory reference implementation for evbuffers

    svn:r1057

commit b93e50545231ffb85254fa2d6c0fe50d0de39d8e
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jan 27 05:33:39 2009 +0000

    second argument to evbuffer_pullup should be ssize_t

    svn:r1056

commit 4f02a9630d7a982254d20696c306ac2e1017e3d1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 26 18:04:18 2009 +0000

    More docs and example code in whatsnew

    svn:r1055

commit c0712b16085b7f4e3c8f9f2ae5b951ce976a3476
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 26 17:29:45 2009 +0000

    Initial documentation for evdns server functions.  Also deprecate the one that didn't take an event_base.

    svn:r1054

commit 2b1d535e0d41ea12a8f61f026e366dcfc0b4c53f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 26 17:29:27 2009 +0000

    Accept evutil_socket_t for evdns_server_ports.

    svn:r1053

commit bdbd5e0e2fda62f2f0d277867319d470d096b096
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 26 17:09:37 2009 +0000

    For every deprecated function, explain why it is deprecated and what you should call instead.

    svn:r1052

commit 52a75f18e17cde5f7e4f705ae9ef32ee008b6c6f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 26 17:09:22 2009 +0000

    Documentation (or more accurate documentation) for a few more functions.

    svn:r1051

commit dddd58ba1375a9e78c01771299c820c22f04795e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 26 17:09:09 2009 +0000

    Reformat util.h slightly so that it looks ok with 8-char tabs.

    svn:r1050

commit 0e779906f9a14f7c9f3bd818be5b9ff082b32553
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jan 26 06:13:24 2009 +0000

    fix memleak in evmap_signal_clear; from Alexander Drozdov

    svn:r1049

commit 765ff1b9def2ec0423bee8617763d7b182ca4fa2
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 24 17:38:27 2009 +0000

    really install the buffer_compat.h file

    svn:r1048

commit 81dd04a726c8fa3a95a8780b06648187b15b1b2d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 23 18:04:34 2009 +0000

    Add a "flags" field to evbuffer callbacks.

    For now, there is just one: enabled.  This lets us avoid lots of
    mallocs/frees/tailq-manipulations just to turn a callback on and off.
    The revised bufferevent code wants this.

    svn:r1047

commit de7f7a84a32045a706559ae37ccaa325fe9b2720
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 23 18:03:45 2009 +0000

    Remove in_callbacks check: allow full recursion in evbuffer callbacks.  If you get yourself in an infinite loop, that's not our fault.  Note this in the docs.  Also reindent some docs now that my tabs match Niels's.

    svn:r1046

commit b1495865aa2d876bf1545f5ae399775f70e7e155
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jan 23 02:04:41 2009 +0000

    also install the buffer_compat.h header file

    svn:r1044

commit ec2f4cbc0961d562f39639a1ea3eb4044fc402c7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 23 01:35:57 2009 +0000

    Move obsolete evbuffer function into include/event2/buffer_compat.h

    svn:r1043

commit c735f2b45aaca4d9c118245e407a00e6b8f4d234
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 23 01:11:13 2009 +0000

    Code to allow multiple callbacks per evbuffer.

    svn:r1042

commit 86d526a0648a884dd966b52142c620f2f5180c28
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 23 01:04:10 2009 +0000

    Start writing more of whatsnew-xx.txt, which will become whatsnew-2.0.txt

    svn:r1041

commit f20902a2902b85f5d63d785a32b00fdbbd64a52d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 22 17:56:15 2009 +0000

    Remove evperiodic_assign and its related parts: its functionality is subsumed by EV_PERSIST timeouts.

    svn:r1040

commit 5e6f6dcd1b9d50b39d2878619c5b4c0d6d34591f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 22 17:48:55 2009 +0000

    Use EV_PERSIST on notify event for efficiency and simplicity.

    svn:r1039

commit 20c20466fb55647823a4db865f8cb042e87788e0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 22 17:48:27 2009 +0000

    Use EV_PERSIST in bufferevents for efficiency and simplicity.

    svn:r1038

commit dc1526e0da9c13eba2138c8a551d2535ede385d8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Jan 22 17:48:16 2009 +0000

    Fix warnings on compile: make static functions static.

    svn:r1037

commit fe72c885d938881a876affe1c930aedb64a11306
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 22 06:23:14 2009 +0000

    fix signal processing for non-kqueue backends; when a signal callback delivers a signal; from Alexander Drozdov

    svn:r1035

commit a077fb8c099e90523d1365bbd9f2db8328a46ca1
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 22 02:47:35 2009 +0000

    rename sys/signal.h to signal.h; configure m4 macro dir; this assist with compilation on Haiku

    svn:r1033

commit 56ea4687a5e6cf131c825c99a8f0ffe04afa4c2d
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 22 02:33:38 2009 +0000

    Change the semantics of timeouts in conjunction with EV_PERSIST; timeouts in that case will now repeat until deleted.

    svn:r1032

commit 309fc7c4ad34f7e50245c305a776a5e04b4a0555
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 21 07:51:25 2009 +0000

    New functions to provide sane threading callbacks with pthreads and win32 threading implementations.

    svn:r1031

commit 70405e3c7a184a11be506e2e4fd4774e867f978b
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jan 21 07:18:31 2009 +0000

    fix freebsd compile; from Alexander Drozdov

    svn:r1030

commit fa1c9a6d096b0be115db99095912750a4e12dca9
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jan 19 23:52:21 2009 +0000

    rename the backend from "event ports" to "evport" - this will allow environment based disabling to work

    svn:r1027

commit ed7e0e77ed573d9f5b4123d7874de3efb02763d1
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jan 19 23:40:11 2009 +0000

    bug fix and potentital race condition from Alexander Drozdov

    svn:r1025

commit f6eb1f816c77f2b3e209690551b9c2f7d7d2e454
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 19 21:53:03 2009 +0000

    Change evbuffer_read implementation to split data across chunks, and use readv when available.  This should make us use less space.

    svn:r1024

commit a5901991c74590d81e35b5b3f44877f00b6e3397
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 19 20:37:24 2009 +0000

    Use eventfd for main-thread notification where available (i.e., linux).

    svn:r1023

commit c3e9fcf672b87ba9314899cfcc9f60400cfb73fb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 19 20:22:47 2009 +0000

    Change the semantics of notify so we can implement it with eventfd or (given a different backend for win32) a windows Event.

    svn:r1022

commit 34d2fd063472d088fea1d7730123cdbda93cc0db
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 19 19:46:03 2009 +0000

    Debug and enable pipe notification

    svn:r1021

commit ddf3ee976d60e5d17f73cdd441cbc260b3f72f6a
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jan 19 07:00:51 2009 +0000

    make event ports compile again

    svn:r1020

commit ec4cfa33c91b9df4dc1621315999cba60cc839e2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 19 01:34:14 2009 +0000

    Make event_break threadsafe; make notify-thread mechanism a little more generic; let it use pipes where they work.

    svn:r1019

commit 2b7febc80a447b4ee4a2a2dc7339b6226be9bb1a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Jan 18 01:33:18 2009 +0000

    Fix osx compile

    svn:r1018

commit fed2fd094402790a329ff769286bdf54fb470210
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 17 07:50:34 2009 +0000

    try to make devpoll work again; i dont have access to a machine

    svn:r1017

commit 5e796901c11fc7b52b143aa3dd24d6260f64f553
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jan 16 00:25:54 2009 +0000

    clean up buffered data on reset; reported by Brian O'Kelley

    svn:r1015

commit 83d2a34c99ba73a23a7031d525f6278d1859dc8a
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 15 06:15:24 2009 +0000

    rename time-test in comment to signal-test

    svn:r1013

commit 8278c9be548f8357f124f4691f0b7cc12703ea3f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 14 22:17:46 2009 +0000

    Note the one restriction on what you can do with the evbuffers of a bufferevent.

    svn:r1011

commit 840318196b3bdf500ac3d3002feb249f20f900ef
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 14 22:17:31 2009 +0000

    Make some evbuffer functions const

    svn:r1010

commit 89fe316779d0323a7ef5786f3aea81892ee82122
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 14 21:13:58 2009 +0000

    Update win32 code to put indices in evmap.

    svn:r1009

commit 554e14934e46f11fcec09d5c69bff5d231db2ea9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 14 20:52:32 2009 +0000

    Move per-fd info from eventops into evmap.  Not done for win32.c yet.

    svn:r1008

commit 3552ac1eb3af86fcc0b6d8015b4ba9c72ed0f54a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 14 19:39:17 2009 +0000

    Do not allow chain length to expand indefinitely.

    svn:r1007

commit ad7f1b4ae99d0d0652087ab23abd2717745f2d27
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 14 18:45:42 2009 +0000

    The element size for our linear evmaps is a pointer, not the whole struct.

    svn:r1006

commit 6bb2f84216ef82184b3502ee77b98aa8b608805a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 14 18:38:03 2009 +0000

    Add initializer functions for evmap types.

    svn:r1005

commit 6d3ed0657d1be559cc3376ed3f8473ddfa2aadb6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Jan 14 14:58:48 2009 +0000

    Simplify evbuffer_write logic: combine nearly all of WSASend and writev cases.

    svn:r1004

commit bab8f2e1827d47f622806404bdc765515f81e8c2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 22:02:32 2009 +0000

    Fix compilation on win32 WSASend evbuffer_write() code.
    Still not enabled until I make sure that the unit tests test this.  They _do_ pass.

    svn:r1003

commit 9935d5b01e4345829a7ea5c06e86d45156ea8944
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 21:39:32 2009 +0000

    Fix win32 compilation.  Surprisingly, unit tests pass too.

    svn:r1002

commit 574d320217b07023ac2e50a16f7999f04aceffae
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 20:50:34 2009 +0000

    There is no WSAEAGAIN.  There is only Zuul^WSAEWOULDBLOCK.

    svn:r1001

commit 169321c9e6aebee26c1fe3e6deaf51ce00d7308e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 20:26:37 2009 +0000

    Rename four internal headers to follow the -internal.h convention.

    svn:r1000

commit 822ca048add2b10f73054914fd0ff7c2bf241661
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 19:34:50 2009 +0000

    Untested (and compiled-out) evbuffer_write backend to use WSASend on win32 where we use writev on unix.

    svn:r998

commit fbd5e820d7c02f16d43568e281cd9ffde9f834a4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 19:20:22 2009 +0000

    Stop linking backends into libevent_extra.la

    svn:r997

commit 554909420dc1db14c0b1764f1be5ca5dd5459840
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 19:20:14 2009 +0000

    Move internal headers into noinst_HEADERS automake target where they belong.

    svn:r996

commit 81ab45add511fd02ac08924841ec811186b3e4bb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 19:20:04 2009 +0000

    Use new EVUTIL_ERR_*_RETRIABLE macros when we're testing an errno for blocking.
    Previously, we used inconsistent and incompletely ported ifdefs.
    (We don't use these macros in platform-specific files like evpoll.c, since
    they don't need to work on win32.)

    svn:r995

commit 5ebd23ad7472ce00dc8e5e2467df7ec02ef8584c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Jan 13 19:19:50 2009 +0000

    New EVUTIL_ERR_*_RETRIABLE macros to tell if an errno blocked or failed.

    svn:r994

commit 99db0e7f72ecbc81de2d73da98e3f9be66db1e68
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 12 20:42:19 2009 +0000

    Add a new evbuffer_write_atmost() functino to write no more than a given number of bytes to an fd.

    svn:r993

commit f446f1493a81fbbc2c3c22d4acfd125e70093e78
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 12 20:42:06 2009 +0000

    Small cleanups to buffer.h documentation.

    svn:r992

commit 1df57d2b97311ecb59c86873e9cccf2b9e0be401
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jan 12 20:36:24 2009 +0000

    Move strlcpy.c into libevent-core, so that code built against libevent-core on platforms without strlcpy can link.

    svn:r991

commit 8a72441077548fc327163ed19ccb5658d4e7ca7e
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jan 12 05:22:29 2009 +0000

    make it compile with USE_DEBUG again; reported by Alexander Drozdov

    svn:r990

commit 91e3ead85eb81c3f8aabb8a193e3cc952755d87a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jan 10 14:37:45 2009 +0000

    Improve the hashsocket function.

    svn:r989

commit 55bcd7d2f0cae7f60dedf9b48265bb155bec157f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 9 13:42:21 2009 +0000

    On win32, use a hashtable to map sockets to events rather  than using an array.

    svn:r988

commit 8f5777e692e7e85dc711174da6d129bc43a836d4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 9 05:01:48 2009 +0000

    Document internal evmap functions, add a couple of asserts, and fix up some things that did not need to be void* any more

    svn:r987

commit 980bcd68f7e49f8c0a9042f64d62e624f8c5f76b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 2 21:21:58 2009 +0000

    Work better with platforms that do not have ipv6 structures, or that do not have sin_len fields, etc.

    svn:r986

commit 135591aeab4ac58f91f2109aa4cafdeeb0ce040b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 2 20:46:35 2009 +0000

    Change the type of nameserver.address from u32 to sockaddr_storage, so that we can handle nameservers at IPv6 addresses.

    svn:r985

commit cfbd1680080cc917f0d15d2a840dd05d9f462217
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 2 20:46:26 2009 +0000

    Add another function to parse the common address:port combination formats into a sockaddr.

    svn:r984

commit 0d9d5cfe22c89391a1ee25e2104cbf1fd6e1fcfb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 2 20:46:12 2009 +0000

    New functions in evutil to clone inet_pton and inet_ntop, with tests.
    Adapted from Tor code.

    svn:r983

commit 172b657567777078296442f5363b9a1e764886b9
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jan 2 18:18:30 2009 +0000

    malloc fd only if it is needed.

    svn:r982

commit f37d1685df84cd7da52a21f4e4469faa641d1aaa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Jan 2 04:56:56 2009 +0000

    Include http_compat.h in http.c so we do not get warnings about functions with no prototypes.

    svn:r981

commit 87be18daa192bdb2e75e56f1ef5226a0df6b2f73
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 25 16:25:37 2008 +0000

    implement evdns_cancel_request; test one of the new evdns_base functions

    svn:r980

commit 49f4c0ef883e822b98b03ca422fd69590697380b
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 25 16:21:13 2008 +0000

    generate documentation for move dns header files

    svn:r979

commit eed234519c5abee420a255aa7fccfd779ee3a08f
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 25 16:20:45 2008 +0000

    forgot to re-enable dns tests

    svn:r978

commit 30cba6d0b3a7d3de4bfdc3a939729b73d36a2a49
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 25 09:22:13 2008 +0000

    we cannot realloc memory used by TAILQ; instead malloc each slot individually

    svn:r977

commit 17bfc07e940f981168b136ce08570dbd0a99bff1
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 23 22:38:01 2008 +0000

    remove http_compat include

    svn:r976

commit b55ca7de1c58043fd04d1fcc934870aa1e7b5cf6
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 23 22:31:27 2008 +0000

    reduce void *age a little bit

    svn:r975

commit b225e756ae6a50578cacfcf7bfd1a51c1362834b
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 23 22:24:32 2008 +0000

    remove unused variable

    svn:r974

commit d776f8462be6c68ac4cd7bf3903710aad5dd842b
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 23 22:23:37 2008 +0000

    deprecate the usage of signal_{add,del,set} and name it evsignal_{add,del,set} instead; move the old definitions to compat

    svn:r973

commit 02b2b4d1bee7dfd5d75d0a376ce64fc7298e350f
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 23 16:37:01 2008 +0000

    Restructure the event backends so that they do not need to keep track of events themselves, as a side effect multiple events can use the same fd or signal.

    svn:r972

commit 97cebce8fdc400401093f669a56e46bef518386e
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 23 14:53:55 2008 +0000

    the switch of bufferevents for http connections did not handle the EVBUFFER_ERROR case correctly

    svn:r971

commit ebcf5efcfe208ee4381ac6d5ed6783b77fbd6056
Author: Niels Provos <provos@gmail.com>
Date:   Fri Dec 19 22:42:51 2008 +0000

    fix memory leaks in the regression tools; add another close detection test that validates that there are no dangling connections on the server

    svn:r969

commit f1728d94eb0fe93fc503ef9cda42a8d78e223f96
Author: Niels Provos <provos@gmail.com>
Date:   Fri Dec 19 22:41:07 2008 +0000

    fix the close detection problem correctly by not running close detection on the server

    svn:r968

commit f700566cb947f7229be3909e3c926b096ca826a8
Author: Niels Provos <provos@gmail.com>
Date:   Fri Dec 19 21:31:43 2008 +0000

    Make the http connection close detection work properly with bufferevents and fix a potential memory leak associated with it

    svn:r963

commit 8c594168785feb1b899350b03538ed24756d3be6
Author: Niels Provos <provos@gmail.com>
Date:   Fri Dec 19 21:03:42 2008 +0000

    memory leak: forgot to free paused rpcs in server

    svn:r962

commit 77867244a9bb7af857a198cfc2ed08227895e88f
Author: Niels Provos <provos@gmail.com>
Date:   Fri Dec 19 21:02:36 2008 +0000

    memory leak: forgot to free the configuration object

    svn:r961

commit 808f00e1a1351b1b5a14276c928ecd778a9d3e2d
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 13 06:11:12 2008 +0000

    constify structs; from Andrei Nigmatulin

    svn:r959

commit dd73168556961d690e355c9eb7c086f633543461
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Dec 3 20:09:13 2008 +0000

    Implement increased DSN-poisoning resistance via the 0x20 hack.

    svn:r958

commit 1eeb96aa8863d6ed3e8eb9080a618df48b688baa
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 29 01:12:41 2008 +0000

    move cirular queue removal into its own function

    svn:r957

commit cdf9453af44dceed3274d33a279d5181b3a81237
Author: Niels Provos <provos@gmail.com>
Date:   Fri Nov 28 20:55:11 2008 +0000

    install the header files, too

    svn:r956

commit 1c765b78fb0c633f377b2fee8fee6d4bb07965e4
Author: Niels Provos <provos@gmail.com>
Date:   Fri Nov 28 20:11:24 2008 +0000

    move dns header files into the include directory; move old functions into compat and structs into a struct header file

    svn:r955

commit 4fa4a56253fda85d5451eb66bcddc1bf960756cb
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 27 19:57:48 2008 +0000

    fix a typo in setting the global event base; reported by lance

    svn:r953

commit ffb3966ec2a9975a103d78b0d30a318737b1e22a
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 27 19:34:07 2008 +0000

    minor compilation and regresson fixes; from Frank Denis

    svn:r952

commit 4fe25cefb59bdda688acf0ba54aacf640374e4d2
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 27 19:27:33 2008 +0000

    Clear the timer cache when leaving the event loop; reported by Robin Haberkorn

    svn:r950

commit 5792d42f0ff130380d036ff427d8408ecd61b6f2
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 16 23:22:14 2008 +0000

    Allow setting of local port for evhttp connections to support millions of connections from a single system; from Richard Jones

    svn:r948

commit 50202d757d719316f5d6d92d1fb6941fcef66b72
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 15 05:27:23 2008 +0000

    only bind the socket on connect when a local address has been provided; reported by Ajejo Sanchez

    svn:r946

commit 31cfe52662fe14c24f0b6794fe2e16cc3aac0696
Author: Niels Provos <provos@gmail.com>
Date:   Thu Oct 30 19:38:31 2008 +0000

    clear the timer cache on entering event loop; reported by Victor Chang

    svn:r944

commit c97ee898dca9b1d18cddb0dcc0cf2c9bb3346065
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 26 13:36:15 2008 +0000

    Fix: do not crash when asked to configure an impossible event_base

    svn:r942

commit b3d6a569e7a0bee12718b1ff0da6277d470cdf76
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 7 23:24:54 2008 +0000

    do not remove accept-encoding header in make request

    svn:r938

commit fded0a8783f3a8d688f60f176b87598164aeb650
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 5 16:47:04 2008 +0000

    Fix compilation of recent error code with win32.

    svn:r937

commit de069b99774221193530f9eaa43ebfa417be941f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 5 16:29:56 2008 +0000

    On win32, errno is not the last socket error.  Worse, WSAGetLastError() is not the last socket error sometimes (i.e., EWOULDBLOCK).  Also, strerror() does not handle winsock errors. Therefore, event_err() and event_warn() are completely wrong for windows socket errors.  Fix that.

    svn:r936

commit a710d817ad67dccbf75526738d658b881126d6d1
Author: Niels Provos <provos@gmail.com>
Date:   Sat Aug 30 23:19:49 2008 +0000

    Match the query in DNS replies to the query in the request; from Vsevolod Stakhov

    svn:r930

commit c968eb3e01ff80b9959952b858d152d62a3ac9b6
Author: Niels Provos <provos@gmail.com>
Date:   Tue Aug 19 11:26:47 2008 +0000

    Fix a bug where headers arriving in multiple packets were not parsed; fix from Jiang Hong; test by me.

    svn:r928

commit b89a3de044077b851c669b967d599bf24982e2cd
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 25 05:22:28 2008 +0000

    do not warn on accept when errno is egain|eintr

    svn:r925

commit cca2f8fa0eee370e1b75de198dc755c9a4a23bf2
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 25 01:29:54 2008 +0000

    make event_add not change any state if it fails; repoted by Ian Bell

    svn:r923

commit 1aa6826f62880be761834bc1317ac0cb8dc398f4
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 25 01:18:40 2008 +0000

    fix off by one errors in devpoll; from Ian Bell

    svn:r921

commit 3b24f4eedc2a60247496de74c85bc0997461edba
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 25 00:48:30 2008 +0000

    another fix; we also need to remove the signal event from the queue

    svn:r918

commit e67a5ea9bb546587f6143643f6201d4574f474b7
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 25 00:19:15 2008 +0000

    fix a problem with epoll and event_reinit; reported by Alexander Drozdov

    svn:r917

commit a4e2f52a4467af1ce6724d04df14fc98a6f06359
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jul 20 23:31:28 2008 +0000

    add a signal and free the base for reinit test

    svn:r915

commit 1c164cebb892bd355f9dfbbd4bbc147e7b15466b
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jul 19 23:35:29 2008 +0000

    restore signal handlers correctly when we deallocate the signal base

    svn:r913

commit 5e905c9dd52a601d0af581c28ca3c96e7163b79b
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jul 17 14:09:07 2008 +0000

    if we change the timeouts on bufferevents, we might have to readd pending events

    svn:r911

commit 12077b4e2ed997206c0e02291263c432ac51bca2
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jul 16 03:47:47 2008 +0000

    support setting of AA or RD in dns server response

    svn:r910

commit 506f3d0c8df77b0b6d52fa491c451901228c65a6
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jul 13 20:18:41 2008 +0000

    fix cname replies

    svn:r907

commit c4af6211bd692a3faa3f7b4390e7f2a493eeae0b
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 11 16:11:16 2008 +0000

    forgot to add Alexander Drozdov as bug reporter in ChangeLog

    svn:r905

commit 4bf44654a6429eaff145434e4b60e4eeeee1227f
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 11 16:04:07 2008 +0000

    assert(a & b) -> assert(a && b)

    svn:r903

commit f7e61870e95efded87d17f2cf29ec9af815b9d30
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 11 15:49:04 2008 +0000

    support multiple events listening on the same signal; make signals regular events that go on the same event queue

    svn:r901

commit 5512be01765f3d0607bf6c48d7fe00b80f9d83fa
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 11 15:15:04 2008 +0000

    fix a bug where deleting signals with kqueue would delete subsequent adds

    svn:r899

commit df97fca9ca112c4ed24a0b81b5115b53c3f2fc47
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jul 2 06:08:16 2008 +0000

    From Scott Lamb:
    * Allow the user to set the Content-Length: then stream a reply.
      This is useful for large requests of a known size. Added unit test.

    * Don't send a response body on HEAD requests, 1xx status codes, 204
      status codes, or 304 status codes, as described in RFC 2616 section
      4.3. (Doing otherwise causes problems - in particular, if a 304 has a
      chunked body (even an empty one), Safari 3.1.1 issues and then fails
      the next request on the connection with the non-sequitur error message
      "Too many HTTP redirects"!)

    * Specify a default Content-Type: when a response body is required, not
      when we have data in the response buffer by the time we make the
      header. (I.e., do this on evhttp_send_reply_start() for consistency.)

    * Don't expect a body in response to HEAD requests.

    svn:r898

commit 409236a77d40f234e93684e51eb5928c30854daa
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jul 2 04:39:09 2008 +0000

    detect CLOCK_MONOTONIC at runtime for evdns

    svn:r896

commit 707f67849aeafc491b24019f972e78062290adcb
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jul 2 04:22:48 2008 +0000

    reject negative content-length headers

    svn:r894

commit cb7c3bd671097bf247ed1a84f11a5c4e1612e910
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jun 29 01:30:06 2008 +0000

    support multi-line http headers; based on a patch from Moshe Litvin

    svn:r890

commit 9998c0cbc814decba91f90f3cdcda8da5cc1f5e3
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jun 26 00:40:57 2008 +0000

    correct handling of trailing headers in chunked replies; from Scott Lamb.

    svn:r887

commit 21f76156b115299ffd8438ed323b03cee050cb77
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jun 25 16:32:47 2008 +0000

    change min_heap_idx to signed

    svn:r883

commit 52161b47b6df9e2abb5d1b5fa5039cd8c7936ecf
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jun 25 14:56:35 2008 +0000

    fix a bug in which nameservers would not be added to the correct base in windows.

    svn:r873

commit 8aa94ced6d8a04511d4366bb9232e0718dbcf8d4
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jun 25 01:01:11 2008 +0000

    proper library dependencies for regress.

    svn:r872

commit 637508144c723d17f85628f5e868cbb8b72a72fc
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jun 25 01:00:29 2008 +0000

    add a visual studio 2005 solution

    svn:r871

commit 9816192ac434e585f78d4a69f8d1f3807b74a53a
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jun 25 00:59:21 2008 +0000

    add log.h header file

    svn:r870

commit ac0c7e2c7db4328362b54cab8753ebe05d2769e8
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jun 25 00:58:08 2008 +0000

    skip connection-retry test on windows

    svn:r869

commit 0bee2ff3830b041ed758225007adf4144a827aeb
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jun 25 00:34:24 2008 +0000

    void function should not return a value

    svn:r868

commit c3dc717a38d07f89850b9ddfe5b46c3859392d40
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 23:37:37 2008 +0000

    close fd if evhttp_get_requestion_connection fails

    svn:r867

commit 24580e2b586f48ade544be64c8d57ed2c21bbc84
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 22:43:19 2008 +0000

    fix build on unix side

    svn:r866

commit 60e4c0674a5cf31fa256054e6d26e95730c2bc19
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 22:41:43 2008 +0000

    add an event_debug statement for executing active events.

    svn:r865

commit 30abfd99a2e1b12d21f896c9546588e4d701ded9
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 22:38:37 2008 +0000

    provide fake_getnameinfo so that the http layer works under windows.

    svn:r864

commit f80f90ed8bcd83e41a14cf120b69b7444ffa73fa
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 21:01:44 2008 +0000

    fix a bug in http_connect for windows; the address was not copied correctly.

    svn:r863

commit 2f8708db3ff01c8402eb0f3fc5de651161c7258d
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 18:04:41 2008 +0000

    ifdef out a whole bunch of sections; gettimeofday to evutil_gettimeofday

    svn:r862

commit 994a7c50e1935ab0ae9c08384b386657ddbeff7d
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 16:39:45 2008 +0000

    close -> EVUTIL_CLOSESOCKET()
    gettimeofday -> evutil_gettimeofday()

    svn:r861

commit 55f914941d134bf86a3da504fce7fe5c67d47bbd
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 16:29:02 2008 +0000

    fix evutil_snprintf on windows

    svn:r860

commit 35b1236c84a7f06359f7d389bd7716550c4e5d00
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 15:29:41 2008 +0000

    change write to send for windows.

    svn:r859

commit e736991aea9b8c8cf706b2f39e82ef4d14640460
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jun 22 16:00:48 2008 +0000

    make it work with older versions of automake; from Scott Lamb

    svn:r858

commit e711ce454ae94cd76c5bcc54395d3a395c32f92f
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jun 21 06:10:10 2008 +0000

    reintroduce a memmove when there is enough misalignment to hold the new data; otherwise the size of the buffer may grow without bounds

    svn:r857

commit 99a1063e735f70443268b50d14f042c87cb9b99a
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jun 21 02:21:25 2008 +0000

    support 64-bit integers in rpc structs

    svn:r856

commit 4c56ba1cede32ba30624208e8e84672531e644e3
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jun 20 06:52:13 2008 +0000

    do not use SO_REUSEADDR when connecting

    svn:r854

commit 774d056c46dbe7c3075b2628f7d57c514d404249
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 17 01:14:58 2008 +0000

    warn on connection failures

    svn:r853

commit 2baaac7fdb330dc98ca5d117d8fcc7ab049396be
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Jun 14 17:50:36 2008 +0000

    Forward-port:  Rename INPUT and OUTPUT to EVRPC_INPUT and EVRPC_OUTPUT, but keep the INPUT/OUTPUT aliases on non-win32 platforms to maintain backwards compatibility.

    svn:r852

commit a6ce520cfbcfa21406406b1649ee3ba99307a797
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jun 12 14:43:35 2008 +0000

    allow min_heap_erase to be called on removed members; from liusifan

    svn:r849

commit c584741baf59d9bf69cb59ae05f943ab4cbcee45
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Jun 2 18:35:02 2008 +0000

    Fix line ending style on windows projects files.

    svn:r847

commit 344c2b56f1b3eb7bcbb9a732c5b6221146f915ba
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jun 2 05:45:26 2008 +0000

    deliver partial data to request callbacks when chunked callback is set even if there is no chunking on the http level; allows cancelation of requests from within the chunked callback; from Scott Lamb.

    svn:r846

commit 9586a1cbb00d84d2c913d6719aa0ba614dbc1d7a
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jun 1 16:21:24 2008 +0000

    fix an evbuffer corruption when adding an empty evbuffer; from Scott Lamb

    svn:r845

commit 480d8142b8dc12a051ebd99d34a2a4aa44444181
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jun 1 01:19:08 2008 +0000

    do not define a variable in a header file; it will lead to duplicate symbols when linking

    svn:r844

commit f9707a01e582818a71085f1c45bd8f8f1c923e3b
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 31 18:57:21 2008 +0000

    we need to declare the enum first before it can be used; c++ compilation errors

    svn:r843

commit 05965921ab76880bf1faf3e405ca6c40c32fdf30
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat May 31 14:37:31 2008 +0000

    Add new functions to access backends by their features and to query the features of a backend.

    svn:r842

commit 9515c8076ee3e60580903338594c86a9b344619e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 30 17:35:20 2008 +0000

    Oops; add regress_et.c

    svn:r841

commit 39400e68b6202dc40545b5ac26468fc3f7a11184
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 30 16:56:34 2008 +0000

    Patch from Valery Kholodkov: support for edge-triggered events with epoll and kqueue.  Changed from original patch: made test into a regression test, with explicit success/failure for edge-triggered and non-edge-triggered cases. Closes SF request 1968284.

    svn:r840

commit 9ca7a3a3d6be5741095b3ba2c7e1c979f66628cb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 30 16:19:01 2008 +0000

    Resolve two conflicts.

    svn:r839

commit 2deb3ce061adffccbacff6b87401134c4047b8b3
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 29 01:39:43 2008 +0000

    simplify handling of environment variables for disabling backends;
    make event_get_supported_methods obey environment variables; this
    fixes make verify; problem reported by Scott Lamb.

    svn:r838

commit 8b66f1bd4dd7c4e5e2b913062ea6c9ee1836e7ec
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 17 02:14:17 2008 +0000

    constify struct timeval *

    svn:r836

commit 134344b79ebbda2ff765f7381e49da686bed9f7c
Author: Niels Provos <provos@gmail.com>
Date:   Fri May 16 01:55:40 2008 +0000

    Fix use of freed memory in event_reinit; pointed out by Peter Postma

    svn:r834

commit bc5e27190f11e23d1737a0644fa221f1642f3f6a
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 15 06:36:36 2008 +0000

    Attempt to make a project for the regression test. There are several problems:
       - no gettimeofday on windows
       - no varargs macros on windows (all the rpc stuff does not build)
       - no zlib on windows (zlib test does not build)
       - some library dependencies seem to be missing

    svn:r833

commit 89a1512a74a8ae8b920ce52c7b0f706bf59832b8
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 15 06:33:23 2008 +0000

    close -> EVUTIL_CLOSESOCKET

    svn:r832

commit 9e8688a749297b88b1841f723b51f60dfa314a07
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 15 06:10:40 2008 +0000

    windows does not have varargs macros, so this is all useless

    svn:r831

commit a35529c60faa45e551fef155bfa6f8646f3f3583
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 15 06:03:23 2008 +0000

    add the code here until we figure out how to generate it on windows

    svn:r830

commit a68de2525d3e3bc39cfaa9e3eac055a284ad6c00
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 15 03:49:03 2008 +0000

     r19749@catbus:  nickm | 2008-05-14 23:48:44 -0400
     New function to dump inserted and active events.  Also do not recv() on an int array.

    svn:r829

commit f9b4ee0aa4cc786cbc567de12edb914122614107
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 15 03:19:05 2008 +0000

    replace write/read/close with send/recv/EVUTIL_CLOSESOCKET

    svn:r828

commit 35245a6037bd1a2e3d678014b05a22276e022c09
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 15 03:16:34 2008 +0000

    Minor project content tweaks

    svn:r827

commit 90ddd91ff046b01158a2f9c88e49960b294a8697
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 15 03:14:48 2008 +0000

    do not include sys/time.h on windows

    svn:r826

commit 3ca22aa837262bdb9a5960de750217dc5e8fe5d3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 15 03:05:10 2008 +0000

     r19739@catbus:  nickm | 2008-05-14 23:05:03 -0400
     Use our offsetof; do not rely on platform offsetof

    svn:r825

commit c3c11f27b0915e5ba91ba00293381c962494ea0d
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 15 01:54:20 2008 +0000

    add a simple http server for potential benchmarking

    svn:r823

commit ec3956ba48f2212cd23cfdb88d4e777b51441146
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 15 01:53:48 2008 +0000

    fix connection keep-alive behavior for HTTP/1.0

    svn:r822

commit 7be8f13b95b85816329d725307e9f8fc8839e6e4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 14 15:56:17 2008 +0000

     r19736@catbus:  nickm | 2008-05-14 11:50:49 -0400
     Add casts to make some printf formats in regress.c happier.

    svn:r821

commit aa4b92574b4ca57f1172119d66b6559409410a68
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 13 05:05:30 2008 +0000

    move some structure definitions from evrpc.h to evrpc-internal.h

    svn:r817

commit 1bce6f74349051fbda3e435f1e7dce7ae8c80644
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 13 03:51:10 2008 +0000

    use evhttp_connection_base_new()

    svn:r816

commit ef0221cc3957fa3103e4f24db10eb090ae2db0f1
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 13 03:42:47 2008 +0000

    document chunked replies plus fix doxygen warnings

    svn:r815

commit 0cafdeb6f53370877a74fa4687bcaf1b269396a5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 12 17:16:47 2008 +0000

    Tweaks to make unit tests fail less badly on mingw on trunk.

    svn:r814

commit c6da86ffcb85636e56dd4ea14a6d65ba7970d921
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 12 16:44:24 2008 +0000

     r19709@catbus:  nickm | 2008-05-12 12:42:48 -0400
     Possible fix for [1960723] snprintf and vsnprintf return values are wrong on win32

    svn:r813

commit 1080852e91291bcb1fb46dbc9e493d255aaa06fb
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 12 03:12:09 2008 +0000

    allow cancelation of user initiated http requests; this will allow cancelation of rpc requests eventually

    svn:r812

commit 03fafae0068ed014dfe9ee97a3e150fbe6ff6ba0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 12 01:03:36 2008 +0000

    Make trunk event.c build happily on win32 under mingw.

    svn:r811

commit 054159f59c0de3fe3a73cad011883f6c02ce6f3f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 12 00:56:19 2008 +0000

     r19679@catbus:  nickm | 2008-05-11 20:56:12 -0400
     Windows does not have alloca().

    svn:r810

commit 04366d5acc691783083c5e746056694943924b3a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 12 00:51:48 2008 +0000

     r19677@catbus:  nickm | 2008-05-11 20:51:41 -0400
     Oops; we had not changed event_malloc() to mm_malloc() [etc] in win32.c

    svn:r809

commit 6bf1ca780c5f60618e59e02b61eae4bfee199f46
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 12 00:40:04 2008 +0000

     r19675@catbus:  nickm | 2008-05-11 20:39:39 -0400
     Stop pretending that u_char and u_short are standard types that win32 is dumb not to have.  In fact, u_char can really just be spelled out, and u_short was usually just a bad way of saying ev_uint16_t.

    svn:r808

commit a57767faf8d140797b0adf3fe885b7eb8928057c
Author: Niels Provos <provos@gmail.com>
Date:   Sun May 11 16:22:35 2008 +0000

    more accessors for evhttp_request

    svn:r807

commit 687be1241bd1c931f724ceeb562d64037f4e13f1
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 10 07:32:05 2008 +0000

    dispatch the callbacks against the decoded uri to be more http compliant

    svn:r806

commit 7bbe185b0e54f3d3228ed7e17c78ed3c5ec05836
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 10 06:32:53 2008 +0000

    evhttp_request_uri -> evhttp_request_get_uri

    svn:r805

commit 950af186791c01636fe37ef8c3720154e48f975c
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 10 05:58:17 2008 +0000

    replace fnmatch with homegrown function

    svn:r804

commit 7868ab5a435d6697cc0c70ab085d7970e5b97384
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 9 04:00:17 2008 +0000

     r19667@catbus:  nickm | 2008-05-08 23:49:26 -0400
     fwd-port: Always include winsock2.h before windows.h.  Apparently some SDKs need this.

    svn:r803

commit 64ce7990831e76038285bb78b9c061b6fcba4370
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 8 23:57:31 2008 +0000

     r15555@tombo:  nickm | 2008-05-08 19:56:51 -0400
     fwd-port The IRIX compiler thinks #error means warn.  Fix configure.in to tolerate this.

    svn:r801

commit 8acb80b4f9a19469dd0d93e5b7cd149e7f89da3b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 8 22:51:39 2008 +0000

     r15551@tombo:  nickm | 2008-05-08 14:49:20 -0400
     Use _get_ convention for new accessor functions.  (These are all new ones as of 2.0, I believe).

    svn:r799

commit 7defe4cbc16a53b10e8b03ed618140121cc91144
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 8 15:55:09 2008 +0000

     r15549@tombo:  nickm | 2008-05-08 11:53:11 -0400
     Make new http headers include minimal parts of event2/ tree; make old evhttp.h incldue event.h, since the old one did too.

    svn:r798

commit a29f7eefac8f3c66434fb5d7461546d1c7234675
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 8 15:38:31 2008 +0000

    svn:r797

commit 3d60bccc8ef2ef9413d198bc670f00efb21149af
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 8 14:25:44 2008 +0000

     r19656@catbus:  nickm | 2008-05-08 10:25:08 -0400
     forward-port: Remove #include "misc.h"s.

    svn:r795

commit a26442c5acba29b315793e67bc802c4fed13e31d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu May 8 14:06:33 2008 +0000

     r19649@catbus:  nickm | 2008-05-08 10:00:14 -0400
     Replace gettimeofday() usage with a new evutil_gettimeofday().  This removes all previous need for win32-code/misc.[ch]

    svn:r792

commit 85ed7133439658bf7b44a99100fcf82eed1d232e
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 8 07:00:16 2008 +0000

    deprecate timeout_* event functions by moving them to event_compat.h

    svn:r791

commit de1c43926b032954a91f7edf50bbf4f233bd791e
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 8 06:15:04 2008 +0000

    migrate evhttp to event2; accessors are still missing

    svn:r790

commit 3f56e364b76ccc3a688768e92952d08052556120
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 8 05:56:20 2008 +0000

    event_base_new_with_config() and related methods

    svn:r789

commit 3b2022ef3a9eba280b256ac7bbe99f224a8584ad
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 8 05:33:15 2008 +0000

    provide an api for retrieving the supported event mechanisms

    svn:r788

commit 0a804f3c837f7969d04f6604a40897a9b5aa8c57
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 7 21:51:49 2008 +0000

     r19641@catbus:  nickm | 2008-05-07 17:51:26 -0400
     Forward-port: Fix win32 vc-2005 build.

    svn:r786

commit f2d65f8a9cdbfd5500d1b3a01b5c9de8e1f89f5c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 7 20:29:33 2008 +0000

     r19634@catbus:  nickm | 2008-05-07 16:10:37 -0400
     the C syntax is fn(void), not fn().

    svn:r784

commit 68fecb7ab6c24c13a2693464e62228601d0af10b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed May 7 20:29:11 2008 +0000

     r19633@catbus:  nickm | 2008-05-07 16:10:00 -0400
     Fix bug 1958901: stop overriding CPPFLAGS in test directory.

    svn:r783

commit 300a4efb2d3b28fd0dfbb7cfb004ddf7a19d5ef4
Author: Niels Provos <provos@gmail.com>
Date:   Wed May 7 01:52:24 2008 +0000

    test virtual hosts

    svn:r780

commit caa368e1cc901abf75c02ae19d70d148a95e79ba
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 5 19:19:47 2008 +0000

     r19610@catbus:  nickm | 2008-05-05 15:18:52 -0400
     Switch strcmp() tests in test_evbuffer() to use memcmp instead.  Previously they broke on my Linux box.

    svn:r779

commit 803dc36ad8dde5964d87ee87bc1e4f64277f4903
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 5 19:19:08 2008 +0000

     r19609@catbus:  nickm | 2008-05-05 15:16:52 -0400
     Reename evdns-internal struct request to evdns_request, and expose the name. switch new evdns resolve APIs to return evdns_request*.  This is a prereq to making evdns requests cancelable.

    svn:r778

commit 957e9fd829b64dc8f54824a34601eff95e71d669
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 5 17:49:52 2008 +0000

     r19607@catbus:  nickm | 2008-05-05 13:49:44 -0400
     Hack to make sure that there is always a working fast EVENT_FD()

    svn:r777

commit 4e8a339ef7afaecaa230ef4acd68c87c78f51e96
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 5 15:46:00 2008 +0000

     r19602@catbus:  nickm | 2008-05-05 11:45:18 -0400
     Make most of the tests use the new headers.

    svn:r776

commit bb37fbb22ef403b993c86ce8930a5061c3d49c93
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 5 15:45:47 2008 +0000

     r19601@catbus:  nickm | 2008-05-05 11:45:04 -0400
     Make event_rpcgen.py use the new headers.

    svn:r775

commit bc6da5ea79be0083c6b276d9fd6a62cb8278f096
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 5 15:45:39 2008 +0000

     r19600@catbus:  nickm | 2008-05-05 11:34:06 -0400
     Move EV_* flags into event.h; they are a necessary part of the public API.

    svn:r774

commit d0c3644e63667380ff08645621eefaea0231241a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 5 15:45:30 2008 +0000

     r19599@catbus:  nickm | 2008-05-05 11:26:18 -0400
     Turn event_initialized() and friends into a function; add function equivalents for EVENT_FD and EVENT_SIGNAL.

    svn:r773

commit 891dba4376535df407189de3a2af7c3951280752
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon May 5 15:00:53 2008 +0000

     r19597@catbus:  nickm | 2008-05-05 11:00:29 -0400
     define _GNU_SOURCE before including fnmatch.h so that FNM_CASEFOLD gets defined and linux build gets fixed.  This whole fnmatch() business will be a bit hard to port, though: windows doesn't have one IIUC, so we'll have to reimplement our own to work there.

    svn:r772

commit f2a81fbc67b90551a50e07f4af5a266ac081ccd4
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 5 07:17:05 2008 +0000

    add support for virtual http hosts; no tests yet

    svn:r771

commit f940eb4b8d26f677af4bcaa21ed98cfdb9db0acc
Author: Niels Provos <provos@gmail.com>
Date:   Sun May 4 22:21:29 2008 +0000

    fix a bug where it was not possible to bind multiple sockets to the same http
    server; test that binding multiple sockets works.

    svn:r769

commit 5786d5255a3a906b0768304d28171ef95c05bdbb
Author: Niels Provos <provos@gmail.com>
Date:   Sun May 4 20:05:39 2008 +0000

    improve doxygen documentation for evhttp.h - still incomplete

    svn:r768

commit 36d7ab508293985ac08f8df043d837b96028cd0f
Author: Niels Provos <provos@gmail.com>
Date:   Sun May 4 18:31:21 2008 +0000

    trust in naming: rename evbuffer.c to bufferevent.c

    svn:r767

commit 40a44b36bbc108a97e65517b98bc2bb65896ff07
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun May 4 17:23:20 2008 +0000

     r19564@catbus:  nickm | 2008-05-04 13:23:10 -0400
     Fix compile with --enable-gcc-warnings and clock_gettime()

    svn:r766

commit a83caa6b29b1d86dd2e8121bc782a5ce92bbdbb9
Author: Niels Provos <provos@gmail.com>
Date:   Sun May 4 03:52:24 2008 +0000

    remove too agressive assert

    svn:r765

commit 181007b9cf52ae6aea8d97e64e114895c7f885f0
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 3 22:14:44 2008 +0000

    make event_assign void; it cannot return an error

    svn:r763

commit 1d30750b1de39c25ff930d8a52e2f3228fac353b
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 3 22:10:09 2008 +0000

    support for periodic timeouts

    svn:r762

commit 8c750eaff8412b8387eeca1e75d62540ad725f00
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 3 21:37:33 2008 +0000

    separate signal events from io events

    svn:r760

commit 45e6fb0dd263f878135bd210d3d410906eb45c9f
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 3 18:23:44 2008 +0000

    cache clock_gettime/gettimeofday values in base

    svn:r758

commit f04497e493c6b665d6cc889a57f2441d71d176d1
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 3 03:05:28 2008 +0000

    introduce evbuffer_reserve_space() and evbuffer_commit_space() to make processing in filters more efficient

    svn:r757

commit becc89b7788984924b3041d5a187b1c978bac458
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 3 02:37:18 2008 +0000

    introduce evbuffer_contiguous_space() and use it in the zlib filter test

    svn:r756

commit 5fbc7f0aeedcc5e57ac40aad01211bce7a7c7a0d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri May 2 16:28:25 2008 +0000

     r15439@tombo:  nickm | 2008-05-02 12:28:08 -0400
     use event_assign internall; switch uses of event_set to use event_assign instead.

    svn:r755

commit e8f450f232cdb01349e5639181dd115ed5a663f0
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 1 02:08:26 2008 +0000

    expose a way to create the rpc context manually

    svn:r754

commit 85c4904bc526103e5702c716ee80d03937083168
Author: Niels Provos <provos@gmail.com>
Date:   Thu May 1 01:45:00 2008 +0000

    allow connections to be removed from an rpc pool

    svn:r753

commit d76cca72736a0918221506c64d76124e65a71f1a
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 30 04:36:26 2008 +0000

    fix missing printf format argument

    svn:r752

commit ccb70f1bc747068e960dd721669f0298b4f7870c
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 30 04:31:10 2008 +0000

    provide example bufferevent filters doing compression and decompression as additional regression test

    svn:r751

commit 522480f5cebeb8bb9ff9c09d14b8ae6280f15038
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 30 01:01:57 2008 +0000

    improve documentation for bufferevent.h

    svn:r750

commit c58a01a23bc3fb649b3c45a625ebb643864166a9
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 30 00:50:20 2008 +0000

    fix regression test; oops

    svn:r749

commit 682adc443b03a47c849f028474639c5d8254101c
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 30 00:09:16 2008 +0000

    support input/output filters for bufferevents

    svn:r748

commit 28add6b9e2d03b96ff73d06f825c3186101ac445
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 29 23:18:04 2008 +0000

    add more header files to doxygen

    svn:r747

commit 98dc98c59fb7833bb60319a988beea596698b98a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 29 21:19:26 2008 +0000

     r15346@tombo:  nickm | 2008-04-29 17:19:18 -0400
     Remove the never-exported, never-used, never-threadsafe evhttp_hostportfile()

    svn:r746

commit 9626a421de2e3b4e2eed34bfdffdd0d417655c78
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 29 18:11:23 2008 +0000

     r15341@tombo:  nickm | 2008-04-29 14:09:50 -0400
     Use internal implementation for evutil_timercmp() everywhere, to avoid bugs when the platform timercmp() has never heard of <= or >=.  Also, replace timercmp() usage in min_heap.c with call to evutil_timercmp().

    svn:r744

commit 4cff82bb4f2519d139559c308b63be54cb86b002
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Apr 29 18:11:10 2008 +0000

     r15339@tombo:  nickm | 2008-04-29 14:03:48 -0400
     Note that evhttp_hostportfile is not threadsafe, and so its usage will change.  Mark its first argument const. Remove a now-redundant declaration for it in http-internal.h.

    svn:r743

commit e44ef375ee9a8b4c7e8d21a752e9e4864595758f
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 29 04:52:50 2008 +0000

    convert evhttp_connection to use bufferevents

    svn:r742

commit 0ec09b550795d19a74425c1756fcc598b1f3f8b3
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 29 04:35:26 2008 +0000

    also try client connection for chunked requests

    svn:r741

commit 9c480533bf1181d41eadf21fde0df6f4481d8e55
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 29 02:33:27 2008 +0000

    test the server side of sending chunked replies

    svn:r740

commit 72a3902e5c25272c0c6f690971633c5be947a392
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 29 00:24:00 2008 +0000

    test some primitives from http.c

    svn:r739

commit 9485ff9a6629e2b5f73a775a7fa799f56d589e30
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 27 20:40:56 2008 +0000

    introduce bufferevent_setcb and bufferevent_setfd to allow better manipulation of bufferevents

    svn:r737

commit 22c8a404027c7efcd486d70568c5d6f723781635
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 27 20:04:33 2008 +0000

    test connection retry logic

    svn:r736

commit 7b29ad57d95513ff806c4bbdace0861330dd8054
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 27 19:41:26 2008 +0000

    test server behavior when connection times out while reading the headers

    svn:r735

commit dd183f7c97777e8937187c0041be383338d0c0ad
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 27 00:32:10 2008 +0000

    provide bufferevent_input and bufferevent_output without requiring knowledge of the structure

    svn:r734

commit f6c40173819c911e99b61867c53daa766618c4c5
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 26 05:13:56 2008 +0000

    fix a bug in which bufferevent_write_buffer would not schedule a write event

    svn:r733

commit 3a17aeed7a481e614c65925cbe07b286ae257e54
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 26 01:00:44 2008 +0000

    fix a bug in buffrevent read water marks and add a test for them

    svn:r731

commit 3278012f33bc5bf3a965244d570803dd6b7e663f
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 26 00:35:17 2008 +0000

    expose bufferevent_setwatermark via header files and fix high watermark on read

    svn:r729

commit 89f63b205d29b9ff9642713d22ca59427c1ffab5
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 25 02:44:46 2008 +0000

    add bufferevent_read_buffer function

    svn:r728

commit fe2e7307f3a2d7915098a3fa671da3c3e89bdd64
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 25 01:29:15 2008 +0000

     r15320@tombo:  nickm | 2008-04-24 21:29:06 -0400
     Yes, niels says this is safe.

    svn:r727

commit 94fb4d0a1e95f140dd840535bb066fb7dbb3013c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 25 01:18:18 2008 +0000

     r15317@tombo:  nickm | 2008-04-24 21:17:49 -0400
     Add new functions to be more threadsafe (and structure-ignorant) than event_set.

    svn:r726

commit 49868b618a55c375d6c378edc174cd81e478f213
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 25 01:18:08 2008 +0000

     r15316@tombo:  nickm | 2008-04-24 20:58:36 -0400
     Rename internal memory management functions from event_malloc() etc to mm_malloc() etc.

    svn:r725

commit a55a67d56e989b9f7fa2027f2c75bec8a55a9a87
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 18 13:46:13 2008 +0000

     r15249@tombo:  nickm | 2008-04-18 09:46:02 -0400
     Avoid leaking a string in the unlikely OOM case from name_from_addr. spotted by niels.

    svn:r724

commit a404bf9877ad2cca2f4bb403afff6818bb94d6e8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 18 13:28:00 2008 +0000

     r15245@tombo:  nickm | 2008-04-18 09:27:50 -0400
     Oops; use libevent-internal type instead of uint32_t.

    svn:r722

commit 8d2a61605b6c32a06b961238eb5d3195b8b452d1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 18 13:25:05 2008 +0000

     r15242@tombo:  nickm | 2008-04-18 09:24:44 -0400
     Make tagging code thread-safe, and fix a bug in encode_int_internal

    svn:r721

commit a2d4a06298173e0db43ae4012edb48f538825fd6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 17 19:27:54 2008 +0000

     r15228@tombo:  nickm | 2008-04-17 15:27:39 -0400
     Use new includes in evport.c and devpoll.c.  I do not have the hardware to compile these on; somebody else should test them.

    svn:r720

commit 3eb21c0d33683302e1acd7e14a899889f28b2931
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 17 19:25:35 2008 +0000

     r15226@tombo:  nickm | 2008-04-17 15:25:25 -0400
     Fix a couple of gcc warnings on 64-bit platforms

    svn:r719

commit 8863ff7625c3d4fd81063029738bb7c31471e79d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 17 19:19:36 2008 +0000

     r15224@tombo:  nickm | 2008-04-17 15:19:24 -0400
     Oops. We need to make sure that strdup wasn't oom.

    svn:r718

commit ae09ac4ae0194880fe7871dc4b6704d99901bd8a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 17 19:18:40 2008 +0000

     r15220@tombo:  nickm | 2008-04-17 15:16:02 -0400
     Use new includes in more files still

    svn:r717

commit 3f3a16757f2843c1edebe8df58a85aed965f7fd9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 17 19:17:50 2008 +0000

     r15219@tombo:  nickm | 2008-04-17 15:12:17 -0400
     Use new includes in epoll.c

    svn:r716

commit beb39f577032cc7ba1c727fda00fc63816a90262
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 17 19:16:30 2008 +0000

     r15218@tombo:  nickm | 2008-04-17 15:10:13 -0400
     Add a missing #include <stdarg.h>

    svn:r715

commit e688a88a821506e8cfb43155496c8e2b1b39af53
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 17 17:55:35 2008 +0000

     r15216@tombo:  nickm | 2008-04-17 13:55:05 -0400
     Add new thread-safe interfaces to evdns functions. Needs review.

    svn:r714

commit fc41ffde4d21a61a070c88ae57e1e18f3055b08b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 17 15:50:28 2008 +0000

     r15214@tombo:  nickm | 2008-04-17 11:47:10 -0400
     Make name_from_addr() threadsafe in http.c

    svn:r713

commit 963ae2cf42af8f9fea2729d5c424ef9ffa0a9a6c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 16 21:01:31 2008 +0000

     r15212@tombo:  nickm | 2008-04-16 17:01:21 -0400
     Remove some needless includes

    svn:r712

commit 0ac73078ed42b5185a45610534ce3475ba6c27e7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 16 20:01:51 2008 +0000

     r15193@tombo:  nickm | 2008-04-16 16:00:35 -0400
     Split event.h into several new headers in include/event2.  event.h is now just a wrapper that includes all the subheaders.

    svn:r711

commit f560198e4598fe1b1fe471c9f3da2251edf87105
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Apr 16 20:01:27 2008 +0000

     r15192@tombo:  nickm | 2008-04-16 15:59:51 -0400
     Fix a compilation error on OSX.

    svn:r710

commit f9f4d4fe1720f888ff1d89d7edfdc9725f62432d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Apr 11 20:02:50 2008 +0000

     r19309@catbus:  nickm | 2008-04-11 16:02:07 -0400
     Fix for epoll-on-linux bug (#1908866) where timeout values over (LONG_MAX-999)/HZ) (35 for me, or maybe 6 hours 50 min for some people, or maybe 3 hours 25 minutes for a special few) get treated as "wait forever".  This actually deserves to be fixed in the kernel, but even if it is we will need to support Linux versions with this bug.

    svn:r709

commit 44ceb945a37cc3b791b59b4ac1a9c669eb3e7e2e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 10 19:34:50 2008 +0000

     r19305@catbus:  nickm | 2008-04-10 15:34:10 -0400
     Fix bug 1938754: do not warn when epoll_create() fails with ENOSYS.

    svn:r706

commit 0c843507abcf18c8a7c766fa5b7a307b2030bd8f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Apr 10 19:25:11 2008 +0000

     r19301@catbus:  nickm | 2008-04-10 14:54:46 -0400
     Forward-port: Correct the documentation on evbuffer_add_[v]printf: Fix for bug 1914464.

    svn:r705

commit 812d2fd8fd4dfab158bbc8e278a723363cf29e6e
Author: Niels Provos <provos@gmail.com>
Date:   Thu Apr 3 14:27:01 2008 +0000

    proxy one more generator

    svn:r701

commit a7e395512efd5622ad81dc0e10a41ce157301cee
Author: Niels Provos <provos@gmail.com>
Date:   Thu Apr 3 03:33:07 2008 +0000

    slight refactoring

    svn:r700

commit 193c06a7ed9730f5f08ca3958fbacee2c3e28e36
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 31 02:04:34 2008 +0000

    fix a bug in which evbuffer_add_vfprintf would loop forever;  avoid
    fragmentation in evbuffer_expand by increasing the size of the last buffer
    in the chain; as a result with have to keep track of the previous_to_last
    chain;   provide a evbuffer_validate() function in the regression test to
    make sure that all evbuffer are internally consistent.

    svn:r699

commit 3ef1f5041596672affcfe8af01d6d73eb86865de
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 31 00:33:46 2008 +0000

    do not delete uninitialized timeout event in evdns

    svn:r697

commit 502929cdf21ba9433f9956c1e3f177a28a1d5b0f
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 31 00:31:53 2008 +0000

    add a check that base != NULL for threading; might want to drop this later

    svn:r696

commit 8920ac4ddf509be3981b00d5b13ed349359e4834
Author: Niels Provos <provos@gmail.com>
Date:   Sun Mar 30 21:06:33 2008 +0000

    make RPC replies use application/octet-stream

    svn:r694

commit ca42671a1443b695bc9a7640d4eb223d1a34fbcc
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 29 01:45:45 2008 +0000

    make event methods static so that they are not exported; from Andrei Nigmatulin

    svn:r692

commit cb50f615d4902a0703a604bf64b1a5d014bcbb70
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 11 05:26:30 2008 +0000

    rename lock create callback functions; as suggested by nick

    svn:r691

commit c182baca1028af0b12142e26a571e180232039b1
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 10 03:17:20 2008 +0000

    switch thread support so that locks get allocated as they are needed.

    svn:r690

commit 6a92ec0b0f43d7b074f856152d24a1f45384c787
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Mar 4 19:47:01 2008 +0000

     r18547@catbus:  nickm | 2008-03-04 14:46:42 -0500
     Fix compilation with --enable-gcc-warnings

    svn:r689

commit 0c49e456f1c80fed988342b90cf28bb1f88273e8
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 4 05:42:20 2008 +0000

    document thread functions

    svn:r688

commit d5c15b2ebb609414358216cd62ca135b5658c104
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 3 03:36:51 2008 +0000

    make event_rpcgen.py generate code include event-config.h

    svn:r686

commit 968fd5c06fc8dc5cf3cf6cad48fe7bc517d1fe99
Author: Niels Provos <provos@gmail.com>
Date:   Sun Mar 2 21:39:49 2008 +0000

    forgot this header file

    svn:r685

commit 558de9b3776bf378fe2416c1c86639bc7abef3db
Author: Niels Provos <provos@gmail.com>
Date:   Sun Mar 2 21:18:33 2008 +0000

    Provide OpenSSL style support for multiple threads accessing the same event_base

    svn:r684

commit 19dad16699ddf396c87e7c44c174e6716c0d160c
Author: Niels Provos <provos@gmail.com>
Date:   Sun Mar 2 01:46:00 2008 +0000

    Do not free the kqop file descriptor in other processes, also allow it to be 0; from Andrei Nigmatulin

    svn:r682

commit 593b5f99b334da9a5090792910d39b4de16d0f1f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Feb 29 22:33:01 2008 +0000

     r18492@catbus:  nickm | 2008-02-29 17:32:55 -0500
     Add another missing _REENTRANT.

    svn:r681

commit 00382110b268891ced706f9d84ec80031213bc89
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 29 05:23:49 2008 +0000

    address nick's comments and make evbuffer_pullup more efficient

    svn:r680

commit 72105927770952445009742663e95f04ba702806
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 28 20:57:01 2008 +0000

     r18490@catbus:  nickm | 2008-02-28 15:56:55 -0500
     Replace www.google.com with google.com; fix EVDNS_MAIN code.

    svn:r679

commit 697177306f8dcf7781b5adc8bebe4dfae54f472a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 28 20:41:34 2008 +0000

     r18488@catbus:  nickm | 2008-02-28 15:41:27 -0500
     Define reentrant in evdns.c so that we get a declaration for strtok_r

    svn:r678

commit 0322ce0a3ba144cbf00f0a359c21aaf76e9f2063
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 28 18:36:03 2008 +0000

     r18486@catbus:  nickm | 2008-02-28 13:35:53 -0500
     Make offsetof into evutil_offsetof.  Be a little more willing to call evbuffer_chain_align() from evbuffer_expand().  Clarify some docs, and add some XXX comments to note questionable areas.

    svn:r677

commit d71da6f73748c063814c07c47c0d6fad90b2e8dd
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 28 17:47:30 2008 +0000

     r18484@catbus:  nickm | 2008-02-28 12:47:20 -0500
     Use event_warn() function, not fprintf-to-stderr.

    svn:r676

commit 0e7cbe6508a296952a05ddc9cb883fef0a13cf1e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Feb 28 17:38:52 2008 +0000

     r18482@catbus:  nickm | 2008-02-28 12:38:40 -0500
     Fix GCC 4.2 warnings; fix includes in subdirs.

    svn:r675

commit 5c70ea4c9d8720525405063658ccd3e24b6966b1
Author: Niels Provos <provos@gmail.com>
Date:   Thu Feb 28 02:47:43 2008 +0000

    improved code for evbuffer; avoids memcpy

    svn:r674

commit eb9b958089bcf59ad712c747e294da95c6baf20c
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 27 06:20:48 2008 +0000

    add some basic tests for DELETE/PUT; from Josh Rotenberg

    svn:r673

commit e7ad5493908731707df6c9434decb0fecb7767eb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Feb 26 20:24:29 2008 +0000

     r14507@tombo:  nickm | 2008-02-26 15:23:44 -0500
     Patch from Tani Hosokawa: make some functions in http.c threadsafe.  Also, note some functions in http.c that still are not threadsafe.

    svn:r671

commit bd31d00fc19e426ed98a1483274e093789789f87
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 26 04:54:19 2008 +0000

    move signal callbacks closer to test code

    svn:r670

commit 7470ce52c5670bae0ef2a9aa6a77988e0a77e0cb
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 26 03:49:00 2008 +0000

    increase listen queue for http sockets to 128

    svn:r669

commit 960be58869f63c2a7814a984f7a34d69c159fbc3
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 26 03:29:36 2008 +0000

    deal correctly with http/1.0 and keep-alive

    svn:r667

commit 0b114da2b64eac386b43933d3243100b4abf82ee
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 26 03:12:07 2008 +0000

    introduce evhttp_accept_socket() to accept from an already created socket

    svn:r666

commit b14cd655d1eac14eed28ca749a4abf6889e2afca
Author: Niels Provos <provos@gmail.com>
Date:   Mon Feb 25 07:49:22 2008 +0000

    add support (without tests!) to PUT/DELETE requests; from Josh Rotenberg

    svn:r662

commit bb914ed9af5f509f80f72c289178c0e467864aed
Author: Niels Provos <provos@gmail.com>
Date:   Mon Feb 25 07:34:07 2008 +0000

    do not insert event into list when evsel->add fails

    svn:r660

commit 5a2ece1895d5cf4b3f07aad52ba88dc0edcb4990
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 23 19:04:26 2008 +0000

     r18370@catbus:  nickm | 2008-02-23 14:04:00 -0500
     clean up some corner cases in evutil.h.

    svn:r655

commit 67bf29ad72572aaa433350438534ad78f0d0ec41
Author: Niels Provos <provos@gmail.com>
Date:   Sat Feb 23 06:02:04 2008 +0000

    simplify evbuffer by removing orig_buffer

    svn:r654

commit 87bef9e9740cba70007209eed70e3f55985d9a06
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 20 21:49:09 2008 +0000

    update event_base_loop documentation; from Tani Hosokawa

    svn:r652

commit 0d26f1605f54527afb26d64e4fbfa2ff42bdb06e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 18 20:13:27 2008 +0000

     r18169@catbus:  nickm | 2008-02-18 15:13:20 -0500
     Rebuild and re-run configure etc when configure.in or Makefile.am changes.  Also, have automake do its dependency tracking.

    svn:r651

commit 11230f7e1620c663842e9993ac3cdaa29afec7c2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Feb 18 20:04:01 2008 +0000

     r18145@catbus:  nickm | 2008-02-18 15:02:20 -0500
     Stop using deprecated autoconf code to set integer types; detect actual files to include more thoroughly.   This should make us work on solaris 9 again.  This should be a backport candidate, if it works.  Also, make all libevent code use ev_uint32_t etc, rather than uint_32_t.

    svn:r649

commit 506d4dbcf469f100ffd490098647384c294e82e1
Author: Niels Provos <provos@gmail.com>
Date:   Sun Feb 17 01:31:31 2008 +0000

    remove NDEBUG ifdefs from evdns.c

    svn:r647

commit 23ef0d093661a0a0219190b2bbbdf8254af0000b
Author: Niels Provos <provos@gmail.com>
Date:   Sun Feb 17 01:15:36 2008 +0000

    allow regression code to be build even without Python installed

    svn:r645

commit f09e9d91b14e549b0b98d26c2c248e283bf8a85f
Author: Niels Provos <provos@gmail.com>
Date:   Sun Feb 17 01:12:09 2008 +0000

    1.3.99-trunk -> 1.4.99-trunk

    svn:r644

commit d47907a73036b07ce61c7ce81d19cde6bc2c4056
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 16 20:50:02 2008 +0000

     r14213@tombo:  nickm | 2008-02-16 15:48:07 -0500
     Patch from Scott Lamb: make http content length into a 64-bit value.

    svn:r641

commit 807ab182d08971651b3cff66353e3145fb8e4ef2
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 16 20:49:47 2008 +0000

     r14211@tombo:  nickm | 2008-02-16 15:28:54 -0500
     Add new evutil_strtoll() function so we can apply 64-bit content-length patch from Scott Lamb in a portable way.

    svn:r640

commit 677a95864be43749c82705f9f8f3f56f0b8a1f4b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Feb 16 16:56:34 2008 +0000

     r14205@tombo:  nickm | 2008-02-16 11:55:57 -0500
     Fix bug 1894184: add a CRLF after each chunk when sending chunked HTTP data.  Original patch from propanbutan.

    svn:r637

commit 8ab618916fc9ba06ff5e84d3ea858a8b4eec9f1b
Author: Niels Provos <provos@gmail.com>
Date:   Sat Feb 16 06:09:39 2008 +0000

    event_base_get_method; from Springande Ulv

    svn:r635

commit f38aec8bb733c57b5257bede429fa7f992131270
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 12 06:01:46 2008 +0000

    devpoll and evport need reinit; tested by W.C.A. Wijngaards

    svn:r633

commit 2fde2217592db3be65a5b0d53e3ee054724139c4
Author: Niels Provos <provos@gmail.com>
Date:   Sat Feb 9 16:03:01 2008 +0000

    address some compiler warnings in debug mode

    svn:r630

commit 6baff52296073f668322e74f397e91ebb29030b9
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 6 16:14:42 2008 +0000

    EAGAIN check for event ports; from Wijngaards

    svn:r629

commit 8c66d4e289290c58cfd34865e0405b549320d532
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 26 07:29:57 2008 +0000

    remove pending timeouts on event_base_free

    svn:r627

commit 9859bc783adcd51729b3d7563902ac8caca67b42
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Dec 31 20:47:12 2007 +0000

     r15764@tombo:  nickm | 2007-12-31 15:46:16 -0500
     Forward-port from 1.4 branch: Make generated rpc files build-depend on event_rpcgen.

    svn:r626

commit 992bc85b96b3ca3eeff05e030468392894cc7195
Author: Niels Provos <provos@gmail.com>
Date:   Mon Dec 31 20:42:21 2007 +0000

    dereference the right field and associate the right connection

    svn:r624

commit 2460aa5939c91fe75761c75c3d0a90f32b9a73b2
Author: Niels Provos <provos@gmail.com>
Date:   Mon Dec 31 19:33:30 2007 +0000

    allow hooks to get access to the connection object

    svn:r623

commit 5a5609c75317a8c011b02daf3853ebd3b6bab9fc
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 29 22:45:54 2007 +0000

    allow association of meta data with RPC requests for hook processing

    svn:r622

commit 024804cce7101c5d09bb58e85d4ca7cc83f3e44d
Author: Niels Provos <provos@gmail.com>
Date:   Fri Dec 28 07:58:29 2007 +0000

    the win32 changes for regress_http broke the regression test under unix.  making the socket non-blocking can return -1 on connect; so now, we need to check the errno; not sure if that is supported under windows.

    svn:r621

commit 955c6abf5327f3ebfa01d58a870a458f6aca0504
Author: Niels Provos <provos@gmail.com>
Date:   Fri Dec 28 00:36:47 2007 +0000

    pausing an rpc via a hook needs to deal with the fact that http callbacks free the request after they return; provide a way for a callback to take ownership of the request structure; the user then needs to explicitly free it.

    svn:r620

commit 6d291da240607b5ab6a3931ae761439c1880a9a4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Dec 28 00:34:05 2007 +0000

    Fix at least two bugs that are keeping the HTTP regression tests from running on windows.  There are some more bugs somewhere, since the HTTP regression tests still fail on windows.  But now they fail less.

    svn:r619

commit 819d4a33d766d1d585f73abb9d7c77d4f862970f
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 27 23:17:24 2007 +0000

    allow hooks to pause RPC processing; this will allow hooks to do meaningful work before resuming the
    RPC processing; this is not backwards compatible.

    svn:r617

commit 76945273c674d51f1c2f12e646a5248a2f52ed0b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 27 21:37:52 2007 +0000

     r15733@tombo:  nickm | 2007-12-27 16:37:33 -0500
     Add another "what's new" file -- this one for svn trunk

    svn:r616

commit 616a64c87cd8c8f0348e2bee1cba5b87b3e760c4
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 27 20:08:21 2007 +0000

    additional add argument was missing const qualifier

    svn:r615

commit 7e3a7af7d068a9b97d5d802d104cb30dd75a0e07
Author: Niels Provos <provos@gmail.com>
Date:   Mon Dec 24 23:59:41 2007 +0000

    support string arrays in event_rpcgen

    svn:r613

commit 03589ccb12c61e4ec9879298ddcceb80c930c008
Author: Niels Provos <provos@gmail.com>
Date:   Mon Dec 24 22:49:30 2007 +0000

    rollback r594: restructuring to make event activation independent.
    changes are going to wait for api design

    svn:r612

commit 68725dc8bddb083ede57a89ca5bba27ea905838b
Author: Niels Provos <provos@gmail.com>
Date:   Sun Dec 23 07:38:11 2007 +0000

    support integer arrays in rpc structures;  this involved some refactoring of the event_rpcgen code, so that other types should be able to get arrays fairly easily

    svn:r609

commit a5176a65ccfcec344d4827ab4ea1cb816bdba778
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 20 22:45:30 2007 +0000

    Fix a win32 warning in regress.c

    svn:r608

commit 127888bded88781b93be0b95b27737433ba7d516
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 20 22:20:06 2007 +0000

     r17291@catbus:  nickm | 2007-12-20 17:19:55 -0500
     Add tree.h to distributed files in trunk.

    svn:r607

commit fdafb66bb56d5982fa88243d4fd6930c28aba4ee
Author: Niels Provos <provos@gmail.com>
Date:   Wed Dec 19 06:33:05 2007 +0000

    removed linger from http server socket; reported by Ilya Martynov

    svn:r604

commit d4bdbca847ff1c788d6467e915d0b94e57da35bb
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 18 03:54:19 2007 +0000

    add -Wstrict-aliasing and remove bogus evtag_test from event.h

    svn:r602

commit d80c1c368959de2b5383eb3c2a921699e04e809d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Dec 16 19:34:09 2007 +0000

     r17185@catbus:  nickm | 2007-12-16 14:33:40 -0500
     Fix compilation with --enable-gcc-warnings enabled.

    svn:r599

commit d56a34e4669afa708831554e78afe1759ff774d9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Dec 16 19:33:52 2007 +0000

     r16991@catbus:  nickm | 2007-12-06 15:05:56 -0500
     Move event_init in regress.c to the function that actually messed up the current_base value.

    svn:r598

commit 7ab26a2c3296738fd96842f526858271380cce38
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Dec 16 18:55:16 2007 +0000

     r15519@tombo:  nickm | 2007-12-16 13:54:12 -0500
     Fix for bug 1846282: accept as well-formed DNS replies with questions but no answers.

    svn:r595

commit 7aa845b73b93f84bf46276bb5669ee0cb5e81b6c
Author: Niels Provos <provos@gmail.com>
Date:   Sun Dec 16 04:10:30 2007 +0000

    restructure the code to make event activation independent of regular event logic

    svn:r594

commit 622f69cc5a2d3e40e60c203bdf2c3a8c68539609
Author: Niels Provos <provos@gmail.com>
Date:   Fri Dec 14 07:12:05 2007 +0000

    forgot to make new member optional

    svn:r590

commit 850534734be9e18ed24630d506bc252816229b77
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 13 06:36:54 2007 +0000

    fix a bug with event_rpcgen for integers

    svn:r588

commit ffd606cd6dbb0df57a2d3c7f2ae4e68268ca4ea6
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 13 06:14:18 2007 +0000

    prefix {encode,decode}_tag functions with evtag to avoid collisions

    svn:r587

commit 3b345f3e2d7870ce23a14e1c11217dbd7aa62d8e
Author: Niels Provos <provos@gmail.com>
Date:   Wed Dec 12 07:02:55 2007 +0000

    pull setters/getters out of RPC structures to reduce their memory footprint

    svn:r585

commit ba48719946f2f1ea80db28b77dc23b27010e01e5
Author: Niels Provos <provos@gmail.com>
Date:   Wed Dec 12 04:39:42 2007 +0000

    support for 32-bit tag numbers in rpc structures

    svn:r583

commit e8b916c36e4b042e14154242d548e0401bba7832
Author: Niels Provos <provos@gmail.com>
Date:   Sun Dec 9 05:07:48 2007 +0000

    update ChangeLog; forgot about it

    svn:r582

commit fbe24f43ab56deb2fd50fa4ca1756069c2c9123e
Author: Niels Provos <provos@gmail.com>
Date:   Sun Dec 9 05:07:20 2007 +0000

    remove obsoleted recalc code

    svn:r581

commit fa89d661d91b584df308c097c0eec2d949b6fc55
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 19:40:49 2007 +0000

    Adjust more unit tests to pass on win32.

    svn:r580

commit fd418645ffe8e0cd0002efaa1ad4cba3dc183af3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 19:36:49 2007 +0000

    Add winsock init functions to bench.c so it can run on win32.

    svn:r579

commit 9cc67e5f78c9d9f783a6a55514e2b604198de09e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 19:35:55 2007 +0000

    Compile regression tests by default even on win32.

    svn:r578

commit 77861fa7f177586d361059563987f691e8b7d143
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 19:20:24 2007 +0000

     r16931@catbus:  nickm | 2007-12-06 14:19:58 -0500
     Fix warnings in debug messages

    svn:r577

commit cd666f8071baee5cc4834738253d82d86a5307a1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 19:18:14 2007 +0000

    Debug new win32 code: make bufferevents test pass.

    svn:r576

commit 78d0de30b8e08429c57ccfbf667655e334042ab3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 18:38:50 2007 +0000

    Fix compile warnings and errors in win32 build.

    svn:r575

commit 2e2104f4cea0932a04d98452ab36f2c41786c5d7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 18:13:03 2007 +0000

     r15172@tombo:  nickm | 2007-12-06 12:54:37 -0500
     Rewrite win32.c to use a red-black tree to map sockets to events.  This changes the performance from O(N^2) to O(N lg N).  Needs testing.  (This was made possible by recent changes to the implementation of non-persistent events.)

    svn:r574

commit 3206bbca46f55e4eb4570566a9566dd10c182c6d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 18:12:56 2007 +0000

     r15171@tombo:  nickm | 2007-12-06 12:47:47 -0500
     Use GCC attributes (where available) to verify printf type-correctness.  Fix some bugs this turned up.

    svn:r573

commit 1e435af17e658c973f644c9c751ab58296413fcb
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 18:12:44 2007 +0000

     r15170@tombo:  nickm | 2007-12-06 12:38:03 -0500
     Fix a warning in regress.c

    svn:r572

commit 5482192bb3cd0d4ece6fdcc641f85ec852c0437d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Dec 6 04:36:18 2007 +0000

     r15166@tombo:  nickm | 2007-12-05 23:35:10 -0500
     Apply patch from bug 1841036: set the base of the correct event in evhttp_connection_start_detectclose()

    svn:r571

commit 60103d25a96c46043386edaa3b78175225ff0189
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 1 16:36:00 2007 +0000

    remove duplicate submit of test_evbuffer_readln

    svn:r569

commit 395dd198cb64f03bf0fc12a4dbb33999906dc9d7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Dec 1 09:30:07 2007 +0000

     r15096@tombo:  nickm | 2007-12-01 04:29:39 -0500
     Test for corner-cases of re-adding non-persistent events from one another's handlers

    svn:r568

commit d73cf1e1f28c7df624488749276f9ebc1e13f4d3
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Dec 1 09:29:52 2007 +0000

    svn:r567

commit 876c3af7b042624a9c0efd70e1cc571e0a852fe6
Author: Niels Provos <provos@gmail.com>
Date:   Fri Nov 30 02:21:33 2007 +0000

    add another benchmark that tests cascading events

    svn:r566

commit 74b3db50ae9cdbc9ffcafd761251935d7f1a2216
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 29 06:08:24 2007 +0000

    always generate Date and Content-Length headers for HTTP/1.1

    svn:r564

commit f175befac9e6c8a26ce1f99810816e2d03b5cd86
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 29 04:03:36 2007 +0000

    small improvements to evhttp documentation

    svn:r562

commit eeb5e4cd883536ac95c746d42cd844047590f45b
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 29 02:52:32 2007 +0000

    a bug in the regression test of event_reinit caused epoll to fail

    svn:r560

commit ef085e84c6614fef3110c6c3448874d0f7ab44f1
Author: Niels Provos <provos@gmail.com>
Date:   Tue Nov 27 06:45:25 2007 +0000

    we need to pass the evbase to evsel->add

    svn:r558

commit e2e4cf1f6c847a3987af140c21b54903659e1127
Author: Niels Provos <provos@gmail.com>
Date:   Tue Nov 27 06:11:28 2007 +0000

    more complete test for forking behavior

    svn:r556

commit 5f3e31596b1a231a6041b9a1302d8059293a9b02
Author: Niels Provos <provos@gmail.com>
Date:   Tue Nov 27 01:39:10 2007 +0000

    move EV_PERSIST handling out of the event backends

    svn:r555

commit a7a7a1904507bb7fcc22a3c045c030d2837c3510
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 26 19:25:09 2007 +0000

     r16735@catbus:  nickm | 2007-11-26 14:24:58 -0500
     Fix test for EVBUFFER_LENGTH in evhttp_make_header().  Since appending an empty buffer to another is a no-op, this is not really a bug-fix.

    svn:r554

commit ce4ee418d2fffd0a5ce7208e35a19a2fc7205826
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Nov 26 19:18:49 2007 +0000

     r16733@catbus:  nickm | 2007-11-26 14:18:25 -0500
     Add an --enable-gcc-warnings option (lifted from Tor) to the configure script.  When provided, and when we are using GCC, we enable a bunch of extra GCC warnings in the compiler.  Also, make the code all build happily with these warnings.

    svn:r553

commit 1120f04f3eaafe98259ef286eecb648337b2214f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 21:53:06 2007 +0000

     r16731@catbus:  nickm | 2007-11-25 16:52:53 -0500
     Replace all fds on non-unix-specific APIs with evutil_socket_t, which is int on unix and intptr_t on win32.

    svn:r552

commit cbf9cfdf4507651ba39489158b17cf11703bb43d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 21:35:02 2007 +0000

     r16729@catbus:  nickm | 2007-11-25 16:34:50 -0500
     Add missing changelog entry for last commit.

    svn:r551

commit 6773a59721365a793bfbf8da91c512a449bdaf4f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 21:32:26 2007 +0000

     r14953@tombo:  nickm | 2007-11-25 15:56:40 -0500
     Replace evbuffer_readline with a more powerful evbuffer_readln that can handle more EOL styles, and that can give useful results when there are NUL characters inside the returned values. Includes regression tests.

    svn:r550

commit ab010e161f5877f99a3122bf2726f3a40ceb3204
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 21:32:15 2007 +0000

     r14952@tombo:  nickm | 2007-11-25 14:47:45 -0500
     Fix an unused variable warning.

    svn:r549

commit d1ad9403cb39da4c5daae9bd7ab0fc3e6b4da4b9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 21:28:51 2007 +0000

    svn:r547

commit fa95fe469aa666de53505f565bb69c8cd16ae6d8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 21:28:43 2007 +0000

     r16704@catbus:  nickm | 2007-11-19 15:58:54 -0500
     Check return value of event_add in signal.c

    svn:r546

commit 2823cb057927110719a7203c2346d6be8aa8468f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 17:15:28 2007 +0000

     r14944@tombo:  nickm | 2007-11-25 12:12:28 -0500
     Make kqueue pass more unit tests.

    svn:r544

commit 566ca340224c39e517f14d7a45cde68b874acde1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 17:15:17 2007 +0000

    svn:r543

commit 555e300ab282812f6fe4d776908584275993ba76
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 17:14:24 2007 +0000

     r14940@tombo:  nickm | 2007-11-25 12:01:37 -0500
     New mm-internal.h header that includes internal memory management functions.

    svn:r542

commit 7eb250e9c52813f30fef256b97f08a6871fd381a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 25 17:14:19 2007 +0000

     r14939@tombo:  nickm | 2007-11-25 11:59:26 -0500
     New function event_set_mem_functions to replace internal calls to malloc, free, etc with a user-supplied functions.

    svn:r541

commit 98b5453ecdd6a474ba8c3495285e607d5b7a8e57
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 25 07:11:59 2007 +0000

    forgot to dealloc previous base

    svn:r540

commit 88897852fc72c2cd43c057f2fc550b5842d5b857
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 25 06:57:59 2007 +0000

    provide event_reinit() to reinitialized an event_base after fork - necessary for epoll/kqueue

    svn:r539

commit 8c3396b0c60bd6c0dcc4f8baeb9174810247e557
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 22 16:41:29 2007 +0000

     r14935@tombo:  nickm | 2007-11-22 11:36:54 -0500
     Always set test_ok to zero after finishing a test, and before starting one.  This turns up some failures we had been missing.

    svn:r537

commit 1c23e219527b8342639f49e0884e209f7232502a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 17 22:21:42 2007 +0000

     r14931@tombo:  nickm | 2007-11-17 17:21:09 -0500
     Patch from Scott Lamb: Implement event_{base_}loopbreak.  Includes documentation and tests.  From sf.net Feature Request 1826546.

    svn:r535

commit 70248ca8ad0dd426798d1e11328970b1f537e505
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 17 22:21:33 2007 +0000

     r14930@tombo:  nickm | 2007-11-17 17:01:14 -0500
     documentation fix on loopexit and elsewhere from Scott Lamb.

    svn:r534

commit af6f331a0b777bedab38bfed254310134617c9e4
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 17 01:32:30 2007 +0000

    use a const pointer for bufferevent_write

    svn:r531

commit f586f42885b7558b1617396f53f19299f7c46ba8
Author: Niels Provos <provos@gmail.com>
Date:   Wed Nov 14 17:52:21 2007 +0000

    provide event_base_new() as a mechanism for not setting the current_global

    svn:r529

commit 56934d5d977892afa1342c8c3f55035989626bc5
Author: Niels Provos <provos@gmail.com>
Date:   Tue Nov 13 17:36:58 2007 +0000

    debug cleanups in signal.c; from Christopher Layne

    svn:r527

commit d50afbb3700f6938387128c0e9283b9b4987d3c9
Author: Niels Provos <provos@gmail.com>
Date:   Tue Nov 13 03:32:10 2007 +0000

    free minheap; from Christopher Layne

    svn:r525

commit d1e03054a30a79ee0574d8d2b98395f6445d63a7
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 12 07:34:29 2007 +0000

    clean up event-config.h to fix make distcheck; from sourceforge tracker

    svn:r521

commit 3742868ab54c82bc77686f8f89f3cae7191a2fe1
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 12 06:54:35 2007 +0000

    We do not need to specially remove a timeout before calling event_del; patch from Christopher Layne.

    svn:r519

commit 568095bfa1ba6c9fffe93250420471baf13c574f
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 12 05:34:10 2007 +0000

    srcdir for verify; from Christopher Layne

    svn:r516

commit 7add3d364197ff8ec3dce91cd8110a1f3fcf231e
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 12 02:44:02 2007 +0000

    stick autogen.sh into EXTRA_DIST

    svn:r515

commit df667b96ea57a2d00b5c3cdd150a675591ffacac
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 12 02:32:35 2007 +0000

    we no longer need acconfig.h

    svn:r510

commit 4a1a2e0d52a83a3b38f651a4480af3d8f7dcf435
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 12 02:31:07 2007 +0000

    Make the logic for active events work better with internal events; patch from Christopher Layne

    svn:r509

commit bbed0954b18de634a8fed50b8b08af6ea3bf3dae
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 11 03:05:03 2007 +0000

    revert r505; it introduced errors in epoll

    svn:r508

commit 97917e68e7b225ee0d2d77963e30290d095a74e6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 10 07:49:13 2007 +0000

     r16588@catbus:  nickm | 2007-11-10 02:47:14 -0500
     Another include for sample.  Patch from Christopher Layne.

    svn:r507

commit 321dfd55d4d37ad7060272abf933adaf9d22f7b6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 10 05:18:17 2007 +0000

     r16585@catbus:  nickm | 2007-11-10 00:16:11 -0500
     Patch from Christopher Layne: Make event_del() restore previous signal handlers, not the default.

    svn:r506

commit 9f0f3d6da29f5e323c025f2955a9d21a0efa4af0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Nov 10 05:18:11 2007 +0000

     r16584@catbus:  nickm | 2007-11-10 00:00:59 -0500
     Patch from Christopher Lane: reduce branch count in epoll_dispatch.c and generally improve clarity.

    svn:r505

commit cabcd62f38345d31a37b62b08fb166f34c8bc4f5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Nov 8 17:36:28 2007 +0000

     r16578@catbus:  nickm | 2007-11-08 12:34:51 -0500
     The == operator in shell is a bash-ism; do not use it in autogen.sh

    svn:r503

commit 8fd2124ef9e12228f41023bcf02bdbdf6800a208
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 22:57:08 2007 +0000

     r16556@catbus:  nickm | 2007-11-07 17:55:39 -0500
     MSVC6 does not seem to define a useful "what is the name of this function" macro

    svn:r502

commit 74e5e8f439f86e6e5ac699f0513beb4a19d115de
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 22:35:15 2007 +0000

     r16554@catbus:  nickm | 2007-11-07 17:33:49 -0500
     Mention autogen.sh in the README, now that we are more vocally encouraging people to try svn.

    svn:r501

commit 92cd548f80336e26fb44b519248476bf345be0aa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 21:14:04 2007 +0000

     r16544@catbus:  nickm | 2007-11-07 16:12:37 -0500
     Oops; forgot the log entry.

    svn:r500

commit 4e1ec3e05e39699025e087929b84f3634929ae4c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 21:01:26 2007 +0000

    Make all the C files in the libraries compile under MSVC 2005 Express.  There are still a few warnings, and probably some subtle issues, but it's better than nothing.

    svn:r499

commit 45c7ab25de2dea155332cc144c1f94f5c073c919
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 07:33:36 2007 +0000

     r16510@catbus:  nickm | 2007-11-07 02:29:42 -0500
     Try not to shadow local variables or function arguments.

    svn:r498

commit e72661d2ff04ce1020fce74ecb97130fb5ea9aab
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 07:33:31 2007 +0000

     r16509@catbus:  nickm | 2007-11-07 02:08:32 -0500
     Stop using C++ style comments.

    svn:r497

commit 1f50f412834c8b150a37bb5742f6702537093d52
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 07:33:26 2007 +0000

     r16508@catbus:  nickm | 2007-11-07 02:01:03 -0500
     Note a dubious point in http.c

    svn:r496

commit 7feba57010f4d5024083abc055864f292f9a6063
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 07:33:21 2007 +0000

     r16507@catbus:  nickm | 2007-11-07 01:34:55 -0500
     Never assign a string constant to a non-const char *.

    svn:r495

commit a3f122d66756626bdd69ad00757ea8208cc38021
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 07:33:16 2007 +0000

     r16506@catbus:  nickm | 2007-11-07 01:29:59 -0500
     Make all rpc and http functions not prototyped in evrpc.h and evhttp.h into static functions.  I believe that these functions were meant to be private, yes?

    svn:r494

commit 794857242f09a687f73200d5e95e6d7311900eb4
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 06:07:54 2007 +0000

    Remove spurious #include <sys/tree.h> in win32.c.

    svn:r493

commit f74e7258fd29a341b4ecf08dfdb83e50aaee3255
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 06:01:57 2007 +0000

     r16501@catbus:  nickm | 2007-11-07 01:00:31 -0500
     This is one of those patches which will either make matters far
     simpler after the bugs shake out, or will get reverted pretty quick
     once we realize that it is a stupid idea.

     We now post-process the config.h file into a new event-config.h file,
     whose macros are prefixed with _EVENT_ and which is thus safe for
     headers to include.  Using this, we can define replacement timeval
     manipulation functions in evutil.h, and use them uniformly through our
     code.  We can also detect which headers are needful in event.h, and
     include them as required.

     This is also the perfect time to remove the long-deprecated acconfig.h
     file, so that autoheader no longer warns.

     Should resolve the following issues:

     [ 1826530 ] Header files should have access to autoconf output.
     [ 1826545 ] acconfig.h is deprecated.
     [ 1826564 ] On some platforms, event.h can't be included alone.

    svn:r492

commit d0ce7d4ed7f6f269fdc93039d739fecf28495c24
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 06:01:45 2007 +0000

     r16500@catbus:  nickm | 2007-11-07 00:27:44 -0500
     Remove from the (deprecated) acconfig.h file stubs that are already generated by autoheader.

    svn:r491

commit 206d43363817c4dc77976f85a9df04a411c7913c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 05:02:21 2007 +0000

     r16497@catbus:  nickm | 2007-11-07 00:01:02 -0500
     Resolve issue 1826588: make event_base_free() succeed even if there are pending non-INTERNAL events still in the base.  This can leak memory and fds if used injudiciously, but at least it no longer crashes.

    svn:r490

commit 29420339dcf85d133313083823db7cf68c21fd32
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 05:02:14 2007 +0000

     r16496@catbus:  nickm | 2007-11-06 23:58:52 -0500
     Clarify some doxygen in event.h

    svn:r489

commit bab0e6d440f1c5dc6615bd1b72712c663929b87f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 04:28:54 2007 +0000

     r16492@catbus:  nickm | 2007-11-06 23:27:32 -0500
     Fix unit tests so that an outdated nameserver means "Skip IPv6 tests", not "Abort."

    svn:r487

commit 7c507668d7ba0e4488730ce1d607673dd2585f73
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 03:52:20 2007 +0000

     r16489@catbus:  nickm | 2007-11-06 22:51:05 -0500
     Do not use "class" as identifier in evdns.h; but use a backward-compatible fix. (Should fix bug 1826515, originally reported by Roger Clark)

    svn:r486

commit e9564eceb349d76cf83cffb2291b34d59ac9a4a0
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 03:40:26 2007 +0000

     r16487@catbus:  nickm | 2007-11-06 22:38:44 -0500
     Remove rtsig method, as discussed in July.  It hasn't compiled for quite a while, and nobody has seemed to miss it much.  Please let us know if this was a bad call. [Tracker issue 1826539].

    svn:r485

commit 4555f755094e25e5bd1b6483e09a5bfc9984764f
Author: Niels Provos <provos@gmail.com>
Date:   Wed Nov 7 03:25:03 2007 +0000

    remove tree.h from EXTRA_DIST; from Charles Kerr

    svn:r484

commit 3c1bbca672a43f6457fad0b0d6d6649a17375368
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Nov 7 02:30:17 2007 +0000

     r14744@tombo:  nickm | 2007-11-06 21:30:11 -0500
     Fix coding error: patch from Charles Kerr.

    svn:r483

commit a527151846e06aac3674fae5b79d5ba6ec75154a
Author: Niels Provos <provos@gmail.com>
Date:   Wed Nov 7 01:48:44 2007 +0000

    make event_init should return struct event_base *

    svn:r481

commit 81802bf98c2608ec96c8fa299ecb761a26b0755c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 6 20:57:37 2007 +0000

     r16473@catbus:  nickm | 2007-11-06 15:55:35 -0500
     Increment MAX_ADDRS in evdns so as to be quite large.  This is not as good as a general solution, but it may be good enough for practical use.

    svn:r479

commit d257a4c0d6527fff60bfa19f05b7937213375695
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 6 20:57:32 2007 +0000

     r16454@catbus:  nickm | 2007-11-06 09:59:45 -0500
     Small code cleanups in epoll_dispatch(): remove a needless variable and some redundant conditionals.

    svn:r478

commit d7d91461c853d87fa78b467d6c5fdf386d9c10e1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Nov 6 03:04:49 2007 +0000

     r14732@tombo:  nickm | 2007-11-05 22:03:28 -0500
     Quick hack to make evhttp.h build when there is no TAILQ to be found.  Based on patch from Paul Fisher.  We could perhaps do this more elegantly, but it _does_ need to be done.

    svn:r475

commit dc2317f921f6d0041ae387cccdf7e0368f4920b0
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 4 06:35:29 2007 +0000

    improve doxygen documentation

    svn:r473

commit 1bcb112b20ae193f05a9e3381e6fe13f36ccc7b1
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Nov 4 02:21:31 2007 +0000

     r14698@tombo:  nickm | 2007-11-03 22:20:23 -0400
     Use libtool versioning correctly. Add comment to Makefile.am explaining how to keep this working.

    svn:r472

commit 22bd8b00942732ae1ac8a77523a509c327a26623
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 3 23:54:27 2007 +0000

    remove last vestiges of RBTREE

    svn:r471

commit 2026b21598d8f6f47148db088dbb76a6cc9e0a59
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 3 23:53:49 2007 +0000

    remove last vestiges of RBTREE

    svn:r470

commit 881731028b90bb196450105ea04b3d22107052d8
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 3 23:45:38 2007 +0000

    split libevent into two extra libraries libevent_core and libevent_extra

    svn:r469

commit 1d3a008af3433485256d8386366ceaac4d48af5f
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 3 22:51:26 2007 +0000

    provide hooks for outgoing pools; associate a base with a pool

    svn:r468

commit 30ae40cc52300a79b8153db3ca40b77c544de76c
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 3 18:04:53 2007 +0000

    switch timeouts to a min heap; from Maxim Yegorushkin

    svn:r467

commit 65236aa8578aeb17c088b41818da17311672aed1
Author: Niels Provos <provos@gmail.com>
Date:   Fri Nov 2 06:34:04 2007 +0000

    simple hooks for processing incoming and outgoing rpcs

    svn:r466

commit 18ac92486fc7b4f2ac7092ce56dc89ebad41c729
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 27 17:50:07 2007 +0000

    Solaris event port improvements

    svn:r464

commit ccdc59905b36686d3331607362197e08f1c8b0ae
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Oct 18 17:49:52 2007 +0000

     r15922@catbus:  nickm | 2007-10-18 13:48:46 -0400
     Patch to event.3 from Christopher Lane.

    svn:r463

commit c91794e25dc412ff102b700eeba3c1e519e485dc
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 12 18:02:56 2007 +0000

    Instead of read/write in regress.c, use send/recv.  Now all of the win32 regression tests pass, except for http and rpc.

    svn:r461

commit e1f09dfe5c7fa0736318ec42e77d7884db390085
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Oct 12 17:55:37 2007 +0000

    Fix evutil code to use correct EVUTIL_SET_SOCKET_ERROR macro.

    svn:r460

commit 49ede3be00c7461d54fa289005db8ef6e8e76225
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 3 17:19:22 2007 +0000

     r15517@catbus:  nickm | 2007-10-03 13:14:05 -0400
     Correct the pointer manipulation in fake_getaddrinfo(), and do the right thing for fake_getaddrinfo(NULL,&ai).  Based on a patch by Lubmir Marinov, hacked until the unit tests passed on Linux with #undef HAVE_GETADDRINFO.

    svn:r459

commit bc7b7c249c470fe916c337b03605410f32dcd7fa
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Oct 3 04:14:54 2007 +0000

    Fix implementation of strsep.

    svn:r457

commit 4ed4867375f26dc01af1db00de43624bcbba6f7b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Oct 2 19:11:41 2007 +0000

     r15496@catbus:  nickm | 2007-10-02 15:06:22 -0400
     Move end of "extern C {" block to the end of evdns.h.

    svn:r456

commit 3550be9387dd451da3c32caff29dddb0ff0bd112
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 25 15:50:50 2007 +0000

     r15331@catbus:  nickm | 2007-09-25 11:46:52 -0400
     Add EVPORT to test.sh script.  Patch from Trond Norbye.

    svn:r454

commit fe4829776bacef6f75790337a0fd5c0b0e18890b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 24 16:26:11 2007 +0000

     r15324@catbus:  nickm | 2007-09-24 12:22:21 -0400
     New evutil.h macros to manipulate winsock errors.  Use them in http.c and in evutil_socketpair().

    svn:r451

commit 3c1a6a68d2b9938a387c694928ab97b948eb09de
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 23 03:49:28 2007 +0000

    first attempts at refactoring this code to make it more readable;
    mostly changing to dictionaries for format strings

    svn:r450

commit a4cc3d148a7b346143a0143f46589104bc50bea5
Author: Niels Provos <provos@gmail.com>
Date:   Sat Sep 22 23:57:11 2007 +0000

    rename the rpc member from kill to attack; that way the
    structure does not have the same name.  might find some
    bugs.

    svn:r449

commit db43c1e111f1fb7a6c5912154dce4a46034eed7a
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 20 19:36:03 2007 +0000

    On win32, sockets apparently can't be used with ReadFile and WriteFile: You need send() and recv() instead. Also, you need to use ioctlsocket() with sockets, not ioctl. [Fixes evbuffer regression tests.]

    svn:r448

commit 1e1f77c5b02fca9622e9e1d249adec4b5428a245
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 20 19:08:20 2007 +0000

    Make the test/ subdirectory buildable under Windows.  Well, mingw at least.  The tests still don't all pass, but at least now we know that.

    svn:r447

commit d85bce4e96eeadf3248b9298926c957e39851504
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 20 18:38:31 2007 +0000

    Remove gratuitous tor-isms in evutil_socketpair(); fix a windows warning in http.c.

    svn:r446

commit f4c84e862877a0f2f13aa33665b8b4d5adb795ca
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 20 18:27:01 2007 +0000

     r15220@catbus:  nickm | 2007-09-20 14:22:57 -0400
     Another patch from Trond: Skip calling gettime() in timeout_process if we have no events in the timetree.

    svn:r445

commit 5a0d671f0e05af014c55447e28e8b1b8be4a84ee
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 20 18:26:56 2007 +0000

     r15219@catbus:  nickm | 2007-09-20 14:17:32 -0400
     Apply patch from Trond Norbye with recommendations from Magne Mahre and Hannah Schroeter: make autogen.sh work on systems where /bin/sh is not bash.

    svn:r444

commit 8b256b8e86bfcf38e79fb17975d903f892572386
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 20 18:26:51 2007 +0000

     r15218@catbus:  nickm | 2007-09-20 14:14:05 -0400
     More win32 fixes: Use evutil_make_socket_nonblocking and EVUTIL_CLOSESOCKET consistently throughout the code.

    svn:r443

commit f0e06d75e50913ce9786a675ff69dee68d41c3f5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 20 18:26:46 2007 +0000

     r15217@catbus:  nickm | 2007-09-20 14:04:32 -0400
     Fix win32 signals: teach win32 that we have per-base signal queues; teach signal.c that not everybody has sigaction().

    svn:r442

commit 250071830a701193c72aa8a65bd9afa5f74692fe
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Sep 20 18:26:40 2007 +0000

     r15216@catbus:  nickm | 2007-09-20 13:58:23 -0400
     Add a new evutil module to contain the usual cross-platform hacks: socketpair, closesocket, and make_socket_nonblocking()

    svn:r441

commit 626cc5f982f648e4d669178dc5e0bbb1f4ddb6d6
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed Sep 19 15:27:53 2007 +0000

     r15168@catbus:  nickm | 2007-09-19 11:24:30 -0400
     Add a new function to evdns to override the default transaction ID generation code.

    svn:r440

commit 7f57289f99900ee5210f62be55b7109f016eab85
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 18 15:16:23 2007 +0000

     r15103@catbus:  nickm | 2007-09-18 11:13:09 -0400
     Use a dummy target to ensure that doxygen gets rebuilt every time we "make doxygen".

    svn:r439

commit 47ed792cb6ac47b629786157e0b5ccdd7c100410
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 18 15:16:17 2007 +0000

     r15102@catbus:  nickm | 2007-09-18 11:12:43 -0400
     Make the autogen.sh script executable.

    svn:r438

commit d69a4c9ec4158b6f09bfc6bf3c646e06fc6554ac
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 18 15:12:20 2007 +0000

     r15097@catbus:  nickm | 2007-09-18 11:08:42 -0400
     Wrap all newly-added Doxygen comments to fit in a consistent 80 columns, and remove all their trailing whitespace.

    svn:r437

commit 7135ffb6fc4fe231f2cbdb8a0b4188b6b7d65a9f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 18 15:12:09 2007 +0000

     r15096@catbus:  nickm | 2007-09-18 11:02:12 -0400
     Add Doxygen documentation to header files; patch from Mark Heily.

    svn:r436

commit c895ee46180e1b8bbfea0e37a05b3a5e122cf385
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue Sep 18 15:11:53 2007 +0000

     r15094@catbus:  nickm | 2007-09-18 10:52:11 -0400
     Patch from Christopher Lane: Make regress.gen.* buildable from outside source directory.

    svn:r434

commit 7b7742fce7b694977579b9f2e11bc974b1c346da
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 16 02:26:37 2007 +0000

    optimize by removing a variable

    svn:r433

commit bfd27f58da9d5fba6e2ed0c0d4f436fa240dbc47
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sat Sep 15 18:45:57 2007 +0000

     r15086@catbus:  nickm | 2007-09-15 14:42:55 -0400
     Patch from Trond Norbye: Fix two solaris bugs.

    svn:r432

commit b835ee085f537aa6a45df865930626688e984009
Author: Niels Provos <provos@gmail.com>
Date:   Sat Sep 15 15:50:11 2007 +0000

    fix http.c to compile properly with USE_DEBUG; from Christopher Layne

    svn:r430

commit 640c61bac92550c97c3ad2b04d437c559df5c119
Author: Niels Provos <provos@gmail.com>
Date:   Sat Sep 15 00:53:47 2007 +0000

    deal with out of memory situations for realloc

    svn:r429

commit 82153e6e92117d092b1ea0630f2ba96ebb006fe7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 10 14:56:00 2007 +0000

     r15025@catbus:  nickm | 2007-09-10 10:54:46 -0400
     More DNS standard correctness changes: we preserve the CD flag,not the TC flag on responses.  When we get a nonstandard query, we should say "NOTIMPL" rather than ignoring it.

    svn:r428

commit 8b39254926c96587e74ec334f001d17f4d09f4d8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 10 14:55:55 2007 +0000

     r15024@catbus:  nickm | 2007-09-10 10:49:15 -0400
     Fix evdns_resolve_reverse_ipv6() so buffer is bug enough, and so the string ends with ".ip6.arpa" rather than "..ip6.arpa".

    svn:r427

commit c396c767e2abf4d15ce8bf485588f67dbe10c14e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Sep 10 14:55:50 2007 +0000

     r15023@catbus:  nickm | 2007-09-10 10:46:16 -0400
     Add a missing begin-comment to the DNS_USE_OPENSSL_FOR_ID code in evdns.c.

    svn:r426

commit fc1211ed8a8c0ba7f167f92796c3887d659b2f1d
Author: Niels Provos <provos@gmail.com>
Date:   Mon Sep 10 01:37:57 2007 +0000

    fix another memory leak

    svn:r424

commit 7c66bf33e18939d7ee6fabc47ed624c8caa6c46c
Author: Niels Provos <provos@gmail.com>
Date:   Mon Sep 10 01:30:11 2007 +0000

    fix a memory leak in the dns server; found by valgrind

    svn:r422

commit babd622f7ab9e8d3cb4004700fcf2f9dadd4bd4b
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 9 03:10:16 2007 +0000

    make allocating array members in event_rpcgen more efficient, but doubling the size of
    available slots every time we run out.

    svn:r421

commit e2f564116e1bcdcf2c6500c1552fcc25de810c53
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 9 02:33:10 2007 +0000

    Fix a memory leak in which failed HTTP connections whould not free the request object

    svn:r419

commit 8ee20a3fa46f7d603f5fa98cd47992fcdbb3beb6
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 9 02:15:34 2007 +0000

    fix memory leaks/unitialized memory found by valgrind

    svn:r418

commit e678f009a82b38745baac9874a3573136d0658b6
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 9 01:46:35 2007 +0000

    fix a couple memory leaks; time buffer marshaling

    svn:r417

commit 98f9616bf45951901f264b75269d1c554d50511e
Author: Niels Provos <provos@gmail.com>
Date:   Fri Sep 7 02:49:46 2007 +0000

    support setting local address on an evhttp_connection

    svn:r416

commit 23866b765739016f0723fae22b688a82c14a2b5d
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 7 01:18:53 2007 +0000

    Another tweak on the date patch: win32 has no gmtime_r, but its gmtime() function uses thread-local storage for safety.  Backportable.

    svn:r414

commit 003698c0dfcb29fc435d7d2d862ff838d797d3d8
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 7 01:03:01 2007 +0000

     r14975@catbus:  nickm | 2007-09-06 21:00:38 -0400
     Oops; we were already including sys/time.h.  Remove the redundant include.

    svn:r413

commit 8d5ef326baa461201b1c948f9b29c5c4ae22533c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 7 01:02:56 2007 +0000

     r14974@catbus:  nickm | 2007-09-06 20:59:14 -0400
     Changes to http.c: Add a Date header on replies if there is none already set.  Also, include time.h unconditionally to be sure that struct tm is declared: every platform has time.h; the conditional should have been for sys/time.h.

    svn:r412

commit 9c3ac4e444bdacff2b904b1d175e4ac3cb2f7da5
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Sep 7 00:10:15 2007 +0000

     r14970@catbus:  nickm | 2007-09-06 20:09:39 -0400
     Fix compilation on Solaris; Patch from Magne Mahre.

    svn:r409

commit ff9e1af68f2fc7e808fbaca5d7e45f10f616fa8c
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 2 01:33:38 2007 +0000

    demote most warnings to debug messages;
    execute callback later to allow freeing of connection object

    svn:r407

commit 11a0a9e42fd74f723c6d4670ef403eb10d9abeb5
Author: Niels Provos <provos@gmail.com>
Date:   Sat Aug 25 18:47:22 2007 +0000

    allow \r or \n individually to separate HTTP headers instead of
    the standard "\r\n"; from Charles Kerr.

    svn:r406

commit 49e01ff789ae1aa0a5666ac62062f27cce2cbb46
Author: Niels Provos <provos@gmail.com>
Date:   Sat Aug 25 18:42:42 2007 +0000

    include event.h in evhttp.h; found by Charles Kerr

    svn:r404

commit 5f04e3b7b5b234e6ccfc3ced1321619d209928b7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 24 01:08:39 2007 +0000

    Bump version number in svn trunk to 1.3.99.

    svn:r403

commit 9a99bab0db8f13f12ea1829e8af8d5d0b66a4cad
Author: Niels Provos <provos@gmail.com>
Date:   Thu Aug 23 15:36:38 2007 +0000

    let's try to keep a log of changes; as suggested by Nick

    svn:r401

commit a36d4a930d75bc9ed6caf1cbfa86e02bc68f7df7
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon Aug 20 14:44:15 2007 +0000

     r14699@catbus:  nickm | 2007-08-20 10:42:57 -0400
     Use $top_srcdir and $srcdir variables to refer to source paths in Makefile.am.  This makes it possible to build libevent from a separate directory.  Patch from Kelly Anderson.

    svn:r400

commit 41c69fc335e116de8b9a6889798a7dd5bc295fd3
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 19 17:26:02 2007 +0000

    fix typo in comments

    svn:r399

commit 3d2320b2187f5e4635f829c0de417c961f02f007
Author: Nick Mathewson <nickm@torproject.org>
Date:   Sun Aug 19 17:25:52 2007 +0000

     r14697@catbus:  nickm | 2007-08-19 13:24:39 -0400
     Remove redundant typedef of socklen_t in evdns.c: On windows, it is already defined by autoconf in config.h.

    svn:r398

commit 67947ce38192f31fd67d9cac63ba5baaf112885b
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 19 02:41:23 2007 +0000

    provide evhttp_new and evhttp_bind_socket instead of evhttp_start;
    using evhttp_new, it is possible to associate an event_base with
    the http server so that multi-threaded applications can have their
    own http server per thread; add appropriate testing.

    svn:r397

commit 35983cd60ff2972add1db2c7236b3c7b244c7968
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu Aug 16 21:12:53 2007 +0000

     r14618@catbus:  nickm | 2007-08-16 17:11:47 -0400
     In ANSI C, int func() is a function with unspecified arguments, whereas int func(void) is a function that takes no arguments.  Using int func() to mean a function with no arguments is a C++ism, so let's not use or generate it.

    svn:r395

commit 12fe087e124f2f66049e4dffe9402baf7881f284
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 10 16:37:33 2007 +0000

     r14505@catbus:  nickm | 2007-08-10 12:35:52 -0400
     Fix win32 build errors (reported by Phobos): mingw gcc seems to dislike unnamed function parameters.

    svn:r390

commit 7d821580e81072e0eba32d4789fdadca6683329b
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 10 16:31:02 2007 +0000

    Fix compile warning on osx: the udata field in struct kevent is supposed to be void*, not intptr_t.

    svn:r387

commit 21a7e7ed67979b9f2444f4671d9bd668ef2ebabf
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri Aug 10 15:59:31 2007 +0000

     r14498@catbus:  nickm | 2007-08-10 11:58:32 -0400
     Fix compilation warnings in trunk on linux with gcc 4.1.2.  In time-test.c, always include time.h, so that time() is defined.  In test/Makefile.am, put -I../compat in CPPFLAGS, and fix a typo.  In test/regress.c, cast unsigned char pointers to char* before passing them to str[n]cmp.

    svn:r385

commit cd6dd9516d8bd7a7b94bf7a9ed6f5e63643b7c34
Author: Niels Provos <provos@gmail.com>
Date:   Mon Aug 6 21:00:49 2007 +0000

    add a proper test for filtering new lines in headers

    svn:r384

commit 073d35906117ce1276b16cdfc70d744deb04575d
Author: Niels Provos <provos@gmail.com>
Date:   Mon Aug 6 20:53:33 2007 +0000

    fix an embarassing bug where strchr was used with a cstring instead of a char

    svn:r383

commit 8ea5ffefc32e5950beeec8db0cd862e6bd9eab76
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 5 02:15:10 2007 +0000

    request dispatching fix from Elliot Foster

    svn:r382

commit b7ff0248c7993bf1b437598f53ce7ec56a0f2bdb
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jul 31 00:32:00 2007 +0000

    fix memory leak; found by Elliot F

    svn:r378

commit 5e0ac7f239457e6fceac199ad649d762950e0c9b
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jul 31 00:25:22 2007 +0000

    check for sys/select.h

    svn:r377

commit aa106169a0e5b960c2a82958912bc41a1e76b4c5
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jul 31 00:21:04 2007 +0000

    use AM_CLFAGS from Jan Kneschke

    svn:r376

commit 9e0333a8d56970514acbdb792a04e6db2b0d56fe
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jul 30 23:56:05 2007 +0000

    include config.h if HAVE_CONFIG_H from Jan Kneschke

    svn:r375

commit 72c479e76a6dacaa47482f418b00b3dee3998336
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jul 30 23:54:25 2007 +0000

    remove c99 variable declarations; from Jan Kneschke

    svn:r374

commit 7c6df310c98cd50aac9e34839b6f475020939c98
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jul 30 23:53:10 2007 +0000

    remove c++ comments from Jan Kneschke

    svn:r373

commit 10267216a6ff7d94db7deb3269e379c94adc190d
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jul 30 23:49:00 2007 +0000

    initalize ev_res from Scott Lamb

    svn:r372

commit 3ad6b47e03993f688e92fb202c89e3be984a8f56
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jul 30 22:41:00 2007 +0000

    make clock_monotonic work; do not use default timeout;
    from Scott Lamb, plus some fixes from me.

    svn:r371

commit d7918e7963db292b49d575fbd3b9c47f4d59c9cf
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jul 30 21:27:33 2007 +0000

    drop illegal header values

    svn:r370

commit b15d715cbc77f5ce9b8da27938ad07426f7f2e57
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 6 03:36:31 2007 +0000

    make event_rpcgen.py use the uint_ types;
    make event.h include stdint.h (wonder which OS that will break)

    svn:r369

commit 753ffa563b67feee30069d8637c920da809107da
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jun 30 19:08:46 2007 +0000

    convert u_int8_t types to uint8_t types

    svn:r368

commit f0ff792afabecc032bc9f92e504ff6601057b415
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jun 30 18:58:34 2007 +0000

    fixes from Joerg Sonnenberger:
    http.c is a violation of the ctype(3) interface and an unused function.

    test/regress_http.c are incorrect format strings.

    test/regress.c uses raise(3) from signal.h.

    evdns.c: evdns_error_strings is unused. The GET* macros can eat the
    semicolon from the expression. pos is passed in as off_t, so just pass
    that down. When assigning negativ values to unsigned variables, an
    explicit cast is considered good style.

    svn:r367

commit aa5c8068888ffa501c81d191b93ca1b5765b54b7
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jun 16 03:23:15 2007 +0000

    make it compile on solaris; from Andrei Nigmatulin

    svn:r366

commit d1848a8872c9596d1f30a5edbd1f9050e8124611
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jun 14 04:38:42 2007 +0000

    include config.h

    svn:r365

commit cf5c1fcebbb698a39603c92ea0928d1c603abbd5
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jun 8 16:06:23 2007 +0000

    made the wrong fd non-blocking in accept_socket; from szjwwu

    svn:r364

commit 3794534feb99f94e052359c7cce61462ed909383
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 29 05:38:58 2007 +0000

    change the signature of the client rpc callback to pass in an rpc status; the status
    allows us to determine if an error happened.

    svn:r363

commit f0d0559c3e01bc378c3cb960013fc34245128291
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 28 21:21:59 2007 +0000

    allow DNS server to get access to the IP address for the requestor; from tor cvs via Nick Mathewson

    svn:r362

commit 5d3b6a83870d68c0ec4ed4fc60a6710d8ad938df
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 28 21:20:57 2007 +0000

    fail quicker on bad replies; from tor cvs via Nick Mathewson

    svn:r361

commit d06ab8569e26b3535967be5c8fcc5efad6850e85
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 28 21:19:18 2007 +0000

    fix bug where req was freed and dereferenced afterwards; from tor cvs via Nick Mathewson

    svn:r360

commit 28246587c0520a9e812fc6ed64b3d7c173864789
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 28 21:17:35 2007 +0000

    treat SERVERFAILED as a timeout; from tor cvs via Nick Mathewson

    svn:r359

commit 5be24333aec311d776e7d6c5fde9e74fcf04217d
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 28 21:09:00 2007 +0000

    solaris may return short reads on resolve.conf; fix from tor cvs via Nick Mathewson

    svn:r358

commit d0111a29e9e53899e0ea2e529b43f2f26353b853
Author: Niels Provos <provos@gmail.com>
Date:   Sun May 27 06:27:11 2007 +0000

    evdns_shutdown fix from Adam Langley

    svn:r357

commit 621a1b2947b39d662123c98c49404fe71353c241
Author: Niels Provos <provos@gmail.com>
Date:   Wed May 23 05:31:33 2007 +0000

    support freeing of evrpc base

    svn:r356

commit 0c2808246a5db1515f0392ef6f65a557e5832ccb
Author: Niels Provos <provos@gmail.com>
Date:   Wed May 23 05:20:59 2007 +0000

    support removing of http callbacks and removing of registered RPCs

    svn:r355

commit 5b5400f66bb3959dbed81f6f544aa6f392ca18f5
Author: Niels Provos <provos@gmail.com>
Date:   Sat May 12 06:23:52 2007 +0000

    permit connection free from callback; from Ben Rigas

    svn:r354

commit 4408a5f8fc5028c67fc847e34a10891cb3523351
Author: Niels Provos <provos@gmail.com>
Date:   Thu Apr 19 03:13:12 2007 +0000

    fix evbuffer_find off by one; found by Ken Cox; regression test by him
    and fix by me

    svn:r353

commit f5aa65c9b369a6b34be7eb019087e06b64cd1e5b
Author: Niels Provos <provos@gmail.com>
Date:   Thu Mar 22 15:09:30 2007 +0000

    man page fixes from todd miller

    svn:r352

commit 41b7cbc38105a540ade7d02bb6137898a94abc89
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 10 06:37:53 2007 +0000

    more the signal base into the event base; this removes global state and makes signals
    work better with threading; from Wouter Wijngaards
    small fixes for kqueue and style by me

    svn:r351

commit a968da742598e9e6720c883cb78b1f0f6e912ae2
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 6 06:26:10 2007 +0000

    split finding of callbacks out of code

    svn:r350

commit 50edb19f17555389f18c0d2cef488eed2a643497
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 5 07:28:15 2007 +0000

    EVRPC_MAKE_REQUEST needs the pool argument

    svn:r349

commit fcd55934ae57b3af2e67ba2d4c47da8342348260
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 5 06:49:45 2007 +0000

    spell Oleson correctly

    svn:r348

commit 729487deb380bd8f0fa6591a8f6184595080a490
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 3 08:27:52 2007 +0000

    better conversion; cannot use event_err here.

    svn:r344

commit 660662517c717b53d7340ed0198bffbe154ef0b1
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 3 08:18:20 2007 +0000

    proper casting for conversion

    svn:r343

commit 74f7118d66e2b31d2d113bcb3674bb8074676165
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 3 08:16:40 2007 +0000

    install evrpc.h header

    svn:r342

commit b5d2f9a255dbd5eb7d650cd8d829fb85c9c69f2c
Author: Niels Provos <provos@gmail.com>
Date:   Thu Mar 1 06:25:18 2007 +0000

    rolling back r339: evconfig.h does not work

    svn:r341

commit 8d94bd03ebac666171fbbc75a598ef01f63390f5
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 28 04:29:18 2007 +0000

    signal fixes from scott lamb

    svn:r340

commit 127c260bb7f8e972fffab9bc72bd1f53eae48730
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 28 04:02:29 2007 +0000

    make evconfig.h available as installed header file; not
    really ideal but good enough for me; from Nick Mathewson

    svn:r339

commit 995a58a374c4b1ce28c214d22dfdf00329b28957
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 27 08:16:50 2007 +0000

    missing return (-1) for failures on make_socket

    svn:r338

commit f86cead09999380887752d9a391e0ebd3ee38807
Author: Niels Provos <provos@gmail.com>
Date:   Sat Feb 24 08:33:07 2007 +0000

    remove artifical 16-bit restriction on evrpc entries

    svn:r337

commit 4356b6813376ae48478ab7af0f593d34e1af9c26
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 20 03:35:31 2007 +0000

    remove redundant \n from event_warn

    svn:r336

commit 72a3f29da36a8d9fa49dce8eaa8e5f5a86cb4e7f
Author: Niels Provos <provos@gmail.com>
Date:   Sun Feb 18 19:33:19 2007 +0000

    1.3a on trunk?

    svn:r333

commit 06d0f8c0824651631e68c5c593051098c4008753
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 16 08:48:55 2007 +0000

    O(n^2) is bad

    svn:r332

commit 7398790296fa8e8fdb226cd8f6d76c8705d4e366
Author: Niels Provos <provos@gmail.com>
Date:   Thu Feb 15 22:46:04 2007 +0000

    missing reference to strlcpy-internal

    svn:r330

commit fe2662384db52b1e4c500bbb9939a97545178c46
Author: Niels Provos <provos@gmail.com>
Date:   Thu Feb 15 02:16:07 2007 +0000

    try to make it work with proxy-connections

    svn:r329

commit 58f42c79e7df54dd5f7136b6c006ba67b55f624f
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 14 16:59:47 2007 +0000

    fix handling of chunked requests

    svn:r328

commit 8901c141c9bef59baf308764c8c0f4dcadc6a487
Author: Niels Provos <provos@gmail.com>
Date:   Wed Feb 14 06:10:32 2007 +0000

    make chunked requests work correctly; this is done by providing
    a separate callback for invidiual chunks.  if this callback is
    not set, all the data is going to be delivered at the end.

    svn:r327

commit 36950cef58fc02495dffcc143bb2ec147dc7e9ad
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 13 06:25:16 2007 +0000

    close connections for http/1.0 unless there is keep-alive

    svn:r326

commit 19373b3dda45af29663926cdbc4121f8289e2f0e
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 13 06:14:42 2007 +0000

    when parsing query parameters, we automatically unquote them

    svn:r325

commit 9a65d0135fd39753858686dbb0eec2d807c29583
Author: Niels Provos <provos@gmail.com>
Date:   Sun Feb 11 07:58:39 2007 +0000

    set content length even if content-type is specified

    svn:r324

commit ba748012bacf371824a961efddc2e4db024303d2
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 9 07:52:04 2007 +0000

    add prototype for bufferevent_base_set; from thorsten glaser

    svn:r323

commit bfb9f44f370ab0afa230f9e7795236043da7a5ea
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 9 07:49:55 2007 +0000

    make mingw happy; from Nick Mathewson

    svn:r322

commit faf5f73a694ecfa720a7af4405298f5cb40349f0
Author: Niels Provos <provos@gmail.com>
Date:   Thu Feb 8 16:39:15 2007 +0000

    dns server support from Nick Mathewson; tiny tweaks
    to the regression test from me to make it run on
    systems where stack variables get initialized with
    trash.

    svn:r321

commit 3b8e27a58f240e38040a2c15a9592d6ce7fbae28
Author: Niels Provos <provos@gmail.com>
Date:   Thu Feb 8 16:27:26 2007 +0000

    add people I forgot to give credit to;  but in alphabetical order;
    from dug song (he had to remind me of this; how embarassing)

    svn:r320

commit 121efe6530075e1e0d64956cd5b00600218407a6
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 27 08:38:51 2007 +0000

    small bug fixes to AAAA resolution and regression test; from Nick Mathewson!

    we love regresson tests.

    svn:r319

commit 78f2aa300c941029c7cf808755df9b1e7007fc05
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 27 04:27:59 2007 +0000

    Allow setting of more DNS options via API; from Nick Mathewson!!!

    svn:r318

commit b776b2da7282414d9bf42bb21c7c1fd4293cbd02
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 27 04:25:46 2007 +0000

    dns name compression; from Nick Mathewson!!

    svn:r317

commit 5baf8ecf6916fa9b91c59bb7e1307b7a94d26195
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 27 04:23:33 2007 +0000

    minor fixes; spelling corrections; compatibility from Nick Mathewson!

    svn:r316

commit 6318fca29e9d3ebe9300a229d0b84e16ec5e5626
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 27 04:22:36 2007 +0000

    AAAA support for DNS; from Nick Mathewson.

    unfortunately, no regression test

    svn:r315

commit 22e53c7a849b95f2f32640b846e2fc98dc3bcc1c
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 27 04:10:08 2007 +0000

    make it work on freebsd; from phil oleson

    svn:r314

commit 4922f342fcbad0f56c6de5f40a00b029d6757823
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 27 04:06:52 2007 +0000

    extern "C" guard for header file.

    assert activeq in event.c;

    from Phil Oelson.

    svn:r313

commit b04043ae51589899021d306af299dbad6668a621
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jan 21 17:28:55 2007 +0000

    fix ddos in dns parsing due to infinite loop;
    patch from Nick Mathewson; also received
    notification from Jon Oberheide.

    svn:r311

commit d5d04949e3550823c2935562f5e07b423de46871
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 18 06:28:42 2007 +0000

    fix http server so it can accept on high ports;
    better warning messages for getnameinfo;
    from Philip Lewis

    svn:r310

commit ff12220703d4bd45169fb2f1aab61c4979340df9
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jan 10 02:42:29 2007 +0000

    make accept socket non-blocking; from dug song

    svn:r309

commit de4e25f1d0a27a4d603d1834b090437237323d06
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 6 02:25:50 2007 +0000

    evbuffer_find fix from Dug Song

    svn:r308

commit ba8289bea55a2b0013fc4c2cfd6ffda9a6a82c21
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jan 4 18:05:17 2007 +0000

    from dug song:
    the original code failed in the case of a large single client
    request+body write - for instance, over loopback (with a larger MTU
    exceeding EVBUFFER_MAX_READ).

    svn:r307

commit 0db257b828ff7d9b480c6499651e469d2b20154b
Author: Niels Provos <provos@gmail.com>
Date:   Wed Jan 3 07:11:17 2007 +0000

    rename strlcpy so that it does not conflict with other tests; from
    Nick Mathewson.

    svn:r306

commit 894b63654303649ee1b0fc888cbfded616e6d54e
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 23 07:30:10 2006 +0000

    fix a bug in an assert; from Weston Andros Adamson

    svn:r305

commit 557e0f62be87b54db604bb95b063a7838b7a4164
Author: Niels Provos <provos@gmail.com>
Date:   Mon Dec 18 15:26:19 2006 +0000

    http chunking support from dug song;
    some refactoring and extra error checking by me

    svn:r304

commit 0147ef3ac71cb393443af2250fe658940020f880
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 12 04:02:07 2006 +0000

    From Nick Mathewson:
    This patch resets the successive timeout count to zero when:
      - A nameserver comes up
      - We receive a reply from a nameserver
      - We decide to not use the nameserver for a while because of its
        timeout count.

    This patch also changes the timeout threshold from 3 to 5 seconds.

    svn:r303

commit a91d2b2b8ce9ce4a1dd437c30a8c88b5609fa653
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 12 03:51:30 2006 +0000

    do close-detection via a separate event

    svn:r301

commit 04bdb2488c61489f91f67c68f308b0cfc84076f1
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 9 05:14:37 2006 +0000

    detect if a client to a streaming reply hangs up; from dug song
    comments from me :-)

    svn:r300

commit de7db33a61f13f94fe3b60a084d20735b06bd72f
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 9 02:58:12 2006 +0000

    low-level interfaces for streaming; from dug song
    i applied some bug fixes and slight re-arranged the logic
    on when to call the close notification callback;
    i also don't like the streaming interface; i'd rather
    see it do the chunked response formatting explicitly.

    svn:r298

commit 852d05a3c093ecaaacffb5ee339307782f706c96
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 9 01:41:57 2006 +0000

    support retrying for connections; from dug song
    small tweaks from me.

    svn:r297

commit 2225eec22b1e62c6b24113e7e8915de3ef26a209
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 9 01:33:03 2006 +0000

    decode uri when sending a request; from dug song

    svn:r296

commit 785923704c6d55af0fa1f06086349d1d707fea37
Author: Niels Provos <provos@gmail.com>
Date:   Wed Dec 6 04:12:11 2006 +0000

    fix a bug where event_set was called on a pending event;
    don't read body for return codes that do not require a body;
    from dug song.

    svn:r294

commit c6e285d31a1892a6bbfdab2137d83c5041f97742
Author: Niels Provos <provos@gmail.com>
Date:   Wed Dec 6 03:38:41 2006 +0000

    allow gotsig to terminate active event loop;
    free http connection on failed incoming connections;
    bugs pointed out by Dug Song.

    svn:r293

commit ec0679199fbdddcb3308a72a90a15b342cc3c0a3
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 2 21:28:39 2006 +0000

    fix cases where there is no content or transfer encoding was specified
    from Dug Song

    svn:r291

commit 7fe5edf50c5ccad3c4dddc2a8756ea241fd94b89
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 2 21:25:21 2006 +0000

    use CLOCK_REALTIME when CLOCK_MONOTONIC is not available; from Phil Oleson

    svn:r290

commit c1aa5480de538c63e6015f690226a84e7569e3f7
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 26 16:13:17 2006 +0000

    support #define in .rpc descriptions

    svn:r278

commit 942656bb5cd89b131ad119e395a770e6a1488e9b
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 23 06:32:20 2006 +0000

    persistent connections are somewhat complicated; detect on the client side if the
    server closes a persistent connection.  previously, we would have failed the next
    request on that connection.  provide test case.

    svn:r277

commit 3882669d3e20bcbca991e6775d0d05401d58a1b6
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 23 05:27:15 2006 +0000

    transaction id fixes from richard nyberg; return correct
    error code when file for resolv.conf cannot be found.

    svn:r276

commit 30a49b57dab3baa8b53775563ff03210b357db03
Author: Niels Provos <provos@gmail.com>
Date:   Wed Nov 22 07:30:34 2006 +0000

    test that rpc timeouts work correctly

    svn:r275

commit 2d028ef6c189a2c53d64ca9d1ceff813d62755f0
Author: Niels Provos <provos@gmail.com>
Date:   Wed Nov 22 06:54:28 2006 +0000

    fix a bug where rpc would not be scheduled when they were queued; test for it.
    allow a configurable timeout for connections and RPCs.

    svn:r274

commit ce436242ad05172d2abe53ed83ab46f956edc789
Author: Niels Provos <provos@gmail.com>
Date:   Wed Nov 22 05:03:02 2006 +0000

    an attempt at differentiated error handling for timeouts and eof.
    really this needs to be propagated all the way to the callback.

    svn:r273

commit 51fde16666a3402959cab77cd0313c9ff4b4c66a
Author: Niels Provos <provos@gmail.com>
Date:   Wed Nov 22 04:35:56 2006 +0000

    forgot to add this

    svn:r272

commit 868f10e7c9abe1cb38cd3cc84e6dd4a9b1d966cc
Author: Niels Provos <provos@gmail.com>
Date:   Wed Nov 22 01:21:10 2006 +0000

    mingw fixes from Nick

    svn:r271

commit 4aa780d6adf37a23985aa8f544087bc3b14aba9b
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 20 07:57:36 2006 +0000

    don't require string literal for message name

    svn:r270

commit ff43ed5b3379125e3b57044016ca71b9b8f4739f
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 20 07:44:37 2006 +0000

    finish RPC client support

    svn:r269

commit fda1216b6e18df98b8f3c32ce4132f955c346a90
Author: Niels Provos <provos@gmail.com>
Date:   Mon Nov 20 03:32:53 2006 +0000

    generate client request code via macro; flesh out the pools a little bit.

    svn:r268

commit 3a15f7d4e4f3de810e2b81634b4e60f286605066
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 19 02:03:43 2006 +0000

    make it work with python2.2

    svn:r267

commit 226fd50a99761f5e874e7376d99674ae54b1aeed
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 18 21:27:42 2006 +0000

    use more python builtins; dont use reserved keywords

    svn:r266

commit 31ba30abfee720e49c19e7a4790854cfbe0e9d5e
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 18 08:51:12 2006 +0000

    make regression test work for poll and select

    svn:r265

commit 1a64c982eb0f8f72e5e2766a5eec88d350fdfb06
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 18 07:30:21 2006 +0000

    some compilers don't like C99 inline variable declaration

    svn:r264

commit ddf70659ad7db0f4bdf8c4f8aa0259fd36abeab3
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 18 03:52:27 2006 +0000

    forgot ifdef guard around stdint.h

    svn:r263

commit 9d81ac48f8031e6a49afb1c7c35358d9751f414c
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 18 03:43:26 2006 +0000

    test both piplining on persistent and non-persistent connections

    svn:r262

commit 36212f9df0664c3d9056d18d962ef37acf9a45e3
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 18 03:05:26 2006 +0000

    make persistent connections work; needs more testing

    svn:r261

commit d2c27da1145e81267737e9a52dd9cf2fd45721f9
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 18 02:10:25 2006 +0000

    introduce is connection close

    svn:r260

commit a67d9cb1153a16bd314471a22eb86782fac41dc0
Author: Niels Provos <provos@gmail.com>
Date:   Fri Nov 17 07:45:42 2006 +0000

    add "Connection: close" to the output headers of the HTTP server reply;
    we don't currently support persistent connections; although that's going
    to be easy to add.

    svn:r259

commit c4836d10539e9937d2ee0afce2675362dce01e00
Author: Niels Provos <provos@gmail.com>
Date:   Fri Nov 17 06:06:17 2006 +0000

    make sure that the rpc callback receives an unmarshaled payload;
    make sure that the rpc reply contains a good rpc structure, too.

    svn:r258

commit 1caff9bcc8f26223ddfd9056d99e7581bc484805
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 16 15:59:42 2006 +0000

    we indicate a failed request by removing the uri from the request object

    svn:r257

commit 44bd5ab4e03a7fd943520243dd07bc3e6fdba249
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 16 08:49:26 2006 +0000

    prefix was missing /; malformed request caused server to crash

    svn:r256

commit 9d9d60b1ff0b588ee20b1b7a4f73ea409fad232d
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 16 08:21:27 2006 +0000

    forgot to add file

    svn:r255

commit f554234f74e9e80c0faabe385dd8537fc7b1ab9f
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 16 07:36:20 2006 +0000

    first stab at an rpc layer;  this breaks the regression test.

    svn:r254

commit 768aa15c77073b5799033854c332553eea4929fd
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 12 00:59:56 2006 +0000

    don't need to include getopt here

    svn:r253

commit 79d2ca8cac2ebb3f8be06d93376b036d5e73ef50
Author: Niels Provos <provos@gmail.com>
Date:   Fri Nov 10 02:16:16 2006 +0000

    fix a potential problem in multiple handling of va_list; use va_copy instead;
    from Alejo.

    svn:r251

commit 025b009bb67e402c75dcb92bd06485f8c0ed8097
Author: Niels Provos <provos@gmail.com>
Date:   Sun Nov 5 17:24:24 2006 +0000

    fail without leaking memory when poll set extension fails

    svn:r249

commit d6989659281f67acc88bd6255f67680f9004e7f9
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 28 03:20:22 2006 +0000

    fix a potential memory leak in event_once from Scott Lamb

    svn:r244

commit 3eec7f7c64c2356157ed123e5ad2ce8e75a6ae16
Author: Niels Provos <provos@gmail.com>
Date:   Sun Oct 15 21:55:13 2006 +0000

    make it 1.2; fix some size issues for printf in regression code

    svn:r242

commit ea52d9fd8d12126643f21007f279ef2e03dfca1e
Author: Niels Provos <provos@gmail.com>
Date:   Sun Oct 15 21:41:56 2006 +0000

    improved nroff mdoc for the man page

    svn:r241

commit 152f570047d7cdcb8d2e437c0d5751a7ddd3fa83
Author: Niels Provos <provos@gmail.com>
Date:   Mon Oct 9 01:55:23 2006 +0000

    install evdns.3 man page

    svn:r240

commit cf47f86b74fe5f60b21458f14503657e6f6a4476
Author: Niels Provos <provos@gmail.com>
Date:   Mon Oct 9 00:48:42 2006 +0000

    put the evdns documentation into the header file.  pathetic start of evdns manpage.  a little bit
    more testing and debug output for the DNS regression test.   add a BSD copyright to evdns.h with
    appropriate explanations.

    svn:r239

commit fe1dfe0f40776ef18f5318149f981387d386b962
Author: Niels Provos <provos@gmail.com>
Date:   Thu Oct 5 22:59:44 2006 +0000

    sync evdns changes with tor - from Nick Mathewson

    svn:r238

commit b6b933af5c3405e44f8fe134e989193cc369afa9
Author: Niels Provos <provos@gmail.com>
Date:   Wed Oct 4 03:45:10 2006 +0000

    Protect EVENT_* macros - () were missing

    svn:r237

commit 9f7d28bb81b65094dd63a65607bbb9972f1af006
Author: Niels Provos <provos@gmail.com>
Date:   Wed Sep 27 03:07:38 2006 +0000

    make it compile with mingw; from Nick

    svn:r235

commit 64c76fbea4fe4443cfa70876b7a289c117101f35
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 3 21:12:59 2006 +0000

    typo in kqueue delete; from Bert JW Regeer

    svn:r232

commit e9c1e3f7f0c262c529300e58e1f5724c52ab76d2
Author: Niels Provos <provos@gmail.com>
Date:   Mon Aug 28 00:57:49 2006 +0000

    introduce evdns_init() which works on windows and unix.

    svn:r231

commit 07c3fb50675fa9a80b928f24028431e92358df3c
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 27 20:04:20 2006 +0000

    add a simple regression test for the DNS resolver; requires internet access.
    do some KNF on evdns.c; add checks to prevent potential buffer overflows.
    fix one memory leak.

    svn:r230

commit e80e52ceb7846d4f081e5106a19a767d2aa51dab
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 27 19:43:00 2006 +0000

    include evdns.h header - fix windows distribution files

    svn:r229

commit b0b5e2c2acfb13a67935c12187dca84e16ead9bb
Author: Niels Provos <provos@gmail.com>
Date:   Sat Aug 26 04:34:43 2006 +0000

    document that read and write callbacks may be NULL.

    svn:r228

commit c1eec7aae52af93d5c763859e4b8dab8e780e329
Author: Niels Provos <provos@gmail.com>
Date:   Sat Aug 26 04:32:31 2006 +0000

    allow both read and write callbacks for bufferevents to be NULL

    svn:r227

commit 52bfcab894c0644318dc9e067a87931d16b7e061
Author: Niels Provos <provos@gmail.com>
Date:   Thu Aug 24 06:10:50 2006 +0000

    rename eventdns to evdns to match libevent naming scheme

    svn:r226

commit d0d8f9b468a5401d9c3da770d1b14572e384843e
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 13 06:59:37 2006 +0000

    configure evdns and make it compile

    svn:r225

commit cca7249ed6ad71eb8d0be56891451b26bedb7a5a
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 13 06:33:45 2006 +0000

    unmodified eventdns from Adam Langley via tor repository

    svn:r224

commit 296739e022dc8d6415a573b8dda557b280caff3d
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 13 00:03:35 2006 +0000

    fix regression test

    svn:r223

commit 4596f82e1733df39fce93384b4c375aa4e924f3b
Author: Niels Provos <provos@gmail.com>
Date:   Fri Aug 11 15:20:10 2006 +0000

    windows makefile fixes from branch

    svn:r222

commit 49ef242f6e524e7d3a4f70cc280daa6b9220b184
Author: Niels Provos <provos@gmail.com>
Date:   Wed Aug 9 01:04:12 2006 +0000

    add back the original sun copyright block

    svn:r219

commit 94af961f362dc654c77524e2b51c590d6628ebda
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jul 18 06:35:48 2006 +0000

    get rid of err.h

    svn:r218

commit ba7262ebdf82da9c285f39200d69aac54013c16a
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jul 17 00:33:57 2006 +0000

    reorganization of the http functionality; we separate http handling into a
    connection object and a request object; also make it clear which buffers are
    used for input and output; unittests not complete yet.

    svn:r217

commit 00bc7e37fd8f9cc5c749fa83d4152c3395e14975
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jul 15 02:55:57 2006 +0000

    1.2-rc1; Solaris' event port support from Dave Pacheco

    svn:r216

commit f0ecf50727b291356ed2776d7b03a69cbc9f35b1
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jul 15 02:39:31 2006 +0000

    need to report one less file descriptor to solaris then the limit; reported
    by Dave Pacheco

    svn:r215

commit 6813af3f11c4fdffa68efce687d46023aa195773
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jun 10 22:37:21 2006 +0000

    move http related prototypes to evhttp.h

    svn:r214

commit 147b71e33c34bd8fae7ea339b7ecdb742768656f
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jun 10 22:28:21 2006 +0000

    rename http.h to http-internal.h - i wish there were decent refactoring tools
    for open source programmers.

    svn:r213

commit ebf5333f97a342fc0e53a985daa54b1b57794fea
Author: Niels Provos <provos@gmail.com>
Date:   Wed May 17 13:13:31 2006 +0000

    oops.  the enums were actually creating symbols

    svn:r212

commit 71108cd98b6485fabdecc0522ca0a1918f303dd5
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 28 16:57:19 2006 +0000

    uhm - i obliterated a gettimeofday that was required for remapping the
    timeouts to "real" time.  thanks to claudio for pointing that out.

    svn:r211

commit 2e8051f593abd20b961e85c3f99dfa0ac0ee375d
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 28 04:40:54 2006 +0000

    introduce a way to free the base from Nick Mathewson <nickm@freehaven.net>

    svn:r210

commit 571ac95430c344d4688c28adaa8aa53956cd12a7
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 28 04:33:41 2006 +0000

    use clock_gettime if available from Claudio Jeker <claudio@openbsd.org>

    svn:r209

commit a32839c8ecfee948bc8c051857c9ea454de937e6
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 28 04:17:51 2006 +0000

    some nit-picking from poul-henning kamp

    svn:r208

commit 7517ef2a81eab41b8aeda699dc8ed050c01092b6
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 28 04:16:14 2006 +0000

    some fixes from openbsd via brad

    svn:r207

commit 682d598ada027ef7713168b776955143d07417de
Author: Niels Provos <provos@gmail.com>
Date:   Mon Feb 27 02:33:02 2006 +0000

    add log.c to build file; remove err.c; reported by Sreekant Sreedharan

    svn:r206

commit 38b33048ebbef976bb1e77499a9487ee9bfc072c
Author: Niels Provos <provos@gmail.com>
Date:   Mon Feb 27 02:27:37 2006 +0000

    make a simple test for HTTP POST requests

    svn:r205

commit 60192b462563034cfa179c98f50a1bf51e0f3859
Author: Niels Provos <provos@gmail.com>
Date:   Sun Feb 26 20:18:35 2006 +0000

    improved/well-completely rewritten rtsig support by Mathew Mills; fix some
    cases where regress would not pass on Linux

    svn:r204

commit f6550f407c6c74386f3bdcabf0a5e211a9b98e04
Author: Niels Provos <provos@gmail.com>
Date:   Sun Feb 26 20:13:04 2006 +0000

    provide strlcpy for the unenlightened libcs

    svn:r203

commit 88bd79439d0c37468e9da9ee7354cd2405fba532
Author: Niels Provos <provos@gmail.com>
Date:   Mon Feb 13 04:53:58 2006 +0000

    make it compile on mac os x

    svn:r202

commit 896bf3a2607c25ded5b732de35da63bd8016f9ed
Author: Niels Provos <provos@gmail.com>
Date:   Mon Feb 13 02:22:48 2006 +0000

    many changes for fixing a small bug: post requests would not send the post
    data.  I took the opportunity to reorganize a bit.

    svn:r201

commit 7b78c82823a8d65338503b8aabd3a606116d7cfc
Author: Niels Provos <provos@gmail.com>
Date:   Mon Feb 13 01:51:58 2006 +0000

    limit the amount of data bufferevents are going to consume to something
    reasonable; in some circumstances it could happen that libevent happily
    allocated 100MB in read buffers without telling the user; found by
    christopher maxwell - parts of these changes are from his patch.

    svn:r200

commit f296e6336ac80c8c46e563e84372501434d8884b
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 3 19:26:06 2006 +0000

    allow setting an event base for bufferevents; from phil oleson

    svn:r199

commit 6717cf313ac8b06f8f588f071d333854a6e1fe1e
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 3 19:24:28 2006 +0000

    fix a compile problem when USE_DEBUG is enabled

    svn:r198

commit c398d788119564faf16ef856aef897b4c02b4839
Author: Niels Provos <provos@gmail.com>
Date:   Thu Feb 2 22:36:37 2006 +0000

    disable bufferevent after we have received the data that we care for.

    svn:r197

commit a3bb4a035fe27dcdf52158d115c4caea153dabf5
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jan 22 05:08:50 2006 +0000

    I often need some very simple HTTP functionality, so this is a first stab
    at integrating something really simple with HTTP.  The interface is still
    evolving as I start messing with it.  Not all the interfaces are properly
    exported yet.

    I am also trying to figure out how to intelligently hide the details about
    the different structures from users, so that that things can be changed
    around later.

    svn:r196

commit 8af2db10d95a3bcae2702b25ded991e6ed3be12a
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jan 22 05:06:29 2006 +0000

    version 1.2

    svn:r195

commit 36bedaef19b18ba1d6633c94622e9134a463b6ef
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jan 22 05:06:14 2006 +0000

    another fix from art

    svn:r194

commit 3c74f06f428c83c400146cdaace47e52347b72d6
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jan 21 03:04:31 2006 +0000

    improved manpage from Phil Oleson

    svn:r193

commit 1d308e88139bd549b99cddae4025ce4d499070b7
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 17 20:25:22 2005 +0000

    mostly whitespace fixes from OpenBSD via Brad

    svn:r192

commit 686dede71bd2da2e6352c2e59efc7b99d692a937
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 17 20:18:10 2005 +0000

    do not undefine USE_DEBUG in header file; allow CFLAGS specification; from
    Stas Bekman

    svn:r191

commit 139e862e32d76d0fd04f754eaf532c1608faebe7
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 17 20:15:25 2005 +0000

    do not remove kq inkernel flag before event_del gets to it; bug reported by
    Tassilo von Parseval; also add a test for this behavior.

    svn:r190

commit 0c48c70680727ea0d6aed694b271d40019f2aa15
Author: Niels Provos <provos@gmail.com>
Date:   Thu Dec 8 23:05:42 2005 +0000

    windows memory corruption bug fix from I-M Weasel via Nick Mathewson.

    svn:r189

commit 8d1317d71c46e27c5073d3429a64af69de0351a6
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 6 03:26:28 2005 +0000

    add evbuffer_add_vprintf interface from artur grabowski; add some testing

    svn:r188

commit 9c9f0651842bbb84d16e301640d8e5e6a1c34297
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 3 20:51:23 2005 +0000

    avoid double recacle when loop_once is used; from Richard Nyberg

    svn:r187

commit 68292e2f45dabe21a301c0bb5864e2c2026176f3
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 3 17:52:47 2005 +0000

    signal handler satefy improvements from Theo DeRaadt

    svn:r186

commit 65644dfb80f4aa1b0501d300f015efeb3bd35dd7
Author: Niels Provos <provos@gmail.com>
Date:   Sat Nov 12 19:04:17 2005 +0000

    solaris kernel changes are not backwards compatible - how retarded.  problem
    pointed out by: Geoffrey Giesemann

    svn:r185

commit 11a40d478efcc69a379a07f005beb0415f6954e6
Author: Niels Provos <provos@gmail.com>
Date:   Tue Sep 20 15:59:00 2005 +0000

    event.3

    svn:r184

commit 50f7aaef6b7742263a3212264cb746f456d55168
Author: Niels Provos <provos@gmail.com>
Date:   Fri Sep 9 06:56:12 2005 +0000

    make it compile on mac os x

    svn:r183

commit 3b9b3f6b7e7325c380bddec6ff86e1ead63dd582
Author: Niels Provos <provos@gmail.com>
Date:   Fri Sep 2 05:34:14 2005 +0000

    don't spam on stderr

    svn:r182

commit acafd9942f4829205229b80ee32f1c3edfc071a6
Author: Niels Provos <provos@gmail.com>
Date:   Fri Sep 2 05:34:01 2005 +0000

    make it run on older shells; from tor user via Nick Mathewson <nickm@freehaven.net>

    svn:r181

commit 7000fe664d16094741e6e6728f7998a2c45b7eb2
Author: Niels Provos <provos@gmail.com>
Date:   Tue Aug 30 06:02:09 2005 +0000

    remove dos opportunity

    svn:r180

commit 5c5145dc1ca44fab0e6f543dbb2cbf95583e0bbf
Author: Niels Provos <provos@gmail.com>
Date:   Mon Aug 29 07:23:51 2005 +0000

    oops forgot this one

    svn:r179

commit b4ab56dc045e2d8a04600a8579e35b52532d3859
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 28 23:48:16 2005 +0000

    support for arrays on structs.

    svn:r178

commit 32acc283c8ae44d9c4e306dbaf6a9fead5e71952
Author: Niels Provos <provos@gmail.com>
Date:   Sat Aug 27 06:29:52 2005 +0000

    a few more bug fixes

    svn:r177

commit 2813f1b0f14967cabb0c59fc44518670f38bec37
Author: Niels Provos <provos@gmail.com>
Date:   Fri Aug 26 02:15:54 2005 +0000

    constify

    svn:r176

commit aaf56fb61e0a8f2299e758f44cac93ba60cd9807
Author: Niels Provos <provos@gmail.com>
Date:   Tue Aug 23 07:43:11 2005 +0000

    fix API problems for get in some types

    svn:r175

commit 6e55da606ced033562be6d8a023b89c6ca484c4b
Author: Niels Provos <provos@gmail.com>
Date:   Mon Aug 22 01:39:54 2005 +0000

    typo

    svn:r174

commit e5ab86a726c26fc775589182d4290603df7e12d3
Author: Niels Provos <provos@gmail.com>
Date:   Mon Aug 22 01:38:23 2005 +0000

    make use of the built in warn/err code

    svn:r173

commit c4e60994a2cf955908f236b4945ea7288950ec45
Author: Niels Provos <provos@gmail.com>
Date:   Mon Aug 22 01:34:34 2005 +0000

    including the tagging code that is required by event_rpcgen.py; test the
    new functionality.

    svn:r172

commit 949cbd12fa314a1d0f4296985cdfaa6ec63e960b
Author: Niels Provos <provos@gmail.com>
Date:   Sun Aug 21 16:25:02 2005 +0000

    generate marshalling code based on libevent

    svn:r171

commit fbee901e2326effd07d8c29f07621148648c17a7
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jul 14 04:09:55 2005 +0000

    correctly test against SIG_ERR

    svn:r170

commit e1759c7bbde90093709b70020fadc8a9f90416d5
Author: Niels Provos <provos@gmail.com>
Date:   Sun Jun 19 20:28:20 2005 +0000

    fix issue with signedness warnings; from Alexander von Gernler

    svn:r169

commit 9938aaf5114110c60a8a4f59866be3de5cd88c48
Author: Niels Provos <provos@gmail.com>
Date:   Sat Jun 11 21:15:22 2005 +0000

    treate EINVAL as per fd error in kqueue; use argument for debug macros in
    poll; version 1.1a; EINVAL fix from Nick Mathewson

    svn:r168

commit 81bd0a0687f1350f5d1a427ca2ed5858fcfa3af4
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jun 10 07:42:14 2005 +0000

    bufferevents would not correctly detect EOF on read; reported by
    Jonathan Brannan

    svn:r167

commit 7a0c530b5645ea0b50e7524eae9ddab170293a18
Author: Niels Provos <provos@gmail.com>
Date:   Wed May 11 04:08:51 2005 +0000

    performance improvements of select handler by Nick Mathewson; I added
    better recovery when memory allocation fails; something that needs to be
    done for the poll improvements, too.

    svn:r166

commit 57fafe6b5f9b416367f01e77540c7f72ae019c5d
Author: Niels Provos <provos@gmail.com>
Date:   Wed May 11 03:34:42 2005 +0000

    detect kqueue bug in Mac OS X 10.4; from Nick Mathewson

    svn:r165

commit 145c11fd6d69b52f3549698a2084b9c32bdeabee
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 10 17:27:58 2005 +0000

    more credits

    svn:r164

commit dc816fdc7adeb3703b0ad548ce4023fd9714721b
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 10 17:27:11 2005 +0000

    type; from Alexander von Gernler

    svn:r163

commit cdcfae7fc1c2fe974094caef649ab9ba9a8f139a
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 10 08:14:39 2005 +0000

    call epoll_ctl after changing our state table; in case that epoll_ctl fails
    we need to make sure that the table is consistent. from William Ahern

    svn:r162

commit c15db0349af138302a2749b5a80390941a428b6d
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 10 04:40:03 2005 +0000

    performance improvements by Nick Mathewson; we modify the arrays directly
    in poll_add and poll_del; some minor tweaks by me.  earmark this as 1.0f

    svn:r161

commit d6e56988a769f97653205f57d32bdd48091642b5
Author: Niels Provos <provos@gmail.com>
Date:   Tue May 10 04:16:17 2005 +0000

    sync

    svn:r160

commit e444040f3d4aa96f7e0e726fc9542f596910d938
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 29 02:55:20 2005 +0000

    fix rule that depended on obsolete libevent.a

    svn:r159

commit 1585013558c04d7e366d8db260c0c1f102731e8c
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 26 15:48:42 2005 +0000

    prototype addition; from Alexander von Gernler

    svn:r158

commit dfe4e16e138a48c8593c03a5db0b9a67a83ddeb4
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 26 07:17:42 2005 +0000

    pointer arithmetic bug; from Nick Mathewson

    svn:r157

commit 0f5b0389e54990972e36a062dd443d163f5d1edc
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 23 15:40:14 2005 +0000

    fix memory leak; from Andrey Matveev

    svn:r156

commit c09a817563b505a7ebe7b1ceb75e829a70d7ebb2
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 23 03:03:28 2005 +0000

    1.0d

    svn:r155

commit 425fc0d5747936ebe4af7f46571bab0e427cc243
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 23 02:53:39 2005 +0000

    provide a function to read lines from buffers; comes in handy for many
    AscII protocols.

    svn:r154

commit fdfa743ccc7466e0532411098ee1ad655dfe393b
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 23 02:48:49 2005 +0000

    libtoolize; from Nick Mathewson

    svn:r153

commit 0cce9a01d72b65a95175ff2b48868fc5d0cbc853
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 23 02:48:27 2005 +0000

    better comment

    svn:r152

commit 2fa38549d7b33b94994894bcb6d696127bd946dc
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 23 02:40:26 2005 +0000

    compress read and write events for the same file descriptor into on poll
    descriptor; from Nick Mathewson plus bug fixes from me.

    svn:r151

commit bca504e41cd146f39b1fdf749ee6ea3718c34f02
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 23 02:38:30 2005 +0000

    fix typos

    svn:r150

commit 1d0d4bc66e96e9782db3c53dfea6ba41f1c3b944
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 17 06:51:10 2005 +0000

    make gotsig volatile. from Alexander von Gernler

    svn:r149

commit 5e2ba12a89b47a0d075e51e526b57333e712fa0e
Author: Niels Provos <provos@gmail.com>
Date:   Thu Apr 14 23:28:06 2005 +0000

    fixes from alexander von gernler

    svn:r148

commit bc2c695b7672490e320b28f602e8207ce2dd3cac
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 10 07:18:18 2005 +0000

    type; set the priorities based on the correct base; reported by Vinh D. Lee

    svn:r147

commit 6ba5e0d03ed6db885ceec5313e66e02c5aaa8db1
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 9 03:32:11 2005 +0000

    fix a windows bug; from nick mathewson

    svn:r146

commit d47798be5a106177a7ce99b314878d8d77fa8a96
Author: Niels Provos <provos@gmail.com>
Date:   Thu Apr 7 03:35:56 2005 +0000

    return error code when kqueue fails on a specific fd; from alexander von
    gernler.

    svn:r145

commit 8f0541af3e0c0126ad4b1997a102ca162d936355
Author: Niels Provos <provos@gmail.com>
Date:   Mon Apr 4 00:37:26 2005 +0000

    forgot

    svn:r144

commit 4157d33ee9456e4468ffc3ad1de3d6b6d6a43a8f
Author: Niels Provos <provos@gmail.com>
Date:   Mon Apr 4 00:35:14 2005 +0000

    acknowledgements and new version

    svn:r143

commit bc9b24876b41077e567655ccbc6011f4be951f0d
Author: Niels Provos <provos@gmail.com>
Date:   Mon Apr 4 00:10:17 2005 +0000

    make it compile on solaris

    svn:r142

commit 1e128e2d05888c86a2058ab5979607450c605c64
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 3 07:46:27 2005 +0000

    fix bug that broke poll/select stuff

    svn:r141

commit 720f7fcc0d313af430d8a4ac1b4ed8e5bc53c5fc
Author: Niels Provos <provos@gmail.com>
Date:   Sat Apr 2 08:43:55 2005 +0000

    event_base_loop and some event logging fixes.

    svn:r140

commit 32bed8f9b640757766937dec613ca9b1feb704a4
Author: Niels Provos <provos@gmail.com>
Date:   Fri Apr 1 04:20:39 2005 +0000

    build fixes from nick mathewson

    svn:r139

commit 1919a4aed60dc9c95aef10974dc6945f01832377
Author: Niels Provos <provos@gmail.com>
Date:   Thu Mar 31 19:53:06 2005 +0000

    suppress valgrind warnings from knew -a- pimb.org

    svn:r138

commit d85d47f8ca128f4b4f8b9cae1dfb2be5da0f4173
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 29 07:16:52 2005 +0000

    devpoll improvements from Andrew Danforth <adanforth@gmail.com>

    svn:r137

commit fbdaf3ab6229f036c0561a347f06b7f913a2b165
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 29 07:03:10 2005 +0000

    debugging callbacks from Nick Mathewson <nickm@freehaven.net>

    svn:r136

commit 99442c6f00c16502afa517e063ff15e20c00212a
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 29 06:54:36 2005 +0000

    windows fixes from Nick Mathewson <nickm@freehaven.net>

    svn:r135

commit da971e5fc81c86038bb99513e993171d9d5a0c43
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 12 02:30:32 2005 +0000

    bug fix in event_once by Jody Belka <knew@pimb.org>

    svn:r134

commit c5e4eee03b7852754f7a843ee0f9350ef2579fcb
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 25 05:28:57 2005 +0000

    event_get_version() and event_get_method() from
    Nick Mathewson <nickm@freehaven.net>

    svn:r133

commit a46c2609bfa4d68e78665dd55461af9b1ce9651b
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 22 16:12:34 2005 +0000

    compilation fixes for IRIX; from Nick Mathewson <nickm@freehaven.net>

    svn:r132

commit 905ee67d0032eb86e4de37878c45cc4bd67cda47
Author: Niels Provos <provos@gmail.com>
Date:   Tue Feb 22 15:47:53 2005 +0000

    provide maintainer mode in automake; put event_gotsig back into global
    state; return proper error code

    svn:r131

commit 42b97958672d382435ed2db47468176e3518cb77
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 4 11:17:18 2005 +0000

    make it compile again; from dug song

    svn:r130

commit 3ba224dbd5e5e482bb2be47fa704beff46540a28
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jan 3 18:58:40 2005 +0000

    fixes for threaded operations from Andrew Danforth

    svn:r129

commit bd6999b4a2b60fdd4e2e317ca84d382f2b9b0ace
Author: Niels Provos <provos@gmail.com>
Date:   Tue Dec 14 03:36:12 2004 +0000

    fix issue where event_del is called before event_set.  bad bad thing to do.
    pointed out by Mark Kidwell <MKidwell@looksmart.net>

    svn:r128

commit d9cf6fe2f16eae6d97251b905473aea4e57ed0c6
Author: Niels Provos <provos@gmail.com>
Date:   Sun Dec 5 22:16:35 2004 +0000

    version 1.0

    svn:r127

commit cacd83983f20af59b9a137886131a63f834a06e9
Author: Niels Provos <provos@gmail.com>
Date:   Wed Dec 1 20:10:16 2004 +0000

    documentation on thread safe events

    svn:r126

commit 256460459e6e9a8358337f64b8080c6665f34c1a
Author: Niels Provos <provos@gmail.com>
Date:   Wed Dec 1 20:04:54 2004 +0000

    provide more base-based functions :-)

    svn:r125

commit f5a62ed30e895fb622db889b24184851f8f7ea04
Author: Niels Provos <provos@gmail.com>
Date:   Wed Dec 1 19:59:00 2004 +0000

    make a separate verify target

    svn:r124

commit b011b734eb6cfe3ea15f926dbfa696a262d7cff7
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 25 09:54:33 2004 +0000

    forgot printf parameter

    svn:r123

commit 8773c4c96c47078ee502030daef36078bc0e75a4
Author: Niels Provos <provos@gmail.com>
Date:   Thu Nov 25 09:50:18 2004 +0000

    make libevent thread-safe; first cut

    svn:r122

commit 96a25ae6a2d4f63f1df483cd3d49b779175031b0
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 19 22:38:34 2004 +0000

    when converting usec to msec round up; so that libevent does not spin until
    the time conversion has caught up; from Aaron Hopkins <aaron at die.net>

    svn:r121

commit fa6c304d9e11982058ea8fc1b6f970924c599f52
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 19 21:08:09 2004 +0000

    support for event priorities; active events are scheduled into priority queues;
    lower priorities get always processed before higher priorities

    svn:r120

commit 6df2ede5f5e2b3db8c2647327274e83cc485600b
Author: Niels Provos <provos@gmail.com>
Date:   Tue Aug 10 18:29:37 2004 +0000

    close file descriptors on exec(); suggested by aaron at die.net

    svn:r119

commit 6d4bafd03c84b03b1f904ca466ac2ac173a9626f
Author: Niels Provos <provos@gmail.com>
Date:   Tue Aug 10 17:49:53 2004 +0000

    work around a bug in Solaris by using pwrite instead of write; reported by
    michael.wookey at citrix.com.au

    svn:r118

commit 60216e8b1d3cad7992923335fbdb21446386d476
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 30 05:15:59 2004 +0000

    mention devpoll

    svn:r117

commit 5de7f4eea5d629b27359897a351ebae1c484a426
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 30 05:04:36 2004 +0000

    devpoll support. weeh

    svn:r116

commit 98c14269929187c1abab83737a15e19d92a74b78
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 30 05:03:55 2004 +0000

    fix compiler warning

    svn:r115

commit d829ccea3d25ce1f7ec4514d1735c26182b3beff
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 30 05:00:44 2004 +0000

    fix a warning on freebsd;

    svn:r114

commit 06aaa92fe298e376d432947c6eef9ddabfd5faec
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 30 04:57:21 2004 +0000

    devpoll support

    svn:r113

commit 6f2f98bd26a04476387e26132fd3ef406b387981
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jul 20 06:12:30 2004 +0000

    make it compile on solaris

    svn:r112

commit 6db3da27e2ef340b7547db2be0c0559d410575c2
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jul 19 06:18:10 2004 +0000

    should work a little bit better with solaris compiler

    svn:r111

commit 44d88ea6068f5926f8d04b837819216235a7779d
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jul 13 08:02:45 2004 +0000

    change evbuffer_read so that it reads directly into the memory allocated to
    the evbuffer; this avoids one unnecessary data copy.

    svn:r110

commit ee739151a155d358edc48c4ddf88a63b9e0132f0
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jul 13 08:01:05 2004 +0000

    make the sockets non-blocking; increase the data size for bufferevent
    testing

    svn:r109

commit a78472da72d9b3ac765997a9ce1dba7cca436618
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jul 13 07:55:01 2004 +0000

    fix a bug for persistent events when using select()

    svn:r108

commit de5fc61928cd202ef35c860039ab16000b89fd5b
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jun 11 04:42:56 2004 +0000

    make it compile on systems without vasprintf

    svn:r107

commit 49dbb7ea4c0938da3c5a0a531030452e6a8b400b
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jun 11 04:39:11 2004 +0000

    reformat comment

    svn:r106

commit 025d1bc2206c5b7edb2fb0c2ad58e7322f4b8b4d
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 24 00:19:52 2004 +0000

    fix some of the windows compile issues; make buffer.c faster; support
    signals via pipes.

    svn:r105

commit 849d5249120e6d6c95b655672900b1381d8f7613
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 13 06:22:48 2004 +0000

    license

    svn:r104

commit 24ffe1cb5571506e1b9ae212ef1b17b45a7ea396
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 4 04:04:16 2004 +0000

    add a section about BUGS

    svn:r103

commit 8f2e1f6d3ac14c67d38c86edfd8efb50d83039a0
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 4 03:59:22 2004 +0000

    add section about buffered events

    svn:r102

commit fbf01c7f044f143046df7b9c566b5f49770ba0cb
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 4 02:20:21 2004 +0000

    support for low and high watermarks

    svn:r101

commit 3772ec8e95d2c5eed60ff37024fe2ab04326b0ec
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 4 02:19:52 2004 +0000

    add new functions

    svn:r100

commit 8f7a7a910c4b940e3bac0923df6661d6eada619a
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 4 02:19:39 2004 +0000

    version 0.8

    svn:r99

commit 57a51a161dd9a453bc1abf2ffa9b6149d1ce9ae2
Author: Niels Provos <provos@gmail.com>
Date:   Sun Apr 4 02:19:08 2004 +0000

    provide more regression tests

    svn:r98

commit 85fbdbb243a17da6fb804b14a4782d2795889c82
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 27 17:42:49 2004 +0000

    faster insertion of timeouts; ensure uniqueness in RB-tree compare function

    svn:r97

commit 246d8583c08dc31d70479d538c8b1f4056f49c43
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 23 04:05:37 2004 +0000

    allow the write callback to called even if there is no buffered data

    svn:r96

commit 5908bd721368a9aebc752fffbe6ec5b753ed7e3a
Author: Niels Provos <provos@gmail.com>
Date:   Tue Mar 23 03:43:53 2004 +0000

    provided buffered events

    svn:r95

commit cd699abf44d6da49dffff09f72f843bbb0211aae
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 22 21:46:45 2004 +0000

    support event_loopexit(); idea from marius; and fix event_once()

    svn:r94

commit ec2c1db47e2931fc4be55f9653b3b4182d674cc7
Author: Niels Provos <provos@gmail.com>
Date:   Sun Feb 22 21:17:23 2004 +0000

    new event_once interface; start of buffering interface for buffered events

    svn:r93

commit 1b974101b9617b0fdceac534e7e0fd73ab6c90d8
Author: Niels Provos <provos@gmail.com>
Date:   Sat Dec 20 20:05:17 2003 +0000

    fix kqueue behaviour; requires special kernel patch to make kqueue
    semantics consistent; from marius@umich.edu

    svn:r92

commit 8a92823c67843cf7ab8f7735adc3aac5dcd4b9c8
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 25 21:59:24 2003 +0000

    make rtsig optional

    svn:r91

commit e1cd86d73e9959f50fa24ac39dbb6cea9a14b386
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 25 21:58:33 2003 +0000

    fixes to handle error cases by Anatoly Vorobey at pobox.com

    svn:r90

commit d780375fc486b189c64c13e5cf6bd5e0559bde61
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 25 21:49:44 2003 +0000

    fix source files

    svn:r89

commit e2f06f4f6a6b76e217cb290a6d47918521da6f1e
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 25 21:49:25 2003 +0000

    fix license

    svn:r88

commit e9cd9b56a3fbf5f19f5f241c730666c7f3d89bcd
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 11 02:54:41 2003 +0000

    bad realloc; found by awohl at chessclub

    svn:r87

commit 1d66008bbf3ce97ec23e7193cb4daefda06d1955
Author: Niels Provos <provos@gmail.com>
Date:   Sun Oct 5 22:02:49 2003 +0000

    make it work with more shells

    svn:r86

commit 98af43a351fe571c5d562a8c63de5b3839a0e897
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 4 23:33:04 2003 +0000

    3-clause license and changes to the benchmark by davide

    svn:r85

commit c3f496c71b598194ee9efe74906ecfe57155678b
Author: Niels Provos <provos@gmail.com>
Date:   Sat Oct 4 23:27:26 2003 +0000

    minor corrections; change license to 3-clause BSD license

    svn:r84

commit 763f6a77307f0ff66755f1e0732cb9f7cf3b43c3
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 23:18:52 2003 +0000

    proper rtsig

    svn:r83

commit f08bf5325eb9bb2afa3b68f629a69de59920406b
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 23:07:09 2003 +0000

    fix poll hup support

    svn:r82

commit ec70653b61cdf20f4640a9e3d445a2f77c63e738
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 17:55:17 2003 +0000

    more tests

    svn:r81

commit c61a2547e26d073d8acf7b9503d9633bbadb3c48
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 03:30:49 2003 +0000

    __FUNCTION__ -> __func__

    svn:r80

commit 9d26a46c39b312985988c849f519d330b1177405
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 03:29:37 2003 +0000

    windows support

    svn:r79

commit e0216ed7096c05356fb18f394dcf454a6314d036
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 03:28:43 2003 +0000

    credits

    svn:r78

commit e506eaf79e11f34a15efa8d91aab883d7dff3160
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 03:26:53 2003 +0000

    constify; some windows stuff by mike davis; fix a poll bug

    svn:r77

commit dd0b36ab03d0fd966f694f5152220987d84b2c5d
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 03:25:17 2003 +0000

    update build stuff

    svn:r76

commit 2bf53326c06f0ddee544e64c9281192253767aac
Author: Niels Provos <provos@gmail.com>
Date:   Thu Sep 25 02:53:39 2003 +0000

    Real time signal support from Taral <taral@taral.net>

    svn:r75

commit ee8cc84e9f4d3a5d5b9f4d7e67e9c2f2b2adf037
Author: Niels Provos <provos@gmail.com>
Date:   Tue Sep 23 22:28:01 2003 +0000

    Windows support from Mike Davis

    svn:r74

commit cde427c1ecd987401f4407fef4d87bc4d77633e2
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 24 14:45:21 2003 +0000

    found a bug where specifying both read|write for a single event let to
    a crash; found by Bruno Achauer

    svn:r73

commit 6ce5b876ea564782600a92ef482485f60d5ae5d5
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jun 12 23:33:19 2003 +0000

    clean up from NetBSD integration

    svn:r72

commit 6551780aefb8f0a8b4d41dc5641b136338fbb2d8
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jun 2 19:37:13 2003 +0000

    bug fix from Ira Lee

    svn:r71

commit 6809f060b2ab9172e0a71cf17b7f4cbdae4be514
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jun 2 19:36:52 2003 +0000

    bug fix from Pierre Phaneuf

    svn:r70

commit b6b1e4ebe9c463767a37eb882a56b359d7251614
Author: Niels Provos <provos@gmail.com>
Date:   Mon Jun 2 19:36:22 2003 +0000

    forgot

    svn:r69

commit 833f0c095d50627b38451de9e887aab07e8464b9
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 30 19:23:27 2003 +0000

    fix a bug where a event fires twice due to bad active list handling

    svn:r68

commit bdf5a68b95d61051687507abe29349494c3fcc18
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 29 18:29:16 2003 +0000

    updated tree code

    svn:r67

commit 670b94e479791707584b38f8473b51ca4fc11569
Author: Niels Provos <provos@gmail.com>
Date:   Mon Apr 14 17:32:19 2003 +0000

    version 0.7

    svn:r66

commit f9e0c44925d28fd719cd96b7b64927d5af4857a0
Author: Niels Provos <provos@gmail.com>
Date:   Thu Apr 10 19:14:03 2003 +0000

    if a timeout on the active list is rescheduled before it can execute it
    gets removed from the active list;  bug report from Jon Poland AT arbor.net

    svn:r65

commit 30eff294f0d0c469b762db95f2a21f6b3eee1f9d
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 9 18:16:07 2003 +0000

    document environment variables

    svn:r64

commit b0b72eb05eb1567ddd56bfafbc056a535c97b728
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 9 18:12:11 2003 +0000

    use maximum number of fds for epoll_create; from Davide Libenzi

    svn:r63

commit 9eb31e5307cab71aa5ede2f835b3e388061c0457
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 9 18:11:31 2003 +0000

    proper indent

    svn:r62

commit 7e4e52045e898f2f5bc3412582140e04c30da805
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 9 18:11:06 2003 +0000

    add some timer macros for operating systems that dont support them

    svn:r61

commit 04153adb66e1456de3efad0e9ce183e57f99b47d
Author: Niels Provos <provos@gmail.com>
Date:   Sun Mar 30 20:19:07 2003 +0000

    EVENT_SHOW_METHOD environment prints which event mechanism we are using;
    from Davide Libenzi <davidel@xmailserver.org>

    svn:r60

commit 012a0b53e1b4f3136f3b08ba0742e71b48fadc32
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 10 05:39:41 2003 +0000

    add benchmark

    svn:r59

commit 1ed00256d50d5ea4a04e9a864664a4d40aedf23f
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 10 05:13:02 2003 +0000

    fix type

    svn:r58

commit ebb73c0db86a39d3aba49f3c5a174f562ce82a8e
Author: Niels Provos <provos@gmail.com>
Date:   Mon Mar 10 04:56:41 2003 +0000

    simple bench mark

    svn:r57

commit 34d794b293a7103a77cf8bfb78a8af90484b4dad
Author: Niels Provos <provos@gmail.com>
Date:   Sun Mar 9 23:29:57 2003 +0000

    some cleanup

    svn:r56

commit d5009e8ad6787274337673b0bb75a566a5dfef2e
Author: Niels Provos <provos@gmail.com>
Date:   Sun Mar 9 23:29:26 2003 +0000

    -g

    svn:r55

commit eb646205bdb48129d1fbcdfda657331a64dd8fc3
Author: Niels Provos <provos@gmail.com>
Date:   Sun Mar 9 23:29:04 2003 +0000

    style

    svn:r54

commit adf0bb84cde497f7ae6c4e4af73be0d5fff720bb
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 20:14:39 2003 +0000

    another test

    svn:r53

commit 28d248e0067fb91917ab5e60633e71687974a6ed
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 16:50:27 2003 +0000

    copyright

    svn:r52

commit c48e71d839977ced6aff4eb52ca7e01f7d410d83
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 16:44:51 2003 +0000

    oneshot means that its removed from the kernel list already

    svn:r51

commit 0036d79ab6d7663618c76ca49ca5173b2ab4424a
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 16:33:18 2003 +0000

    fix kqueue problem

    svn:r50

commit 33b1c6c4745a769c1d14454d1f22e378757fe80f
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 14:44:08 2003 +0000

    include config.h

    svn:r49

commit 251c7f6808fc0ab338e1e03402fb043a7670f2e0
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 14:41:00 2003 +0000

    sync

    svn:r48

commit 481799afd2d4b3161d97399a67f219bb33f17b84
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 14:21:14 2003 +0000

    add persist test

    svn:r47

commit bedded8230ff24d96629f912ee8ab659e1bfa6b5
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 06:39:30 2003 +0000

    more comprehensive regression test

    svn:r46

commit cde7a3528d38baf89b1c1022191397904bec9ed0
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 06:37:56 2003 +0000

    fix signal usage

    svn:r45

commit ea1d95d2fb03801de52ab3a369bad87c8eb3b132
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 8 05:24:26 2003 +0000

    automake-ify test dir, too

    svn:r44

commit 71e513296d99948e350e68bd0885af73c0bc7c6a
Author: Niels Provos <provos@gmail.com>
Date:   Fri Mar 7 23:21:01 2003 +0000

    check for linux eventpoll

    svn:r43

commit 3e41f17afacd87c3bf0a48adc395c3f7e4b7d8bf
Author: Niels Provos <provos@gmail.com>
Date:   Fri Mar 7 23:20:36 2003 +0000

    support for Linux eventpoll mechanism

    svn:r42

commit 01a932fe1fd385fdb961efdbac991dd4b481fc49
Author: Niels Provos <provos@gmail.com>
Date:   Fri Mar 7 23:19:05 2003 +0000

    fix signal usage

    svn:r41

commit e72dff13d9ecfee512aa03bfcbdba39ea84bde48
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 1 20:31:28 2003 +0000

    replace references to __FUNCTION__ with __func__

    svn:r40

commit 3c2916aa1318bfd9f5031ddd34f5fa3326d685da
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 1 19:48:05 2003 +0000

    ifdef config.h

    svn:r39

commit b5b585c1f9a13577e28549436bb7b95c0c427f6b
Author: Niels Provos <provos@gmail.com>
Date:   Sat Mar 1 19:46:27 2003 +0000

    support disabling of event mechanisms via the environment; error out
    if no event mechanism is available

    svn:r38

commit b3d1c6a854e10d00bd79403ccd2f1b6790512f81
Author: Niels Provos <provos@gmail.com>
Date:   Fri Feb 28 22:38:30 2003 +0000

    support poll(2) and split out the signal handling

    svn:r37

commit ac44ddda99627b82012db5b0c097bb9aa9dd9703
Author: Niels Provos <provos@gmail.com>
Date:   Mon Oct 7 17:56:25 2002 +0000

    grammar from jsyn@nthought.com

    svn:r36

commit 9d2401fffcc6694bb59a2ac42c338ff943cb073a
Author: Niels Provos <provos@gmail.com>
Date:   Mon Oct 7 00:47:34 2002 +0000

    portability fixes from marius@umich.edu.

    svn:r35

commit acf7a8e321a482434f9e179528a554018a1e6ca9
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 15 19:01:42 2002 +0000

    version 0.6

    svn:r34

commit 2ccd77d4778f4b8a00ee18c121c392253523a8fe
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 15 18:55:21 2002 +0000

    test timeouts

    svn:r33

commit e0ca1ef203a00670c7863d0981c5c07fd96adee5
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 15 18:52:28 2002 +0000

    signal fixes from ericj@monkey.org via dugsong@monkey.org

    svn:r32

commit eb15f4d86639b37362e19564b536661661aba091
Author: Niels Provos <provos@gmail.com>
Date:   Sun Sep 8 02:46:44 2002 +0000

    fix from marius@umich.edu

    svn:r31

commit f1cf632254f290b88120b49b12108a9d4b6e73ac
Author: Niels Provos <provos@gmail.com>
Date:   Fri Sep 6 17:13:08 2002 +0000

    add timeout_ defines back for backward compatibility.

    svn:r30

commit 5f8658582ec1ee084e1f1a9da6c9d0a0f40ac9b5
Author: Niels Provos <provos@gmail.com>
Date:   Fri Jul 26 14:45:50 2002 +0000

    sync with openbsd;  API change: timeout_ is now evtimer_

    svn:r29

commit 8bb9fd5842dea6af0893e68db0c093103a3db391
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jun 13 01:58:34 2002 +0000

    version 0.5

    svn:r28

commit 3821c7e2015e95f7b6479fe94c15940186db9017
Author: Niels Provos <provos@gmail.com>
Date:   Thu Jun 13 01:54:07 2002 +0000

    make kqueue signal callback work with sigchld.  cast and better timeout.

    svn:r27

commit 484e594e5cee77a4fc7b5c3c70809a8ae5aa9784
Author: Niels Provos <provos@gmail.com>
Date:   Tue Jun 11 18:38:37 2002 +0000

    make kqueue work for callbacks that use both read and write events
    simultaneously

    svn:r26

commit 3107493c971bc11e09649a448282331f697dfb78
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 20 21:51:53 2002 +0000

    signal fix from dugsong@monkey.org

    svn:r25

commit cc32570a080e176def54ab37bcb74df4c803babc
Author: Niels Provos <provos@gmail.com>
Date:   Mon May 20 21:47:04 2002 +0000

    updating a timeout might corrupt RB tree.  Remove before changing time.

    svn:r24

commit 4ec4cddecee9100da65c4f7874fbb36ae5ec31ba
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 17 02:07:31 2002 +0000

    forgot to initialize elements

    svn:r23

commit dcf6cbe45d2652df57b173be65e6d712f6bcdc25
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 16 14:09:21 2002 +0000

    correct date

    svn:r22

commit 409fcdd2fa94d25719af65e8a1c5f78c8a22f717
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 10 14:48:31 2002 +0000

    remove queue.h include

    svn:r21

commit 59137c119f9deaca9244811040aa3fee2f7b293c
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 10 03:15:19 2002 +0000

    deal correctly with deleting an event, now that we allow multiple callbacks
    for signal delivery.

    svn:r20

commit 06630e311655f1fde0f9d7fb42a197340caaa133
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 10 02:20:26 2002 +0000

    describe signal_*

    svn:r19

commit d10f85dbce67c2835eb09c712da691a46d319aac
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 10 02:10:47 2002 +0000

    signal support for kqueue; support of EV_PERSIST flag to event_set

    svn:r18

commit b855bc55000e64d0adb12822fcf8b8117e8f3309
Author: Niels Provos <provos@gmail.com>
Date:   Wed Apr 10 00:31:31 2002 +0000

    initial support for signals (only for select now) based on code from
    Dug Song <dugsong@monkey.org>

    svn:r17

commit dbaa408ea5bbbdeeb60bd2bd69b6c7ec93fa0177
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 19:30:22 2002 +0000

    port to solaris

    svn:r16

commit db48ac015458237170e27952cc62cdb99cc7a336
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 19:21:39 2002 +0000

    change includes

    svn:r15

commit 361c1cc0b7f9d78bc86bb3af699a8127c079061d
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 19:09:32 2002 +0000

    add compat dir to includes

    svn:r14

commit 409c7ff72d121a6b8673ea6ebe053413038628d4
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 19:06:18 2002 +0000

    another one

    svn:r13

commit abef3b7e64539f82ceac9bbe145aa3ffef2a3db8
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 19:03:24 2002 +0000

    one more file required by automake

    svn:r12

commit 4cbc77da52f7fbf34cff95e3c52edd7515df9c69
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 17:52:23 2002 +0000

    missing files

    svn:r11

commit 5b27aa0323a4c51442ce040dcfe5844d0b39ad92
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 17:42:15 2002 +0000

    further automake conversion

    svn:r10

commit 6c6c936bcbfb3e83599e5fef96e59dc5c6326094
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 17:02:38 2002 +0000

    change to automake

    svn:r9

commit 61cb68467cff31416295b3e548a3061a3a42e45c
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 16:35:06 2002 +0000

    move stuff

    svn:r8

commit e99653d0286249761e688782cdbba46209f10930
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 15:29:12 2002 +0000

    type

    svn:r7

commit aa6567fe6475d3230c7c745a7ca208735af0c331
Author: Niels Provos <provos@gmail.com>
Date:   Tue Apr 9 15:14:06 2002 +0000

    Initial revision

    svn:r2