瀏覽代碼

Send relay_early cells in rend circs

There are no relay left that run version 0.2.1.3 through 0.2.1.18, so
changing this behaviour should be safe now.
Sebastian Hahn 15 年之前
父節點
當前提交
d3b67cba3c
共有 2 個文件被更改,包括 10 次插入10 次删除
  1. 6 0
      changes/relay_early_rend
  2. 4 10
      src/or/relay.c

+ 6 - 0
changes/relay_early_rend

@@ -0,0 +1,6 @@
+  o Code simplifications and refactorting:
+    - When we fixed bug 1038 we had to put in a restriction not to send
+      RELAY_EARLY cells for relay cells on rend circuits. This was necessary
+      as long as relays using Tor 0.2.1.3-alpha through 0.2.1.18-alpha were
+      active. Since this isn't the case anymore, we unify our behaviour here.
+      Implements bug 2081.

+ 4 - 10
src/or/relay.c

@@ -592,17 +592,11 @@ relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ,
     origin_circuit_t *origin_circ = TO_ORIGIN_CIRCUIT(circ);
     if (origin_circ->remaining_relay_early_cells > 0 &&
         (relay_command == RELAY_COMMAND_EXTEND ||
-         (cpath_layer != origin_circ->cpath &&
-          !CIRCUIT_PURPOSE_IS_ESTABLISHED_REND(circ->purpose)))) {
-      /* If we've got any relay_early cells left, and we're sending
-       * an extend cell or (we're not talking to the first hop and we're
-       * not talking to a rendezvous circuit), use one of them.
-       * Don't worry about the conn protocol version:
+         cpath_layer != origin_circ->cpath)) {
+      /* If we've got any relay_early cells left and (we're sending
+       * an extend cell or we're not talking to the first hop), use
+       * one of them.  Don't worry about the conn protocol version:
        * append_cell_to_circuit_queue will fix it up. */
-      /* XXX For now, clients don't use RELAY_EARLY cells when sending
-       * relay cells on rendezvous circuits. See bug 1038. Once no relays
-       * (and thus no rendezvous points) are running 0.2.1.3-alpha through
-       * 0.2.1.18, we can take out that exception. -RD */
       cell.command = CELL_RELAY_EARLY;
       --origin_circ->remaining_relay_early_cells;
       log_debug(LD_OR, "Sending a RELAY_EARLY cell; %d remaining.",