diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-06-10 12:25:14 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-06-10 12:25:14 -0400 |
commit | 4835faebf533f93eb390649dfcb5c8cc0289e3d3 (patch) | |
tree | 1c9015699a7b2baf84b3cad7cde902a2d69fba38 | |
parent | fe689de084116bd54eb3f90baba4620eef5d1001 (diff) | |
parent | 77a193533966c5c2f81e6a85b3c2a7446076508f (diff) | |
download | tor-4835faebf533f93eb390649dfcb5c8cc0289e3d3.tar.gz tor-4835faebf533f93eb390649dfcb5c8cc0289e3d3.zip |
Merge branch 'bug9017' into maint-0.2.3
-rw-r--r-- | changes/bug9017 | 6 | ||||
-rw-r--r-- | src/or/connection_edge.c | 11 |
2 files changed, 12 insertions, 5 deletions
diff --git a/changes/bug9017 b/changes/bug9017 new file mode 100644 index 0000000000..359c526b00 --- /dev/null +++ b/changes/bug9017 @@ -0,0 +1,6 @@ + o Major bugfixes: + - Avoid an assertion failure on OpenBSD (and perhaps other BSDs) + when an exit connection with optimistic data succeeds immediately + rather than returning EINPROGRESS. Fixes bug 9017; bugfix on + 0.2.3.1-alpha. + diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 9563ca6222..362ad9af95 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -3302,12 +3302,13 @@ connection_exit_connect(edge_connection_t *edge_conn) conn->state = EXIT_CONN_STATE_OPEN; if (connection_get_outbuf_len(conn)) { - /* in case there are any queued data cells */ - log_warn(LD_BUG,"newly connected conn had data waiting!"); -// connection_start_writing(conn); + /* in case there are any queued data cells, from e.g. optimistic data */ + IF_HAS_NO_BUFFEREVENT(conn) + connection_watch_events(conn, READ_EVENT|WRITE_EVENT); + } else { + IF_HAS_NO_BUFFEREVENT(conn) + connection_watch_events(conn, READ_EVENT); } - IF_HAS_NO_BUFFEREVENT(conn) - connection_watch_events(conn, READ_EVENT); /* also, deliver a 'connected' cell back through the circuit. */ if (connection_edge_is_rendezvous_stream(edge_conn)) { |