summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* | | | | | | | Initialize listener connection addr fields properlyNick Mathewson2011-07-20
| | | | | | | |
* | | | | | | | Add a missing break in a switch statementNick Mathewson2011-07-20
| | | | | | | |
* | | | | | | | Add changes file for optimistic client behaviorNick Mathewson2011-07-20
| | | | | | | |
* | | | | | | | Merge branch 'optimistic-client'Nick Mathewson2011-07-20
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The conflicts are with the proposal 171 circuit isolation code, and they're all trivial: they're just a matter of both branches adding some unrelated code in the same places. Conflicts: src/or/circuituse.c src/or/connection.c
| * | | | | | | | Unit test for generic_buffer_set_to_copyNick Mathewson2011-07-20
| | | | | | | | |
| * | | | | | | | Remember optimistically sent data until we have gotten a CONNECTEDNick Mathewson2011-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we can retry failed streams under some circumstances, we need to be ready to send data queued on them.
| * | | | | | | | Add a generic_buffer_t to use the best buffer type we have on handNick Mathewson2011-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also add a quick function to copy all the data in a buffer. (This one could be done much better, but let's see if it matters.)
| * | | | | | | | Only use optimistic data with exits that support itNick Mathewson2011-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a little code complexity: we need to remember for each node whether it supports the right feature, and then check for each connection whether it's exiting at such a node. We store this in a flag in the edge_connection_t, and set that flag at link time.
| * | | | | | | | Initial optimistic_client fixesNick Mathewson2011-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Conform to make check-spaces - Build without warnings from passing size_t to %d - Use connection_get_inbuf_len(), not buf_datalen (otherwise bufferevents won't work). - Don't log that we're using this feature at warn.
| * | | | | | | | Implement the client side of optimistic data (proposal 174)Ian Goldberg2011-07-18
| | | | | | | | |
* | | | | | | | | Merge remote-tracking branch 'public/prop171_v2'Nick Mathewson2011-07-19
|\ \ \ \ \ \ \ \ \
| * | | | | | | | | Fix a compile warning in config.c reported by sebastianNick Mathewson2011-07-19
| | | | | | | | | |
| * | | | | | | | | Take a smarter approach to clearing isolation infoNick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Back when I added this logic in 20c0581a79, the rule was that whenever a circuit finished building, we cleared its isolation info. I did that so that we would still use the circuit even if all the streams that had previously led us to tentatively set its isolation info had closed. But there were problems with that approach: We could pretty easily get into a case where S1 had led us to launch C1 and S2 had led us to launch C2, but when C1 finished, we cleared its isolation and attached S2 first. Since C2 was still marked in a way that made S1 unattachable to it, we'd then launch another circuit needlessly. So instead, we try the following approach now: when a circuit is done building, we try to attach streams to it. If it remains unused after we try attaching streams, then we clear its isolation info, and try again to attach streams. Thanks to Sebastian for helping me figure this out.
| * | | | | | | | | Use socks username/password information in stream isolationNick Mathewson2011-07-19
| | | | | | | | | |
| * | | | | | | | | Turn streq_opt into a generic strcmp_opt.Nick Mathewson2011-07-19
| | | | | | | | | |
| * | | | | | | | | Manpage updates for proposal 171 (isolated streams)Nick Mathewson2011-07-19
| | | | | | | | | |
| * | | | | | | | | Stick controller-originated resolves in their own session groupNick Mathewson2011-07-19
| | | | | | | | | |
| * | | | | | | | | Implement sensible isolation for tunneled directory connsNick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One-hop dirconn streams all share a session group, and get the ISO_SESSIONGRP flag: they may share circuits with each other and nothing else. Anonymized dirconn streams get a new internal-use-only ISO_STREAM flag: they may not share circuits with anything, including each other.
| * | | | | | | | | Implement destaddr-based isolationNick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new candidate rule, which arma suggested and I like, is that the original address as received from the client connection or as rewritten by the controller is the address that counts.
| * | | | | | | | | Add an option to limit the number of non-open client circuits.Nick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mainly meant as a way to keep clients from accidentally DOSing themselves by (e.g.) enabling IsolateDestAddr or IsolateDestPort on a port that they use for HTTP.
| * | | | | | | | | Launch sufficient circuits to satisfy pending isolated streamsNick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our old "do we need to launch a circuit for stream S" logic was, more or less, that if we had a pending circuit that could handle S, we didn't need to launch a new one. But now that we have streams isolated from one another, we need something stronger here: It's possible that some pending C can handle either S1 or S2, but not both. This patch reuses the existing isolation logic for a simple solution: when we decide during circuit launching that some pending C would satisfy stream S1, we "hypothetically" mark C as though S1 had been connected to it. Now if S2 is incompatible with S1, it won't be something that can attach to C, and so we'll launch a new stream. When the circuit becomes OPEN for the first time (with no streams attached to it), we reset the circuit's isolation status. I'm not too sure about this part: I wanted some way to be sure that, if all streams that would have used a circuit die before the circuit is done, the circuit can still get used. But I worry that this approach could also lead to us launching too many circuits. Careful thought needed here.
| * | | | | | | | | Implement stream isolationNick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the meat of proposal 171: we change circuit_is_acceptable() to require that the connection is compatible with every connection that has been linked to the circuit; we update circuit_is_better to prefer attaching streams to circuits in the way that decreases the circuits' usefulness the least; and we update link_apconn_to_circ() to do the appropriate bookkeeping.
| * | | | | | | | | Add a new isolation type and field: "nym epoch"Nick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "nym epoch" of a stream is defined as the number of times that NEWNYM had been called before the stream was opened. All streams are isolated by nym epoch. This feature should be redundant with existing signewnym stuff, but it provides a good belt-and-suspenders way for us to avoid ever letting any circuit type bypass signewnym.
| * | | | | | | | | Const-ify a few functionsNick Mathewson2011-07-19
| | | | | | | | | |
| * | | | | | | | | (Unused) backend logic for stream isolationNick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds fields to track how streams should be isolated, and ensures that those fields are set correctly. It also adds fields to track what streams can go on a circuit, and adds functions to see whether a streams can go on a circuit and update the circuit accordingly. Those functions aren't yet called.
| * | | | | | | | | Refactor listener_connection_t into its own type.Nick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will allow us to add more fields to listener_connection_t without bloating the other connection types.
| * | | | | | | | | Parse prop171 options; refactor listener/port option codeNick Mathewson2011-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Proposal 171 gives us a new syntax for parsing client port options. You can now have as many FooPort options as you want (for Foo in Socks, Trans, DNS, NATD), and they can have address:port arguments, and you can specify the level of isolation on those ports. Additionally, this patch refactors the client port parsing logic to use a new type, port_cfg_t. Previously, ports to be bound were half-parsed in config.c, and later re-parsed in connection.c when we're about to bind them. Now, parsing a port means converting it into a port_cfg_t, and binding it uses only a port_cfg_t, without needing to parse the user-provided strings at all. We should do a related refactoring on other port types. For control ports, that'll be easy enough. For ORPort and DirPort, we'll want to do this when we solve proposal 118 (letting servers bind to and advertise multiple ports). This implements tickets 3514 and 3515.
* | | | | | | | | | Fix spurious warning in bufferevent socks parsingNick Mathewson2011-07-19
| |_|_|_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem was that we weren't initializing want_length to 0 before calling parse_socks() the first time, so it looked like we were risking an infinite loop when in fact we were safe. Fixes 3615; bugfix on 0.2.3.2-alpha.
* | | | | | | | | Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson2011-07-19
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | / / / / / / | | |/ / / / / / | |/| | | | | |
| * | | | | | | Untangle first sentence of changes/bug3607Nick Mathewson2011-07-19
| | | | | | | |
| * | | | | | | Specify text or binary mode in every start_writing_to_stdio_file callRobert Ransom2011-07-19
| | | | | | | |
* | | | | | | | Merge remote-tracking branch 'public/bug3560'Nick Mathewson2011-07-18
|\ \ \ \ \ \ \ \
| * | | | | | | | Turn on microdescriptors for clientsNick Mathewson2011-07-11
| | | | | | | | |
* | | | | | | | | Bump version to 0.2.3.2-alpha-devNick Mathewson2011-07-18
| | | | | | | | |
* | | | | | | | | finish the changelogtor-0.2.3.2-alphaRoger Dingledine2011-07-18
| | | | | | | | |
* | | | | | | | | bump to 0.2.3.2-alphaRoger Dingledine2011-07-18
| | | | | | | | |
* | | | | | | | | start folding in the 0.2.3.2-alpha changelog entriesRoger Dingledine2011-07-18
| |_|/ / / / / / |/| | | | | | |
* | | | | | | | Enhance findMergedChanges to allow looking at non-release targetsNick Mathewson2011-07-18
| | | | | | | |
* | | | | | | | Remove changes files already merged in 0.2.2.30-rcNick Mathewson2011-07-18
| | | | | | | |
* | | | | | | | forward-port the 0.2.2.30-rc changelogRoger Dingledine2011-07-18
| | | | | | | |
* | | | | | | | Better messages when we're stalled because of microdescriptorsNick Mathewson2011-07-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's a little confusing for me to say "only X/Y descriptors" when I have microdescriptors enabled. So, let's fix that.
* | | | | | | | Fix bug in upload/download of hsdesc with microdescsNick Mathewson2011-07-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we were using router_get_by_id(foo) to test "do we have a descriptor that will let us make an anonymous circuit to foo". But that isn't right for microdescs: we should have been using node_t. Fixes bug 3601; bugfix on 0.2.3.1-alpha.
* | | | | | | | Merge remote-tracking branch 'sebastian/compile_warning'Nick Mathewson2011-07-15
|\ \ \ \ \ \ \ \
| * | | | | | | | Fix a compile warning on OS X 10.6Sebastian Hahn2011-07-15
| | | | | | | | |
* | | | | | | | | Fix a wide line. "Tradition!"Nick Mathewson2011-07-15
| | | | | | | | |
* | | | | | | | | Remove compare_addr_to_node_policyNick Mathewson2011-07-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead, use compare_tor_addr_to_node_policy everywhere. One advantage of this is that compare_tor_addr_to_node_policy can better distinguish 0.0.0.0 from "unknown", which caused a nasty bug with microdesc users.
* | | | | | | | | Treat null address as "unknown", not "rejected" in md policyNick Mathewson2011-07-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we had an issue where we'd treat an unknown address as 0, which turned into "0.0.0.0", which looked like a rejected address. This meant in practice that as soon as we started doing comparisons of unknown uint32 addresses to short policies, we'd get 'rejected' right away. Because of the circumstances under which this would be called, it would only happen when we had local DNS cached entries and we were looking to launch new circuits.
* | | | | | | | | Remove compare_addr_to_addr_policyNick Mathewson2011-07-15
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nothing used it but the unit tests; everything else knows to use compare_tor_addr_to_addr_policy instead.
* | | | | | | | Make WIN32_WINNT defines conditionalNick Mathewson2011-07-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Requested by Gisle Vanem on tor-dev. I'm not quite sure this is the right solution, but it's probably harmless.
* | | | | | | | Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson2011-07-14
|\ \ \ \ \ \ \ \ | | |/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/or/control.c