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):
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
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" /
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.
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);
}
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;