summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-08-02 13:20:59 -0400
committerNick Mathewson <nickm@torproject.org>2016-08-02 13:22:06 -0400
commit8fd6b0fc46a63b99903ae340da1793db127ce680 (patch)
treeebd9212557cbcc290b1e35b5476e34427ff93b6a
parentc68a23a135369380dad5cb1ff393edee74e6d6ac (diff)
downloadtor-8fd6b0fc46a63b99903ae340da1793db127ce680.tar.gz
tor-8fd6b0fc46a63b99903ae340da1793db127ce680.zip
Remove USE_BUFFEREVENTS code outside src/or
-rw-r--r--src/common/compat_libevent.c113
-rw-r--r--src/common/compat_libevent.h13
-rw-r--r--src/common/tortls.c79
-rw-r--r--src/common/tortls.h8
-rw-r--r--src/test/test_compat_libevent.c3
-rw-r--r--src/test/test_oom.c5
6 files changed, 3 insertions, 218 deletions
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index c5f73dc51a..2075c1c63d 100644
--- a/src/common/compat_libevent.c
+++ b/src/common/compat_libevent.c
@@ -18,9 +18,6 @@
#include <event2/event.h>
#include <event2/thread.h>
-#ifdef USE_BUFFEREVENTS
-#include <event2/bufferevent.h>
-#endif
/** A string which, if it appears in a libevent log, should be ignored. */
static const char *suppress_msg = NULL;
@@ -94,17 +91,6 @@ static struct event_base *the_event_base = NULL;
#endif
#endif
-#ifdef USE_BUFFEREVENTS
-static int using_iocp_bufferevents = 0;
-static void tor_libevent_set_tick_timeout(int msec_per_tick);
-
-int
-tor_libevent_using_iocp_bufferevents(void)
-{
- return using_iocp_bufferevents;
-}
-#endif
-
/** Initialize the Libevent library and set up the event base. */
void
tor_libevent_initialize(tor_libevent_cfg *torcfg)
@@ -115,34 +101,15 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
{
int attempts = 0;
- int using_threads;
struct event_config *cfg;
- retry:
++attempts;
- using_threads = 0;
cfg = event_config_new();
tor_assert(cfg);
-#if defined(_WIN32) && defined(USE_BUFFEREVENTS)
- if (! torcfg->disable_iocp) {
- evthread_use_windows_threads();
- event_config_set_flag(cfg, EVENT_BASE_FLAG_STARTUP_IOCP);
- using_iocp_bufferevents = 1;
- using_threads = 1;
- } else {
- using_iocp_bufferevents = 0;
- }
-#elif defined(__COVERITY__)
- /* Avoid a 'dead code' warning below. */
- using_threads = ! torcfg->disable_iocp;
-#endif
-
- if (!using_threads) {
- /* Telling Libevent not to try to turn locking on can avoid a needless
- * socketpair() attempt. */
- event_config_set_flag(cfg, EVENT_BASE_FLAG_NOLOCK);
- }
+ /* Telling Libevent not to try to turn locking on can avoid a needless
+ * socketpair() attempt. */
+ event_config_set_flag(cfg, EVENT_BASE_FLAG_NOLOCK);
if (torcfg->num_cpus > 0)
event_config_set_num_cpus_hint(cfg, torcfg->num_cpus);
@@ -154,24 +121,6 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
the_event_base = event_base_new_with_config(cfg);
event_config_free(cfg);
-
- if (using_threads && the_event_base == NULL && attempts < 2) {
- /* This could be a socketpair() failure, which can happen sometimes on
- * windows boxes with obnoxious firewall rules. Downgrade and try
- * again. */
-#if defined(_WIN32) && defined(USE_BUFFEREVENTS)
- if (torcfg->disable_iocp == 0) {
- log_warn(LD_GENERAL, "Unable to initialize Libevent. Trying again "
- "with IOCP disabled.");
- } else
-#endif
- {
- log_warn(LD_GENERAL, "Unable to initialize Libevent. Trying again.");
- }
-
- torcfg->disable_iocp = 1;
- goto retry;
- }
}
if (!the_event_base) {
@@ -184,10 +133,6 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
log_info(LD_GENERAL,
"Initialized libevent version %s using method %s. Good.",
event_get_version(), tor_libevent_get_method());
-
-#ifdef USE_BUFFEREVENTS
- tor_libevent_set_tick_timeout(torcfg->msec_per_tick);
-#endif
}
/** Return the current Libevent event base that we're set up to use. */
@@ -276,58 +221,6 @@ periodic_timer_free(periodic_timer_t *timer)
tor_free(timer);
}
-#ifdef USE_BUFFEREVENTS
-static const struct timeval *one_tick = NULL;
-/**
- * Return a special timeout to be passed whenever libevent's O(1) timeout
- * implementation should be used. Only use this when the timer is supposed
- * to fire after msec_per_tick ticks have elapsed.
-*/
-const struct timeval *
-tor_libevent_get_one_tick_timeout(void)
-{
- tor_assert(one_tick);
- return one_tick;
-}
-
-/** Initialize the common timeout that we'll use to refill the buckets every
- * time a tick elapses. */
-static void
-tor_libevent_set_tick_timeout(int msec_per_tick)
-{
- struct event_base *base = tor_libevent_get_base();
- struct timeval tv;
-
- tor_assert(! one_tick);
- tv.tv_sec = msec_per_tick / 1000;
- tv.tv_usec = (msec_per_tick % 1000) * 1000;
- one_tick = event_base_init_common_timeout(base, &tv);
-}
-
-static struct bufferevent *
-tor_get_root_bufferevent(struct bufferevent *bev)
-{
- struct bufferevent *u;
- while ((u = bufferevent_get_underlying(bev)) != NULL)
- bev = u;
- return bev;
-}
-
-int
-tor_set_bufferevent_rate_limit(struct bufferevent *bev,
- struct ev_token_bucket_cfg *cfg)
-{
- return bufferevent_set_rate_limit(tor_get_root_bufferevent(bev), cfg);
-}
-
-int
-tor_add_bufferevent_to_rate_limit_group(struct bufferevent *bev,
- struct bufferevent_rate_limit_group *g)
-{
- return bufferevent_add_to_rate_limit_group(tor_get_root_bufferevent(bev), g);
-}
-#endif
-
int
tor_init_libevent_rng(void)
{
diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h
index 89b35c9faa..d9ccf1aabf 100644
--- a/src/common/compat_libevent.h
+++ b/src/common/compat_libevent.h
@@ -9,10 +9,6 @@
#include <event2/event.h>
-#ifdef USE_BUFFEREVENTS
-#include <event2/bufferevent.h>
-#endif
-
void configure_libevent_logging(void);
void suppress_libevent_log_msg(const char *msg);
@@ -54,15 +50,6 @@ void tor_check_libevent_header_compatibility(void);
const char *tor_libevent_get_version_str(void);
const char *tor_libevent_get_header_version_str(void);
-#ifdef USE_BUFFEREVENTS
-const struct timeval *tor_libevent_get_one_tick_timeout(void);
-int tor_libevent_using_iocp_bufferevents(void);
-int tor_set_bufferevent_rate_limit(struct bufferevent *bev,
- struct ev_token_bucket_cfg *cfg);
-int tor_add_bufferevent_to_rate_limit_group(struct bufferevent *bev,
- struct bufferevent_rate_limit_group *g);
-#endif
-
int tor_init_libevent_rng(void);
void tor_gettimeofday_cached(struct timeval *tv);
diff --git a/src/common/tortls.c b/src/common/tortls.c
index 0395205228..c7a726609c 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -48,13 +48,6 @@ DISABLE_GCC_WARNING(redundant-decls)
ENABLE_GCC_WARNING(redundant-decls)
-#ifdef USE_BUFFEREVENTS
-#include <event2/bufferevent_ssl.h>
-#include <event2/buffer.h>
-#include <event2/event.h>
-#include "compat_libevent.h"
-#endif
-
#define TORTLS_PRIVATE
#include "tortls.h"
#include "util.h"
@@ -2486,78 +2479,6 @@ tor_tls_get_buffer_sizes(tor_tls_t *tls,
#endif
}
-#ifdef USE_BUFFEREVENTS
-/** Construct and return an TLS-encrypting bufferevent to send data over
- * <b>socket</b>, which must match the socket of the underlying bufferevent
- * <b>bufev_in</b>. The TLS object <b>tls</b> is used for encryption.
- *
- * This function will either create a filtering bufferevent that wraps around
- * <b>bufev_in</b>, or it will free bufev_in and return a new bufferevent that
- * uses the <b>tls</b> to talk to the network directly. Do not use
- * <b>bufev_in</b> after calling this function.
- *
- * The connection will start out doing a server handshake if <b>receiving</b>
- * is strue, and a client handshake otherwise.
- *
- * Returns NULL on failure.
- */
-struct bufferevent *
-tor_tls_init_bufferevent(tor_tls_t *tls, struct bufferevent *bufev_in,
- evutil_socket_t socket, int receiving,
- int filter)
-{
- struct bufferevent *out;
- const enum bufferevent_ssl_state state = receiving ?
- BUFFEREVENT_SSL_ACCEPTING : BUFFEREVENT_SSL_CONNECTING;
-
- if (filter || tor_libevent_using_iocp_bufferevents()) {
- /* Grab an extra reference to the SSL, since BEV_OPT_CLOSE_ON_FREE
- means that the SSL will get freed too.
-
- This increment makes our SSL usage not-threadsafe, BTW. We should
- see if we're allowed to use CRYPTO_add from outside openssl. */
- tls->ssl->references += 1;
- out = bufferevent_openssl_filter_new(tor_libevent_get_base(),
- bufev_in,
- tls->ssl,
- state,
- BEV_OPT_DEFER_CALLBACKS|
- BEV_OPT_CLOSE_ON_FREE);
- /* Tell the underlying bufferevent when to accept more data from the SSL
- filter (only when it's got less than 32K to write), and when to notify
- the SSL filter that it could write more (when it drops under 24K). */
- bufferevent_setwatermark(bufev_in, EV_WRITE, 24*1024, 32*1024);
- } else {
- if (bufev_in) {
- evutil_socket_t s = bufferevent_getfd(bufev_in);
- tor_assert(s == -1 || s == socket);
- tor_assert(evbuffer_get_length(bufferevent_get_input(bufev_in)) == 0);
- tor_assert(evbuffer_get_length(bufferevent_get_output(bufev_in)) == 0);
- tor_assert(BIO_number_read(SSL_get_rbio(tls->ssl)) == 0);
- tor_assert(BIO_number_written(SSL_get_rbio(tls->ssl)) == 0);
- bufferevent_free(bufev_in);
- }
-
- /* Current versions (as of 2.0.x) of Libevent need to defer
- * bufferevent_openssl callbacks, or else our callback functions will
- * get called reentrantly, which is bad for us.
- */
- out = bufferevent_openssl_socket_new(tor_libevent_get_base(),
- socket,
- tls->ssl,
- state,
- BEV_OPT_DEFER_CALLBACKS);
- }
- tls->state = TOR_TLS_ST_BUFFEREVENT;
-
- /* Unblock _after_ creating the bufferevent, since accept/connect tend to
- * clear flags. */
- tor_tls_unblock_renegotiation(tls);
-
- return out;
-}
-#endif
-
/** Check whether the ECC group requested is supported by the current OpenSSL
* library instance. Return 1 if the group is supported, and 0 if not.
*/
diff --git a/src/common/tortls.h b/src/common/tortls.h
index b6ab2ec8f5..7c035a2cd5 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -235,14 +235,6 @@ void check_no_tls_errors_(const char *fname, int line);
void tor_tls_log_one_error(tor_tls_t *tls, unsigned long err,
int severity, int domain, const char *doing);
-#ifdef USE_BUFFEREVENTS
-int tor_tls_start_renegotiating(tor_tls_t *tls);
-struct bufferevent *tor_tls_init_bufferevent(tor_tls_t *tls,
- struct bufferevent *bufev_in,
- evutil_socket_t socket, int receiving,
- int filter);
-#endif
-
void tor_x509_cert_free(tor_x509_cert_t *cert);
tor_x509_cert_t *tor_x509_cert_decode(const uint8_t *certificate,
size_t certificate_len);
diff --git a/src/test/test_compat_libevent.c b/src/test/test_compat_libevent.c
index c81f043834..f13eb81124 100644
--- a/src/test/test_compat_libevent.c
+++ b/src/test/test_compat_libevent.c
@@ -11,9 +11,6 @@
#include <event2/event.h>
#include <event2/thread.h>
-#ifdef USE_BUFFEREVENTS
-#include <event2/bufferevent.h>
-#endif
#include "log_test_helpers.h"
diff --git a/src/test/test_oom.c b/src/test/test_oom.c
index 2569b6e00f..59dfbc0ca1 100644
--- a/src/test/test_oom.c
+++ b/src/test/test_oom.c
@@ -101,13 +101,8 @@ dummy_edge_conn_new(circuit_t *circ,
else
conn = ENTRY_TO_EDGE_CONN(entry_connection_new(type, AF_INET));
-#ifdef USE_BUFFEREVENTS
- inbuf = bufferevent_get_input(TO_CONN(conn)->bufev);
- outbuf = bufferevent_get_output(TO_CONN(conn)->bufev);
-#else
inbuf = TO_CONN(conn)->inbuf;
outbuf = TO_CONN(conn)->outbuf;
-#endif
/* We add these bytes directly to the buffers, to avoid all the
* edge connection read/write machinery. */