Commit Graph

518 Commits

Author SHA1 Message Date
Roger Dingledine
3cef60a0f7 fix a minor memory leak
svn:r3704
2005-02-27 22:08:01 +00:00
Nick Mathewson
6e6d95b3db Change from inet_ntoa to a threadproof tor_inet_ntoa.
svn:r3656
2005-02-22 08:18:36 +00:00
Nick Mathewson
60f234f42b Add more functions to free things to help dmalloc allong.
svn:r3613
2005-02-10 23:18:39 +00:00
Roger Dingledine
d2400a5afd Introduce a notion of 'internal' circs, which are chosen without regard
to the exit policy of the last hop. Intro and rendezvous circs must
be internal circs, to avoid leaking information. Resolve and connect
streams can use internal circs if they want.

New circuit pooling algorithm: make sure to have enough circs around
to satisfy any predicted ports, and also make sure to have 2 internal
circs around if we've required internal circs lately (with high uptime
if we've seen that lately).

Split NewCircuitPeriod config option into NewCircuitPeriod (30 secs),
which describes how often we retry making new circuits if current ones
are dirty, and MaxCircuitDirtiness (10 mins), which describes how long
we're willing to make use of an already-dirty circuit.

Once rendezvous circuits are established, keep using the same circuit as
long as you attach a new stream to it at least every 10 minutes. (So web
browsing doesn't require you to build new rend circs every 30 seconds.)

Cannibalize GENERAL circs to be C_REND, C_INTRO, S_INTRO, and S_REND
circ as necessary, if there are any completed ones lying around when
we try to launch one.

Re-instate the ifdef's to use version-0 style introduce cells, since
there was yet another bug in handling version-1 style. We'll try switching
over again after 0.0.9 is obsolete.

Bugfix: when choosing an exit node for a new non-internal circ, don't take
into account whether it'll be useful for any pending x.onion addresses --
it won't.

Bugfix: we weren't actually publishing the hidden service descriptor when
it became dirty. So we only published it every 20 minutes or so, which
means when you first start your Tor, the hidden service will seem broken.


svn:r3360
2005-01-17 18:13:09 +00:00
Roger Dingledine
dcf8b18215 when the hidden service launches a rendezvous circ, make sure it
provides good uptime if any virtual_port of the service wants that.


svn:r3355
2005-01-14 04:35:53 +00:00
Roger Dingledine
22f7934718 start generating version 1 style introduce cells
svn:r3352
2005-01-13 20:21:11 +00:00
Roger Dingledine
84c81e0783 Annotate circuits w/ whether they aim to contain high uptime nodes and/or
high capacity nodes. When building circuits, choose appropriate nodes.

New config option LongLivedPorts to indicate application streams
that will want high uptime circuits.

When attaching a stream to a circuit, pay attention to its requirements.

This means that every single node in an intro rend circuit, not just
the last one, will have a minimum uptime.

Boost the min uptime from an hour to 24 hours.


svn:r3339
2005-01-12 04:58:23 +00:00
Roger Dingledine
e93077c82a fix a minor leak for people offering hidden services
svn:r3113
2004-12-07 17:49:14 +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
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
22dba27d8d Normalize a few more kinds of whitespace. We now dislike:
- func (args)
  - if (x){
This doesn't normalize if(x), for(x); while(x), and friends.


svn:r2943
2004-11-22 23:28:26 +00:00
Roger Dingledine
4b76fe8036 Break DirFetchPostPeriod into:
- DirFetchPeriod for fetching full directory,
  - StatusFetchPeriod for fetching running-routers,
  - DirPostPeriod for posting server descriptor,
  - RendPostPeriod for posting hidden service descriptors.

Also make sure the hidden service descriptors are at a random
offset from each other, to hinder linkability.


svn:r2889
2004-11-15 09:05:54 +00:00
Nick Mathewson
180e0a9326 Make check_private_dir trimodal (check/create/ignore), not bimodal (create/ignore).
svn:r2733
2004-11-09 07:12:31 +00:00
Nick Mathewson
cb5de85585 Separate validate from activate. Document undocumented stuff in config.c.
svn:r2711
2004-11-08 23:12:40 +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
85c79ffbc7 canonicalize "src" and "dest" arg order in crypto.c (and others)
svn:r2644
2004-11-02 02:28:51 +00:00
Roger Dingledine
b390786582 Hidden service operators had a bug in version 1 style INTRODUCE cells
that made them fail. Fix the bug, and revert clients to use version 0
until 0.0.9pre4 is obsolete.


svn:r2641
2004-11-01 21:46:27 +00:00
Roger Dingledine
51e16233cb Fix paul gardner's assert bug. Turns out when circuit_launch_by_nickname()
failed at the first hop, it would try to relaunch another circ right
then, even though the first circuit hadn't been populated yet with its
pending_final_cpath.


svn:r2624
2004-10-30 05:04:52 +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
Roger Dingledine
20cdc0a517 fix a memory leak
svn:r2587
2004-10-24 23:09:48 +00:00
Roger Dingledine
defe1e5f3c start generating new version of introduce1 cells
svn:r2586
2004-10-24 19:08:07 +00:00
Roger Dingledine
de65052312 don't assert multiple things in the same tor_assert()
svn:r2544
2004-10-16 22:14:52 +00:00
Nick Mathewson
47dc024f7e Change interface of parse_addr_port() to return address in host order, since most users seem to want that.
svn:r2542
2004-10-16 21:53:30 +00:00
Roger Dingledine
572714a458 bugfix: parse_addr_port() bites us again -- it returns addr in network order.
svn:r2508
2004-10-14 08:45:07 +00:00
Nick Mathewson
1c9426d6e0 Build without warnings on mac gcc 3.3
svn:r2487
2004-10-14 03:18:14 +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
f14117bffd fix warning about always-false comparison; detect too-large realport better
svn:r2465
2004-10-13 19:53:34 +00:00
Roger Dingledine
0b4d3c4df7 parse HttpProxy address in config
fix a potential confusion in fetch_from_buf_http()
make all our int config options non-negative
better bounds checking on options that are ports


svn:r2456
2004-10-12 20:22:09 +00:00
Nick Mathewson
e7241044e8 Better bounds checking on parsed ints
svn:r2450
2004-10-12 19:01:53 +00:00
Nick Mathewson
0383afac9a Use parse_addr_port() function instead of ad-hoc variants
svn:r2441
2004-10-12 15:52:09 +00:00
Roger Dingledine
802b203ff1 fix a rare seg fault for people running hidden services on
intermittent connections


svn:r2353
2004-09-20 03:07:11 +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
6de61bd694 Revert dumb think-o. Just because _some_ INTRODUCE2 cells are now longer,
doesn't mean we should raise the _minimum_ size.


svn:r2273
2004-08-18 05:05:58 +00:00
Nick Mathewson
196e6c1cc2 Support new INTRODUCE2 cell format
svn:r2270
2004-08-18 04:48:59 +00:00
Roger Dingledine
ee23b7a470 use unverified routers in the desired positions
svn:r2249
2004-08-17 06:27:32 +00:00
Nick Mathewson
6514eb5d44 Update to new choose_random_node interface.
svn:r2239
2004-08-15 20:31:11 +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
Nick Mathewson
380f32f07d hex_encode is obsoleted by base16_encode, and never actually worked in the first place. (Thanks to Timo Lindfors for noticing the never-actually-worked part.)
svn:r2175
2004-08-07 01:03:33 +00:00
Roger Dingledine
aebec8ab9e stop using atexit() to remove our pid, since it's called
immediately when we daemonize.

also drop our retry period for hidserv desc uploads from 10m to 5m


svn:r2111
2004-07-22 22:15:36 +00:00
Roger Dingledine
7459d067a5 now base16_encode() and base32_encode() can't ever fail
svn:r2103
2004-07-22 08:30:06 +00:00
Nick Mathewson
7d8de8cd10 More digest/nickname fixes
svn:r2000
2004-07-02 23:40:03 +00:00
Roger Dingledine
011ccbbf8d crank up some of our constants, for better scalability
svn:r1938
2004-06-02 19:44:41 +00:00
Roger Dingledine
1c21a02b90 router_choose_random_node() was ignoring its routerlist argument.
so now we don't pass it one.


svn:r1911
2004-05-20 19:12:28 +00:00
Nick Mathewson
7511fbf993 Resolve some XXXs
svn:r1889
2004-05-18 15:35:21 +00:00
Nick Mathewson
a782b83c28 Only try to launch a fixed number of intro circuits for a service per 15-minute period or before all of the intro circuits succeed, whichever comes first
svn:r1883
2004-05-18 01:53:53 +00:00
Roger Dingledine
ef561c0e42 Break files apart into more modules
* \file circuitbuild.c
 * \brief The actual details of building circuits.

 * \file circuitlist.c
 * \brief Manage the global circuit list.

 * \file circuituse.c
 * \brief Launch the right sort of circuits, attach streams to them.

 * \file connection_edge.c
 * \brief Handle edge streams.

 * \file onion.c
 * \brief Functions to queue create cells, and handle onionskin
 * parsing and creation.

 * \file relay.c
 * \brief Handle relay cell encryption/decryption, plus packaging and
 * receiving from circuits.


svn:r1863
2004-05-13 07:24:49 +00:00
Roger Dingledine
5ba9235873 clean up directory.c API
svn:r1860
2004-05-12 23:48:57 +00:00
Nick Mathewson
9c3fba5c3b Not every RSA decrypt should warn on failure.
svn:r1853
2004-05-12 19:30:28 +00:00
Nick Mathewson
720281b32e Close rogue <b>s
svn:r1838
2004-05-10 07:27:29 +00:00
Nick Mathewson
81922a125c More doxygenation.
svn:r1832
2004-05-10 04:34:48 +00:00
Roger Dingledine
c6d4a00c5f more doxygen markup
plenty more remains


svn:r1824
2004-05-09 16:47:25 +00:00
Nick Mathewson
682a805092 Comments for nearly all non-tricky files
svn:r1796
2004-05-05 21:32:43 +00:00
Roger Dingledine
ac4cb9bdd1 fix a seg fault (whoops)
svn:r1755
2004-04-30 16:35:48 +00:00
Nick Mathewson
7055f837ab Make Tor build on win32 with VC6 without warnings.
svn:r1739
2004-04-28 20:13:21 +00:00
Roger Dingledine
28f034e10a now assume all routers support rendezvous cells
svn:r1699
2004-04-25 21:32:04 +00:00
Roger Dingledine
25d54257fb use tor_assert
remove obsolete BUF_OK macro


svn:r1697
2004-04-25 20:37:37 +00:00
Roger Dingledine
ed24a4f807 fix a pair of duplicate mark-for-closes
svn:r1643
2004-04-16 14:26:23 +00:00
Roger Dingledine
a0a6ed85d1 more useful logging for rend services and clients
svn:r1641
2004-04-16 11:48:03 +00:00
Nick Mathewson
f6dd710aff Strings need room for a NUL.
svn:r1630
2004-04-15 02:02:46 +00:00
Nick Mathewson
3f352719f3 Add a missing return -1
svn:r1629
2004-04-15 01:23:43 +00:00
Roger Dingledine
b51561f7fb prune abandoned circs better
add debugging info for the bug weasel found


svn:r1626
2004-04-14 23:52:29 +00:00
Nick Mathewson
37255d24bc Retry non-final-hop rendezvous failures
svn:r1625
2004-04-14 21:40:50 +00:00
Nick Mathewson
ddd45a7c0a Do not segfault on missing intro points.
svn:r1616
2004-04-14 04:19:12 +00:00
Nick Mathewson
11ca973d26 Mark service descriptors as dirty when we have lost an intro point
svn:r1608
2004-04-13 17:20:41 +00:00
Nick Mathewson
a2ece0fc08 Separate "start-establishing-introduction" from "upload descriptors"; only upload descriptors containing fully established intro points.
svn:r1607
2004-04-13 17:16:47 +00:00
Roger Dingledine
e0ce205a76 clean up circuit rebuilding some; fix some bugs we hadn't hit yet
svn:r1606
2004-04-13 05:20:52 +00:00
Nick Mathewson
9cd163f6ff Have find_intro_circuit return non-open circs
svn:r1600
2004-04-13 01:15:06 +00:00
Nick Mathewson
1dbf61e7e6 Use service id instead of hex id in rendservice.c log messages. Rendcommon and rendclient will follow tomorrow.
svn:r1591
2004-04-12 05:12:50 +00:00
Nick Mathewson
4e1b65f53d Dump introduction point status on kill -USR1
svn:r1584
2004-04-09 20:02:16 +00:00
Nick Mathewson
bb46d782ab Be endianly-correct for rendezvous functionality
svn:r1565
2004-04-08 04:47:39 +00:00
Roger Dingledine
15de201041 log which intro points we picked
svn:r1564
2004-04-08 04:36:13 +00:00
Nick Mathewson
14e31fbd71 Use CIRCUIT_IS_ORIGIN in favor of boolean circ->cpath
svn:r1555
2004-04-08 02:24:06 +00:00
Nick Mathewson
46c82e7dbe Set rend_query on exiting streams
svn:r1551
2004-04-08 02:10:43 +00:00
Roger Dingledine
584350feb8 don't log info when we asked for log warn
svn:r1548
2004-04-08 01:59:31 +00:00
Nick Mathewson
eaf7c61ebc Do not crash when no desc is found
svn:r1546
2004-04-08 01:54:02 +00:00
Roger Dingledine
63cde97253 don't try to build intro circs until you've fetched the directory
svn:r1541
2004-04-07 22:48:06 +00:00
Nick Mathewson
b1537e7943 Rebuild and re-upload service descriptors every 15 minutes
svn:r1537
2004-04-07 22:06:54 +00:00
Nick Mathewson
8169da5c30 Don't use Tor version 0.0.5 for intro/rendezvous points. (We don't need
to worry about 0.0.4 or earlier, because nobody is running them any more.)


svn:r1533
2004-04-07 21:36:03 +00:00
Nick Mathewson
f24519e4b9 Set correct address and port mappings on outgoing rendezvous connections
svn:r1513
2004-04-06 22:05:49 +00:00
Roger Dingledine
d473cf7ee9 set the circ windows on the middle hop of the rend circs
svn:r1511
2004-04-06 21:25:11 +00:00
Nick Mathewson
8b371c2aa5 router_choose_random_node wants a smartlist of routers, not of nicknames.
svn:r1510
2004-04-06 21:19:59 +00:00
Nick Mathewson
ef438b894c Set handshake_state to NULL before appending cpath hops
svn:r1505
2004-04-06 20:23:58 +00:00
Nick Mathewson
257d509b91 Document stuff, reduce magic numbers, add emacs magic
svn:r1502
2004-04-06 03:44:36 +00:00
Roger Dingledine
6e6cbaad95 fix the bob-can't-decode-relays bug
now alice can send the begin and bob can receive it.


svn:r1499
2004-04-05 23:40:59 +00:00
Nick Mathewson
283593ca1b Use correct payload lengths when sending RENDEZVOUS1 cells
svn:r1494
2004-04-05 21:39:47 +00:00
Nick Mathewson
536a9b6c28 Add a missing offset
svn:r1492
2004-04-05 21:31:53 +00:00
Nick Mathewson
5033c366e1 Use symbolic constants; make padding types match.
svn:r1491
2004-04-05 21:15:14 +00:00
Nick Mathewson
04e8dc9026 Implement response to RENDEZVOUS2 cell.
svn:r1490
2004-04-05 20:53:50 +00:00
Nick Mathewson
2d3aea40a4 It's amazing how wrong things look when you invert the booleans on your
sanity checks.


svn:r1487
2004-04-05 20:34:58 +00:00
Nick Mathewson
7b1939db2d Slightly more helpful msg on mismatched service pk digest in INTRODUCE2 cell
svn:r1486
2004-04-05 20:33:29 +00:00
Roger Dingledine
27126e5007 oaep uses 42 more bytes -- stop clobbering buffers
also maybe fix some constants here and there -- nick?


svn:r1484
2004-04-05 18:22:00 +00:00
Nick Mathewson
41387bea08 Expect a 20-byte nul-padded-and-terminated nickname
svn:r1480
2004-04-05 17:28:48 +00:00
Nick Mathewson
1e2b008700 Add some temporary log calls to try to debug the "Hash of session info was not as expected" problem
svn:r1479
2004-04-05 17:20:57 +00:00
Nick Mathewson
a9813f0210 Implement acks
svn:r1470
2004-04-03 04:55:22 +00:00
Nick Mathewson
d93ff0b82f Handle rendezvous relay cells
svn:r1464
2004-04-03 03:37:11 +00:00
Nick Mathewson
ba196a9d17 Use (set|get)_uint(16|32) in lieu of memcpy where reasonable.
svn:r1462
2004-04-03 03:07:25 +00:00
Nick Mathewson
137b577bbd Refactor the heck out of crypto interface: admit that we will stick with one ciphersuite at a time, make const things const, and stop putting openssl in the headers.
svn:r1458
2004-04-03 02:40:30 +00:00
Roger Dingledine
4e996a4ce8 tabs
svn:r1456
2004-04-03 02:14:20 +00:00
Nick Mathewson
fc4d15baf6 Hide smartlist internals
svn:r1451
2004-04-03 00:58:54 +00:00
Nick Mathewson
2bc2f1ed03 Finish renaming rend_service field
svn:r1447
2004-04-02 23:44:46 +00:00
Nick Mathewson
e8345bfced refactor; start adding debugging logs to midpoint rend stuff
svn:r1445
2004-04-02 23:30:54 +00:00
Nick Mathewson
25a9bc594f Finish missing comment :p
svn:r1444
2004-04-02 23:04:10 +00:00
Nick Mathewson
08d748b6b3 Implement rennd_services_init
svn:r1443
2004-04-02 23:01:00 +00:00
Roger Dingledine
f34e6da3e7 now circuit_get_newest returns an appropriate circ for your purpose
connection_ap_handshake_attach_circuit attaches to a circ of the
right purpose

add a skeletal rendclient.c


svn:r1441
2004-04-02 22:23:15 +00:00
Nick Mathewson
4cb21bab48 Make preferred/excluded intro points configurable
svn:r1440
2004-04-02 22:06:46 +00:00
Nick Mathewson
a981c4099a Implement midpoint functionality for rendezvous points.
svn:r1439
2004-04-02 21:56:52 +00:00
Nick Mathewson
79fc52170e For hidden services: handle INTRODUCE2, send ESTABLISH_INTRO, RENDEZVOUS1.
Also:
- Add a pending final cpath element to build_state
- Rename S_RENDEZVOUSING to S_CONNECT_REND
- Add [CS]_REND_JOINED
- Split out logic to initialize cpath crypto objects.
- Have circuits/cpaths remember the KH element from their handshake, so they
  can use it for other authentication later. (As in ESTABLISH_INTRO)


svn:r1438
2004-04-01 22:21:01 +00:00
Nick Mathewson
103b8ead40 Finish implementing what-bob-does-on-INTRODUCE2
svn:r1432
2004-04-01 20:05:57 +00:00
Roger Dingledine
cc3c4245cb let the circuit-launcher choose the exit node (if he wants)
svn:r1428
2004-04-01 03:44:49 +00:00
Nick Mathewson
9feb44d3c4 Make it compile.
svn:r1427
2004-04-01 03:43:54 +00:00
Nick Mathewson
c671b10695 Add a (also fragmentary) function to handle introduction requests
svn:r1426
2004-04-01 03:34:05 +00:00
Roger Dingledine
d01497cf3c outline what bob does to initialize his hidden services
let circuit_launch_new return the circ it just made


svn:r1424
2004-04-01 03:23:28 +00:00
Nick Mathewson
28adda81e6 Add missing file
svn:r1411
2004-03-31 21:54:56 +00:00