Commit 66665375 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Merge branch 'bug8185_025' into maint-0.2.9

parents c928fb98 d256d4c0
Loading
Loading
Loading
Loading

changes/bug8185_025

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Minor bugfixes (logging, relay shutdown, annoyance):
    - When a circuit is marked for close, do not attempt to package any cells
      for channels on that circuit. Previously, we would detect this
      condition lower in the call stack, when we noticed that the circuit had
      no attached channel, and log an annoying message. Fixes bug 8185;
      bugfix on 0.2.5.4-alpha.
+11 −0
Original line number Diff line number Diff line
@@ -383,6 +383,11 @@ circuit_package_relay_cell(cell_t *cell, circuit_t *circ,
{
  channel_t *chan; /* where to send the cell */

  if (circ->marked_for_close) {
    /* Circuit is marked; send nothing. */
    return 0;
  }

  if (cell_direction == CELL_DIRECTION_OUT) {
    crypt_path_t *thishop; /* counter for repeated crypts */
    chan = circ->n_chan;
@@ -696,6 +701,12 @@ connection_edge_send_command(edge_connection_t *fromconn,
    return -1;
  }

  if (circ->marked_for_close) {
    /* The circuit has been marked, but not freed yet. When it's freed, it
     * will mark this connection for close. */
    return -1;
  }

  return relay_send_command_from_edge(fromconn->stream_id, circ,
                                      relay_command, payload,
                                      payload_len, cpath_layer);