aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Re-order tor_fw_helper_LDADD flags so that they workNick Mathewson2011-08-01
| | | | Patch from "blueness".
* Improve log messages for optimistic data retryIan Goldberg2011-07-21
|
* Add src/test/test{-child}.exe to gitignore. bug3626Nick Mathewson2011-07-21
|
* remember our future plan for bug 3617Roger Dingledine2011-07-21
| | | | | (that is, to change the default for "UseOptimisticData auto" to 1 once we are more convinced that it works correctly.)
* Add another precondition for isolation-clearing; fix 3620Nick Mathewson2011-07-20
|
* Do not cannibalize a circuit with isolation values set.Nick Mathewson2011-07-20
|
* For accuracy, s/exit_allows_optimistic_data/may_use_optimistic_data/Nick Mathewson2011-07-20
|
* Add an OptimisticData option to control client-side optimistic dataNick Mathewson2011-07-20
|
* Don't assert for listener connectionsSebastian Hahn2011-07-20
|
* Check for port config before addr config in client port optionsNick Mathewson2011-07-20
| | | | Otherwise, we'll fail, since "9050" looks like a perfectly fine address.
* Oops: we need to call parse_client_ports with validate_only==0 at least onceNick Mathewson2011-07-20
|
* Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson2011-07-20
|\
| * Check return value in fmt_addrNick Mathewson2011-07-20
| | | | | | | | | | | | | | Previously, if tor_addr_to_str() returned NULL, we would reuse the last value returned by fmt_addr(). (This could happen if we were erroneously asked to format an AF_UNSPEC address.) Now instead we return "???".
* | Fix a warning message. (Found by rransom)Nick Mathewson2011-07-20
| |
* | 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 changelogRoger Dingledine2011-07-18
| | | |
* | | | bump to 0.2.3.2-alphaRoger Dingledine2011-07-18
| | | |