aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-07-25 22:56:54 +0000
committerNick Mathewson <nickm@torproject.org>2007-07-25 22:56:54 +0000
commita8821e2d826755209f793f7ce61e04e9f8bfed64 (patch)
treeb5376c791d8ee9d194e2146955bb1b69a75881d4
parent47f3a40900e24cf5d14e8fa218b876a2b39b25f0 (diff)
downloadtor-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--ChangeLog5
-rw-r--r--doc/spec/control-spec.txt16
-rw-r--r--src/or/connection_edge.c2
-rw-r--r--src/or/control.c9
4 files changed, 25 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 0ff5a21f2..6e9aeb83a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;