[tor-commits] [tor/master] Merge branch 'ticket7356_squashed'

nickm at torproject.org nickm at torproject.org
Sun Dec 21 19:49:54 UTC 2014


commit 1c05dfd0b6ae9303d1f815a4d610655f32c0cc50
Merge: 647a90b af1469b
Author: Nick Mathewson <nickm at torproject.org>
Date:   Sun Dec 21 14:48:53 2014 -0500

    Merge branch 'ticket7356_squashed'

 changes/bug7356        |    5 ++
 src/or/channel.c       |  119 +++++++++++++++++-------------------------------
 src/or/channel.h       |   33 ++++++++++++++
 src/or/channeltls.c    |   14 +++---
 src/or/circpathbias.c  |    4 +-
 src/or/circuitbuild.c  |    2 +-
 src/or/circuitlist.c   |    8 +---
 src/or/connection.c    |    3 +-
 src/or/connection_or.c |   12 ++---
 9 files changed, 95 insertions(+), 105 deletions(-)

diff --cc src/or/channel.c
index 5ee0748,5651bb4..4826bdd
--- a/src/or/channel.c
+++ b/src/or/channel.c
@@@ -1772,12 -1664,9 +1743,12 @@@ channel_write_cell_queue_entry(channel_
      }
    }
  
 +  /* For statistical purposes, figure out how big this cell is */
 +  cell_bytes = channel_get_cell_queue_entry_size(chan, q);
 +
    /* Can we send it right out?  If so, try */
    if (TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue) &&
-       chan->state == CHANNEL_STATE_OPEN) {
+       CHANNEL_IS_OPEN(chan)) {
      /* Pick the right write function for this cell type and save the result */
      switch (q->type) {
        case CELL_QUEUE_FIXED:
@@@ -1826,16 -1708,8 +1797,16 @@@
       */
      tmp = cell_queue_entry_dup(q);
      TOR_SIMPLEQ_INSERT_TAIL(&chan->outgoing_queue, tmp, next);
 +    /* Update global counters */
 +    ++n_channel_cells_queued;
 +    ++n_channel_cells_in_queues;
 +    n_channel_bytes_queued += cell_bytes;
 +    n_channel_bytes_in_queues += cell_bytes;
 +    channel_assert_counter_consistency();
 +    /* Update channel queue size */
 +    chan->bytes_in_queue += cell_bytes;
      /* Try to process the queue? */
-     if (chan->state == CHANNEL_STATE_OPEN) channel_flush_cells(chan);
+     if (CHANNEL_IS_OPEN(chan)) channel_flush_cells(chan);
    }
  }
  
@@@ -2302,15 -2098,11 +2273,15 @@@ channel_flush_some_cells_from_outgoing_
    if (!unlimited && num_cells <= flushed) return 0;
  
    /* If we aren't in CHANNEL_STATE_OPEN, nothing goes through */
-   if (chan->state == CHANNEL_STATE_OPEN) {
+   if (CHANNEL_IS_OPEN(chan)) {
      while ((unlimited || num_cells > flushed) &&
             NULL != (q = TOR_SIMPLEQ_FIRST(&chan->outgoing_queue))) {
 +      free_q = 0;
 +      handed_off = 0;
  
        if (1) {
 +        /* Figure out how big it is for statistical purposes */
 +        cell_size = channel_get_cell_queue_entry_size(chan, q);
          /*
           * Okay, we have a good queue entry, try to give it to the lower
           * layer.



More information about the tor-commits mailing list