Commit Graph

22577 Commits

Author SHA1 Message Date
Roger Dingledine
c040bbe053 cleanup: start enforcing hton and ntoh on stuff sent over the network
this is a checkpoint before i fix the fact that port is always kept in
network order -- which makes no sense, because network order is different
on different machines, which is the whole point.


svn:r81
2002-08-24 06:58:25 +00:00
Roger Dingledine
3a7f3ba348 cleanup: don't use size_t when you mean int
size_t is what you get back from sizeof(). no more, no less.


svn:r80
2002-08-24 04:59:21 +00:00
Roger Dingledine
d8c0d21b49 linkpadding is now off by default.
svn:r79
2002-08-23 06:49:43 +00:00
Roger Dingledine
5414786cf1 changed path selection so it's actually random again
svn:r78
2002-08-23 05:27:50 +00:00
Roger Dingledine
08adaa4b46 cleaned up new_route()
now it deals gracefully with too few connected routers (i think)


svn:r77
2002-08-23 03:35:44 +00:00
Matej Pjafjar
01aadefbfc Changed crypto calls to go through common/crypto.[hc] instead of calling OpenSSL directly.
svn:r76
2002-08-22 07:30:03 +00:00
Matej Pjafjar
ac942bb365 Updated to use crypto.h instead of OpenSSL.
svn:r75
2002-07-25 08:18:05 +00:00
Matej Pjafjar
e01522bbed Added the crypto abstraction to libor. Need to test and change the code to use this instead of OpenSSL.
svn:r74
2002-07-25 08:17:22 +00:00
Matej Pjafjar
5af5a96343 Beginnings of a crypto abstraction layer.
svn:r73
2002-07-24 14:02:39 +00:00
Roger Dingledine
c42c2b6640 only choose routers for the onion that are currently connected to us
svn:r72
2002-07-22 04:38:36 +00:00
Roger Dingledine
cd0760ddda Code cleaned up to be less noisy
svn:r71
2002-07-22 04:08:37 +00:00
Roger Dingledine
a303325dca More reasonable CoinWeight, now that we can handle large paths
svn:r70
2002-07-22 04:08:15 +00:00
Roger Dingledine
d1d5bb9b15 Include src/config/ in the 'make dist' tarball
svn:r69
2002-07-22 04:07:57 +00:00
Roger Dingledine
86eb8db0f0 Updated HACKING and README docs
HACKING now explains bandwidth throttling, congestion control,
and router twins. Read it and see if it makes sense.


svn:r68
2002-07-22 04:07:34 +00:00
Roger Dingledine
61dc00bcaa bugfixes: don't hang waiting for new children to die; accept HTTP/1.1
svn:r67
2002-07-20 02:01:18 +00:00
Roger Dingledine
1c3b823a82 bugfix: create_onion now works with routelen>2
svn:r66
2002-07-20 01:59:28 +00:00
Roger Dingledine
684d50b139 added a note on openssl and popt dependencies
svn:r65
2002-07-19 21:02:39 +00:00
Roger Dingledine
5c0edf6d54 Folded cell.? into src/or
svn:r64
2002-07-19 18:48:28 +00:00
Roger Dingledine
fc0e2a34ec slightly less noisy
svn:r63
2002-07-19 18:48:19 +00:00
Roger Dingledine
fee55dd4a3 minor cleanups in config files
svn:r62
2002-07-19 18:48:03 +00:00
Roger Dingledine
61d10b309f Folded cell.? into src/or
Removed more obsolete files


svn:r61
2002-07-19 18:47:04 +00:00
Roger Dingledine
926081ad69 revised todo
svn:r60
2002-07-19 16:25:53 +00:00
Matej Pjafjar
f617a4e733 Test suite for onion.c - currently tests encrypt_onion() and decrypt_onion().
svn:r59
2002-07-19 14:08:44 +00:00
Roger Dingledine
5fc0bcf303 initial versions of README, for new users getting up to speed, and HACKING,
for people wanting to play with the code. the hacking doc is still incomplete.


svn:r58
2002-07-19 08:13:42 +00:00
Roger Dingledine
ab2218bb46 moria:9004 is now a twin to town-square:9004
svn:r57
2002-07-19 00:33:31 +00:00
Roger Dingledine
2147898577 Implemented router twins
I modified new_route so we don't pick twins back-to-back in the path.

I also had to patch my previous uses of connection_twin_get_by_addr_port()
because they assumed that "addr" and "port" would be the same for a twin
as for the original router.


svn:r56
2002-07-18 23:44:57 +00:00
Roger Dingledine
0a8d58138d changes to support sendme cells
svn:r55
2002-07-18 06:38:32 +00:00
Roger Dingledine
267434bdea Implemented congestion control
Servers are allowed to send 100 cells initially, and can't send more until
they receive a 'sendme' cell from that direction, indicating that they
can send 10 more cells. As it currently stands, the exit node quickly
runs out of window, and sends bursts of 10 whenever a sendme cell gets
to him. This is much much much faster (and more flexible) than the old
"give each circuit 1 kB/s and hope nothing overflows" approach.

