[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r13460: Fix some XXX020s in command.c, and make it not-allowed to ne (in tor/trunk: . doc/spec/proposals src/or)



Author: nickm
Date: 2008-02-10 13:40:29 -0500 (Sun, 10 Feb 2008)
New Revision: 13460

Modified:
   tor/trunk/
   tor/trunk/doc/spec/proposals/130-v2-conn-protocol.txt
   tor/trunk/src/or/command.c
Log:
 r14103@tombo:  nickm | 2008-02-10 13:40:09 -0500
 Fix some XXX020s in command.c, and make it not-allowed to negotiate v1 using the v2 connection protocol: it is too hard to test, and pointless to support.



Property changes on: tor/trunk
___________________________________________________________________
 svk:merge ticket from /tor/trunk [r14103] on 49666b30-7950-49c5-bedf-9dc8f3168102

Modified: tor/trunk/doc/spec/proposals/130-v2-conn-protocol.txt
===================================================================
--- tor/trunk/doc/spec/proposals/130-v2-conn-protocol.txt	2008-02-10 18:40:27 UTC (rev 13459)
+++ tor/trunk/doc/spec/proposals/130-v2-conn-protocol.txt	2008-02-10 18:40:29 UTC (rev 13460)
@@ -173,6 +173,10 @@
 
      The Data in the cell is a series of big-endian two-byte integers.
 
+   * It is not allowed to negotiate V1 conections once the v2 protocol
+     has been used.  If this happens, Tor instances should close the
+     connection.
+
 3. The rest of the "v2" protocol
 
    Once a v2 protocol has been negotiated, NETINFO cells are exchanged

Modified: tor/trunk/src/or/command.c
===================================================================
--- tor/trunk/src/or/command.c	2008-02-10 18:40:27 UTC (rev 13459)
+++ tor/trunk/src/or/command.c	2008-02-10 18:40:29 UTC (rev 13460)
@@ -446,7 +446,10 @@
 }
 
 /** Process a 'versions' cell.  The current link protocol version must be 0
- * to indicate that no version has yet been negotiated. DOCDOC say more. */
+ * to indicate that no version has yet been negotiated.  We compare the versions
+ * cell to the list of versions we support, and pick the highest version we
+ * have in common.
+ */
 static void
 command_process_versions_cell(var_cell_t *cell, or_connection_t *conn)
 {
@@ -473,6 +476,12 @@
            "list in the VERSIONS cell; closing connection.");
     connection_mark_for_close(TO_CONN(conn));
     return;
+  } else if (highest_supported_version == 1) {
+    log_fn(LOG_PROTOCOL_WARN, LD_OR,
+           "Used version negotiation protocol to negotiate a v1 connection. "
+           "That's crazily non-compliant. Closing connection.");
+    connection_mark_for_close(TO_CONN(conn));
+    return;
   }
   conn->link_proto = highest_supported_version;
   conn->handshake_state->received_versions = 1;
@@ -568,9 +577,10 @@
   if (abs(apparent_skew) > NETINFO_NOTICE_SKEW &&
       router_get_by_digest(conn->identity_digest)) {
     char dbuf[64];
-    /*XXXX020 not always warn!*/
+    /*XXXX This should check the trustedness of the other side. */
+    int severity = server_mode(get_options()) ? LOG_INFO : LOG_WARN;
     format_time_interval(dbuf, sizeof(dbuf), apparent_skew);
-    log_fn(LOG_WARN, LD_HTTP, "Received NETINFO cell with skewed time from "
+    log_fn(severity, LD_GENERAL, "Received NETINFO cell with skewed time from "
            "server at %s:%d.  It seems that our clock is %s by %s, or "
            "that theirs is %s. Tor requires an accurate clock to work: "
            "please check your time and date settings.",