diff options
author | Roger Dingledine <arma@torproject.org> | 2007-03-20 03:21:51 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2007-03-20 03:21:51 +0000 |
commit | 93e7627694bc7863d0a1b32e2979bf2f446d3716 (patch) | |
tree | 471679b7fbcb7dd89dd0b8f0f97be8203317f049 | |
parent | b4f743562f609792619199007c2d091968f72a71 (diff) | |
download | tor-93e7627694bc7863d0a1b32e2979bf2f446d3716.tar.gz tor-93e7627694bc7863d0a1b32e2979bf2f446d3716.zip |
a stopgap measure while we wait for proposal 111: apply the
stricter rate limiting to all OR conns except those that have
been touched by local circuits.
svn:r9882
-rw-r--r-- | src/or/connection.c | 4 | ||||
-rw-r--r-- | src/or/connection_edge.c | 5 | ||||
-rw-r--r-- | src/or/or.h | 7 |
3 files changed, 11 insertions, 5 deletions
diff --git a/src/or/connection.c b/src/or/connection.c index 41104ba11d..458e39e300 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -1119,10 +1119,8 @@ static int write_buckets_empty_last_second = 0; static int connection_counts_as_relayed_traffic(connection_t *conn) { -#if 0 - if (conn->type == CONN_TYPE_OR && TO_OR_CONN(conn)->bandwidth_class) + if (conn->type == CONN_TYPE_OR && !TO_OR_CONN(conn)->client_used) return 1; -#endif if (conn->type == CONN_TYPE_DIR && DIR_CONN_IS_SERVER(conn)) return 1; return 0; diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index beb1caeea6..44c3197b5c 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -1792,6 +1792,11 @@ connection_ap_handshake_send_begin(edge_connection_t *ap_conn, log_info(LD_APP,"Address/port sent, ap socket %d, n_circ_id %d", ap_conn->_base.s, circ->_base.n_circ_id); control_event_stream_status(ap_conn, STREAM_EVENT_SENT_CONNECT, 0); + + if ((TO_CIRCUIT(circ))->n_conn) { + /* mark it so it gets better rate limiting treatment. */ + (TO_CIRCUIT(circ))->n_conn->client_used = 1; + } return 0; } diff --git a/src/or/or.h b/src/or/or.h index 3f76ceaaa6..62a3442c77 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -790,8 +790,11 @@ typedef struct or_connection_t { char identity_digest[DIGEST_LEN]; char *nickname; /**< Nickname of OR on other side (if any). */ - tor_tls_t *tls; /**< TLS connection state */ - int tls_error; /**< Last tor_tls error code */ + tor_tls_t *tls; /**< TLS connection state. */ + int tls_error; /**< Last tor_tls error code. */ + /** Whether we are using this conn for any client traffic. If we're + * not, we can rate limit it further. */ + uint8_t client_used:1; time_t timestamp_lastempty; /**< When was the outbuf last completely empty?*/ |