diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-12-18 22:33:02 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2009-12-18 22:33:02 -0500 |
commit | 05a2473b7f38d6c5cab0c98aec7ab61aec3ac6cc (patch) | |
tree | 84f3e62634ef7f331f44d0c0f5f98afd9bbbaee6 /src/or/connection.c | |
parent | 7edae5898416dbd291d9e5e9f75e0b24153e73ea (diff) | |
parent | 5e2eaa37f1984e3de122568062d364283402bdf3 (diff) | |
download | tor-05a2473b7f38d6c5cab0c98aec7ab61aec3ac6cc.tar.gz tor-05a2473b7f38d6c5cab0c98aec7ab61aec3ac6cc.zip |
Merge branch 'ewma'
Diffstat (limited to 'src/or/connection.c')
-rw-r--r-- | src/or/connection.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/or/connection.c b/src/or/connection.c index 8de7ad9e5a..9104f1bddd 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -180,6 +180,9 @@ or_connection_new(int socket_family) or_conn->timestamp_last_added_nonpadding = time(NULL); or_conn->next_circ_id = crypto_rand_int(1<<15); + or_conn->active_circuit_pqueue = smartlist_create(); + or_conn->active_circuit_pqueue_last_recalibrated = cell_ewma_get_tick(); + return or_conn; } @@ -375,6 +378,7 @@ _connection_free(connection_t *conn) or_conn->tls = NULL; or_handshake_state_free(or_conn->handshake_state); or_conn->handshake_state = NULL; + smartlist_free(or_conn->active_circuit_pqueue); tor_free(or_conn->nickname); } if (CONN_IS_EDGE(conn)) { @@ -2278,8 +2282,8 @@ connection_read_bucket_should_increase(or_connection_t *conn) * Mark the connection and return -1 if you want to close it, else * return 0. */ -int -connection_handle_read(connection_t *conn) +static int +connection_handle_read_impl(connection_t *conn) { int max_to_read=-1, try_to_read; size_t before, n_read = 0; @@ -2374,6 +2378,16 @@ loop_again: return 0; } +int +connection_handle_read(connection_t *conn) +{ + int res; + + tor_gettimeofday_cache_clear(); + res = connection_handle_read_impl(conn); + return res; +} + /** Pull in new bytes from conn-\>s or conn-\>linked_conn onto conn-\>inbuf, * either directly or via TLS. Reduce the token buckets by the number of bytes * read. @@ -2575,8 +2589,8 @@ connection_outbuf_too_full(connection_t *conn) * Mark the connection and return -1 if you want to close it, else * return 0. */ -int -connection_handle_write(connection_t *conn, int force) +static int +connection_handle_write_impl(connection_t *conn, int force) { int e; socklen_t len=(socklen_t)sizeof(e); @@ -2743,6 +2757,15 @@ connection_handle_write(connection_t *conn, int force) return 0; } +int +connection_handle_write(connection_t *conn, int force) +{ + int res; + tor_gettimeofday_cache_clear(); + res = connection_handle_write_impl(conn, force); + return res; +} + /** OpenSSL TLS record size is 16383; this is close. The goal here is to * push data out as soon as we know there's enough for a TLS record, so * during periods of high load we won't read entire megabytes from |