r13907@catbus: nickm | 2007-07-25 18:51:25 -0400

Patch from tup: translate LFs to CRLFs in NS replies and
 ensures the data section is properly terminated with "\r\n.\r\n


svn:r10932
This commit is contained in:
Nick Mathewson 2007-07-25 22:57:02 +00:00
parent 5b82188333
commit 025a81fc18
2 changed files with 5 additions and 7 deletions

View File

@ -81,6 +81,7 @@ Changes in version 0.2.0.3-alpha - 2007-??-??
- Provide DNS expiry times in GMT, not in local time. For backward - Provide DNS expiry times in GMT, not in local time. For backward
compatibility, ADDRMAP events only provide GMT expiry in an extended compatibility, ADDRMAP events only provide GMT expiry in an extended
field. "GETINFO address-mappings" always does the right thing. field. "GETINFO address-mappings" always does the right thing.
- Use CRLF line endings properly in NS events.
Changes in version 0.1.2.15 - 2007-07-17 Changes in version 0.1.2.15 - 2007-07-17

View File

@ -3159,7 +3159,7 @@ int
control_event_networkstatus_changed(smartlist_t *statuses) control_event_networkstatus_changed(smartlist_t *statuses)
{ {
smartlist_t *strs; smartlist_t *strs;
char *s; char *s, *esc = NULL;
if (!EVENT_IS_INTERESTING(EVENT_NS) || !smartlist_len(statuses)) if (!EVENT_IS_INTERESTING(EVENT_NS) || !smartlist_len(statuses))
return 0; return 0;
@ -3171,17 +3171,14 @@ control_event_networkstatus_changed(smartlist_t *statuses)
if (!s) continue; if (!s) continue;
smartlist_add(strs, s); smartlist_add(strs, s);
}); });
smartlist_add(strs, tor_strdup("\r\n.\r\n"));
/* XXX020 the above strdup has an extra \r\n in it, resulting in
* a blank line in the NS output. Can we remove it, or is that
* bad since the output of networkstatus_getinfo_helper_single()
* only adds \n, not \r\n? */
s = smartlist_join_strings(strs, "", 0, NULL); s = smartlist_join_strings(strs, "", 0, NULL);
write_escaped_data(s, strlen(s), 1, &esc);
SMARTLIST_FOREACH(strs, char *, cp, tor_free(cp)); SMARTLIST_FOREACH(strs, char *, cp, tor_free(cp));
smartlist_free(strs); smartlist_free(strs);
send_control_event_string(EVENT_NS, ALL_NAMES|ALL_FORMATS, s);
tor_free(s); tor_free(s);
send_control_event_string(EVENT_NS, ALL_NAMES|ALL_FORMATS, esc);
tor_free(esc);
return 0; return 0;
} }