]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Disable the SETROUTERPURPOSE controller command: it is now obsolete.
authorRoger Dingledine <arma@torproject.org>
Thu, 11 Oct 2007 22:19:47 +0000 (22:19 +0000)
committerRoger Dingledine <arma@torproject.org>
Thu, 11 Oct 2007 22:19:47 +0000 (22:19 +0000)
svn:r11891

ChangeLog
doc/TODO
doc/spec/control-spec.txt
src/or/control.c

index 4a5d26bb32aac777d0f30f5895783fb62b924401..9c69b247801c496358dc3bf8d068794f771551d4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,8 @@ Changes in version 0.2.0.8-alpha - 2007-10-12
     - Use annotations to record the time we received each descriptor.
     - Use annotations to record the source for each descriptor.
     - Use annotations to record the purpose of each descriptor.
+    - Disable the SETROUTERPURPOSE controller command: it is now
+      obsolete.
     - Bridge authorities now write bridge descriptors to disk, meaning
       we can export them to other programs and begin distributing them
       to blocked users.
@@ -113,7 +115,7 @@ Changes in version 0.2.0.8-alpha - 2007-10-12
       Bugfix in 0.2.0.7-alpha.
     - Fix a minor memory leak whenever we parse guards from our state
       file. Bugfix on 0.2.0.7-alpha.
-    - Fix a minor memory leak whenever we wrote out a file. Bugfix on
+    - Fix a minor memory leak whenever we write out a file. Bugfix on
       0.2.0.7-alpha.
     - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
       command. Bugfix on 0.2.0.5-alpha.
index 3a8bf15719780f709de385154aa58446eadc8c80..c56f05cb2cbb1c1928f8af8a47a79e7ae3ed0ef8 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -172,7 +172,7 @@ N     . Cache for bridge descriptors
           o Set annotations based on purpose
           o Preserve routers with unrecognized purpose.
 R       - Stop setting the do-not-cache flag based on purpose.
-        - Disable and mark as obsolete the setrouterpurpose controller
+        o Disable and mark as obsolete the setrouterpurpose controller
           command.
     - Bridges operators (rudimentary version)
       - Ability to act as dir cache without a dir port.
index 3f2ba44e3a3361ce73a5d59c139467afe484742d..b57de5583c0b4b384fdf2713ba892cdb3e7ed4f0 100644 (file)
@@ -590,6 +590,10 @@ $Id$
   This changes the descriptor's purpose. See +POSTDESCRIPTOR below
   for details.
 
+  NOTE: This command was disabled and made obsolete as of Tor
+  0.2.0.8-alpha. It doesn't exist anymore, and is listed here only for
+  historical interest.
+
 3.13. ATTACHSTREAM
 
   Sent from the client to the server.  The syntax is:
index 81fc04f53c745e91fa913f55008a1877ce8f13a2..cbe3158a6938001efe07cd0f32c9369e606ed756 100644 (file)
@@ -116,9 +116,8 @@ static int handle_control_getinfo(control_connection_t *conn, uint32_t len,
 static int handle_control_extendcircuit(control_connection_t *conn,
                                         uint32_t len,
                                         const char *body);
-static int handle_control_setpurpose(control_connection_t *conn,
-                                     int for_circuits,
-                                     uint32_t len, const char *body);
+static int handle_control_setcircuitpurpose(control_connection_t *conn,
+                                            uint32_t len, const char *body);
 static int handle_control_attachstream(control_connection_t *conn,
                                        uint32_t len,
                                         const char *body);
@@ -262,7 +261,7 @@ control_event_is_interesting(int event)
 }
 
 /** Append a NUL-terminated string <b>s</b> to the end of
- * <b>conn</b>-\>outbuf
+ * <b>conn</b>-\>outbuf.
  */
 static INLINE void
 connection_write_str_to_buf(const char *s, control_connection_t *conn)
