[or-cvs] bugfix: make onion proxies actually obey their requested ba...

Roger Dingledine arma at seul.org
Tue Apr 8 22:31:51 UTC 2003


Update of /home/or/cvsroot/src/or
In directory moria.mit.edu:/home/arma/work/onion/cvs/src/or

Modified Files:
	connection.c connection_op.c connection_or.c 
Log Message:
bugfix: make onion proxies actually obey their requested bandwidth


Index: connection.c
===================================================================
RCS file: /home/or/cvsroot/src/or/connection.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- connection.c	7 Apr 2003 02:12:02 -0000	1.50
+++ connection.c	8 Apr 2003 22:31:48 -0000	1.51
@@ -349,6 +349,7 @@
                             &conn->inbuf_datalen, &conn->inbuf_reached_eof);
 //  log(LOG_DEBUG,"connection_read_to_buf(): read_to_buf returned %d.",read_result);
   if(read_result >= 0 && connection_speaks_cells(conn)) {
+//    log(LOG_DEBUG,"connection_read_to_buf(): Read %d, bucket now %d.",read_result,conn->receiver_bucket);
     conn->receiver_bucket -= read_result;
     if(conn->receiver_bucket <= 0) {
 
@@ -477,12 +478,13 @@
   return 1;
 }
 
-void connection_increment_receiver_bucket (connection_t *conn) {
+void connection_increment_receiver_bucket(connection_t *conn) {
   assert(conn);
 
   if(connection_receiver_bucket_should_increase(conn)) {
     /* yes, the receiver_bucket can become overfull here. But not by much. */
     conn->receiver_bucket += conn->bandwidth*1.1;
+//    log(LOG_DEBUG,"connection_increment_receiver_bucket(): Bucket now %d.",conn->receiver_bucket);
     if(connection_state_is_open(conn)) {
       /* if we're in state 'open', then start reading again */
       connection_start_reading(conn);

Index: connection_op.c
===================================================================
RCS file: /home/or/cvsroot/src/or/connection_op.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- connection_op.c	7 Apr 2003 02:12:02 -0000	1.14
+++ connection_op.c	8 Apr 2003 22:31:48 -0000	1.15
@@ -64,6 +64,7 @@
   log(LOG_DEBUG,"Successfully decrypted keys from new OP.");
 
   conn->bandwidth = ntohl(*((uint32_t *)auth_plain));
+  log(LOG_DEBUG,"op_handshake_process_keys(): Bandwidth %d requested.",conn->bandwidth);
 
   crypto_cipher_set_key(conn->b_crypto, auth_plain+4);
   crypto_cipher_set_key(conn->f_crypto, auth_plain+20);

Index: connection_or.c
===================================================================
RCS file: /home/or/cvsroot/src/or/connection_or.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- connection_or.c	7 Apr 2003 02:12:02 -0000	1.24
+++ connection_or.c	8 Apr 2003 22:31:48 -0000	1.25
@@ -266,14 +266,14 @@
 }
 
 int or_handshake_op_send_keys(connection_t *conn) {
-  //int x;
-  uint32_t bandwidth = DEFAULT_BANDWIDTH_OP;
   unsigned char message[36]; /* bandwidth(32bits), forward key(128bits), backward key(128bits) */
   unsigned char cipher[128];
   int retval;
 
   assert(conn && conn->type == CONN_TYPE_OR);
 
+  conn->bandwidth = DEFAULT_BANDWIDTH_OP;
+
   /* generate random keys */
   if(crypto_cipher_generate_key(conn->f_crypto) ||
      crypto_cipher_generate_key(conn->b_crypto)) {
@@ -282,7 +282,7 @@
   }
   log(LOG_DEBUG,"or_handshake_op_send_keys() : Generated 3DES keys.");
   /* compose the message */
-  *(uint32_t *)message = htonl(bandwidth);
+  *(uint32_t *)message = htonl(conn->bandwidth);
   memcpy((void *)(message + 4), (void *)conn->f_crypto->key, 16);
   memcpy((void *)(message + 20), (void *)conn->b_crypto->key, 16);
 



More information about the tor-commits mailing list