Parcourir la source

Don't fail to send netinfo if real_addr is unset

If we haven't set real_addr on a connection, we also now that _base.addr
hasn't been tampered with. So we can use that.
Sebastian Hahn il y a 12 ans
Parent
commit
688b53059e
1 fichiers modifiés avec 5 ajouts et 1 suppressions
  1. 5 1
      src/or/connection_or.c

+ 5 - 1
src/or/connection_or.c

@@ -1923,7 +1923,11 @@ connection_or_send_netinfo(or_connection_t *conn)
 
   /* Their address. */
   out = cell.payload + 4;
-  len = append_address_to_payload(out, &conn->real_addr);
+  /* We use &conn->real_addr below, unless it hasn't yet been set. If it
+   * hasn't yet been set, we know that _base.addr hasn't been tampered with
+   * yet either. */
+  len = append_address_to_payload(out, !tor_addr_is_null(&conn->real_addr)
+                                       ? &conn->real_addr : &conn->_base.addr);
   if (len<0)
     return -1;
   out += len;