Commit Graph

173 Commits

Author SHA1 Message Date
Roger Dingledine
5ecd6b6bad make fetch_from_buf_http malloc its strings rather
than use fixed-size strings

reorganize directory_handle_command so it'll be easier to do more with
our directory servers


svn:r950
2003-12-17 09:42:28 +00:00
Roger Dingledine
aba237e3e2 end-to-end integrity checking now works
initialize digests from shared secrets at handshake
make circuit_send_next_onion_skin use connection_edge_send_command


svn:r948
2003-12-17 05:58:30 +00:00
Roger Dingledine
21cc01299b infrastructure for integrity-checks in relay cells
make circuit_consider_sending_sendme use connection_edge_send_command
fix endian bug in relay length handling (maybe)


svn:r946
2003-12-16 22:56:50 +00:00
Roger Dingledine
4e50f79b11 resolve an edge case in get_unique_circ_id_by_conn
svn:r944
2003-12-16 20:45:10 +00:00
Roger Dingledine
8712a30e91 move cell size to 512 bytes
move length to 2 bytes, put it in the relay header
remove 4 reserved bytes in cell
add 4 bytes to relay header for the integrity check


svn:r942
2003-12-16 09:48:17 +00:00
Roger Dingledine
961ecf7abf add H(K|1) to the onionskin reply
verify it at the client end
abstract the onionskin handshake lengths

breaks backward compatibility (again)


svn:r941
2003-12-16 08:21:58 +00:00
Nick Mathewson
4885e90490 Make compile warning-free on cygwin
svn:r936
2003-12-15 21:35:52 +00:00
Roger Dingledine
08534a6271 start tracking the 'It appears I've already sent the end' warning
svn:r932
2003-12-14 08:32:14 +00:00
Roger Dingledine
05c05d6444 more friendly warning when there are too many dns workers
svn:r919
2003-12-14 04:19:12 +00:00
Roger Dingledine
7a3a3ae1df bugfix: a circuit that immediately failed still counts as a failed circuit
svn:r905
2003-12-13 07:42:18 +00:00
Roger Dingledine
9c66e2bf9a if >=2 circs are being built that handle a given stream,
no need to have new circs handle it too.


svn:r896
2003-12-12 23:03:25 +00:00
Roger Dingledine
38ce03d0e7 close the circuit when we get a truncated cell
svn:r893
2003-12-09 02:06:58 +00:00
Roger Dingledine
d172fdd300 fix vicious bug in connection_ap_attach_pending that caused it to
never work.
fix vicious bug in choose_good_exit_server that caused it to *skip over*
  pending circuits, and look only at *non-pending circuits*, when choosing
  a good exit node for the new circuit.
bugfix: remove incorrect asserts in circuit_get_newest()


svn:r876
2003-12-03 09:50:02 +00:00
Roger Dingledine
975bb68010 simplify: options.OnionRouter==1 iff options.ORPort>0
svn:r857
2003-11-20 17:49:45 +00:00
Roger Dingledine
f5994416c4 bugfix and cleanups
svn:r848
2003-11-19 13:12:43 +00:00
Nick Mathewson
fd07872a72 Separate failure-count tracking from circuit-launching.
Increment failure counts only when circuits close without having been built.
Reset failure counts only on the second, and when circuits are done building.


svn:r847
2003-11-19 02:22:52 +00:00
Roger Dingledine
25ac8857f3 bugfix: sometimes we closed a circ while cpuworker was cranking,
and it didn't notice


svn:r841
2003-11-18 21:12:17 +00:00
Roger Dingledine
f0cccc567e bugfix: don't ask for ->next of an expired circuit
bugfix: keep going when a circ fails in circuit_n_conn_open
        (make circuit_enumerate_by_naddr_nport obsolete)
bugfix: make circuit_n_conn_open only look at circ's that start at us
bugfix: only try circuit_n_conn_open if we're an OP. Otherwise we
        expect connections to always already be up.
bugfix: when choosing path length, pay attention to whether the directory
        says a router is down.
bugfix: when picking good exit, skip routers which are known to be down
        (more work needs to be done on this one)


