summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2007-08-19 04:58:55 +0000
committerRoger Dingledine <arma@torproject.org>2007-08-19 04:58:55 +0000
commitc88803d924abab3c8ea62597e506a0a896e5bc1d (patch)
tree05f058bbfa9d7ceeec5a6007628b0378905cb8a7
parent86734616c73f75a540e4adccb898c8f636e7f270 (diff)
downloadtor-c88803d924abab3c8ea62597e506a0a896e5bc1d.tar.gz
tor-c88803d924abab3c8ea62597e506a0a896e5bc1d.zip
Fix a bug in ADDRMAP controller replies that would sometimes
try to print a NULL. Patch from tup. svn:r11181
-rw-r--r--ChangeLog2
-rw-r--r--doc/spec/control-spec.txt10
-rw-r--r--src/or/control.c6
3 files changed, 12 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 99cd754bdb..21b143deb9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -65,6 +65,8 @@ Changes in version 0.2.0.5-alpha - 2007-08-19
- Fix a bug with AutomapHostsOnResolve that would always cause
the second request to fail. Bug reported by Kate. Bugfix on
0.2.0.3-alpha.
+ - Fix a bug in ADDRMAP controller replies that would sometimes
+ try to print a NULL. Patch from tup.
- Read v3 directory authority keys from the right location.
- Numerous bugfixes to directory voting code.
diff --git a/doc/spec/control-spec.txt b/doc/spec/control-spec.txt
index edd6833615..9263eb4656 100644
--- a/doc/spec/control-spec.txt
+++ b/doc/spec/control-spec.txt
@@ -762,7 +762,7 @@ $Id$
PIVERSION: 1*DIGIT
Tor MAY give its InfoLines in any order; controllers MUST ignore InfoLines
- with keywords it does not recognize. Controllers MUST ignore extraneous
+ with keywords they do not recognize. Controllers MUST ignore extraneous
data on any InfoLine.
PIVERSION is there in case we drastically change the syntax one day. For
@@ -1044,10 +1044,14 @@ $Id$
4.1.7. New Address mapping
Syntax:
- "650" SP "ADDRMAP" SP Address SP Address SP Expiry SP Error SP GMTExpiry
+ "650" SP "ADDRMAP" SP Address SP NewAddress SP Expiry
+ [SP Error] SP GMTExpiry CRLF
+
+ NewAddress = Address / "<error>"
Expiry = DQUOTE ISOTime DQUOTE / "NEVER"
- Error = / "error=" ErrorCode
+ Error = "error=" ErrorCode
+ ErrorCode = XXXX
GMTExpiry = "EXPIRES=" DQUOTE IsoTime DQUOTE
Error and GMTExpiry are only provided if extended events are enabled.
diff --git a/src/or/control.c b/src/or/control.c
index 67b56f40db..7847c67cbd 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -3174,7 +3174,7 @@ control_event_descriptors_changed(smartlist_t *routers)
/** Called whenever an address mapping on <b>from<b> from changes to <b>to</b>.
* <b>expires</b> values less than 3 are special; see connection_edge.c. If
- * <b>error</b> is nonempty, it is an error code describing the failure
+ * <b>error</b> is non-NULL, it is an error code describing the failure
* mode of the mapping.
*/
int
@@ -3187,7 +3187,7 @@ control_event_address_mapped(const char *from, const char *to, time_t expires,
if (expires < 3 || expires == TIME_MAX)
send_control_event_extended(EVENT_ADDRMAP, ALL_NAMES,
"650 ADDRMAP %s %s NEVER@%s\r\n", from, to,
- error);
+ error?error:"");
else {
char buf[ISO_TIME_LEN+1];
char buf2[ISO_TIME_LEN+1];
@@ -3197,7 +3197,7 @@ control_event_address_mapped(const char *from, const char *to, time_t expires,
"650 ADDRMAP %s %s \"%s\""
"@%s%sEXPIRES=\"%s\"\r\n",
from, to, buf,
- error, error?" ":"",
+ error?error:"", error?" ":"",
buf2);
}