mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Apply fix for bug 997.
Hidden service clients didn't use a cached service descriptor that was older than 15 minutes, but wouldn't fetch a new one either. Now, use a cached descriptor no matter how old it is and only fetch a new one when all introduction points fail. Fix for bug 997. Patch from Marcus Griep.
This commit is contained in:
parent
77f5ad6b07
commit
6a32beb877
@ -13,6 +13,13 @@ Changes in version 0.2.2.1-alpha - 2009-??-??
|
||||
- Directories that are configured with the --enable-geoip-stats flag
|
||||
now write their GeoIP stats to disk exactly every 24 hours.
|
||||
|
||||
o Minor bugfixes
|
||||
- Hidden service clients didn't use a cached service descriptor that
|
||||
was older than 15 minutes, but wouldn't fetch a new one either. Now,
|
||||
use a cached descriptor no matter how old it is and only fetch a new
|
||||
one when all introduction points fail. Fix for bug 997. Patch from
|
||||
Marcus Griep.
|
||||
|
||||
o Deprecated and removed features:
|
||||
- The controller no longer accepts the old obsolete "addr-mappings/"
|
||||
GETINFO value.
|
||||
|
@ -1678,22 +1678,12 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
|
||||
safe_str(conn->rend_data->onion_address));
|
||||
rend_client_refetch_v2_renddesc(conn->rend_data);
|
||||
} else { /* r > 0 */
|
||||
/** How long after we receive a hidden service descriptor do we consider
|
||||
* it valid? */
|
||||
#define NUM_SECONDS_BEFORE_HS_REFETCH (60*15)
|
||||
if (now - entry->received < NUM_SECONDS_BEFORE_HS_REFETCH) {
|
||||
conn->_base.state = AP_CONN_STATE_CIRCUIT_WAIT;
|
||||
log_info(LD_REND, "Descriptor is here and fresh enough. Great.");
|
||||
if (connection_ap_handshake_attach_circuit(conn) < 0) {
|
||||
if (!conn->_base.marked_for_close)
|
||||
connection_mark_unattached_ap(conn, END_STREAM_REASON_CANT_ATTACH);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
conn->_base.state = AP_CONN_STATE_RENDDESC_WAIT;
|
||||
log_info(LD_REND, "Stale descriptor %s. Re-fetching.",
|
||||
safe_str(conn->rend_data->onion_address));
|
||||
rend_client_refetch_v2_renddesc(conn->rend_data);
|
||||
conn->_base.state = AP_CONN_STATE_CIRCUIT_WAIT;
|
||||
log_info(LD_REND, "Descriptor is here. Great.");
|
||||
if (connection_ap_handshake_attach_circuit(conn) < 0) {
|
||||
if (!conn->_base.marked_for_close)
|
||||
connection_mark_unattached_ap(conn, END_STREAM_REASON_CANT_ATTACH);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user