svn:r838
2003-11-18 09:53:03 +00:00
Roger Dingledine
ac56486bf6 use the tor_malloc_zero wrapper
svn:r837
2003-11-18 08:20:19 +00:00
Roger Dingledine
a3e39b0ceb don't build too many circs at once
expire circs that have been building for too long


svn:r835
2003-11-18 07:48:00 +00:00
Nick Mathewson
4eabb8450e Fix possible bug in circID selection when building circuits on combination OP/OR servers
svn:r830
2003-11-17 18:40:56 +00:00
Roger Dingledine
7a702d64d4 more verbose info for circuits when kill -USR1
svn:r829
2003-11-17 09:30:29 +00:00
Roger Dingledine
a18ced652b finally find and possibly fix the circuit_deliver_relay_cell warn bug
svn:r827
2003-11-17 07:43:03 +00:00
Roger Dingledine
42b5ed754f catch the last missing log line i hope
svn:r825
2003-11-17 07:29:43 +00:00
Nick Mathewson
90e143e6d4 Remove a possible source of error in circID picking.
svn:r824
2003-11-17 07:24:01 +00:00
Roger Dingledine
e5d6e7db1a continue the circuit_deliver_relay_cell forward-failure bughunt
svn:r823
2003-11-17 07:20:51 +00:00
Roger Dingledine
851b0933f5 trivial bugfixes
svn:r821
2003-11-17 01:23:15 +00:00
Roger Dingledine
4aede010b9 recognize in-progress circs and don't start redundant ones
quickly notice streams that don't have a circ on the way, and start one


svn:r819
2003-11-17 00:57:56 +00:00
Roger Dingledine
6d0e611fde change when circuits are built and expired
not quite happy with it yet


svn:r817
2003-11-16 21:49:52 +00:00
Roger Dingledine
f5089681f7 bugfix: if you recognize a relay cell, don't also pass it on.
svn:r816
2003-11-16 17:31:19 +00:00
Roger Dingledine
fe856406be initial patches on patches
svn:r814
2003-11-16 17:00:02 +00:00
Nick Mathewson
a8eaa79e03 Improved exit policy syntax; basic client-side DNS caching.
- Exit policies now support bitmasks (18.0.0.0/255.0.0.0) and bitcounts
  18.0.0.0/8.  Policies are parsed on startup, not when comparing to them.

- desired_path_len is now part of an opaque cpath_build_state_t structure.

- END_REASON_EXITPOLICY cells no longer include a port.

- RELAY_COMMAND_CONNECTED cells now include the IP address we've connected
  to.

- connection_edge now has a client_dns cache to remember resolved addresses.
  It gets populated by RELAY_COMMAND_CONNECTED cells and END_REASON_EXITPOLICY
  cells.  It gets used by connection_ap_handshake_send_begin.  We don't
  compare it to exit policies yet.


svn:r812
2003-11-14 20:45:47 +00:00
Roger Dingledine
273da1d3c4 commencing the bughunt
svn:r811
2003-11-14 07:15:52 +00:00
Roger Dingledine
f5829aa723 lay groundwork for EntryNodes and ExitNodes
svn:r805
2003-11-12 19:34:34 +00:00
Nick Mathewson
99a6d48f62 Restore erroneously removed assert
svn:r796
2003-11-12 03:48:33 +00:00
Nick Mathewson
e0ad4d08be Fix thinko: Failure and success are different things.
svn:r795
2003-11-12 03:01:38 +00:00
Nick Mathewson
2e05b9ccf9 Remove dead code
svn:r794
2003-11-12 02:58:45 +00:00
Nick Mathewson
7d441ec6b4 Compute paths as we build them.
svn:r793
2003-11-12 02:55:38 +00:00
Nick Mathewson
e6296a4e2f Refactor onion_generate_cpath to build cpaths one hop at a time. This
is a the first step in computing hops one step at a time.  Next, we move
the responsibility for calling onion_extend_cpath into circuit.c

(Later, we may want to special-case onion_extend_cpath to treat entry
and exit routers differently.)


