aboutsummaryrefslogtreecommitdiff
path: root/src/or/connection.c
Commit message (Expand)AuthorAge
* Fix compile warnings on windowsSebastian Hahn2011-11-15
* Fix memory leak in retry_all_listeners: Coverity CID 485Nick Mathewson2011-10-26
* Fix names of functions that convert strings to addrs•••Now let's have "lookup" indicate that there can be a hostname resolution, and "parse" indicate that there wasn't. Previously, we had one "lookup" function that did resolution; four "parse" functions, half of which did resolution; and a "from_str()" function that didn't do resolution. That's confusing and error-prone! The code changes in this commit are exactly the result of this perl script, run under "perl -p -i.bak" : s/tor_addr_port_parse/tor_addr_port_lookup/g; s/parse_addr_port(?=[^_])/addr_port_lookup/g; s/tor_addr_from_str/tor_addr_parse/g; This patch leaves aton and pton alone: their naming convention and behavior is is determined by the sockets API. More renaming may be needed. Nick Mathewson2011-10-11
* Cell types and states for new OR handshake•••Also, define all commands > 128 as variable-length when using v3 or later link protocol. Running into a var cell with an unrecognized type is no longer a bug. Nick Mathewson2011-10-10
* Merge remote-tracking branch 'asn2/bug3656'•••Conflicts: src/common/util.c src/common/util.h src/or/config.h src/or/main.c src/test/test_util.c Nick Mathewson2011-10-07
|\
| * Remove connection_uses_transport() since it was unused.George Kadianakis2011-09-11
| * Reverting the accounting thing introduced in 5492de76 till I think how it sho...George Kadianakis2011-07-14
| * Put some last missing pieces together.•••* Add some utility transport functions in circuitbuild.[ch] so that we can use them from pt.c. * Make the accounting system consider traffic coming from proxies. * Make sure that we only fetch bridge descriptors when all the transports are configured. George Kadianakis2011-07-13
* | Fix issues in 3630 patch noted by KarstenNick Mathewson2011-09-22
* | Make bufferevents work with TokenBucketRefillIntervalNick Mathewson2011-09-22
* | Refactor connection_bucket_refill(_helper) to avoid roundoff•••We were doing "divide bandwidth by 1000, then multiply by msec", but that would lose accuracy: instead of getting your full bandwidth, you'd lose up to 999 bytes per sec. (Not a big deal, but every byte helps.) Instead, do the multiply first, then the division. This can easily overflow a 32-bit value, so make sure to do it as a 64-bit operation. Nick Mathewson2011-09-22
* | New torrc option to allow bucket refill intervals of less than 1 sec•••Implements bug3630. Florian Tschorsch2011-09-22
* | Log errno on listener socket creation failure.•••This may help diagnose bug 4027. Nick Mathewson2011-09-15
* | Fix whitespace issues in patches merged today so farNick Mathewson2011-09-07
* | chown() sockets when User option is set•••Fixes bug 3421 Jérémy Bobbio2011-09-07
* | Merge remote-tracking branch 'public/split_entry_conn'•••Conflicts: src/or/connection.c src/or/connection_edge.c src/or/connection_edge.h src/or/dnsserv.c Some of these were a little tricky, since they touched code that changed because of the prop171 fixes. Nick Mathewson2011-09-07
|\ \
| * | Move entry-only fields from edge_connection_t to entry_connection_t•••Also, refactor the code accordingly. Nick Mathewson2011-07-21
| * | Add a new type entry_connection_t for entry connections•••No fields have moved there yet; for now, it's just a placeholder type. Nick Mathewson2011-07-21
* | | Explicitly set bucket_cfg to NULL after we freed it•••This should fix bug 3888. Sebastian Hahn2011-09-01
* | | Fix compilation on non-bufferevent systems after 3803 fix: oops.Nick Mathewson2011-08-29
* | | Split out rephist parts of buckets_decrement•••For bufferevents, we had all of connection_buckets_decrement() stubbed out. But that's not actually right! The rephist_* parts were essential for, inter alia, recording our own bandwidth. This patch splits out the rephist parts of connection_buckets_decrement() into their own function, and makes the bufferevent code call that new function. Fixes bug 3803, and probably 3824 and 3826 too. Bugfix on 0.2.3.1-alpha. Nick Mathewson2011-08-29
* | | Set write low-watermarks on all bufferevents.•••If we don't do this, then we never invoke the bufferevent write callbacks until all the bufferevent's data is flushed. Nick Mathewson2011-08-24
* | | Apply rate-limiting to the lowest bufferevent in the stack.•••When we're doing filtering ssl bufferevents, we want the rate-limits to apply to the lowest level of the bufferevent stack, so that we're actually limiting bytes sent on the network. Otherwise, we'll read from the network aggressively, and only limit stuff as we process it. Nick Mathewson2011-08-24
* | | Appease "make check-spaces"Nick Mathewson2011-08-18
* | | Merge remote-tracking branch 'origin/maint-0.2.2'•••Conflicts: src/or/config.c Nick Mathewson2011-08-17
|\ \ \
| * | | Don't write ControlPorts to disk till after we setuid and make datadir•••Fix for bug 3747; bugfix on 0.2.2.26-beta. Nick Mathewson2011-08-17
* | | | Actually pick a random port when "auto" is specified•••ddc65e2b3303559ab7b842a176ee6c2eda9e4027 had broken this Sebastian Hahn2011-08-17
* | | | Free global_rate_limit in connection_free_all().George Kadianakis2011-08-13
* | | | Move connection_free_all() to the bottom of connection.c to enjoy maximum vis...George Kadianakis2011-08-13
* | | | Implement protocol-type isolation correctly.•••Previously we'd just looked at the connection type, but that's always CONN_TYPE_AP. Instead, we should be looking at the type of the listener that created the connection. Spotted by rransom; fixes bug 3636. Nick Mathewson2011-08-02
| |/ / |/| |
* | | Don't assert for listener connectionsSebastian Hahn2011-07-20
* | | Initialize listener connection addr fields properlyNick Mathewson2011-07-20
* | | Add a missing break in a switch statementNick Mathewson2011-07-20
* | | Merge branch 'optimistic-client'•••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 Nick Mathewson2011-07-20
|\ \ \
| * | | Remember optimistically sent data until we have gotten a CONNECTED•••Since we can retry failed streams under some circumstances, we need to be ready to send data queued on them. Nick Mathewson2011-07-18
* | | | Use socks username/password information in stream isolationNick Mathewson2011-07-19
* | | | Implement sensible isolation for tunneled directory conns•••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. Nick Mathewson2011-07-19
* | | | Implement destaddr-based isolation•••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. Nick Mathewson2011-07-19
* | | | Add a new isolation type and field: "nym epoch"•••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. Nick Mathewson2011-07-19
* | | | (Unused) backend logic for stream isolation•••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. Nick Mathewson2011-07-19
* | | | Refactor listener_connection_t into its own type.•••This will allow us to add more fields to listener_connection_t without bloating the other connection types. Nick Mathewson2011-07-19
* | | | Parse prop171 options; refactor listener/port option code•••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. Nick Mathewson2011-07-19
|/ / /
* | | Merge remote-tracking branch 'public/bug1666'•••Conflicts: doc/spec/socks-extensions.txt src/or/buffers.c src/or/config.c src/or/connection_edge.c Nick Mathewson2011-07-13
|\ \ \
| * | | Record username/password data in socks_request_t•••This change also requires us to add and use a pair of allocator/deallocator functions for socks_request_t, instead of using tor_malloc_zero/tor_free directly. Nick Mathewson2011-06-29
* | | | Disable recording new broken conns when we have bootstrapped•••Rationale: right now there seems to be no way for our bootstrap status to dip under 100% once it has reached 100%. Thus, recording broken connections after that point is useless, and wastes memory. If at some point in the future we allow our bootstrap level to go backwards, then we should change this rule so that we disable recording broken connection states _as long as_ the bootstrap status is 100%. Nick Mathewson2011-07-11
* | | | Record the states of failing OR connections•••This code lets us record the state of any outgoing OR connection that fails before it becomes open, so we can notice if they're all dying in the same SSL state or the same OR handshake state. More work is still needed: - We need documentation - We need to actually call the code that reports the failure when we realize that we're having a hard time connecting out or making circuits. - We need to periodically clear out all this data -- perhaps, whenever we build a circuit successfully? - We'll eventually want to expose it to controllers, perhaps. Partial implementation of feature 3116. Nick Mathewson2011-07-11
* | | | Split connection_about_to_close_connection into separate functions•••This patch does NOTHING but: - move code - add declarations and includes as needed to make the new code work - declare the new functions. Nick Mathewson2011-07-11
* | | | Fix compilation from 2841 branchNick Mathewson2011-07-11
* | | | Merge remote-tracking branch 'public/bug2841'•••Conflicts: src/or/config.c Nick Mathewson2011-07-11
|\ \ \ \ | | |_|/ | |/| |
| * | | Refactor the interfaces of transport/proxy lookup fns•••Returning a tristate is needless here; we can just use the yielded transport/proxy_type field to tell whether there's a proxy, and have the return indicate success/failure. Also, store the proxy_type in the or_connection_t rather than letting it get out of sync if a configuration reload happens between launching the or_connection and deciding what to say with it. Nick Mathewson2011-07-03