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 can time them out correctly. (Bug found by mwenge) [Bugfix on
0.2.0.2-alpha] 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 Changes in version 0.1.2.15 - 2007-07-17
o Major bugfixes (compilation): o Major bugfixes (compilation):

View File

@ -387,7 +387,8 @@ $Id$
client-side DNS cache; the 'control' key returns the mappings set client-side DNS cache; the 'control' key returns the mappings set
via the control interface; the 'all' target returns the mappings via the control interface; the 'all' target returns the mappings
set through any mechanism. 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. First introduced in 0.2.0.3-alpha.
"addr-mappings/*" -- as for address-mappings/*, but without the "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 If extended events are enabled (see 3.19), optional reason and
circuit counting information is provided for CLOSED and FAILED circuit counting information is provided for CLOSED and FAILED
events. events.
Reason = "MISC" / "DONE" / "CONNECTREFUSED" / Reason = "MISC" / "DONE" / "CONNECTREFUSED" /
"IDENTITY" / "CONNECTRESET" / "TIMEOUT" / "NOROUTE" / "IDENTITY" / "CONNECTRESET" / "TIMEOUT" / "NOROUTE" /
@ -963,10 +964,17 @@ $Id$
4.1.7. New Address mapping 4.1.7. New Address mapping
Syntax: 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 = 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 These events are generated when a new address mapping is entered in the
cache, or when the answer for a RESOLVE command is found. 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); tor_snprintf(line, len, "%s %s NEVER", key, val->new_address);
else { else {
char time[ISO_TIME_LEN+1]; 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, tor_snprintf(line, len, "%s %s \"%s\"", key, val->new_address,
time); time);
} }

View File

@ -3099,10 +3099,15 @@ control_event_address_mapped(const char *from, const char *to, time_t expires,
error); error);
else { else {
char buf[ISO_TIME_LEN+1]; char buf[ISO_TIME_LEN+1];
char buf2[ISO_TIME_LEN+1];
format_local_iso_time(buf,expires); format_local_iso_time(buf,expires);
format_iso_time(buf2,expires);
send_control_event_extended(EVENT_ADDRMAP, ALL_NAMES, send_control_event_extended(EVENT_ADDRMAP, ALL_NAMES,
"650 ADDRMAP %s %s \"%s\"@%s\r\n", "650 ADDRMAP %s %s \"%s\""
from, to, buf, error); "@%s%sEXPIRES=\"%s\"\r\n",
from, to, buf,
error, error?" ":"",
buf2);
} }
return 0; return 0;