svn:r792
2003-11-12 02:32:20 +00:00
Roger Dingledine
9c8a54a39f more cleanups and bugfix
svn:r790
2003-11-11 17:21:35 +00:00
Nick Mathewson
7bde42676b Rename aci to circ_id throughout.
svn:r784
2003-11-11 03:01:48 +00:00
Nick Mathewson
dafb0e6a6e Make AP connections wait for a circuit if none exists.
Also:
  - Refactor socks request into a separate struct
  - Add a separate 'waiting for circuit' state to AP connections
    between 'waiting for socks' and 'open'.

Arma: can you check out the XXX's I've added to connection_edge? I may
be mishandling some async and close logic.


svn:r783
2003-11-11 02:41:31 +00:00
Roger Dingledine
e4127e4d36 move closer to being able to reload config on HUP
rename APPort to SocksPort
introduce new tor_free() macro


svn:r642
2003-10-21 09:48:17 +00:00
Roger Dingledine
4a66865d0b send the end cell when we realize we're going to end,
not when we're closing the stream.

this lets us put a payload in the end cell if we want to,
to describe why we're closing the stream.

there are still some places where we don't send the end cell
immediately. i need to track them down. but it's a low priority,
since i've made it send the end cell when we close the stream if
we haven't already sent it.


svn:r640
2003-10-21 08:37:07 +00:00
Nick Mathewson
959b5585a5 Stop using stdout for non-debugging cases
svn:r592
2003-10-15 18:28:32 +00:00
Roger Dingledine
b9628f266f change WARNING to WARN
and fix a few typos


svn:r571
2003-10-10 01:48:32 +00:00
Nick Mathewson
ecfb36823e Refactor, rename, and clarify
svn:r569
2003-10-09 18:45:14 +00:00
Nick Mathewson
36939303c9 Update LICENSE and copyright dates.
svn:r560
2003-10-08 02:04:08 +00:00
Roger Dingledine
756619bfd2 refactor around connection_edge_send_command()
svn:r539
2003-10-04 08:19:23 +00:00
Roger Dingledine
be874358a4 wrap strdup; prefer time() to gettimeofday()
svn:r538
2003-10-04 03:29:09 +00:00
Roger Dingledine
f563bbd2f9 refactor so connection_write_to_buf() never fails
svn:r537
2003-10-04 02:38:18 +00:00
Nick Mathewson
985a3e1492 Add new cell fullness and bandwidth stats.
svn:r533
2003-10-02 20:00:38 +00:00
Roger Dingledine
efa8e288ef my_routerinfo, router_is_me, and learn_my_address are obsolete
ACIs are decided now by strcmp'ing nicknames, rather than comparing addr:port


svn:r529
2003-10-01 01:49:53 +00:00
Roger Dingledine
cb8212bfcb clean up receiver buckets; prepare for payloads in relay_end; note a few bugs
svn:r502
2003-09-27 21:09:56 +00:00
Roger Dingledine
9e5cafc395 first pass: obey log convention
ERR is if something fatal just happened

WARNING is something bad happened, but we're still running. The bad thing
is either a bug in the code, an attack or buggy protocol/implementation
of the remote peer, etc. The operator should examine the bad thing and
try to correct it.
(No error or warning messages should be expected. I expect most people
to run on -l warning eventually.)

NOTICE is never ever used.

INFO means something happened (maybe bad, maybe ok), but there's nothing
you need to (or can) do about it.

DEBUG is for everything louder than INFO.


svn:r486
2003-09-26 10:03:50 +00:00
Nick Mathewson
3d4ccb781a Refactor buffers; implement descriptors.
'buf_t' is now an opaque type defined in buffers.c .

Router descriptors now include all keys; routers generate keys as
needed on startup (in a newly defined "data directory"), and generate
their own descriptors.  Descriptors are now self-signed.

Implementation is not complete: descriptors are never published; and
upon receiving a descriptor, the directory doesn't do anything with
it.

At least "routers.or" and orkeygen are now obsolete, BTW.


