]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
r15814@catbus: nickm | 2007-10-15 22:15:19 -0400
authorNick Mathewson <nickm@torproject.org>
Tue, 16 Oct 2007 02:15:41 +0000 (02:15 +0000)
committerNick Mathewson <nickm@torproject.org>
Tue, 16 Oct 2007 02:15:41 +0000 (02:15 +0000)
 Fix last patch.

svn:r11961

src/or/networkstatus.c

index 32f61fc86d283f9d8a06ace1c25a655e38c6aaad..57d951325f6120b4878ec36b2c54e249309b7427 100644 (file)
@@ -864,18 +864,16 @@ networkstatus_copy_old_consensus_info(networkstatus_vote_t *new_c,
   SMARTLIST_FOREACH(new_c->routerstatus_list, routerstatus_t *, rs_new,
   {
     int r;
-    while (rs_old && /* XXX020 Nick, solve this: sometimes rs_old is NULL */
-           (r = memcmp(rs_old->identity_digest, rs_new->identity_digest,
+    while ((r = memcmp(rs_old->identity_digest, rs_new->identity_digest,
                        DIGEST_LEN))<0) {
-      if (idx == smartlist_len(old_c->routerstatus_list))
+      if (++idx == smartlist_len(old_c->routerstatus_list))
         goto done;
-      rs_old = smartlist_get(old_c->routerstatus_list, ++idx);
+      rs_old = smartlist_get(old_c->routerstatus_list, idx);
     }
     if (r>0)
       continue;
-    if (r<0) /* XXX020 Nick, solve this: sometimes it's -1 which doesn't
-              * match your comment below. */
-      continue;
+    tor_assert(r==0);
+
     /* Okay, so we're looking at the same identity. */
     rs_new->name_lookup_warned = rs_old->name_lookup_warned;
     rs_new->last_dir_503_at = rs_old->last_dir_503_at;
@@ -1167,16 +1165,17 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
     const char *digest = router->cache_info.identity_digest;
     int r;
     while ((r = memcmp(rs->identity_digest, digest, DIGEST_LEN))<0) {
-      if (idx == smartlist_len(ns->routerstatus_list)) {
+      if (++idx == smartlist_len(ns->routerstatus_list)) {
         /* We're out of routerstatuses. Bail. */
         goto done;
       }
-      rs = smartlist_get(ns->routerstatus_list, ++idx);
+      rs = smartlist_get(ns->routerstatus_list, idx);
     }
     if (r>0) {
       /* We have no routerstatus for this router. Skip it. */
       continue;
     }
+    tor_assert(r==0);
 
     ds = router_get_trusteddirserver_by_digest(digest);