]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Do not send a NETINFO cell as a client until after we have got a CERT cell
authorfrosty <frosty@rootedker.nl>
Thu, 3 Nov 2011 16:03:05 +0000 (12:03 -0400)
committerNick Mathewson <nickm@torproject.org>
Thu, 3 Nov 2011 16:03:05 +0000 (12:03 -0400)
src/or/command.c

index c02d353bb1773ff745b2c614df2a2298965bd5e9..808333e2b188bec03717dc87169987e1a46a27dc 100644 (file)
@@ -688,8 +688,7 @@ command_process_versions_cell(var_cell_t *cell, or_connection_t *conn)
     const int send_chall = !started_here && public_server_mode(get_options());
     /* If our certs cell will authenticate us, or if we have no intention of
      * authenticating, send a netinfo cell right now. */
-    const int send_netinfo =
-      !(started_here && public_server_mode(get_options()));
+    const int send_netinfo = !started_here;
     const int send_any =
       send_versions || send_certs || send_chall || send_netinfo;
     tor_assert(conn->link_proto >= 3);
@@ -1021,6 +1020,13 @@ command_process_cert_cell(var_cell_t *cell, or_connection_t *conn)
 
     conn->handshake_state->id_cert = id_cert;
     id_cert = NULL;
+    if (!public_server_mode(get_options())) {
+      if (connection_or_send_netinfo(conn) < 0) {
+        log_warn(LD_OR, "Couldn't send netinfo cell");
+        connection_mark_for_close(TO_CONN(conn));
+        goto err;
+      }
+    }
   } else {
     if (! (id_cert && auth_cert))
       ERR("The certs we wanted were missing");