}
/** Parse the server descriptor at *desc and maybe insert it into the
- * list of service descriptors, and (if the descriptor is well-formed)
+ * list of server descriptors, and (if the descriptor is well-formed)
* advance *desc immediately past the descriptor's end.
*
* Return 1 if descriptor is well-formed and accepted;
}
if (found >= 0) {
/* if so, decide whether to update it. */
- if (ent->published > ri->published_on) {
- /* We already have a newer descriptor */
- log_fn(LOG_INFO,"We already have a newer desc for nickname %s. Not adding.",ri->nickname);
+ if (ent->published >= ri->published_on) {
+ /* We already have a newer or equal-time descriptor */
+ log_fn(LOG_INFO,"We already have a new enough desc for nickname %s. Not adding.",ri->nickname);
/* This isn't really an error; return success. */
routerinfo_free(ri);
*desc = end;
the_directory_len = strlen(the_directory);
log_fn(LOG_INFO,"New directory (size %d):\n%s",the_directory_len,
the_directory);
- the_directory_is_dirty = 0;
/* Now read the directory we just made in order to update our own
* router lists. This does more signature checking than is strictly
* necessary, but safe is better than sorry. */
log_fn(LOG_WARN, "Couldn't write cached directory to disk. Ignoring.");
}
}
+ the_directory_is_dirty = 0;
} else {
log(LOG_INFO,"Directory still clean, reusing.");
}