diff options
author | Nick Mathewson <nickm@torproject.org> | 2007-07-25 22:56:54 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2007-07-25 22:56:54 +0000 |
commit | a8821e2d826755209f793f7ce61e04e9f8bfed64 (patch) | |
tree | b5376c791d8ee9d194e2146955bb1b69a75881d4 | |
parent | 47f3a40900e24cf5d14e8fa218b876a2b39b25f0 (diff) | |
download | tor-a8821e2d826755209f793f7ce61e04e9f8bfed64.tar tor-a8821e2d826755209f793f7ce61e04e9f8bfed64.tar.gz |
r13905@catbus: nickm | 2007-07-25 18:48:44 -0400
ADDRMAP events should never have specified local time. Extend them to have the proper gmt time, and make GETINFO address-mappings always do the right thing (since it is new in this version).
svn:r10930
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | doc/spec/control-spec.txt | 16 | ||||
-rw-r--r-- | src/or/connection_edge.c | 2 | ||||
-rw-r--r-- | src/or/control.c | 9 |
4 files changed, 25 insertions, 7 deletions
@@ -77,6 +77,11 @@ Changes in version 0.2.0.3-alpha - 2007-??-?? can time them out correctly. (Bug found by mwenge) [Bugfix on 0.2.0.2-alpha] + o Minor bugfixes (controller) + - 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. + Changes in version 0.1.2.15 - 2007-07-17 o Major bugfixes (compilation): diff --git a/doc/spec/control-spec.txt b/doc/spec/control-spec.txt index 2c3e961e4..e7131ccee 100644 --- a/doc/spec/control-spec.txt +++ b/doc/spec/control-spec.txt @@ -387,7 +387,8 @@ $Id$ client-side DNS cache; the 'control' key returns the mappings set via the control interface; the 'all' target returns the mappings set through any mechanism. - Expiry is formatted as with ADDRMAP events; see section 4.1.7. + Expiry is formatted as with ADDRMAP events, except that "expiry" is + always a time in GMT or the string "NEVER"; see section 4.1.7. First introduced in 0.2.0.3-alpha. "addr-mappings/*" -- as for address-mappings/*, but without the @@ -925,7 +926,7 @@ $Id$ If extended events are enabled (see 3.19), optional reason and circuit counting information is provided for CLOSED and FAILED - events. + events. Reason = "MISC" / "DONE" / "CONNECTREFUSED" / "IDENTITY" / "CONNECTRESET" / "TIMEOUT" / "NOROUTE" / @@ -963,10 +964,17 @@ $Id$ 4.1.7. New Address mapping Syntax: - "650" SP "ADDRMAP" SP Address SP Address SP Expiry + "650" SP "ADDRMAP" SP Address SP Address SP Expiry SP Error SP GMTExpiry Expiry = DQUOTE ISOTime DQUOTE / "NEVER" - Expiry is expressed as the local time (rather than GMT). + Error = / "error=" ErrorCode + GMTExpiry = "EXPIRES=" DQUOTE IsoTime DQUOTE + + Error and GMTExpiry are only provided if extended events are enabled. + + Expiry is expressed as the local time (rather than GMT). This is a bug, + left in for backward compatibility; new code should look at GMTExpiry + instead. These events are generated when a new address mapping is entered in the cache, or when the answer for a RESOLVE command is found. diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 95f2536ef..f310d9289 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -1161,7 +1161,7 @@ addressmap_get_mappings(smartlist_t *sl, time_t min_expires, tor_snprintf(line, len, "%s %s NEVER", key, val->new_address); else { char time[ISO_TIME_LEN+1]; - format_local_iso_time(time, val->expires); + format_iso_time(time, val->expires); tor_snprintf(line, len, "%s %s \"%s\"", key, val->new_address, time); } diff --git a/src/or/control.c b/src/or/control.c index fc4c002d0..d99fb4b8c 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -3099,10 +3099,15 @@ control_event_address_mapped(const char *from, const char *to, time_t expires, error); else { char buf[ISO_TIME_LEN+1]; + char buf2[ISO_TIME_LEN+1]; format_local_iso_time(buf,expires); + format_iso_time(buf2,expires); send_control_event_extended(EVENT_ADDRMAP, ALL_NAMES, - "650 ADDRMAP %s %s \"%s\"@%s\r\n", - from, to, buf, error); + "650 ADDRMAP %s %s \"%s\"" + "@%s%sEXPIRES=\"%s\"\r\n", + from, to, buf, + error, error?" ":"", + buf2); } return 0; |