@@ -448,7 +447,7 @@ connection_printf_to_buf(control_connection_t *conn, const char *format, ...)
   connection_write_to_buf(buf, len, TO_CONN(conn));
 }
 
-/** Send a "DONE" message down the control connection <b>conn</b> */
+/** Send a "DONE" message down the control connection <b>conn</b>. */
 static void
 send_control_done(control_connection_t *conn)
 {
@@ -2039,53 +2038,36 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len,
   return 0;
 }
 
-/** Called when we get a SETCIRCUITPURPOSE (if <b>for_circuits</b>
- * is 1) or SETROUTERPURPOSE message. If we can find
- * the circuit/router and it's a valid purpose, change it. */
+/** Called when we get a SETCIRCUITPURPOSE message. If we can find the
+ * circuit and it's a valid purpose, change it. */
 static int
-handle_control_setpurpose(control_connection_t *conn, int for_circuits,
-                          uint32_t len, const char *body)
+handle_control_setcircuitpurpose(control_connection_t *conn,
+                                 uint32_t len, const char *body)
 {
-  /* XXXX020 this should maybe be two functions; almost no code is acutally
-     shared. */
   origin_circuit_t *circ = NULL;
-  routerinfo_t *ri = NULL;
   uint8_t new_purpose;
   smartlist_t *args;
-  const char *command =
-    for_circuits ? "SETCIRCUITPURPOSE" : "SETROUTERPURPOSE";
   (void) len; /* body is nul-terminated, so it's safe to ignore the length. */
 
-  args = getargs_helper(command, conn, body, 2, -1);
+  args = getargs_helper("SETCIRCUITPURPOSE", conn, body, 2, -1);
   if (!args)
     goto done;
 
-  if (for_circuits) {
-    if (!(circ = get_circ(smartlist_get(args,0)))) {
-      connection_printf_to_buf(conn, "552 Unknown circuit \"%s\"\r\n",
-                               (char*)smartlist_get(args, 0));
-      goto done;
-    }
-  } else {
-    if (!(ri = router_get_by_nickname(smartlist_get(args,0), 0))) {
-      connection_printf_to_buf(conn, "552 Unknown router \"%s\"\r\n",
-                               (char*)smartlist_get(args, 0));
-      goto done;
-    }
+  if (!(circ = get_circ(smartlist_get(args,0)))) {
+    connection_printf_to_buf(conn, "552 Unknown circuit \"%s\"\r\n",
+                             (char*)smartlist_get(args, 0));
+    goto done;
   }
 
   {
     char *purp = smartlist_get(args,1);
-    if (get_purpose(&purp, for_circuits, &new_purpose) < 0) {
+    if (get_purpose(&purp, 1, &new_purpose) < 0) {
       connection_printf_to_buf(conn, "552 Unknown purpose \"%s\"\r\n", purp);
       goto done;
     }
   }
 
-  if (for_circuits)
-    circ->_base.purpose = new_purpose;
-  else
-    ri->purpose = new_purpose;
+  circ->_base.purpose = new_purpose;
   connection_write_str_to_buf("250 OK\r\n", conn);
 
 done:
@@ -2695,11 +2677,10 @@ connection_control_process_inbuf(control_connection_t *conn)
     if (handle_control_extendcircuit(conn, data_len, args))
       return -1;
   } else if (!strcasecmp(conn->incoming_cmd, "SETCIRCUITPURPOSE")) {
-    if (handle_control_setpurpose(conn, 1, data_len, args))
+    if (handle_control_setcircuitpurpose(conn, data_len, args))
       return -1;
   } else if (!strcasecmp(conn->incoming_cmd, "SETROUTERPURPOSE")) {
-    if (handle_control_setpurpose(conn, 0, data_len, args))
-      return -1;
+    connection_write_str_to_buf("511 SETROUTERPURPOSE is obsolete.\r\n", conn);
   } else if (!strcasecmp(conn->incoming_cmd, "ATTACHSTREAM")) {
     if (handle_control_attachstream(conn, data_len, args))
       return -1;