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

[or-cvs] r17245: {tor} Add PURPOSE= field to getinfo circuit-status. With luck, con (in tor/trunk: . src/or)



Author: nickm
Date: 2008-11-11 10:59:24 -0500 (Tue, 11 Nov 2008)
New Revision: 17245

Modified:
   tor/trunk/ChangeLog
   tor/trunk/src/or/control.c
Log:
Add PURPOSE= field to getinfo circuit-status.  With luck, controllers are ignoring extra fields (like they are supposed to) and this will not break any controllers.

Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog	2008-11-11 15:29:40 UTC (rev 17244)
+++ tor/trunk/ChangeLog	2008-11-11 15:59:24 UTC (rev 17245)
@@ -3,6 +3,9 @@
     - Get file locking working on win32.  Bugfix on 0.2.1.6-alpha.  Fixes
       bug 859.
 
+  o Minor features (controller):
+    - Return circuit purposes in response to GETINFO circuit-status.  Fixes
+      bug 858.
 
 Changes in version 0.2.1.7-alpha - 2008-11-08
   o Security fixes:

Modified: tor/trunk/src/or/control.c
===================================================================
--- tor/trunk/src/or/control.c	2008-11-11 15:29:40 UTC (rev 17244)
+++ tor/trunk/src/or/control.c	2008-11-11 15:59:24 UTC (rev 17245)
@@ -1631,6 +1631,7 @@
       char *s, *path;
       size_t slen;
       const char *state;
+      const char *purpose;
       if (! CIRCUIT_IS_ORIGIN(circ) || circ->marked_for_close)
         continue;
       if (control_conn->use_long_names)
@@ -1644,11 +1645,12 @@
       else
         state = "LAUNCHED";
 
-      slen = strlen(path)+strlen(state)+20;
+      purpose = circuit_purpose_to_controller_string(circ->purpose);
+      slen = strlen(path)+strlen(state)+strlen(purpose)+30;
       s = tor_malloc(slen+1);
-      tor_snprintf(s, slen, "%lu %s%s%s",
+      tor_snprintf(s, slen, "%lu %s%s%s PURPOSE=%s",
                    (unsigned long)TO_ORIGIN_CIRCUIT(circ)->global_identifier,
-                   state, *path ? " " : "", path);
+                   state, *path ? " " : "", path, purpose);
       smartlist_add(status, s);
       tor_free(path);
     }