122 Commits

Author SHA1 Message Date
Dave Hart
b5a1f9f74b 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.
2011-03-23 16:22:24 -04:00
Dave Hart
ab008c7d05 Make --no-libevent-install apply to event1 headers too 2011-03-03 12:57:17 -05:00
Dave Hart
49e9bb7fb0 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.
2011-02-22 00:28:37 -05:00
Nick Mathewson
bffc411ed6 Set the version to 2.0.10-stable 2010-12-15 14:29:50 -05:00
Nick Mathewson
79957b89d6 Bump VERSION_INFO to 5:0:0 2010-11-30 01:20:04 -05:00
Nick Mathewson
a4063c06f9 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).
2010-10-26 10:38:30 -04:00
Nick Mathewson
ef18c994c3 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.
2010-10-14 18:36:07 -04:00
Nick Mathewson
fe008ed656 Make all versioning changes for 2.0.7-rc, and add ChangeLog 2010-09-09 14:59:27 -04:00
Nick Mathewson
9b5c19ac87 Merge branch 'more_pkgconfig' 2010-08-10 11:46:00 -04:00
Nick Mathewson
ebcb1f0387 Add pkgconfig files for libevent_{openssl,pthreads} 2010-08-10 11:11:25 -04:00
Nick Mathewson
556d0f4001 Increment versions to 2.0.6-rc 2010-08-06 21:19:44 -04:00
Nick Mathewson
ec347b9225 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.
2010-08-06 20:21:27 -04:00
Sebastian Hahn
142500317e 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.
2010-06-23 01:15:15 +02:00
Nick Mathewson
9659eced03 Add a comment to describe our plan for library versioning 2010-06-19 18:23:16 -04:00
Nick Mathewson
b2d7440a91 Set library version for libevent_pthreads correctly 2010-06-19 18:22:48 -04:00
Nick Mathewson
ad9b7f153d Increment version numbers for 2.0.5-beta 2010-05-09 00:22:08 -04:00
Nick Mathewson
fdc629736e 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.
2010-05-08 14:21:48 -04:00
Nick Mathewson
25433b96dc 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.
2010-05-06 14:37:23 -04:00
Nick Mathewson
7731ec8828 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.)
2010-05-06 13:26:05 -04:00
Giuseppe Scrivano
3cbca8661f Create shared libraries under Windows 2010-04-13 02:01:04 -04:00
Nick Mathewson
9eb2fd75be Use dist_bin_SCRIPTS, not EXTRA_DIST, to distribute scripts 2010-03-22 13:27:47 -04:00
Nick Mathewson
77c917ded0 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."
2010-03-12 14:37:54 -05:00
Nick Mathewson
0794b0d29c Remove an orphaned RELEASE flag in Makefile.am 2010-03-12 14:21:52 -05:00
Nick Mathewson
2e898f542b 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.
2010-03-12 14:16:30 -05:00
Nick Mathewson
b660edf9db 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.
2010-03-12 13:22:47 -05:00
Nick Mathewson
426c8fbe93 Support the standard 'make check' target in place of 'make verify'
Based on patch 2816088 from Zack Weinberg
2010-03-12 13:09:28 -05:00
Nick Mathewson
22aff0492d Distribute libevent.pc.in, not libevent.pc 2010-03-01 22:06:12 -05:00
Nick Mathewson
9669ade525 Bump the version to 2.0.4-alpha 2010-02-28 16:44:25 -05:00
Nick Mathewson
d4de062efc 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.
2010-02-11 12:53:32 -05:00
Nick Mathewson
706700674c 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)
2010-01-19 13:55:53 -05:00
Nick Mathewson
27308aae4d 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.
2010-01-14 16:31:22 -05:00
Nick Mathewson
737c9cd87b 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.
2009-12-28 16:11:18 -05:00
Nick Mathewson
c69d5a5d3c 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.
2009-12-22 15:52:12 -05:00
Nick Mathewson
347952ffe0 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.
2009-11-27 17:36:24 -05:00
Nick Mathewson
86f5742015 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
2009-11-16 22:25:46 +00:00
Nick Mathewson
43ba66936a Export nmakefiles in source distribution.
svn:r1509
2009-11-05 20:45:07 +00:00
Nick Mathewson
d34019289c Rename win32.c to win32select.c, and take it out of the WIN32-Code ghetto.
svn:r1504
2009-11-05 18:49:08 +00:00
Nick Mathewson
d14c3b4570 Fix another ssize_t user
svn:r1503
2009-11-05 18:25:46 +00:00
Nick Mathewson
0b9eb1bffb 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
2009-11-03 20:40:48 +00:00
Nick Mathewson
0fd0255fa4 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
2009-11-03 19:54:56 +00:00
Nick Mathewson
709c21c48c 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
2009-07-28 04:03:57 +00:00
Nick Mathewson
0cc10e419c 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
2009-07-13 20:02:49 +00:00
Nick Mathewson
85b0a7a23f We were distributing the wrong event-config.h with our source distributions. Fix that.
svn:r1289
2009-05-15 01:38:23 +00:00
Nick Mathewson
fe47003d06 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
2009-05-05 16:52:37 +00:00
Nick Mathewson
659d54d530 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
2009-05-05 02:59:26 +00:00
Niels Provos
0c15d6ab7d defer-internal.h was missing from dist; so our first tar ball did not even compile. ouch.
svn:r1207
2009-04-19 13:33:52 +00:00
Nick Mathewson
d047b323bd Increment version to 2.0.1-alpha, and add a numeric version facility
svn:r1193
2009-04-17 17:22:32 +00:00
Nick Mathewson
9097c95b6e Rename whatsnew file to reflect actual version.
svn:r1184
2009-04-17 06:56:23 +00:00
Nick Mathewson
838d0a81c3 Document many internal functions and pieces of code.
svn:r1181
2009-04-17 06:55:08 +00:00
Niels Provos
edfc28caef pkgconfig support from Ted Bullock
svn:r1177
2009-04-17 00:24:58 +00:00