]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
r13907@catbus: nickm | 2007-07-25 18:51:25 -0400
authorNick Mathewson <nickm@torproject.org>
Wed, 25 Jul 2007 22:57:02 +0000 (22:57 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 25 Jul 2007 22:57:02 +0000 (22:57 +0000)
 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

ChangeLog
src/or/control.c

index 6e9aeb83a4a9d0318c41112409c8aedc6ee79d39..520695184ac04619d6ff61786890596dc952091a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
       compatibility, ADDRMAP events only provide GMT expiry in an extended
       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
index d99fb4b8c6021efab3ba153761da5e27e0d4a260..45ef63be7303e10bc6471d2e7c2f86e2881a7ac0 100644 (file)
@@ -3159,7 +3159,7 @@ int
 control_event_networkstatus_changed(smartlist_t *statuses)
 {
   smartlist_t *strs;
-  char *s;
+  char *s, *esc = NULL;
   if (!EVENT_IS_INTERESTING(EVENT_NS) || !smartlist_len(statuses))
     return 0;
 
@@ -3171,17 +3171,14 @@ control_event_networkstatus_changed(smartlist_t *statuses)
       if (!s) continue;
       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);
+  write_escaped_data(s, strlen(s), 1, &esc);
   SMARTLIST_FOREACH(strs, char *, cp, tor_free(cp));
   smartlist_free(strs);
-  send_control_event_string(EVENT_NS, ALL_NAMES|ALL_FORMATS, s);
   tor_free(s);
+  send_control_event_string(EVENT_NS, ALL_NAMES|ALL_FORMATS, esc);
+  tor_free(esc);
   return 0;
 }