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
This commit is contained in:
Nick Mathewson 2007-07-25 22:56:54 +00:00
parent 47f3a40900
commit a8821e2d82
4 changed files with 25 additions and 7 deletions

View File

@ -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):

View File

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

View File

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

View File

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