From fc58c37e334fec71a204b7b0787d347b647618b8 Mon Sep 17 00:00:00 2001 From: meejah Date: Sat, 28 Jan 2017 13:49:18 -0700 Subject: Ticket #21329: GETINFO onions/current returns empty list If there are no ephemeral or detached onion services, then "GETINFO onions/current" or "GETINFO onions/detached" should return an empty list instead of an error --- src/or/control.c | 13 +++++++------ src/or/control.h | 5 +++++ 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'src/or') diff --git a/src/or/control.c b/src/or/control.c index 857b7325ae..cc46cb1aa2 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -2824,12 +2824,13 @@ getinfo_helper_events(control_connection_t *control_conn, /** Implementation helper for GETINFO: knows how to enumerate hidden services * created via the control port. */ -static int +STATIC int getinfo_helper_onions(control_connection_t *control_conn, const char *question, char **answer, const char **errmsg) { smartlist_t *onion_list = NULL; + (void) errmsg; /* no errors from this method */ if (control_conn && !strcmp(question, "onions/current")) { onion_list = control_conn->ephemeral_onion_services; @@ -2839,13 +2840,13 @@ getinfo_helper_onions(control_connection_t *control_conn, return 0; } if (!onion_list || smartlist_len(onion_list) == 0) { - if (errmsg) { - *errmsg = "No onion services of the specified type."; + if (answer) { + *answer = tor_strdup(""); } - return -1; - } - if (answer) { + } else { + if (answer) { *answer = smartlist_join_strings(onion_list, "\r\n", 0, NULL); + } } return 0; diff --git a/src/or/control.h b/src/or/control.h index 6330c85571..16ba1ed8f0 100644 --- a/src/or/control.h +++ b/src/or/control.h @@ -262,6 +262,11 @@ STATIC crypto_pk_t *add_onion_helper_keyarg(const char *arg, int discard_pk, STATIC rend_authorized_client_t * add_onion_helper_clientauth(const char *arg, int *created, char **err_msg_out); +STATIC int getinfo_helper_onions( + control_connection_t *control_conn, + const char *question, + char **answer, + const char **errmsg); STATIC void getinfo_helper_downloads_networkstatus( const char *flavor, download_status_t **dl_to_emit, -- cgit v1.2.3-54-g00ecf