Skip to content
  • David Goulet's avatar
    conflux: Avoid noting a cell was sent on a closed circuit · 269b4561
    David Goulet authored
    It turns out that circuit_package_relay_cell() returns 0 in order to drop a
    cell but there is a code path, if the circuit queue is full, that also silently
    closes the circuit and returns 0.
    
    This lead to Conflux thinking a cell was sent but actually the cell was not and
    the circuit was closed leading to the hard assert.
    
    And so this function makes sure that circuit_package_relay_cell() and
    append_cell_to_circuit_queue() returns a value that indicate what happened with
    the cell and circuit so the caller can make an informed decision with it.
    
    This change makes it that we do NOT enter the Conflux subsystem if the cell is
    not queued on the circuit.
    
    Fixes #40921
    
    
    
    Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
    269b4561