From 0dc47dfebffe9547bc95ba3f2a64fc5f4b15f270 Mon Sep 17 00:00:00 2001 From: Robert Ransom Date: Thu, 7 Jun 2012 03:22:06 +0000 Subject: [PATCH] Send a CRLF at the end of a STATUS_* event, not in the middle of it Fixes bug 6094; bugfix on commit 3a9351b57e528b1d0bd2e72bcf78db7c91b2ff8f. --- changes/bug6094 | 8 ++++++++ src/or/control.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 changes/bug6094 diff --git a/changes/bug6094 b/changes/bug6094 new file mode 100644 index 0000000000..835d127dad --- /dev/null +++ b/changes/bug6094 @@ -0,0 +1,8 @@ + o Major bugfixes: + + - Send a CRLF at the end of each STATUS_* control-port event. A + change introduced in 0.2.3.16-alpha caused Tor to emit the CRLF + in the middle of a STATUS_* event; among other things, this + caused Vidalia to freeze. Fixes bug 6094; bugfix on + 0.2.3.16-alpha. + diff --git a/src/or/control.c b/src/or/control.c index 8aa4240f12..782468f6fe 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -3957,14 +3957,14 @@ control_event_status(int type, int severity, const char *format, va_list args) log_warn(LD_BUG, "Unrecognized status severity %d", severity); return -1; } - if (tor_snprintf(format_buf, sizeof(format_buf), "650 %s %s\r\n", + if (tor_snprintf(format_buf, sizeof(format_buf), "650 %s %s", status, sev)<0) { log_warn(LD_BUG, "Format string too long."); return -1; } tor_vasprintf(&user_buf, format, args); - send_control_event(type, ALL_FORMATS, "%s %s", format_buf, user_buf); + send_control_event(type, ALL_FORMATS, "%s %s\r\n", format_buf, user_buf); tor_free(user_buf); return 0; }