]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Use fmt_and_decorate_addr in TransportProxy statefile entry.
authorDavid Fifield <david@bamsoftware.com>
Sun, 7 Oct 2012 04:03:24 +0000 (21:03 -0700)
committerNick Mathewson <nickm@torproject.org>
Thu, 11 Oct 2012 02:25:29 +0000 (22:25 -0400)
state_transport_line_is_valid calls tor_addr_port_lookup, which expects
brackets around an IPv6 address. Without this, cached transport
addresses can't be parsed later:

[warn] state: Could not parse addrport.
[warn] state: State file seems to be broken.

See #7011.

src/or/statefile.c

index 499572a071c6c29cf50155142bfafbfcdc707ca6..dd9d10230f86999be8d214ce1c2151b8fd57a929 100644 (file)
@@ -553,7 +553,8 @@ save_transport_to_state(const char *transport,
   if (transport_line) { /* if transport already exists in state... */
     const char *prev_bindaddr = /* get its addrport... */
       get_transport_bindaddr(transport_line->value, transport);
-    tor_asprintf(&transport_addrport, "%s:%d", fmt_addr(addr), (int)port);
+    tor_asprintf(&transport_addrport, "%s:%d", fmt_and_decorate_addr(addr),
+                 (int)port);
 
     /* if transport in state has the same address as this one, life is good */
     if (!strcmp(prev_bindaddr, transport_addrport)) {
@@ -566,7 +567,7 @@ save_transport_to_state(const char *transport,
                "address:port");
       tor_free(transport_line->value); /* free the old line */
       tor_asprintf(&transport_line->value, "%s %s:%d", transport,
-                   fmt_addr(addr),
+                   fmt_and_decorate_addr(addr),
                    (int) port); /* replace old addrport line with new line */
     }
   } else { /* never seen this one before; save it in state for next time */
@@ -585,7 +586,7 @@ save_transport_to_state(const char *transport,
     *next = line = tor_malloc_zero(sizeof(config_line_t));
     line->key = tor_strdup("TransportProxy");
     tor_asprintf(&line->value, "%s %s:%d", transport,
-                 fmt_addr(addr), (int) port);
+                 fmt_and_decorate_addr(addr), (int) port);
 
     next = &(line->next);
   }