aboutsummaryrefslogtreecommitdiff
path: root/src/or/control.c
diff options
context:
space:
mode:
authorRobert Ransom <rransom.8774@gmail.com>2011-06-23 12:02:03 -0700
committerRobert Ransom <rransom.8774@gmail.com>2011-11-24 06:32:54 -0800
commitb149ab00d788f559b576b60b813cbe0d3b260dbb (patch)
treebec6654caa5435c93361af42517beabe415ba3ea /src/or/control.c
parent11221d0f17bf3ea6039249ad8b06b3a1afd6291d (diff)
downloadtor-b149ab00d788f559b576b60b813cbe0d3b260dbb.tar
tor-b149ab00d788f559b576b60b813cbe0d3b260dbb.tar.gz
Separate circuit-close reasons from circ description
Diffstat (limited to 'src/or/control.c')
-rw-r--r--src/or/control.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/or/control.c b/src/or/control.c
index 109eb8857..05a2c6654 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -3233,7 +3233,8 @@ control_event_circuit_status(origin_circuit_t *circ, circuit_status_event_t tp,
int reason_code)
{
const char *status;
- char extended_buf[96];
+ char purpose[32];
+ char reasons[64] = "";
if (!EVENT_IS_INTERESTING(EVENT_CIRCUIT_STATUS))
return 0;
tor_assert(circ);
@@ -3250,23 +3251,22 @@ control_event_circuit_status(origin_circuit_t *circ, circuit_status_event_t tp,
return 0;
}
- tor_snprintf(extended_buf, sizeof(extended_buf), "PURPOSE=%s",
+ tor_snprintf(purpose, sizeof(purpose), "PURPOSE=%s",
circuit_purpose_to_controller_string(circ->_base.purpose));
if (tp == CIRC_EVENT_FAILED || tp == CIRC_EVENT_CLOSED) {
const char *reason_str = circuit_end_reason_to_control_string(reason_code);
char *reason = NULL;
- size_t n=strlen(extended_buf);
if (!reason_str) {
reason = tor_malloc(16);
tor_snprintf(reason, 16, "UNKNOWN_%d", reason_code);
reason_str = reason;
}
if (reason_code > 0 && reason_code & END_CIRC_REASON_FLAG_REMOTE) {
- tor_snprintf(extended_buf+n, sizeof(extended_buf)-n,
+ tor_snprintf(reasons, sizeof(reasons),
" REASON=DESTROYED REMOTE_REASON=%s", reason_str);
} else {
- tor_snprintf(extended_buf+n, sizeof(extended_buf)-n,
+ tor_snprintf(reasons, sizeof(reasons),
" REASON=%s", reason_str);
}
tor_free(reason);
@@ -3276,9 +3276,11 @@ control_event_circuit_status(origin_circuit_t *circ, circuit_status_event_t tp,
char *vpath = circuit_list_path_for_controller(circ);
const char *sp = strlen(vpath) ? " " : "";
send_control_event(EVENT_CIRCUIT_STATUS, ALL_FORMATS,
- "650 CIRC %lu %s%s%s %s\r\n",
+ "650 CIRC %lu %s%s%s %s%s\r\n",
(unsigned long)circ->global_identifier,
- status, sp, vpath, extended_buf);
+ status, sp, vpath,
+ purpose,
+ reasons);
tor_free(vpath);
}