[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] Add a DROPOWNERSHIP controller command to undo TAKEOWNERSHIP.
commit 4bc3983f64ab2a60a79127f47573836373ddf587
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Thu Dec 13 19:35:02 2018 -0500
Add a DROPOWNERSHIP controller command to undo TAKEOWNERSHIP.
Closes ticket 28843.
---
changes/ticket28843 | 3 +++
src/feature/control/control.c | 23 +++++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/changes/ticket28843 b/changes/ticket28843
new file mode 100644
index 000000000..00905293c
--- /dev/null
+++ b/changes/ticket28843
@@ -0,0 +1,3 @@
+ o Minor features (controller):
+ - Add a DROPOWNERSHIP command to undo the effects of TAKEOWNERSHIP.
+ Implements ticket 28843.
diff --git a/src/feature/control/control.c b/src/feature/control/control.c
index c2da7fe48..50f43c0f4 100644
--- a/src/feature/control/control.c
+++ b/src/feature/control/control.c
@@ -1741,6 +1741,26 @@ handle_control_takeownership(control_connection_t *conn, uint32_t len,
return 0;
}
+/** Called when we get a DROPOWNERSHIP command. Mark this connection
+ * as a non-owning connection, so that we will not exit if the connection
+ * closes. */
+static int
+handle_control_dropownership(control_connection_t *conn, uint32_t len,
+ const char *body)
+{
+ (void)len;
+ (void)body;
+
+ conn->is_owning_control_connection = 0;
+
+ log_info(LD_CONTROL, "Control connection %d has dropped ownership of this "
+ "Tor instance.",
+ (int)(conn->base_.s));
+
+ send_control_done(conn);
+ return 0;
+}
+
/** Return true iff <b>addr</b> is unusable as a mapaddress target because of
* containing funny characters. */
static int
@@ -5548,6 +5568,9 @@ connection_control_process_inbuf(control_connection_t *conn)
} else if (!strcasecmp(conn->incoming_cmd, "TAKEOWNERSHIP")) {
if (handle_control_takeownership(conn, cmd_data_len, args))
return -1;
+ } else if (!strcasecmp(conn->incoming_cmd, "DROPOWNERSHIP")) {
+ if (handle_control_dropownership(conn, cmd_data_len, args))
+ return -1;
} else if (!strcasecmp(conn->incoming_cmd, "MAPADDRESS")) {
if (handle_control_mapaddress(conn, cmd_data_len, args))
return -1;
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits