|
@@ -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)) {
|