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

[or-cvs] [tor/master] Permit an empty "bridge-ips" line when parsing bridge stats.



Author: Karsten Loesing <karsten.loesing@xxxxxxx>
Date: Fri, 18 Dec 2009 13:29:51 +0100
Subject: Permit an empty "bridge-ips" line when parsing bridge stats.
Commit: 3a5a728d4a5490ac24819df54aca4a7d0dde0d10

---
 src/or/geoip.c |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/or/geoip.c b/src/or/geoip.c
index d99e472..45dc8cf 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -1102,6 +1102,7 @@ parse_bridge_stats_controller(const char *stats_str, time_t now)
 
   const char *BRIDGE_STATS_END = "bridge-stats-end ";
   const char *BRIDGE_IPS = "bridge-ips ";
+  const char *BRIDGE_IPS_EMPTY_LINE = "bridge-ips\n";
   const char *tmp;
   time_t stats_end_time;
   size_t controller_len;
@@ -1130,17 +1131,21 @@ parse_bridge_stats_controller(const char *stats_str, time_t now)
 
   /* Parse: "bridge-ips CC=N,CC=N,..." */
   tmp = find_str_at_start_of_line(stats_str, BRIDGE_IPS);
-  if (!tmp)
-    return NULL;
-  tmp += strlen(BRIDGE_IPS);
-
-  tmp = eat_whitespace_no_nl(tmp);
-
-  eol = strchr(tmp, '\n');
-  if (eol)
-    summary = tor_strndup(tmp, eol-tmp);
-  else
-    summary = tor_strdup(tmp);
+  if (tmp) {
+    tmp += strlen(BRIDGE_IPS);
+    tmp = eat_whitespace_no_nl(tmp);
+    eol = strchr(tmp, '\n');
+    if (eol)
+      summary = tor_strndup(tmp, eol-tmp);
+    else
+      summary = tor_strdup(tmp);
+  } else {
+    /* Look if there is an empty "bridge-ips" line */
+    tmp = find_str_at_start_of_line(stats_str, BRIDGE_IPS_EMPTY_LINE);
+    if (!tmp)
+      return NULL;
+    summary = tor_strdup("");
+  }
 
   controller_len = strlen("TimeStarted=\"\" CountrySummary=") +
                           strlen(summary) + 42;
-- 
1.5.6.5