diff options
-rw-r--r-- | doc/TODO | 2 | ||||
-rw-r--r-- | src/common/tortls.c | 13 | ||||
-rw-r--r-- | src/common/tortls.h | 3 |
3 files changed, 17 insertions, 1 deletions
@@ -119,6 +119,8 @@ Short-term: o Remember address and port when beginning. - Extend by nickname/hostname/something, not by IP. - Need a relay teardown cell, separate from one-way ends. + - Make it harder to circumvent bandwidth caps: look at number of bytes + sent across sockets, not number sent inside TLS stream. On-going . Better comments for functions! diff --git a/src/common/tortls.c b/src/common/tortls.c index 89009ea13..e604247bb 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -52,7 +52,6 @@ static int tls_library_is_initialized = 0; #define _TOR_TLS_SYSCALL -6 #define _TOR_TLS_ZERORETURN -5 - /* These functions are declared in crypto.c but not exported. */ EVP_PKEY *_crypto_pk_env_get_evp_pkey(crypto_pk_env_t *env); crypto_pk_env_t *_crypto_new_pk_env_rsa(RSA *rsa); @@ -571,3 +570,15 @@ tor_tls_get_pending_bytes(tor_tls *tls) assert(tls); return SSL_pending(tls->ssl); } + +/* Return the number of bytes read across the underlying socket. */ +unsigned long tor_tls_get_n_bytes_read(tor_tls *tls) +{ + assert(tls); + return BIO_number_read(SSL_get_rbio(tls->ssl)); +} +unsigned long tor_tls_get_n_bytes_written(tor_tls *tls) +{ + assert(tls); + return BIO_number_written(SSL_get_wbio(tls->ssl)); +} diff --git a/src/common/tortls.h b/src/common/tortls.h index fdfa16192..14dd3dda4 100644 --- a/src/common/tortls.h +++ b/src/common/tortls.h @@ -29,4 +29,7 @@ int tor_tls_handshake(tor_tls *tls); int tor_tls_shutdown(tor_tls *tls); int tor_tls_get_pending_bytes(tor_tls *tls); +unsigned long tor_tls_get_n_bytes_read(tor_tls *tls); +unsigned long tor_tls_get_n_bytes_written(tor_tls *tls); + #endif |