backport r14329 and r14334:
Make relay cells written on a connection count as non-padding when tracking how long a connection has been in use. Bugfix on 0.2.0.1-alpha. Spotted by lodger. svn:r15185
This commit is contained in:
parent
6a3755d1f9
commit
753a764939
|
@ -30,6 +30,9 @@ Changes in version 0.2.0.28-rc - 2008-06-13
|
|||
bug 688, reported by mfr.
|
||||
- When we haven't had any application requests lately, don't bother
|
||||
logging that we have expired a bunch of descriptors.
|
||||
- Make relay cells written on a connection count as non-padding when
|
||||
tracking how long a connection has been in use. Bugfix on
|
||||
0.2.0.1-alpha. Spotted by lodger.
|
||||
- Fix unit tests in 0.2.0.27-rc.
|
||||
- Fix compile on Windows.
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Backport items for 0.2.0:
|
|||
o r14205: free authority certs on exit.
|
||||
o r14212: free static hashtables and log mutex on exit.
|
||||
o r14214: don't read torrc when all we do is --hash-password
|
||||
- r14329: update last_added_nonpadding for relay cells.
|
||||
o r14329: update last_added_nonpadding for relay cells.
|
||||
- r14247: tor-spec and dir-spec updates [just backport the whole files]
|
||||
|
||||
Backport for 0.2.0 once better tested:
|
||||
|
|
|
@ -285,13 +285,15 @@ int
|
|||
connection_or_flushed_some(or_connection_t *conn)
|
||||
{
|
||||
size_t datalen = buf_datalen(conn->_base.outbuf);
|
||||
time_t now = time(NULL);
|
||||
/* If we're under the low water mark, add cells until we're just over the
|
||||
* high water mark. */
|
||||
if (datalen < OR_CONN_LOWWATER) {
|
||||
ssize_t n = (OR_CONN_HIGHWATER - datalen + CELL_NETWORK_SIZE-1)
|
||||
/ CELL_NETWORK_SIZE;
|
||||
while (conn->active_circuits && n > 0) {
|
||||
int flushed = connection_or_flush_from_first_active_circuit(conn, 1);
|
||||
int flushed;
|
||||
flushed = connection_or_flush_from_first_active_circuit(conn, 1, now);
|
||||
n -= flushed;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3557,7 +3557,7 @@ void append_cell_to_circuit_queue(circuit_t *circ, or_connection_t *orconn,
|
|||
cell_t *cell, int direction);
|
||||
void connection_or_unlink_all_active_circs(or_connection_t *conn);
|
||||
int connection_or_flush_from_first_active_circuit(or_connection_t *conn,
|
||||
int max);
|
||||
int max, time_t now);
|
||||
void assert_active_circuits_ok(or_connection_t *orconn);
|
||||
void make_circuit_inactive_on_conn(circuit_t *circ, or_connection_t *conn);
|
||||
void make_circuit_active_on_conn(circuit_t *circ, or_connection_t *conn);
|
||||
|
|
|
@ -1833,7 +1833,8 @@ set_streams_blocked_on_circ(circuit_t *circ, or_connection_t *orconn,
|
|||
* <b>conn</b>->outbuf. Return the number of cells written. Advance
|
||||
* the active circuit pointer to the next active circuit in the ring. */
|
||||
int
|
||||
connection_or_flush_from_first_active_circuit(or_connection_t *conn, int max)
|
||||
connection_or_flush_from_first_active_circuit(or_connection_t *conn,
|
||||
int max, time_t now)
|
||||
{
|
||||
int n_flushed;
|
||||
cell_queue_t *queue;
|
||||
|
@ -1866,7 +1867,7 @@ connection_or_flush_from_first_active_circuit(or_connection_t *conn, int max)
|
|||
* for us.
|
||||
*/
|
||||
assert_active_circuits_ok_paranoid(conn);
|
||||
return n_flushed;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
tor_assert(*next_circ_on_conn_p(circ,conn));
|
||||
|
@ -1883,6 +1884,9 @@ connection_or_flush_from_first_active_circuit(or_connection_t *conn, int max)
|
|||
log_debug(LD_GENERAL, "Made a circuit inactive.");
|
||||
make_circuit_inactive_on_conn(circ, conn);
|
||||
}
|
||||
done:
|
||||
if (n_flushed)
|
||||
conn->timestamp_last_added_nonpadding = now;
|
||||
return n_flushed;
|
||||
}
|
||||
|
||||
|
@ -1927,7 +1931,7 @@ append_cell_to_circuit_queue(circuit_t *circ, or_connection_t *orconn,
|
|||
* get called, and we can start putting more data onto the buffer then.
|
||||
*/
|
||||
log_debug(LD_GENERAL, "Primed a buffer.");
|
||||
connection_or_flush_from_first_active_circuit(orconn, 1);
|
||||
connection_or_flush_from_first_active_circuit(orconn, 1, time(NULL));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue