Browse Source

OP was hanging on first try if connect finishes too quickly

svn:r105
Roger Dingledine 22 years ago
parent
commit
8019f2250c
2 changed files with 3 additions and 5 deletions
  1. 1 2
      src/or/connection_op.c
  2. 2 3
      src/or/connection_or.c

+ 1 - 2
src/or/connection_op.c

@@ -27,7 +27,6 @@ int connection_op_process_inbuf(connection_t *conn) {
   }
 
   return 0;
-
 }
 
 int op_handshake_process_keys(connection_t *conn) {
@@ -90,7 +89,7 @@ int op_handshake_process_keys(connection_t *conn) {
   connection_init_timeval(conn);
   connection_watch_events(conn, POLLIN);
 
-  return 0;
+  return connection_process_inbuf(conn); /* in case they sent some cells along with the keys */
 }
 
 int connection_op_finished_flushing(connection_t *conn) {

+ 2 - 3
src/or/connection_or.c

@@ -89,7 +89,7 @@ int connection_or_finished_flushing(connection_t *conn) {
       conn->state = OR_CONN_STATE_OPEN;
       connection_init_timeval(conn);
       connection_watch_events(conn, POLLIN);
-      return 0;
+      return connection_process_inbuf(conn); /* in case there's anything waiting on it */
     case OR_CONN_STATE_SERVER_SENDING_AUTH:
       log(LOG_DEBUG,"connection_or_finished_flushing(): server finished sending auth.");
       conn->state = OR_CONN_STATE_SERVER_NONCE_WAIT;
@@ -331,8 +331,7 @@ int or_handshake_op_finished_sending_keys(connection_t *conn) {
   conn->state = OR_CONN_STATE_OPEN;
   connection_init_timeval(conn);
   connection_watch_events(conn, POLLIN); /* give it a default, tho the ap_handshake call may change it */
-  ap_handshake_n_conn_open(conn); /* send the pending onion */
-  return 0;
+  return ap_handshake_n_conn_open(conn); /* send the pending onion */
 
 }