]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add #ifdef'd code (on by default) to allocate ACIs sequentially.
authorNick Mathewson <nickm@torproject.org>
Tue, 16 Sep 2003 17:17:39 +0000 (17:17 +0000)
committerNick Mathewson <nickm@torproject.org>
Tue, 16 Sep 2003 17:17:39 +0000 (17:17 +0000)
svn:r462

src/or/circuit.c
src/or/or.h

index 71258366ee12ccc1846ba6265c4bc275e448612e..2f5649f8bdc1fda5a157ab81872e921d153216ac 100644 (file)
@@ -122,6 +122,19 @@ static aci_t get_unique_aci_by_addr_port(uint32_t addr, uint16_t port, int aci_t
   aci_t test_aci;
   connection_t *conn;
 
+#ifdef SEQUENTIAL_ACI
+  /* Right now, this is the only used aci_type.  XXX The others should
+     be removed. */
+  assert(aci_type == ACI_TYPE_BOTH); 
+  conn = connection_exact_get_by_addr_port(addr,port);
+  if (!conn)
+    return 1; /* No connection exists; conflict is impossible. */
+  do {
+    test_aci = conn->next_aci++; /* This can wrap around to 0; that's okay. */
+    if (test_aci == 0)
+      continue;
+  } while(circuit_get_by_aci_conn(test_aci, conn));
+#else
 try_again:
   log_fn(LOG_DEBUG,"trying to get a unique aci");
 
@@ -143,6 +156,7 @@ try_again:
 
   if(circuit_get_by_aci_conn(test_aci, conn))
     goto try_again;
+#endif
 
   return test_aci;
 }
index c52fb35259639606565ff865d74385ffc91c502a..ad677d5cab595c247e74652bf81a9bc4aa9ed6aa 100644 (file)
@@ -8,6 +8,7 @@
 #include "orconfig.h"
 
 #define USE_TLS
+#define SEQUENTIAL_ACI
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -314,6 +315,9 @@ struct connection_t {
 
   char nonce[8];
 #endif
+#ifdef SEQUENTIAL_ACI
+  uint16_t next_aci; /* Which ACI do we try to use next on this connection? */
+#endif
 
 /* Used only by edge connections: */
   char stream_id[STREAM_ID_SIZE];