Also divided out the connection_watch_events into stop_reading,
start_writing, etc. That way we can control them separately.


svn:r54
2002-07-18 06:37:58 +00:00
Roger Dingledine
ccdef66b68 new link padding scheme
we're now much more robust when bandwidth varies: instead of forcing a
fixed bandwidth on the link, we instead use what the link will give us,
up to our bandwidth.


svn:r53
2002-07-16 18:24:12 +00:00
Andrei Serjantov
53cec4caef Put in a note in README to explain how to compile (I had to wade
through the cvs messages), and added my router on mosg.cl.cam.ac.uk to
the list of routers.


svn:r52
2002-07-16 16:18:16 +00:00
Roger Dingledine
c951c6f186 new config files, some bugfixes
svn:r51
2002-07-16 02:12:58 +00:00
Roger Dingledine
117cbeeaaf Implemented link padding and receiver token buckets
Each socket reads at most 'bandwidth' bytes per second sustained, but
can handle bursts of up to 10*bandwidth bytes.

Cells are now sent out at evenly-spaced intervals, with padding sent
out otherwise. Set Linkpadding=0 in the rc file to send cells as soon
as they're available (and to never send padding cells).

Added license/copyrights statements at the top of most files.

router->min and router->max have been merged into a single 'bandwidth'
value. We should make the routerinfo_t reflect this (want to do that,
Mat?)

As the bandwidth increases, and we want to stop sleeping more and more
frequently to send a single cell, cpu usage goes up. At 128kB/s we're
pretty much calling poll with a timeout of 1ms or even 0ms. The current
code takes a timeout of 0-9ms and makes it 10ms. prepare_for_poll()
handles everything that should have happened in the past, so as long as
our buffers don't get too full in that 10ms, we're ok.

Speaking of too full, if you run three servers at 100kB/s with -l debug,
it spends too much time printing debugging messages to be able to keep
up with the cells. The outbuf ultimately fills up and it kills that
connection. If you run with -l err, it works fine up through 500kB/s and
probably beyond. Down the road we'll want to teach it to recognize when
an outbuf is getting full, and back off.


svn:r50
2002-07-16 01:12:15 +00:00
Roger Dingledine
ffc545311b removed args.c (bruce's popt stuff makes it obsolete)
svn:r49
2002-07-15 21:13:40 +00:00
Bruce Montrose
4aeca322b4 bug-fix. poptReadDefaultOptions() should find and load ~/.<cmd>rc files now.
svn:r48
2002-07-15 19:05:12 +00:00
Bruce Montrose
52311e1b78 corrected some string literals
svn:r47
2002-07-15 16:42:27 +00:00
Roger Dingledine
f6e2ed2316 removed mention of src/op/ from configure
svn:r46
2002-07-12 22:22:25 +00:00
Roger Dingledine
016691b5b1 removing the obsolete op/ code
svn:r45
2002-07-12 18:34:44 +00:00
Bruce Montrose
be25ffd5d7 removed loglevel from global namespace. severity level is set using log() with a NULL format argument now. example: log(LOG_ERR,NULL);
svn:r44
2002-07-12 18:14:17 +00:00
Bruce Montrose
d00c39231d integrated use of getoption() into OR. removed getargs() and getconfig().
svn:r43
2002-07-12 17:12:08 +00:00
Bruce Montrose
aaca91109f finishing touches. think its ready for integration now.
svn:r42
2002-07-11 19:03:44 +00:00
Bruce Montrose
3ee59f2325 added new option GlobalRole to getoptions()
svn:r41
2002-07-11 18:38:16 +00:00
Bruce Montrose
4c65f31340 cleaned up some, added validation to getoptions()
svn:r40
2002-07-11 14:50:26 +00:00
Roger Dingledine
eb51576abf fixed the deadlock bug
this was another bug i introduced with the 5 july patch.
i should look at that patch more closely. :)


svn:r39
2002-07-10 20:17:27 +00:00
Roger Dingledine
391d23c428 it wouldn't return when the next router isn't up, leading to later seg fault
i'm going to take a shower, and then solve the deadlocking problem mat found


svn:r38
2002-07-10 19:05:13 +00:00
Roger Dingledine
db15776bdd a patch for mat's patch
svn:r37
2002-07-10 18:39:33 +00:00
Bruce Montrose
6a58057a6e Added usage display on error.
svn:r36
2002-07-10 12:37:49 +00:00
Matej Pjafjar
bb01f59de9 Bugfix : connection_exit_process_data_cell() quit after receiving the SS, without waiting for the destination addr/port
svn:r35
2002-07-10 12:37:37 +00:00
Matej Pjafjar
f07ade3046 getrouters() changed so that a router ignores its own entry in the router list
svn:r34
2002-07-10 12:35:59 +00:00
Matej Pjafjar
ce934e4974 Bugfix - the list of valid characters in a filename didn't include an n .
svn:r33
2002-07-10 10:11:13 +00:00
Bruce Montrose
934ca320ff added file to codebase
svn:r32
2002-07-09 19:57:38 +00:00