backport candidate (revert part of r9350):

Expire application streams in all cases if they've been around
longer than SocksTimeout. Right now there are some cases where the
stream will live forever, demanding a new circuit every 15 seconds.
Bugfix on 0.1.2.7-alpha; fixes bug 454; reported by lodger.


svn:r11186
This commit is contained in:
Roger Dingledine 2007-08-19 07:17:40 +00:00
parent d6aa617e07
commit 8641439a6e
2 changed files with 16 additions and 0 deletions

View File

@ -18,6 +18,12 @@ Changes in version 0.2.0.5-alpha - 2007-08-19
non-standard behavior tended to annoy people who have built other
programs.
o Major bugfixes (stream expiration):
- Expire application streams in all cases if they've been around
longer than SocksTimeout. Right now there are some cases where the
stream will live forever, demanding a new circuit every 15 seconds.
Bugfix on 0.1.2.7-alpha; fixes bug 454; reported by lodger.
o Minor features (directory servers):
- When somebody requests a list of statuses or servers, and we have
none of those, return a 404 rather than an empty 200.

View File

@ -1259,6 +1259,16 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn)
conn_age = time(NULL) - conn->_base.timestamp_created;
if (conn_age >= get_options()->SocksTimeout) {
int severity = (!conn->_base.addr && !conn->_base.port) ?
LOG_INFO : LOG_NOTICE;
log_fn(severity, LD_APP,
"Tried for %d seconds to get a connection to %s:%d. Giving up.",
conn_age, safe_str(conn->socks_request->address),
conn->socks_request->port);
return -1;
}
if (!connection_edge_is_rendezvous_stream(conn)) { /* we're a general conn */
origin_circuit_t *circ=NULL;