Fix a bug in ADDRMAP controller replies that would sometimes

try to print a NULL. Patch from tup.


svn:r11181
This commit is contained in:
Roger Dingledine 2007-08-19 04:58:55 +00:00
parent 86734616c7
commit c88803d924
3 changed files with 12 additions and 6 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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);
}