diff --git a/ChangeLog b/ChangeLog index 99cd754bd..21b143deb 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 edd683361..9263eb465 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 / "" 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 67b56f40d..7847c67cb 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 from from changes to to. * expires values less than 3 are special; see connection_edge.c. If - * error is nonempty, it is an error code describing the failure + * error 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); }