[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] use control reply lines for protocolinfo
commit a08f43ba045e051f16f3ea211be0438c09a906d6
Author: Taylor Yu <catalyst@xxxxxxxxxxxxxx>
Date: Thu Aug 22 16:58:30 2019 -0500
use control reply lines for protocolinfo
Simplify handle_control_protocolinfo() by using the new reply line
abstraction.
Part of #30984.
---
src/feature/control/control_cmd.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/src/feature/control/control_cmd.c b/src/feature/control/control_cmd.c
index 0f279b08d..ce7d1ad2c 100644
--- a/src/feature/control/control_cmd.c
+++ b/src/feature/control/control_cmd.c
@@ -1285,17 +1285,19 @@ get_esc_cfile(const or_options_t *options)
return esc_cfile;
}
-/** Send the auth methods lines of a PROTOCOLINFO reply. */
+/** Compose the auth methods line of a PROTOCOLINFO reply. */
static void
-send_authmethods(control_connection_t *conn)
+add_authmethods(smartlist_t *reply)
{
const or_options_t *options = get_options();
char *methods = get_authmethods(options);
char *esc_cfile = get_esc_cfile(options);
- control_printf_midreply(conn, 250, "AUTH METHODS=%s%s%s", methods,
- esc_cfile ? " COOKIEFILE=" : "",
- esc_cfile ? esc_cfile : "");
+ control_reply_add_str(reply, 250, "AUTH");
+ control_reply_append_kv(reply, "METHODS", methods);
+ if (esc_cfile)
+ control_reply_append_kv(reply, "COOKIEFILE", esc_cfile);
+
tor_free(methods);
tor_free(esc_cfile);
}
@@ -1307,6 +1309,7 @@ handle_control_protocolinfo(control_connection_t *conn,
{
const char *bad_arg = NULL;
const smartlist_t *args = cmd_args->args;
+ smartlist_t *reply = NULL;
conn->have_sent_protocolinfo = 1;
@@ -1326,10 +1329,15 @@ handle_control_protocolinfo(control_connection_t *conn,
connection_mark_for_close(TO_CONN(conn));
return 0;
}
- control_write_midreply(conn, 250, "PROTOCOLINFO 1");
- send_authmethods(conn);
- control_printf_midreply(conn, 250, "VERSION Tor=%s", escaped(VERSION));
- send_control_done(conn);
+ reply = smartlist_new();
+ control_reply_add_str(reply, 250, "PROTOCOLINFO 1");
+ add_authmethods(reply);
+ control_reply_add_str(reply, 250, "VERSION");
+ control_reply_append_kv(reply, "Tor", escaped(VERSION));
+ control_reply_add_done(reply);
+
+ control_write_reply_lines(conn, reply);
+ control_reply_free(reply);
return 0;
}
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits