Commit Graph

249 Commits

Author SHA1 Message Date
Roger Dingledine
5d961c2c06 plug another memory leak
svn:r3104
2004-12-07 08:51:10 +00:00
Roger Dingledine
ef6c9d18e7 New circuit building strategy: keep a list of ports that we've used in the past 6 hours, and always try to have 2 circuits open or on the way
that will handle each such port. (We can extend this to include addresses
if exit policies shift to require that.) Seed us with port 80 so web
browsers won't complain that Tor is "slow to start up".

This was necessary because our old circuit building strategy just involved
counting circuits, and as time went by we would build up a big pile of
circuits that had peculiar exit policies (e.g. only exit to 9001-9100)
which would take up space in the circuit pile but never get used.

Fix router_compare_addr_to_addr_policy: it was not treating a port of *
as always matching, so we were picking reject *:* nodes as exit nodes too.

If you haven't used a clean circuit in an hour, throw it away, just to
be on the safe side.

This means after 6 hours a totally unused Tor client will have no
circuits open.


svn:r3078
2004-12-05 07:10:08 +00:00
Roger Dingledine
02b3229a04 plus add a comment re: the previous bug
svn:r3076
2004-12-04 10:18:41 +00:00
Roger Dingledine
52676364b9 bugfix: router_exit_policy_rejects_all() was broken, so we were
sometimes picking middleman nodes as our last hop, which wasn't
very useful.


svn:r3075
2004-12-04 08:56:59 +00:00
Nick Mathewson
fc87758ff3 Add function to check that addr_policy_t is okay; change struct addr_policy_t to addr_policy_t.
svn:r3070
2004-12-04 01:14:36 +00:00
Nick Mathewson
b457cfb5eb Spell-check strings and comments
svn:r3052
2004-12-01 03:48:14 +00:00
Nick Mathewson
7fbd297532 Suggestion from weasel: Make tor --version --version dump the cvs Id of every file.
svn:r3019
2004-11-29 22:25:31 +00:00
Nick Mathewson
aff5122685 Fetch cached running-routers from servers that serve it (that is, authdirservers, and servers running 0.0.9rc5-cvs or later.)
svn:r3018
2004-11-29 21:01:34 +00:00
Roger Dingledine
22727b4edc wrong is ok, and right is fine, but in between is apparently
totally unacceptable to me.


svn:r3005
2004-11-28 11:39:53 +00:00
Nick Mathewson
6f5dbefa7e Normalize space: add one between every control keyword and control clause.
svn:r3003
2004-11-28 09:05:49 +00:00
Roger Dingledine
7c9a707900 remove emacs droppings, since nick says he doesn't need them anymore
svn:r2989
2004-11-26 04:00:55 +00:00
Nick Mathewson
f91152ce6a Clarify a bunch of log messages
svn:r2983
2004-11-25 04:20:10 +00:00
Roger Dingledine
63353462f8 if your requested exit node has bandwidth 0, pick it anyway
svn:r2920
2004-11-20 12:41:05 +00:00
Roger Dingledine
50c15943a2 move second stat to a cleaner place
svn:r2890
2004-11-15 09:22:01 +00:00
Roger Dingledine
5dcc6fd8b2 ok ok the stat wasn't redundant
but the warn was


svn:r2852
2004-11-14 13:35:39 +00:00
Roger Dingledine
4564367b2a Remove redundant stat() for reading cached directory, and remove
confusing warn when the cached directory isn't there yet.


svn:r2847
2004-11-14 09:40:07 +00:00
Nick Mathewson
5109de5626 Rename exit_policy to addr_policy, since it gets used for SOCKS and directory connections too. Make all policies get validated in options_validate, and make SOCKS/directory policies get set in options_act.
svn:r2819
2004-11-12 19:39:13 +00:00
Nick Mathewson
5a5be93f80 Normalize whitespace; add a "tell me about all the unnormalized whitespace" target; fix a braino in dirserv.c
svn:r2758
2004-11-09 20:04:00 +00:00
Nick Mathewson
7daab4034d Fix windows build for VC6; centralize newline-fiasco-damage-control logic
svn:r2756
2004-11-09 19:13:08 +00:00
Nick Mathewson
a2079c074f Add some documentation to routerlist
svn:r2753
2004-11-09 17:14:15 +00:00
Roger Dingledine
3ce3d6eead resolve a 64-bit warning
svn:r2750
2004-11-09 11:36:38 +00:00
Roger Dingledine
6521c2ce51 Stop using the wrong DataDirectory when we're validating.
Also validate/normalize the DataDirectory better.


svn:r2732
2004-11-09 07:05:53 +00:00
Roger Dingledine
394554cfbf Clean up copyrights.
Break connection_consider_empty_buckets() out of
connection_read_bucket_decrement().


svn:r2698
2004-11-07 01:33:06 +00:00
Roger Dingledine
6c61ed4fb5 Make options no longer a global variable.
Now we can try setting an option but back out if it fails to parse, or
  if it's disallowed (e.g. changing RunAsDaemon from 1 to 0).
Use parse_line_from_str rather than parse_line_from_file.


svn:r2692
2004-11-06 05:18:11 +00:00
Roger Dingledine
2ba3a9de16 make the default default options.FirewallPorts be the default
svn:r2683
2004-11-04 23:39:57 +00:00
Roger Dingledine
f7a30fa73e break out validate_options
leave options.FirewallPorts NULL if it's NULL


svn:r2673
2004-11-04 10:23:30 +00:00
Nick Mathewson
451f8b5045 - Implement all of control interface except authentication, setconfig,
and actually making the sockets.
- Make sure that identity-based nicknames start with $.
- Use new string_join interface.


svn:r2661
2004-11-03 18:33:07 +00:00
Roger Dingledine
e541319dcb lay the groundwork for a default value for each config option.
tolerate null exitnodes, entrynodes, etc config options.


svn:r2655
2004-11-03 10:08:44 +00:00
Nick Mathewson
ad4dc74482 Use a stricter set of warnings; make them all pass.
svn:r2645
2004-11-02 03:02:17 +00:00
Nick Mathewson
11d330be5e Tweaks to prevent obsolete restarting tors from hammering the dirservers. (1) Cache a received directory as soon as the signature checks out. (2) Treat a cached directory as "recent" based on its mtime. (3) If we have a recent directory, we dont need to fetch a newer one for DirFetchPostPeriod. This needs review!
svn:r2618
2004-10-28 18:37:52 +00:00
Nick Mathewson
2fbf31533b Tricksy compiler warnings! We hates them, hates them forever, my precious!
svn:r2615
2004-10-27 21:14:11 +00:00
Nick Mathewson
6980929e64 Use strlcpy, not strcpy.
svn:r2610
2004-10-27 06:48:16 +00:00
Nick Mathewson
44d4516155 Use tor_snprintf, not snprintf
svn:r2609
2004-10-27 06:37:34 +00:00
Nick Mathewson
bc62f8e983 Replace sprintf with snprintf
svn:r2602
2004-10-27 05:53:07 +00:00
Nick Mathewson
b90b2bb848 Add and document router-status line using new unified liveness/verifiedness format; continue to generate running-routers; continue to parse running-routers when no router-status line is found
svn:r2592
2004-10-27 00:48:51 +00:00
Nick Mathewson
e5049d5aa3 Remove routerinfo_t->is_trusted_dir, and all the twisted machinery used to
maintain it.

Have clients default to the nickname "client" in their certificates.

Give a less frightening warning on obsolete (pre-0.0.8) routerinfo_t's.


svn:r2568
2004-10-19 18:19:59 +00:00
Roger Dingledine
97a0a43511 start the process of making 0.0.7* obsolete
svn:r2565
2004-10-17 21:51:20 +00:00
Nick Mathewson
56a592dbe3 Fix memory leak
svn:r2535
2004-10-16 08:39:56 +00:00
Nick Mathewson
9d5831341e Implement user-declared node families.
svn:r2534
2004-10-15 20:52:09 +00:00
Nick Mathewson
28dd458eaf Upload to trusted dir servers based on DirServer config options, not on routerinfos.
svn:r2529
2004-10-15 19:04:38 +00:00
Nick Mathewson
88e0c080cf Ignore fascistfirewall when dealing with service descriptors; obey fascistfirewall when posting server descriptors; ignore fascistfirewall on directory connections when httpproxy is set.
svn:r2527
2004-10-15 04:57:36 +00:00
Nick Mathewson
ff38cc06e1 Fix search-and-replace in comments: Friends->family does not imply friendship->familyhip.
svn:r2525
2004-10-15 03:55:53 +00:00
Nick Mathewson
7fa5d224d4 Implement "families" of coadministered nodes; prevent them all from appearing on the same circuit.
svn:r2523
2004-10-15 01:58:11 +00:00
Nick Mathewson
bd10bf4b5b Try to always dtrt if routerlist==NULL
svn:r2489
2004-10-14 03:44:45 +00:00
Roger Dingledine
89280e6c20 rename addr to address to we avoid this bug later
svn:r2488
2004-10-14 03:31:40 +00:00
Roger Dingledine
aebc3a03ba more int to size_t conversions, fixing one or more amd64 bugs
plus a whitespace patch on config.c from vicman


svn:r2482
2004-10-14 02:47:09 +00:00
Nick Mathewson
92bb360ad7 Add missing line; add similar check
svn:r2481
2004-10-14 02:29:03 +00:00
Nick Mathewson
0d5a847f12 Remove need for dirservers file: now, we note trusted dirservers in configuration options, and only need to remember addr:port and key digest for each one.
svn:r2479
2004-10-14 01:44:32 +00:00
Nick Mathewson
30dd1c87a5 Add default trusted-dir-server entries only when no dirserver lines are given in the config file
svn:r2467
2004-10-13 19:56:42 +00:00
Nick Mathewson
df3098367c Make directories get generated properly again; debug key lookup. Also, it is hard to find entries in a table when you never put them there.
svn:r2462
2004-10-13 18:28:39 +00:00
Nick Mathewson
0068415b80 Add an implementation of trusted_dir_server logic to switch towards simply remembering an addr/port/keyid for each trusted dir server
svn:r2443
2004-10-12 15:55:20 +00:00
Nick Mathewson
c7e8c2098a Include a dir-signing-key token in directories to tell the parsing entity which key is being used to sign. This is the first step in obsoleting the dirservers file.
svn:r2428
2004-10-07 21:10:40 +00:00
Nick Mathewson
dad7c71686 Workaround for bug on windows where cached-directories get crlf corruption.
svn:r2426
2004-10-07 20:22:58 +00:00
Roger Dingledine
8b02610bd5 when an OR starts up, it loads its directory from cache.
then it serves *that directory* to others who ask for a copy of the
directory. it's better to serve no directory at all until you have a
fresh copy.


svn:r2418
2004-10-06 05:05:43 +00:00
Nick Mathewson
9e8ae9766e Only check versions against downloaded directories, not cached directories.
svn:r2413
2004-10-03 02:37:52 +00:00
Roger Dingledine
136d4e5739 prefer tor_free to free
plus complain more loudly when we fail to parse a dir we just fetched


svn:r2401
2004-09-29 06:52:36 +00:00
Roger Dingledine
a31ba30ae6 if our local cached directory is new enough, go ahead and
start building circuits while we're fetching a new one


svn:r2394
2004-09-28 23:27:41 +00:00
Nick Mathewson
11384b6d92 Make sure that routerlists contain only routers; give a better error message if they start with a nonrouter.
svn:r2393
2004-09-28 22:49:34 +00:00
Nick Mathewson
0c653e5cc7 cached-directory has a directory, not a router list
svn:r2392
2004-09-28 22:43:11 +00:00
Roger Dingledine
4b3001a08c fix some local buffer overflows
fix a memory leak


svn:r2391
2004-09-28 22:38:21 +00:00
Roger Dingledine
ff622786f1 slightly better warn message
svn:r2357
2004-09-21 17:14:47 +00:00
Nick Mathewson
431b33a2ca Warn the user when we mark ourself as down.
svn:r2356
2004-09-21 16:44:20 +00:00
Roger Dingledine
959199340a don't pick administrative-friends when picking your path
(just a skeleton for now)


svn:r2349
2004-09-10 21:40:29 +00:00
Nick Mathewson
0ef85f6dba Some platforms have weird translations when you open files in "test" mode; make read/write_str_to_file aware.
svn:r2336
2004-09-08 07:16:34 +00:00
Nick Mathewson
c66e4c4870 Flush more changes from sandbox
- make clients cache directories and use them to seed their router lists
   at startup.  This means clients have a datadir again.
 - Introduce a global_write_bucket.  We need to respond better to exhausting
   it.
 - Remove the last vestiges of LinkPadding and TrafficShaping.
 - Configuration infrastructure support for warning on obsolete options.
 - Refactor directory header parsing to use smartlist_split_string.
 - Respond to content-encoding headers by trying to uncompress as appropriate.
 - Reply with a deflated directory when a client asks for "dir.z".
   (We could use allow-encodings instead, but allow-encodings isn't
   specified in HTTP 1.0.)


svn:r2335
2004-09-08 06:52:33 +00:00
Nick Mathewson
bda41ba3fd Use new split function and strcmpstart correctly
svn:r2327
2004-09-02 18:39:59 +00:00
Roger Dingledine
79df0aa18a when picking unverified routers, skip those with bad uptime or
bad bandwidth, depending on what properties you care about


svn:r2302
2004-08-20 21:34:36 +00:00
Roger Dingledine
8ddc029d07 if options.FascistFirewall but none are running on port 80, try
the others before giving up.


svn:r2293
2004-08-18 21:13:58 +00:00
Roger Dingledine
b500104cbe tolerate old 0.0.7 clients that demand a certain ip:port for a router
even though it's moved on to another one.

also reduce some log verbosity.


svn:r2288
2004-08-18 11:20:15 +00:00
Roger Dingledine
3937ecfaae when we try to exclude our routerinfo from being picked in the
path, it fails because we're using a pointer to the routerinfo we
generate, not a pointer to the routerinfo in the routerlist. so look
up the right one and use that.


svn:r2286
2004-08-18 10:32:50 +00:00
Roger Dingledine
b885db033e remove crazy notion that clique_mode() means we are
already connected to everybody we could be connected to.


svn:r2283
2004-08-18 09:07:11 +00:00
Roger Dingledine
6d661d1bc0 bugfix: make intro circuits work again
svn:r2280
2004-08-18 07:53:43 +00:00
Roger Dingledine
b294a037a4 choose exit nodes by bandwidth too
svn:r2274
2004-08-18 06:10:12 +00:00
Roger Dingledine
aa1e518446 when a verified routerinfo arrives with a new key than the previous
verified routerinfo with that name, close connections to the obsolete
key to make way for connections to the new key.


svn:r2257
2004-08-17 08:00:23 +00:00
Roger Dingledine
9e5fc55564 now that we parse router->uptime, make use of it
svn:r2251
2004-08-17 06:42:30 +00:00
Roger Dingledine
ee23b7a470 use unverified routers in the desired positions
svn:r2249
2004-08-17 06:27:32 +00:00
Nick Mathewson
590cd621f8 Clean up last patch; implement (mostly) proper handling for verified/unverified name collisions.
svn:r2248
2004-08-17 06:06:05 +00:00
Roger Dingledine
76eadc6f0a if a router claim huge bandwidth, don't believe it
svn:r2245
2004-08-17 02:00:36 +00:00
Nick Mathewson
0b91fd1cbe Add a generic Comma-separated-value config type, and a FirewallPorts option to tell FascistFirewall which ports are open. (Defaults to 80,443)
svn:r2244
2004-08-16 20:47:00 +00:00
Nick Mathewson
416653271a Implement strict{entry|exit}nodes config options
svn:r2236
2004-08-15 20:14:44 +00:00
Roger Dingledine
cd3da3fc12 o clients choose nodes proportional to advertised bandwidth
o and/or while avoiding unreliable nodes, depending on goals
o 'fascistfirewall' option to pick dirservers on port 80 and ORs on
  port 443.
o if a begin failed due to exit policy, but we believe the IP should                       have been allowed, switch that router to exitpolicy reject *:* until                     we get our next directory.


svn:r2231
2004-08-15 08:15:12 +00:00
Roger Dingledine
b2c7b5adfb fix a race condition in 008pre2: don't try to extend onto a connection
that's still handshaking.

for servers in clique mode, require the conn to be open before you'll
choose it for your path.


svn:r2198
2004-08-08 10:32:36 +00:00
Roger Dingledine
fb4b804c2c Don't warn about being unverified if you're not in the running-routers
list at all.


svn:r2193
2004-08-07 09:01:56 +00:00
Nick Mathewson
bc24c3f47d Allow multiple ORs with same nickname in routerlist
svn:r2187
2004-08-07 03:38:07 +00:00
Roger Dingledine
810ebc80d0 be willing to expire routers that have a dirport open
it's just the authoritative dirservers we want to not forget


svn:r2173
2004-08-06 22:47:41 +00:00
Roger Dingledine
e95ae1c9ad let purging routerinfos and descriptors take an age argument
svn:r2171
2004-08-06 22:15:25 +00:00
Nick Mathewson
78f12ffcca Bugfix: "Okay, I just shut down like you told me. Now let me verify your signature." Also fix error message when running over-new version.
svn:r2135
2004-08-04 02:35:06 +00:00
Roger Dingledine
a939796919 put a comment by routerlist_update_from_runningrouters() to
remind me that it's not used yet


svn:r2132
2004-08-04 01:25:21 +00:00
Roger Dingledine
a328aab316 clean whitespace and tabs
svn:r2115
2004-07-22 23:21:12 +00:00
Nick Mathewson
1391eafe67 Chek for overlong nicknames in add_nickname_list_to_smartlist
svn:r2109
2004-07-22 21:36:03 +00:00
Nick Mathewson
7b4865ec33 Add notion of "longest nickname-or-hex-digest-with-$"
svn:r2108
2004-07-22 21:31:04 +00:00
Nick Mathewson
0c990259de Add noisy debug log to hunt for bug in router_update_status_from_smartlist
svn:r2107
2004-07-22 21:20:23 +00:00
Nick Mathewson
33fe5e362f Never use time(NULL) as assumed publication time for a directory.
svn:r2105
2004-07-22 20:30:02 +00:00
Roger Dingledine
b48cdc9d40 populate router_get_my_routerinfo()->is_verified
svn:r2097
2004-07-22 06:03:53 +00:00
Roger Dingledine
ce7fcd110c solve the authdirserver initialization precedence problem
svn:r2085
2004-07-21 18:53:56 +00:00
Roger Dingledine
fd0fcc89e9 disallow picking unverified routers in circuits
(for now)


svn:r2082
2004-07-21 09:35:24 +00:00
Roger Dingledine
ecc9009256 authdirservers accept the uploading of unverified descriptors.
fix a bunch of bugs in router_update_status_from_smartlist()
(Nick, did I get them all, or was there a trickier one still hiding?)


svn:r2081
2004-07-21 09:13:12 +00:00
Roger Dingledine
3e97c12f24 rearrange to prepare to solve the authdirserver initialization
precedence problem. doesn't actually solve it yet.


svn:r2079
2004-07-21 07:50:06 +00:00
Nick Mathewson
d858a9e990 Remember list of digests for trusted dirservers; use this list to tell whether you are a trusted dirserver
svn:r2064
2004-07-20 20:09:59 +00:00
Roger Dingledine
f54224ab35 clients can now pick non-authdirservers for fetching directories.
servers still pick authdirservers, but they never pick themselves.

but picking themselves for fetching rend descs is ok.


svn:r2059
2004-07-20 06:44:16 +00:00