]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Record, send, and receive flags in BEGIN cells
authorNick Mathewson <nickm@torproject.org>
Thu, 25 Oct 2012 03:39:28 +0000 (23:39 -0400)
committerNick Mathewson <nickm@torproject.org>
Thu, 15 Nov 2012 04:16:22 +0000 (23:16 -0500)
src/or/connection_edge.c
src/or/or.h

index a840b43d7b1dc113bfa024c8a47c3c40d8843fa9..9a4f274bb1e626208ec0cba4af0f01643f6cb072 100644 (file)
@@ -1656,6 +1656,10 @@ connection_ap_handshake_send_begin(entry_connection_t *ap_conn)
                  ap_conn->socks_request->address : "",
                ap_conn->socks_request->port);
   payload_len = (int)strlen(payload)+1;
+  if (payload_len <= RELAY_PAYLOAD_SIZE - 4) {
+    set_uint32(payload + payload_len, htonl(edge_conn->begincell_flags));
+    payload_len += 4;
+  }
 
   log_info(LD_APP,
            "Sending relay cell %d to begin stream %d.",
@@ -2235,14 +2239,14 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
   }
 
   log_debug(LD_EXIT,"Creating new exit connection.");
-  n_stream = edge_connection_new(CONN_TYPE_EXIT, AF_INET);
+  n_stream = edge_connection_new(CONN_TYPE_EXIT, AF_INET);/*XXXX IPv6*/
 
   /* Remember the tunneled request ID in the new edge connection, so that
    * we can measure download times. */
   n_stream->dirreq_id = circ->dirreq_id;
 
   n_stream->base_.purpose = EXIT_PURPOSE_CONNECT;
-
+  n_stream->begincell_flags = bcell.flags;
   n_stream->stream_id = rh.stream_id;
   n_stream->base_.port = port;
   /* leave n_stream->s at -1, because it's not yet valid */
index 05d27b15089bcbd2258c3cec108ed586cb5c7801..fa90aaee5bbc1b5a7cb3cb0b8735b309dfb628c7 100644 (file)
@@ -1414,6 +1414,8 @@ typedef struct edge_connection_t {
 
   uint32_t address_ttl; /**< TTL for address-to-addr mapping on exit
                          * connection.  Exit connections only. */
+  uint32_t begincell_flags; /** Flags sent or received in the BEGIN cell
+                             * for this connection */
 
   streamid_t stream_id; /**< The stream ID used for this edge connection on its
                          * circuit */