[or-cvs] [tor/master] Cache the parsed value of SafeLogging as an enum.

Nick Mathewson nickm at seul.org
Tue Dec 15 22:25:25 UTC 2009


Author: Nick Mathewson <nickm at torproject.org>
Date: Sat, 12 Dec 2009 01:12:47 -0500
Subject: Cache the parsed value of SafeLogging as an enum.
Commit: a8190b09a319bf6b1bac7608ea77f828f9970056

---
 src/or/config.c |   25 +++++++++++++------------
 src/or/or.h     |    6 ++++++
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/or/config.c b/src/or/config.c
index bd7fe22..0fb1767 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -893,7 +893,7 @@ const char *
 safe_str(const char *address)
 {
   tor_assert(address);
-  if (!strcmp(get_options()->SafeLogging, "1"))
+  if (get_options()->_SafeLogging == SAFELOG_SCRUB_ALL)
     return "[scrubbed]";
   else
     return address;
@@ -906,8 +906,7 @@ const char *
 safe_str_relay(const char *address)
 {
   tor_assert(address);
-  if (!strcmp(get_options()->SafeLogging, "1") ||
-      !strcmp(get_options()->SafeLogging, "relay"))
+  if (get_options()->_SafeLogging != SAFELOG_SCRUB_NONE)
     return "[scrubbed]";
   else
     return address;
@@ -919,7 +918,7 @@ safe_str_relay(const char *address)
 const char *
 escaped_safe_str(const char *address)
 {
-  if (!strcmp(get_options()->SafeLogging, "1"))
+  if (get_options()->_SafeLogging == SAFELOG_SCRUB_ALL)
     return "[scrubbed]";
   else
     return escaped(address);
@@ -931,8 +930,7 @@ escaped_safe_str(const char *address)
 const char *
 escaped_safe_str_relay(const char *address)
 {
-  if (!strcasecmp(get_options()->SafeLogging, "1") ||
-      !strcasecmp(get_options()->SafeLogging, "relay"))
+  if (get_options()->_SafeLogging != SAFELOG_SCRUB_NONE)
     return "[scrubbed]";
   else
     return escaped(address);
@@ -3382,14 +3380,17 @@ options_validate(or_options_t *old_options, or_options_t *options,
       });
   }
 
-  if (options->SafeLogging &&
-      !(!strcasecmp(options->SafeLogging, "relay") ||
-        !strcasecmp(options->SafeLogging, "1") ||
-        !strcasecmp(options->SafeLogging, "0")))
-  {
+  if (!options->SafeLogging ||
+      !strcasecmp(options->SafeLogging, "0")) {
+    options->_SafeLogging = SAFELOG_SCRUB_NONE;
+  } else if (!strcasecmp(options->SafeLogging, "relay")) {
+    options->_SafeLogging = SAFELOG_SCRUB_RELAY;
+  } else if (!strcasecmp(options->SafeLogging, "1")) {
+    options->_SafeLogging = SAFELOG_SCRUB_ALL;
+  } else {
     r = tor_snprintf(buf, sizeof(buf),
                      "Unrecognized value '%s' in SafeLogging",
-                     options->SafeLogging);
+                     escaped(options->SafeLogging));
     *msg = tor_strdup(r >= 0 ? buf : "internal error");
     return -1;
   }
diff --git a/src/or/or.h b/src/or/or.h
index 67919d9..33bce42 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -2562,6 +2562,12 @@ typedef struct {
   int ShutdownWaitLength; /**< When we get a SIGINT and we're a server, how
                            * long do we wait before exiting? */
   char *SafeLogging; /**< Contains "relay", "1", "0" (meaning no scrubbing). */
+
+  /* Derived from SafeLogging */
+  enum {
+    SAFELOG_SCRUB_ALL, SAFELOG_SCRUB_RELAY, SAFELOG_SCRUB_NONE
+  } _SafeLogging;
+
   int SafeSocks; /**< Boolean: should we outright refuse application
                   * connections that use socks4 or socks5-with-local-dns? */
 #define LOG_PROTOCOL_WARN (get_options()->ProtocolWarnings ? \
-- 
1.5.6.5




More information about the tor-commits mailing list