svn:r483
2003-09-25 05:17:11 +00:00
Roger Dingledine
40d0fca63a cleanups, bugfixes, more verbose logs
Fixed up the assert_*_ok funcs some (more work remains)

Changed config so it reads either /etc/torrc or the -f arg, never both

Finally tracked down a nasty bug with our use of tls:
  It turns out that if you ask SSL_read() for no more than n bytes, it
  will read the entire record from the network (and maybe part of the next
  record, I'm not sure), give you n bytes of it, and keep the remaining
  bytes internally. This is fine, except our poll-for-read looks at the
  network, and there are no bytes pending on the network, so we never know
  to ask SSL_read() for more bytes. Currently I've hacked it so if we ask
  for n bytes and it returns n bytes, then it reads again right then. This
  will interact poorly with our rate limiting; we need a cleaner solution.


svn:r481
2003-09-24 21:24:52 +00:00
Roger Dingledine
078c5ab617 leave the socks handshake on the inbuf until it's complete
this paves the way for supporting socks5 and other handshakes
it also removes those pesky AP-only variables from connection_t

also hacked a fix for a bug where some streams weren't ending properly --
maybe because marked connections weren't flushing properly?


svn:r472
2003-09-18 08:11:31 +00:00
Roger Dingledine
6f46316c31 bugfixes and refactorings
svn:r468
2003-09-16 20:57:09 +00:00
Nick Mathewson
3f3f8921f6 Make sequential ACI selection logic handle HIGHER/LOWER
svn:r466
2003-09-16 20:13:43 +00:00
Nick Mathewson
1b9c2f35eb Add first cut of assert_*_ok functions
svn:r464
2003-09-16 19:36:19 +00:00
Nick Mathewson
c09de55fb8 Add #ifdef'd code (on by default) to allocate ACIs sequentially.
svn:r462
2003-09-16 17:17:39 +00:00
Roger Dingledine
8b71b7338f clean up exported api's
svn:r461
2003-09-16 05:41:49 +00:00
Roger Dingledine
ebc23f690c bugfix: onion pending queue now works
and fixed recent memory leak


svn:r456
2003-09-14 08:17:14 +00:00
Nick Mathewson
14c8bc598b Attempt to track down bug in conn->package_window
svn:r415
2003-08-25 20:57:23 +00:00
Roger Dingledine
681c7539ef better log output for debugging
svn:r375
2003-08-11 20:22:48 +00:00
Nick Mathewson
17a311d9a0 Fix typo: ports are 16 bits.
svn:r374
2003-08-11 19:48:22 +00:00
Nick Mathewson
ac5893c626 src/or
svn:r371
2003-07-30 19:12:03 +00:00
Roger Dingledine
75440d08c2 fix many bugs in package_window handling
svn:r363
2003-07-03 03:40:47 +00:00
Roger Dingledine
3dcc34491b slightly happier on 64-bit archs
svn:r349
2003-06-24 05:17:48 +00:00
Nick Mathewson
efbcd71b9b Remove false warnings from printf checks
svn:r340
2003-06-21 19:03:22 +00:00
Nick Mathewson
95e5384af3 Change many files to new log_fn format
svn:r333
2003-06-17 22:18:26 +00:00
Roger Dingledine
9a33b59ece relay queues are obsolete (woo!)
they used to be used for
* queueing relay cells at the edge of the network, when windows are empty
* queueing relay cells that arrive after an onion but before the onion
  has been processed.
both of these uses are gone. so out they go.


svn:r315
2003-06-13 09:59:33 +00:00
Roger Dingledine
d3292e484a implement truncate and truncated (untested)
clean up circuit_deliver_relay_cell convention


svn:r312
2003-06-12 10:16:33 +00:00
Roger Dingledine
dfa64b61ed bugfix: it was expiring circuits that still had active connections
svn:r303
2003-06-01 02:09:36 +00:00
Roger Dingledine
fa1d446440 OPport is gone. So is conn type OP.
svn:r298
2003-05-28 02:03:25 +00:00
Roger Dingledine
2d296afc42 bugfix
svn:r297
2003-05-28 00:13:42 +00:00
Roger Dingledine
091e1c0167 fix design bug: circ->n_conn is shared among circs, so it can't
point to the streams for this circ.


svn:r296
2003-05-27 23:39:04 +00:00
Roger Dingledine
1c6def292b remove dead code
circuits no longer queue more cells when the windows are empty --
they simply don't package it from the buffer if they're not going to want it.

we can restore this code later if we need to resume queueing.


svn:r294
2003-05-20 06:53:10 +00:00
Roger Dingledine
39e9d79038 add circuit-level sendme relay cells
remove sendme cells
replace malloc with tor_malloc
patch (but not track down) bug in onion pending list
streamline connection_ap handshake


svn:r293
2003-05-20 06:41:23 +00:00
Roger Dingledine
03ed54e920 put some symbolic constants to the onion skin lengths
svn:r265
2003-05-06 05:54:42 +00:00
Roger Dingledine
d7f50337c1 incremental path building in; uses ephemeral DH; onions are gone
still need to change circuit-level sendmes


svn:r264
2003-05-05 23:24:46 +00:00
Roger Dingledine
96759a609e streams are now 8 bytes, and are recognized by intermediate hops
the OP only crypts the appropriate number of times depending on which
layer (hop on the path) it's for/from.


svn:r262
2003-05-02 21:29:25 +00:00
Roger Dingledine
8a94dd60af cpath is now a doubly linked list, not an array
svn:r260
2003-05-01 22:55:51 +00:00
Roger Dingledine
0560008497 terminology shift: data->relay, topic->relay, topic->stream
svn:r258
2003-05-01 06:42:29 +00:00
Roger Dingledine
59e70bcae6 bugfix: a circ can't be youngest if it's still connecting to the first hop
svn:r255
2003-04-20 21:56:44 +00:00
Roger Dingledine
f54186aa91 bugfix: refactor to always use circuit_remove
this way we can always check if a new circ needs to be launched


svn:r254
2003-04-20 19:47:33 +00:00
Roger Dingledine
10902028e0 bugfix: only close old circuits if they have no connections!
svn:r251
2003-04-18 18:47:49 +00:00
Nick Mathewson
32a3e704b4 Choose correct abstraction for topic_foo. Abstract random-integer code
svn:r249
2003-04-17 17:10:41 +00:00
Roger Dingledine
f39ca8a3aa further cleanup, test.c still has some bugs
svn:r241
2003-04-16 23:21:44 +00:00
Nick Mathewson
1bbea670bc Remove the last vestige of code that claims to know the inner structure of an onion on the network
svn:r239
2003-04-16 17:11:56 +00:00
Nick Mathewson
33176c70a5 Factor out timeval-related functions.
svn:r237
2003-04-16 17:04:58 +00:00
Nick Mathewson
0c61bc3756 Remove the notion of "onion ciphers"; make packing and unpacking separate fns
svn:r236
2003-04-16 16:19:27 +00:00
Roger Dingledine
e1d37ed6ab divorce circuit building from user connections
now we rebuild the circuit periodically (but only if it's been used),
and we can further abstract it to do incremental circuit building, etc.


svn:r233
2003-04-16 06:18:31 +00:00
Roger Dingledine
1d53d8ad0e refactored some duplicate code into connection_edge.c
svn:r230
2003-04-11 22:11:11 +00:00
Nick Mathewson
c217b1ca71 Add magic to end of C files to make emacs happy; split test invocation into separate file.
svn:r224
2003-04-07 02:12:02 +00:00
Nick Mathewson
e3368a65a9 Make ACI anti-collision logic work; make sure that cells are filled with 0s.
svn:r176
2003-03-11 21:38:38 +00:00
Roger Dingledine
90f8a7a757 be less noisy at -l info, now that flow control bug is solved
svn:r172
2003-03-10 22:30:05 +00:00
Roger Dingledine
f97ddd44cd minor code cleanup
svn:r166
2003-03-05 20:03:05 +00:00
Roger Dingledine
1714ea2ab8 Bugfixes and enhancements in sendmes and dns farm
svn:r161
2003-02-18 01:35:55 +00:00