aboutsummaryrefslogtreecommitdiff
path: root/src/or/control.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2006-11-17 03:34:44 +0000
committerNick Mathewson <nickm@torproject.org>2006-11-17 03:34:44 +0000
commitd125c61e02743d5420567f954a176baeaa4f76a9 (patch)
tree3f321dbec376927a2091c042e6a47ec00bf5efb4 /src/or/control.c
parent942597bc4eede8dda1c4462100027095d1013229 (diff)
downloadtor-d125c61e02743d5420567f954a176baeaa4f76a9.tar.gz
tor-d125c61e02743d5420567f954a176baeaa4f76a9.zip
r9560@Kushana: nickm | 2006-11-16 22:09:12 -0500
Check in an implementation of "test" connections from Scott Squires: these connections immediately close upon reaching Tor. They're useful for apps that want to check whether they're talking to the same Tor as a given controller. (I'll be tweaking this a bit before I push.) svn:r8958
Diffstat (limited to 'src/or/control.c')
-rw-r--r--src/or/control.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/or/control.c b/src/or/control.c
index 9470e49e0d..76724be0d7 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -86,7 +86,8 @@ const char control_c_id[] =
#define EVENT_STATUS_CLIENT 0x0010
#define EVENT_STATUS_SERVER 0x0011
#define EVENT_STATUS_GENERAL 0x0012
-#define _EVENT_MAX 0x0012
+#define EVENT_TESTSTREAM 0x0013
+#define _EVENT_MAX 0x0013
/* If _EVENT_MAX ever hits 0x0020, we need to make the mask wider. */
/** Array mapping from message type codes to human-readable message
@@ -1063,6 +1064,8 @@ handle_control_setevents(control_connection_t *conn, uint32_t len,
event_code = EVENT_STATUS_CLIENT;
else if (!strcasecmp(ev, "STATUS_SERVER"))
event_code = EVENT_STATUS_SERVER;
+ else if (!strcasecmp(ev, "TESTSTREAM"))
+ event_code = EVENT_TESTSTREAM;
else {
connection_printf_to_buf(conn, "552 Unrecognized event \"%s\"\r\n",
ev);
@@ -3544,6 +3547,17 @@ control_event_server_status(int severity, const char *format, ...)
return r;
}
+/** Called when a request is made for a hostname ending in .test
+ */
+int
+control_event_teststream(edge_connection_t *conn)
+{
+ send_control1_event(EVENT_TESTSTREAM, ALL_NAMES|ALL_FORMATS,
+ "650 TESTSTREAM %s\r\n",
+ conn->socks_request->address);
+ return 0;
+}
+
/** Choose a random authentication cookie and write it to disk.
* Anybody who can read the cookie from disk will be considered
* authorized to use the control connection. */