When there are no package lines, make consensus/packages say "".

Also, give a better error message when there is no consensus.
This commit is contained in:
Nick Mathewson 2015-01-29 14:14:59 -05:00
parent bd630a899a
commit b4a8fd8958
2 changed files with 6 additions and 2 deletions

View File

@ -1916,7 +1916,9 @@ getinfo_helper_networkstatus(control_connection_t *conn,
} else if (!strcmp(question, "consensus/packages")) { } else if (!strcmp(question, "consensus/packages")) {
const networkstatus_t *ns = networkstatus_get_latest_consensus(); const networkstatus_t *ns = networkstatus_get_latest_consensus();
if (ns && ns->package_lines) if (ns && ns->package_lines)
*answer = smartlist_join_strings(ns->package_lines, "\n", 1, NULL); *answer = smartlist_join_strings(ns->package_lines, "\n", 0, NULL);
else
*errmsg = "No consensus available";
return *answer ? 0 : -1; return *answer ? 0 : -1;
} else if (!strcmp(question, "consensus/valid-after") || } else if (!strcmp(question, "consensus/valid-after") ||
!strcmp(question, "consensus/fresh-until") || !strcmp(question, "consensus/fresh-until") ||
@ -1934,6 +1936,8 @@ getinfo_helper_networkstatus(control_connection_t *conn,
char tbuf[ISO_TIME_LEN+1]; char tbuf[ISO_TIME_LEN+1];
format_iso_time(tbuf, t); format_iso_time(tbuf, t);
*answer = tor_strdup(tbuf); *answer = tor_strdup(tbuf);
} else {
*errmsg = "No consensus available";
} }
return *answer ? 0 : -1; return *answer ? 0 : -1;
} else { } else {

View File

@ -2630,8 +2630,8 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
{ {
smartlist_t *package_lst = find_all_by_keyword(tokens, K_PACKAGE); smartlist_t *package_lst = find_all_by_keyword(tokens, K_PACKAGE);
ns->package_lines = smartlist_new();
if (package_lst) { if (package_lst) {
ns->package_lines = smartlist_new();
SMARTLIST_FOREACH(package_lst, directory_token_t *, t, SMARTLIST_FOREACH(package_lst, directory_token_t *, t,
smartlist_add(ns->package_lines, tor_strdup(t->args[0]))); smartlist_add(ns->package_lines, tor_strdup(t->args[0])));
} }