[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2015-06-25 Thread nickm
commit cb8c5c023f0e349f30fd6a539437d76358b8b87a
Merge: efae1bc e5907e9
Author: Nick Mathewson 
Date:   Thu Jun 25 11:42:31 2015 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-june2015 |3 +
 src/config/geoip   |14347 +++-
 2 files changed, 6999 insertions(+), 7351 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2015-04-27 Thread nickm
commit 609cdec112bfbe37947a58f2fe2790ee3a2660eb
Merge: 542100d bcc0a48
Author: Nick Mathewson 
Date:   Mon Apr 27 14:15:44 2015 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-april2015 |3 +
 src/config/geoip|10061 ---
 2 files changed, 3452 insertions(+), 6612 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2015-03-09 Thread nickm
commit 5588e677bd61b56520fd73ffcfd759e39f1d226b
Merge: 6704e18 beda8d2
Author: Nick Mathewson 
Date:   Mon Mar 9 16:23:55 2015 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-march2015 |3 +
 src/config/geoip|12695 ++-
 2 files changed, 9385 insertions(+), 3313 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2015-03-09 Thread nickm
commit 6704e18dd2e09111eeca0c76fb00a459f9da98ea
Merge: 2bcb596 addffcc
Author: Nick Mathewson 
Date:   Mon Mar 9 11:08:57 2015 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/bug15083 |   10 ++
 src/or/buffers.c |   11 +--
 2 files changed, 19 insertions(+), 2 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2015-01-23 Thread nickm
commit dbd5a9a8f99d92b38f85728edf21b9c6bfe87f38
Merge: 137982f c3f8f5a
Author: Nick Mathewson 
Date:   Fri Jan 23 08:52:20 2015 -0500

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-january2015 |3 +
 src/config/geoip  |12872 ++---
 2 files changed, 5069 insertions(+), 7806 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-11-24 Thread nickm
commit 8d5f1e6961feb1ef2a80d6d5a36e755a4b79007b
Merge: dca902c 8611c6b
Author: Nick Mathewson 
Date:   Mon Nov 24 09:18:21 2014 -0500

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-november2014 |3 +
 src/config/geoip   |20036 ++--
 2 files changed, 13644 insertions(+), 6395 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-10-19 Thread nickm
commit 403c6ae78e2dff753d407273ce78c024a0ffb40d
Merge: 943fd4a c1dd598
Author: Nick Mathewson 
Date:   Sun Oct 19 15:39:48 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/bug13471 |5 +
 1 file changed, 5 insertions(+)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-10-16 Thread nickm
commit 943fd4a252ad252d7d594622d5988634ddf8f1fc
Merge: 288b3ec c1c83eb
Author: Nick Mathewson 
Date:   Thu Oct 16 09:08:32 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/disable_sslv3 |4 
 src/common/tortls.c   |4 +++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --cc src/common/tortls.c
index c13b12f,11fe220..4222f6d
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@@ -1276,11 -1180,8 +1276,12 @@@ tor_tls_context_new(crypto_pk_t *identi
if (!(result->ctx = SSL_CTX_new(SSLv23_method(
  goto error;
SSL_CTX_set_options(result->ctx, SSL_OP_NO_SSLv2);
+   SSL_CTX_set_options(result->ctx, SSL_OP_NO_SSLv3);
  
 +  /* Prefer the server's ordering of ciphers: the client's ordering has
 +  * historically been chosen for fingerprinting resistance. */
 +  SSL_CTX_set_options(result->ctx, SSL_OP_CIPHER_SERVER_PREFERENCE);
 +
/* Disable TLS1.1 and TLS1.2 if they exist.  We need to do this to
 * workaround a bug present in all OpenSSL 1.0.1 versions (as of 1
 * June 2012), wherein renegotiating while using one of these TLS
@@@ -1302,18 -1200,12 +1303,19 @@@
 * using them can make our perfect forward secrecy a little worse, *and*
 * create an opportunity to fingerprint us (since it's unusual to use them
 * with TLS sessions turned off).
 +   *
 +   * In 0.2.4, clients advertise support for them though, to avoid a TLS
 +   * distinguishability vector.  This can give us worse PFS, though, if we
 +   * get a server that doesn't set SSL_OP_NO_TICKET.  With luck, there will
 +   * be few such servers by the time 0.2.4 is more stable.
 */
  #ifdef SSL_OP_NO_TICKET
 -  SSL_CTX_set_options(result->ctx, SSL_OP_NO_TICKET);
 +  if (! is_client) {
 +SSL_CTX_set_options(result->ctx, SSL_OP_NO_TICKET);
 +  }
  #endif
  
+   /* XXX This block is now obsolete. */
if (
  #ifdef DISABLE_SSL3_HANDSHAKE
1 ||

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-08-13 Thread nickm
commit 244ca67e47238ae8f687c4d4038b7f696824b023
Merge: 691371b b98e3f9
Author: Nick Mathewson 
Date:   Wed Aug 13 12:51:27 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-august2014 |3 +
 src/config/geoip | 5217 ++
 2 files changed, 3830 insertions(+), 1390 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-07-21 Thread nickm
commit 015f710f72823bc31c3075fb41d3ae33eb7abe06
Merge: f5ce580 6d5efbe
Author: Nick Mathewson 
Date:   Mon Jul 21 14:29:30 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-july2014 |3 +
 src/config/geoip   | 3600 +---
 2 files changed, 2499 insertions(+), 1104 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-06-10 Thread nickm
commit ab774a8500a6f4302296ff4c6ea23ba5c64eaa52
Merge: 8d9602c 555c43c
Author: Nick Mathewson 
Date:   Tue Jun 10 21:07:57 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 src/config/geoip |22394 +-
 1 file changed, 15384 insertions(+), 7010 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-05-01 Thread nickm
commit 14bc6e8993c694702f5ab637c36b962f396660a5
Merge: efab348 6a4f5d9
Author: Nick Mathewson 
Date:   Thu May 1 11:44:25 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

Conflicts:
src/or/microdesc.c

 changes/bug7164_downgrade |6 ++
 src/or/microdesc.c|2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --cc src/or/microdesc.c
index 90ac0ac,4acec6a..0e72c0b
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@@ -614,13 -561,11 +614,13 @@@ microdesc_free_(microdesc_t *md, const 
  }
});
  if (found) {
-   log_warn(LD_BUG, "microdesc_free() called from %s:%d, but md was still "
 -  log_info(LD_BUG, "microdesc_free() called, but md was still referenced "
 -   "%d node(s); held_by_nodes == %u", found, md->held_by_nodes);
++  log_info(LD_BUG, "microdesc_free() called from %s:%d, but md was still "
 +   "referenced %d node(s); held_by_nodes == %u",
 +   fname, lineno, found, md->held_by_nodes);
  } else {
 -  log_warn(LD_BUG, "microdesc_free() called with held_by_nodes set to %u, 
"
 -   "but md was not referenced by any nodes", md->held_by_nodes);
 +  log_warn(LD_BUG, "microdesc_free() called from %s:%d with held_by_nodes 
"
 +   "set to %u, but md was not referenced by any nodes",
 +   fname, lineno, md->held_by_nodes);
  }
  tor_fragile_assert();
}

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-04-30 Thread nickm
commit efab3484e6ea3a799ccf61061450cfc35791ad41
Merge: 35699ef 8828794
Author: Nick Mathewson 
Date:   Wed Apr 30 20:25:15 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/bug10849_023 |6 ++
 src/or/config.c  |4 
 2 files changed, 10 insertions(+)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-04-29 Thread nickm
commit 1d3ffc0ec96777203b2eafee5905464d54ef9f91
Merge: 9e44df2 65575b0
Author: Nick Mathewson 
Date:   Tue Apr 29 13:02:18 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/md_leak_bug  |5 +
 src/or/routerparse.c |2 ++
 2 files changed, 7 insertions(+)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-04-16 Thread nickm
commit 3fc0f9efb8b0030bab2574e5998a964adc93ebaa
Merge: f050cf7 ef3d7f2
Author: Nick Mathewson 
Date:   Wed Apr 16 14:57:14 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 src/or/routerlist.c |1 -
 1 file changed, 1 deletion(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-04-16 Thread nickm
commit f050cf75b0d963be1aa2840bcef60c8b1e96d3b6
Merge: f3c20a2 2ce0750
Author: Nick Mathewson 
Date:   Wed Apr 16 13:32:20 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 src/or/routerlist.c |7 +++
 1 file changed, 3 insertions(+), 4 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-04-15 Thread nickm
commit f3c20a28ab50386064043cc31edb3b1b543d6fc6
Merge: 1499315 b0e1ddb
Author: Nick Mathewson 
Date:   Tue Apr 15 14:51:19 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

Conflicts:
src/or/circuituse.c

 changes/bug11519|3 +++
 src/or/circuituse.c |2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --cc src/or/circuituse.c
index 5984691,7218ecc..c2d2b2e
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@@ -1517,8 -1309,8 +1517,8 @@@ circuit_launch_by_extend_info(uint8_t p
   * internal circs rather than exit circs? -RD */
  circ = circuit_find_to_cannibalize(purpose, extend_info, flags);
  if (circ) {
 -  uint8_t old_purpose = circ->_base.purpose;
 -  struct timeval old_timestamp_created = circ->_base.timestamp_created;
 +  uint8_t old_purpose = circ->base_.purpose;
-   struct timeval old_timestamp_began;
++  struct timeval old_timestamp_began = circ->base_.timestamp_began;
  
log_info(LD_CIRC,"Cannibalizing circ '%s' for purpose %d (%s)",
 build_state_get_exit_nickname(circ->build_state), purpose,

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-04-14 Thread nickm
commit 149931571a4c5ad9ec24eb6d4306e8965a454211
Merge: 47f7085 75b4975
Author: Nick Mathewson 
Date:   Mon Apr 14 18:00:38 2014 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

Conflicts:
src/or/routerlist.h

 changes/bug11464_023   |5 +
 src/or/networkstatus.c |   11 +++
 src/or/routerlist.c|   33 +
 src/or/routerlist.h|1 +
 src/or/routerparse.c   |8 
 5 files changed, 58 insertions(+)

diff --cc src/or/routerlist.c
index cb39729,a7968be..b49dc1a
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@@ -600,39 -455,42 +600,72 @@@ authority_cert_dl_failed(const char *id
!(cl = digestmap_get(trusted_dir_certs, id_digest)))
  return;
  
 -  download_status_failed(&cl->dl_status, status);
 +  /*
 +   * Are we noting a failed download of the latest cert for the id digest,
 +   * or of a download by (id, signing key) digest pair?
 +   */
 +  if (!signing_key_digest) {
 +/* Just by id digest */
 +download_status_failed(&cl->dl_status_by_id, status);
 +  } else {
 +/* Reset by (id, signing key) digest pair
 + *
 + * Look for a download_status_t in the map with this digest
 + */
 +dlstatus = dsmap_get(cl->dl_status_map, signing_key_digest);
 +/* Got one? */
 +if (dlstatus) {
 +  download_status_failed(dlstatus, status);
 +} else {
 +  /*
 +   * Do this rather than hex_str(), since hex_str clobbers
 +   * old results and we call twice in the param list.
 +   */
 +  base16_encode(id_digest_str, sizeof(id_digest_str),
 +id_digest, DIGEST_LEN);
 +  base16_encode(sk_digest_str, sizeof(sk_digest_str),
 +signing_key_digest, DIGEST_LEN);
 +  log_warn(LD_BUG,
 +   "Got failure for cert fetch with (fp,sk) = (%s,%s), with "
 +   "status %d, but knew nothing about the download.",
 +   id_digest_str, sk_digest_str, status);
 +}
 +  }
  }
  
+ static const char *BAD_SIGNING_KEYS[] = {
+   "09CD84F751FD6E955E0F8ADB497D5401470D697E", // Expires 2015-01-11 16:26:31
+ // dizum still needs to rotate as of 2014-04-14
+ //"0E7E9C07F0969D0468AD741E172A6109DC289F3C", // Expires 2014-08-12 10:18:26
+ // dannenberg still needs to rotate as of 2014-04-14
+ //"57B85409891D3FB32137F642FDEDF8B7F8CDFDCD", // Expires 2015-02-11 17:19:09
+   "87326329007AF781F587AF5B594E540B2B6C7630", // Expires 2014-07-17 11:10:09
+   "98CC82342DE8D298CF99D3F1A396475901E0D38E", // Expires 2014-11-10 13:18:56
+   "9904B52336713A5ADCB13E4FB14DC919E0D45571", // Expires 2014-04-20 20:01:01
+   "9DCD8E3F1DD1597E2AD476BBA28A1A89F3095227", // Expires 2015-01-16 03:52:30
+   "A61682F34B9BB9694AC98491FE1ABBFE61923941", // Expires 2014-06-11 09:25:09
+   "B59F6E99C575113650C99F1C425BA7B20A8C071D", // Expires 2014-07-31 13:22:10
+   "D27178388FA75B96D37FA36E0B015227DDDBDA51", // Expires 2014-08-04 04:01:57
+   NULL,
+ };
+ 
+ /** DOCDOC */
+ int
+ authority_cert_is_blacklisted(const authority_cert_t *cert)
+ {
+   char hex_digest[HEX_DIGEST_LEN+1];
+   int i;
+   base16_encode(hex_digest, sizeof(hex_digest),
+ cert->signing_key_digest, sizeof(cert->signing_key_digest));
+ 
+   for (i = 0; BAD_SIGNING_KEYS[i]; ++i) {
+ if (!strcasecmp(hex_digest, BAD_SIGNING_KEYS[i])) {
+   return 1;
+ }
+   }
+   return 0;
+ }
+ 
  /** Return true iff when we've been getting enough failures when trying to
   * download the certificate with ID digest id_digest that we're willing
   * to start bugging the user about it. */
diff --cc src/or/routerlist.h
index ce0f0f2,bd55b7b..5056858
--- a/src/or/routerlist.h
+++ b/src/or/routerlist.h
@@@ -39,8 -25,8 +39,9 @@@ void authority_cert_dl_failed(const cha
  void authority_certs_fetch_missing(networkstatus_t *status, time_t now);
  int router_reload_router_list(void);
  int authority_cert_dl_looks_uncertain(const char *id_digest);
 +const smartlist_t *router_get_trusted_dir_servers(void);
 +const smartlist_t *router_get_fallback_dir_servers(void);
+ int authority_cert_is_blacklisted(const authority_cert_t *cert);
 -smartlist_t *router_get_trusted_dir_servers(void);
  
  const routerstatus_t *router_pick_directory_server(dirinfo_type_t type,
 int flags);

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-02-25 Thread nickm
commit d7950eda2bfd927a18df4a2620952d10dda1705c
Merge: d21b24b 2658e70
Author: Nick Mathewson 
Date:   Tue Feb 25 10:02:14 2014 -0500

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-february2014-regcountry |3 +
 src/config/geoip  | 2399 ++---
 2 files changed, 1035 insertions(+), 1367 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2014-02-14 Thread nickm
commit 260b3b1a190111a7ae078c4260c470bd31292b02
Merge: e4bc757 405d055
Author: Nick Mathewson 
Date:   Sat Feb 15 00:06:25 2014 -0500

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-february2014 |3 +
 src/config/geoip   |17809 
 2 files changed, 9649 insertions(+), 8163 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-11-15 Thread nickm
commit 59f50c80d443a7e148f85cfed493e3e703cc4386
Merge: a82b18f 9e90707
Author: Nick Mathewson 
Date:   Fri Nov 15 15:29:24 2013 -0500

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

Conflicts:
src/or/or.h
src/or/relay.c

Conflicts were simple to resolve.  More fixes were needed for
compilation, including: reinstating the tv_to_msec function, and renaming
*_conn_cells to *_chan_cells.

 changes/bug9093  |7 +++
 src/common/util.c|   12 +++
 src/common/util.h|1 +
 src/or/circuitlist.c |   56 +-
 src/or/or.h  |5 +
 src/or/relay.c   |8 ++--
 6 files changed, 77 insertions(+), 12 deletions(-)

diff --cc src/common/util.c
index ae385e1,b16afa1..5eb0f9a
--- a/src/common/util.c
+++ b/src/common/util.c
@@@ -1232,6 -1322,6 +1232,18 @@@ tv_mdiff(const struct timeval *start, c
return mdiff;
  }
  
++/**
++ * Converts timeval to milliseconds.
++ */
++int64_t
++tv_to_msec(const struct timeval *tv)
++{
++  int64_t conv = ((int64_t)tv->tv_sec)*1000L;
++  /* Round ghetto-style */
++  conv += ((int64_t)tv->tv_usec+500)/1000L;
++  return conv;
++}
++
  /** Yield true iff y is a leap-year. */
  #define IS_LEAPYEAR(y) (!(y % 4) && ((y % 100) || !(y % 400)))
  /** Helper: Return the number of leap-days between Jan 1, y1 and Jan 1, y2. */
diff --cc src/common/util.h
index 96a02dd,8977d27..73daa6e
--- a/src/common/util.h
+++ b/src/common/util.h
@@@ -251,8 -239,11 +251,9 @@@ void base16_encode(char *dest, size_t d
  int base16_decode(char *dest, size_t destlen, const char *src, size_t srclen);
  
  /* Time helpers */
 -double tv_to_double(const struct timeval *tv);
 -int64_t tv_to_msec(const struct timeval *tv);
 -int64_t tv_to_usec(const struct timeval *tv);
  long tv_udiff(const struct timeval *start, const struct timeval *end);
  long tv_mdiff(const struct timeval *start, const struct timeval *end);
++int64_t tv_to_msec(const struct timeval *tv);
  int tor_timegm(const struct tm *tm, time_t *time_out);
  #define RFC1123_TIME_LEN 29
  void format_rfc1123_time(char *buf, time_t t);
diff --cc src/or/circuitlist.c
index daeaa37,6250c11..b0e24a5
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@@ -1525,10 -1383,41 +1525,41 @@@ n_cells_in_circ_queues(const circuit_t 
return n;
  }
  
- /** helper to sort a list of circuit_q by total queue lengths, in descending
-  * order. */
+ /**
+  * Return the age of the oldest cell queued on c, in milliseconds.
+  * Return 0 if there are no cells queued on c.  Requires that now be
+  * the current time in milliseconds since the epoch, truncated.
+  *
+  * This function will return incorrect results if the oldest cell queued on
+  * the circuit is older than 2**32 msec (about 49 days) old.
+  */
+ static uint32_t
+ circuit_max_queued_cell_age(const circuit_t *c, uint32_t now)
+ {
+   uint32_t age = 0;
 -  if (c->n_conn_cells.head)
 -age = now - c->n_conn_cells.head->inserted_time;
++  if (c->n_chan_cells.head)
++age = now - c->n_chan_cells.head->inserted_time;
+ 
+   if (! CIRCUIT_IS_ORIGIN(c)) {
+ const or_circuit_t *orcirc = TO_OR_CIRCUIT((circuit_t*)c);
 -if (orcirc->p_conn_cells.head) {
 -  uint32_t age2 = now - orcirc->p_conn_cells.head->inserted_time;
++if (orcirc->p_chan_cells.head) {
++  uint32_t age2 = now - orcirc->p_chan_cells.head->inserted_time;
+   if (age2 > age)
+ return age2;
+ }
+   }
+   return age;
+ }
+ 
+ /** Temporary variable for circuits_compare_by_oldest_queued_cell_ This is a
+  * kludge to work around the fact that qsort doesn't provide a way for
+  * comparison functions to take an extra argument. */
+ static uint32_t circcomp_now_tmp;
+ 
+ /** Helper to sort a list of circuit_t by age of oldest cell, in descending
+  * order. Requires that circcomp_now_tmp is set correctly. */
  static int
- circuits_compare_by_queue_len_(const void **a_, const void **b_)
+ circuits_compare_by_oldest_queued_cell_(const void **a_, const void **b_)
  {
const circuit_t *a = *a_;
const circuit_t *b = *b_;
diff --cc src/or/or.h
index eff5a6d,4622391..5318b0f
--- a/src/or/or.h
+++ b/src/or/or.h
@@@ -1076,9 -911,14 +1076,14 @@@ typedef struct var_cell_t 
  /** A cell as packed for writing to the network. */
  typedef struct packed_cell_t {
struct packed_cell_t *next; /**< Next cell queued on this circuit. */
 -  char body[CELL_NETWORK_SIZE]; /**< Cell as packed for network. */
 +  char body[CELL_MAX_NETWORK_SIZE]; /**< Cell as packed for network. */
+   uint32_t inserted_time; /**< Time (in milliseconds since epoch, with high
+* bits truncated) when this cell was inserted. */
  } packed_cell_t;
  
+ /*  This next structure may be obsoleted by inserted_time in
+  * packed_cell_t */
+ 
  /** Number of cells added to a circuit queue including their insertion
   * time on 10 millisecond detail; used for buffer statistics. */

[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-10-11 Thread nickm
commit 7ef2939e5a902c6159227de176622ee9388e34a4
Merge: eb5d75e 82d8944
Author: Nick Mathewson 
Date:   Fri Oct 11 11:16:59 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-october2013 |3 +
 src/config/geoip  | 2019 -
 2 files changed, 1245 insertions(+), 777 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-10-10 Thread nickm
commit 7b1b8c36942a09ff4c50ac228f465aa4050153e3
Merge: 1137817 004a9c6
Author: Nick Mathewson 
Date:   Thu Oct 10 11:18:07 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 src/common/util.c|4 ++--
 src/test/test_util.c |1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-10-10 Thread nickm
commit 1137817319c7a9e4293e9901405d01e7b85da6ea
Merge: 73a0bb1 6eb7f2f
Author: Nick Mathewson 
Date:   Thu Oct 10 10:55:24 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/bug9928   |6 ++
 src/common/util.c |   10 +-
 2 files changed, 11 insertions(+), 5 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-10-08 Thread nickm
commit 7e0f1fa52adcf67d7b9c5459a3cc74f57bbfa3e2
Merge: 0c3c475 dece40f
Author: Nick Mathewson 
Date:   Tue Oct 8 12:16:42 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/bug6979 |4 
 src/or/router.c |2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-09-16 Thread nickm
commit ace95c525c55387d4f219043400c9821e41994bc
Merge: 2c877d2 b46353b
Author: Nick Mathewson 
Date:   Mon Sep 16 12:47:05 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-september2013 |3 +
 src/config/geoip|12806 ++-
 2 files changed, 6556 insertions(+), 6253 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-09-04 Thread nickm
commit a60d21a85deacad98fa04d20fb4e83b57ad191d7
Merge: a8e76de 3cebc5e
Author: Nick Mathewson 
Date:   Wed Sep 4 16:08:02 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

Conflicts:
src/or/circuitbuild.c

 changes/bug9671_023 |5 +
 src/or/circuituse.c |4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-08-24 Thread nickm
commit a5610cfa64189db693dbad3efaa973d6720c42fe
Merge: 4107ddd 8611195
Author: Nick Mathewson 
Date:   Sun Aug 25 00:33:10 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

(Using "ours" strategy to avoid taking 9546 fix in 0.2.3; we just
merged our own into 0.2.4)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-08-22 Thread nickm
commit 43f187ec2e40517148c11f8eaa915ec2ae6d1ec4
Merge: edaea77 8bf2892
Author: Nick Mathewson 
Date:   Thu Aug 22 20:47:10 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/bug9564|5 +
 src/or/networkstatus.c |2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-08-12 Thread nickm
commit 3433b7ce3992b9566dba9b64f64f0676e712696a
Merge: d5cfbf9 64410cc
Author: Nick Mathewson 
Date:   Mon Aug 12 09:45:07 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-august2013 |3 +
 src/config/geoip | 9207 +++---
 2 files changed, 4521 insertions(+), 4689 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-07-08 Thread nickm
commit c78c8de015ac62eb3fa529f932bcf86dae9f3d9d
Merge: 81a5ee7 0b9c515
Author: Nick Mathewson 
Date:   Mon Jul 8 09:22:49 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-july2013 |3 +
 src/config/geoip   | 2201 +++-
 2 files changed, 1425 insertions(+), 779 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-06-18 Thread nickm
commit 7c4544e5a4780706dee65d2a3ff8c7b55952
Merge: efa342f 60d633c
Author: Nick Mathewson 
Date:   Tue Jun 18 14:45:29 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 src/or/rendcommon.c |3 +++
 1 file changed, 3 insertions(+)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-06-18 Thread nickm
commit d3063da691d0006cf41f6406099f056ab47c543a
Merge: 9e45d94 c37fdc2
Author: Nick Mathewson 
Date:   Tue Jun 18 10:23:03 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

Conflicts:
src/or/config.c
src/or/relay.c

 changes/bug9002   |4 ++
 changes/bug9063_redux |   15 
 doc/tor.1.txt |9 +
 src/common/mempool.h  |2 +
 src/or/circuitlist.c  |  102 +
 src/or/circuitlist.h  |1 +
 src/or/config.c   |8 
 src/or/or.h   |4 ++
 src/or/relay.c|   33 +++-
 src/or/relay.h|1 +
 src/or/rendcommon.c   |   25 +++-
 11 files changed, 200 insertions(+), 4 deletions(-)

diff --cc src/or/config.c
index df1a67e,d5c5689..55d19b8
--- a/src/or/config.c
+++ b/src/or/config.c
@@@ -299,9 -343,8 +299,10 @@@ static config_var_t option_vars_[] = 
V(MaxAdvertisedBandwidth,  MEMUNIT,  "1 GB"),
V(MaxCircuitDirtiness, INTERVAL, "10 minutes"),
V(MaxClientCircuitsPending,UINT, "32"),
+   V(MaxMemInCellQueues,  MEMUNIT,  "8 GB"),
 -  V(MaxOnionsPending,UINT, "100"),
 +  OBSOLETE("MaxOnionsPending"),
 +  V(MaxOnionQueueDelay,  MSEC_INTERVAL, "1750 msec"),
 +  V(MinMeasuredBWsForAuthToIgnoreAdvertised, INT, "500"),
OBSOLETE("MonthlyAccountingStart"),
V(MyFamily,STRING,   NULL),
V(NewCircuitPeriod,INTERVAL, "30 seconds"),
@@@ -2606,11 -3665,17 +2607,18 @@@ options_validate(or_options_t *old_opti
if (options->UseBridges && options->EntryNodes)
  REJECT("You cannot set both UseBridges and EntryNodes.");
  
 -  if (options->EntryNodes && !options->UseEntryGuards)
 -log_warn(LD_CONFIG, "EntryNodes is set, but UseEntryGuards is disabled. "
 - "EntryNodes will be ignored.");
 +  if (options->EntryNodes && !options->UseEntryGuards) {
 +REJECT("If EntryNodes is set, UseEntryGuards must be enabled.");
 +  }
  
+   if (options->MaxMemInCellQueues < (500 << 20)) {
+ log_warn(LD_CONFIG, "MaxMemInCellQueues must be at least 500 MB for now. "
+  "Ideally, have it as large as you can afford.");
+ options->MaxMemInCellQueues = (500 << 20);
+   }
+ 
 -  options->_AllowInvalid = 0;
 +  options->AllowInvalid_ = 0;
++
if (options->AllowInvalidNodes) {
  SMARTLIST_FOREACH_BEGIN(options->AllowInvalidNodes, const char *, cp) {
  if (!strcasecmp(cp, "entry"))
diff --cc src/or/relay.c
index 0f21663,fda9e89..3138c5e
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@@ -2106,15 -1864,14 +2106,15 @@@ dump_cell_pool_usage(int severity
circuit_t *c;
int n_circs = 0;
int n_cells = 0;
 -  for (c = _circuit_get_global_list(); c; c = c->next) {
 -n_cells += c->n_conn_cells.n;
 +  for (c = circuit_get_global_list_(); c; c = c->next) {
 +n_cells += c->n_chan_cells.n;
  if (!CIRCUIT_IS_ORIGIN(c))
 -  n_cells += TO_OR_CIRCUIT(c)->p_conn_cells.n;
 +  n_cells += TO_OR_CIRCUIT(c)->p_chan_cells.n;
  ++n_circs;
}
 -  log(severity, LD_MM, "%d cells allocated on %d circuits. %d cells leaked.",
 -  n_cells, n_circs, (int)total_cells_allocated - n_cells);
 +  tor_log(severity, LD_MM,
 +  "%d cells allocated on %d circuits. %d cells leaked.",
-   n_cells, n_circs, total_cells_allocated - n_cells);
++  n_cells, n_circs, (int)total_cells_allocated - n_cells);
mp_pool_log_status(cell_pool, severity);
  }
  
@@@ -,64 -1978,382 +,87 @@@ cell_queue_pop(cell_queue_t *queue
return cell;
  }
  
+ /** Return the total number of bytes used for each packed_cell in a queue.
+  * Approximate. */
+ size_t
+ packed_cell_mem_cost(void)
+ {
+   return sizeof(packed_cell_t) + MP_POOL_ITEM_OVERHEAD +
+ get_options()->CellStatistics ?
+ (sizeof(insertion_time_elem_t)+MP_POOL_ITEM_OVERHEAD) : 0;
+ }
+ 
+ /** Check whether we've got too much space used for cells.  If so,
+  * call the OOM handler and return 1.  Otherwise, return 0. */
+ static int
+ cell_queues_check_size(void)
+ {
+   size_t alloc = total_cells_allocated * packed_cell_mem_cost();
+   if (alloc >= get_options()->MaxMemInCellQueues) {
+ circuits_handle_oom(alloc);
+ return 1;
+   }
+   return 0;
+ }
+ 
 -/** Return a pointer to the "next_active_on_{n,p}_conn" pointer of 
circ,
 - * depending on whether conn matches n_conn or p_conn. */
 -static INLINE circuit_t **
 -next_circ_on_conn_p(circuit_t *circ, or_connection_t *conn)
 -{
 -  tor_assert(circ);
 -  tor_assert(conn);
 -  if (conn == circ->n_conn) {
 -return &circ->next_active_on_n_conn;
 -  } else {
 -or_circuit_t *orcirc = TO_OR_CIRCUIT(circ);
 -tor_assert(conn == orcirc->p_conn);
 -return &orcirc->next_active_on_p_conn;
 -  }
 -}
 -
 -/** Return a pointer to the "prev_active_on_{n,p}_conn" pointer of 
circ,
 - * depending on whether conn matches n_conn or p_conn. */
 -static INLINE circuit_t **
 -prev_circ_on

[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-06-13 Thread nickm
commit 82fea1b0dffe2cb808e997b891106651d6a7bb97
Merge: 72f775e d780cd5
Author: Nick Mathewson 
Date:   Fri Jun 14 01:45:35 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

Using "ours" strategy to avoid taking changes.




___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-06-10 Thread nickm
commit 607b29ae1abe7da7d06e4e9282ed88a2dd7fe8d4
Merge: c860a96 4835fae
Author: Nick Mathewson 
Date:   Mon Jun 10 12:26:39 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/bug9017  |6 ++
 src/or/connection_edge.c |   11 ++-
 2 files changed, 12 insertions(+), 5 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-06-05 Thread nickm
commit c860a96ecb652d76dc23f2b490db4f5a95e9b0c3
Merge: c03cfc0 fe689de
Author: Nick Mathewson 
Date:   Wed Jun 5 11:22:19 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-june2013 |3 +
 src/config/geoip   |106050 +---
 2 files changed, 9168 insertions(+), 96885 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-05-20 Thread nickm
commit 0c2fb64d6fc7a3b6a3d3d7febb72e72299bca03d
Merge: bc56918 78735f8
Author: Nick Mathewson 
Date:   Mon May 20 12:37:21 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-may2013 |3 +
 src/config/geoip  |20373 +
 2 files changed, 10221 insertions(+), 10155 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-05-09 Thread nickm
commit bae5dd6c8d4535360d471932b87431f54b515567
Merge: 7d3fd85 96d3219
Author: Nick Mathewson 
Date:   Thu May 9 13:14:53 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/bug8844  |6 ++
 src/or/buffers.c |3 ++-
 src/test/test.c  |   12 
 3 files changed, 20 insertions(+), 1 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-04-08 Thread nickm
commit 6acf0ac2851fb95953edea9c231d82f487f28c3d
Merge: 3367a76 9630fb9
Author: Nick Mathewson 
Date:   Mon Apr 8 11:09:50 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-apr2013 |3 +
 src/config/geoip  |20949 -
 2 files changed, 5143 insertions(+), 15809 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-03-18 Thread nickm
commit 2ac66e59f7b32bb7f975803c9d483848e755a08f
Merge: 5959d1c ebb95d0
Author: Nick Mathewson 
Date:   Mon Mar 18 15:28:39 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

Conflicts:
src/test/test_addr.c

 changes/bug8377  |3 +++
 src/common/address.c |3 ++-
 src/test/test_addr.c |   36 
 3 files changed, 41 insertions(+), 1 deletions(-)

diff --cc src/test/test_addr.c
index 890dfe4,e3f3807..fec85a4
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@@ -723,134 -623,48 +723,170 @@@ test_addr_ip6_helpers(void
;
  }
  
 +/** Test tor_addr_port_parse(). */
 +static void
 +test_addr_parse(void)
 +{
 +  int r;
 +  tor_addr_t addr;
 +  char buf[TOR_ADDR_BUF_LEN];
 +  uint16_t port = 0;
 +
 +  /* Correct call. */
 +  r= tor_addr_port_parse(LOG_DEBUG,
 + "192.0.2.1:1234",
 + &addr, &port);
 +  test_assert(r == 0);
 +  tor_addr_to_str(buf, &addr, sizeof(buf), 0);
 +  test_streq(buf, "192.0.2.1");
 +  test_eq(port, 1234);
 +
 +  /* Domain name. */
 +  r= tor_addr_port_parse(LOG_DEBUG,
 + "torproject.org:1234",
 + &addr, &port);
 +  test_assert(r == -1);
 +
 +  /* Only IP. */
 +  r= tor_addr_port_parse(LOG_DEBUG,
 + "192.0.2.2",
 + &addr, &port);
 +  test_assert(r == -1);
 +
 +  /* Bad port. */
 +  r= tor_addr_port_parse(LOG_DEBUG,
 + "192.0.2.2:6",
 + &addr, &port);
 +  test_assert(r == -1);
 +
 +  /* Only domain name */
 +  r= tor_addr_port_parse(LOG_DEBUG,
 + "torproject.org",
 + &addr, &port);
 +  test_assert(r == -1);
 +
 +  /* Bad IP address */
 +  r= tor_addr_port_parse(LOG_DEBUG,
 + "192.0.2:1234",
 + &addr, &port);
 +  test_assert(r == -1);
 +
 + done:
 +  ;
 +}
 +
 +static void
 +update_difference(int ipv6, uint8_t *d,
 +  const tor_addr_t *a, const tor_addr_t *b)
 +{
 +  const int n_bytes = ipv6 ? 16 : 4;
 +  uint8_t a_tmp[4], b_tmp[4];
 +  const uint8_t *ba, *bb;
 +  int i;
 +
 +  if (ipv6) {
 +ba = tor_addr_to_in6_addr8(a);
 +bb = tor_addr_to_in6_addr8(b);
 +  } else {
 +set_uint32(a_tmp, tor_addr_to_ipv4n(a));
 +set_uint32(b_tmp, tor_addr_to_ipv4n(b));
 +ba = a_tmp; bb = b_tmp;
 +  }
 +
 +  for (i = 0; i < n_bytes; ++i) {
 +d[i] |= ba[i] ^ bb[i];
 +  }
 +}
 +
 +static void
 +test_virtaddrmap(void *data)
 +{
 +  /* Let's start with a bunch of random addresses. */
 +  int ipv6, bits, iter, b;
 +  virtual_addr_conf_t cfg[2];
 +  uint8_t bytes[16];
 +
 +  (void)data;
 +
 +  tor_addr_parse(&cfg[0].addr, "64.65.0.0");
 +  tor_addr_parse(&cfg[1].addr, "3491:c0c0::");
 +
 +  for (ipv6 = 0; ipv6 <= 1; ++ipv6) {
 +for (bits = 0; bits < 18; ++bits) {
 +  tor_addr_t last_a;
 +  cfg[ipv6].bits = bits;
 +  memset(bytes, 0, sizeof(bytes));
 +  tor_addr_copy(&last_a, &cfg[ipv6].addr);
 +  /* Generate 128 addresses with each addr/bits combination. */
 +  for (iter = 0; iter < 128; ++iter) {
 +tor_addr_t a;
 +
 +get_random_virtual_addr(&cfg[ipv6], &a);
 +//printf("%s\n", fmt_addr(&a));
 +/* Make sure that the first b bits match the configured network */
 +tt_int_op(0, ==, tor_addr_compare_masked(&a, &cfg[ipv6].addr,
 + bits, CMP_EXACT));
 +
 +/* And track which bits have been different between pairs of
 + * addresses */
 +update_difference(ipv6, bytes, &last_a, &a);
 +  }
 +
 +  /* Now make sure all but the first 'bits' bits of bytes are true */
 +  for (b = bits+1; b < (ipv6?128:32); ++b) {
 +tt_assert(1 & (bytes[b/8] >> (7-(b&7;
 +  }
 +}
 +  }
 +
 + done:
 +  ;
 +}
 +
+ static void
+ test_addr_is_loopback(void *data)
+ {
+   static const struct loopback_item {
+ const char *name;
+ int is_loopback;
+   } loopback_items[] = {
+ { "::1", 1 },
+ { "127.0.0.1", 1 },
+ { "127.99.100.101", 1 },
+ { "128.99.100.101", 0 },
+ { "8.8.8.8", 0 },
+ { "0.0.0.0", 0 },
+ { "::2", 0 },
+ { "::", 0 },
+ { "::1.0.0.0", 0 },
+ { NULL, 0 }
+   };
+ 
+   int i;
+   tor_addr_t addr;
+   (void)data;
+ 
+   for (i=0; loopback_items[i].name; ++i) {
+ tt_int_op(tor_addr_parse(&addr, loopback_items[i].name), >=, 0);
+ tt_int_op(tor_addr_is_loopback(&addr), ==, loopback_items[i].is_loopback);
+   }
+ 
+   tor_addr_make_unspec(&addr);
+   tt_int_op(tor_addr_is_loopback(&addr), ==, 0);
+ 
+  done:
+   ;
+ }
+ 
  #define ADDR_LEGACY(name)   \
{ #name, legacy_test_helper, 0, &legacy_setup, test_addr_ ## name }
  
  struct testcase_t addr_tests[] = {
ADDR_LEGACY(basic),
ADDR_LEGACY(ip6_helpers),
 +  ADDR_LEGACY(parse),
 +  { "virtaddr", test

[tor-commits] [tor/maint-0.2.4] Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

2013-03-11 Thread nickm
commit ef4db3169344567f30fb72e3e9a66154b976d889
Merge: 0196647 c6ca199
Author: Nick Mathewson 
Date:   Mon Mar 11 13:32:16 2013 -0400

Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4

 changes/geoip-mar2013 |3 +
 src/config/geoip  |92875 +
 2 files changed, 85446 insertions(+), 7432 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits