diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-08-11 15:03:43 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2010-09-27 12:31:13 -0400 |
commit | b63f6518cbdc4c80b09399bc17d3bec3cac76ad9 (patch) | |
tree | 5e280f817c5f077a00682ae0f0d5be9cb55cd37d /src/or/main.c | |
parent | ddcb59bb70457e203247931aaad3a3ff8b923f97 (diff) | |
download | tor-b63f6518cbdc4c80b09399bc17d3bec3cac76ad9.tar.gz tor-b63f6518cbdc4c80b09399bc17d3bec3cac76ad9.zip |
Add bufferevent support for outgoing connections; exits are now supported.
Diffstat (limited to 'src/or/main.c')
-rw-r--r-- | src/or/main.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/or/main.c b/src/or/main.c index 18473c3b50..976d805e13 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -160,7 +160,7 @@ int can_complete_circuit=0; * non-reading and non-writing. */ int -connection_add(connection_t *conn) +connection_add_impl(connection_t *conn, int is_connecting) { tor_assert(conn); tor_assert(conn->s >= 0 || @@ -179,7 +179,7 @@ connection_add(connection_t *conn) tor_libevent_get_base(), conn->s, BEV_OPT_DEFER_CALLBACKS); - if (conn->inbuf) { + if (conn->inbuf) { /* XXX Instead we should assert that there is no inbuf, once we * have linked connections using bufferevents. */ tor_assert(conn->outbuf); @@ -189,8 +189,15 @@ connection_add(connection_t *conn) buf_free(conn->outbuf); conn->inbuf = conn->outbuf = NULL; } + if (is_connecting) { + /* Put the bufferevent into a "connecting" state so that we'll get + * a "connected" event callback on successful write. */ + bufferevent_socket_connect(conn->bufev, NULL, 0); + } connection_configure_bufferevent_callbacks(conn); } +#else + (void) is_connecting; #endif if (!HAS_BUFFEREVENT(conn) && (conn->s >= 0 || conn->linked)) { |