Commit Graph

143 Commits

Author SHA1 Message Date
Juan Batiz-Benet
140cd1fd1b remove debugerrors
We now consider debugerrors harmful: we've run into cases where
debugerror.Wrap() hid valuable error information (err == io.EOF?).
I've removed them from the main code, but left them in some tests.
Go errors are lacking, but unfortunately, this isn't the solution.

It is possible that debugerros.New or debugerrors.Errorf should
remain still (i.e. only remove debugerrors.Wrap) but we don't use
these errors often enough to keep.
2015-04-20 00:35:35 -07:00
Jeromy
30ee01f19d increase window size for yamux streams 2015-04-16 20:56:40 -07:00
Juan Batiz-Benet
127c03255a secio: better error detection
The same keys + nonces in secio were being observed. As described in
https://github.com/ipfs/go-ipfs/issues/1016 -- the handshake must
be talking to itself. This can happen in an outgoing TCP dial with
REUSEPORT on to the same address.
2015-04-13 21:52:56 -07:00
Jeromy
db79e89ae7 log listeners dying as at least a warning 2015-04-11 18:21:22 -07:00
Juan Batiz-Benet
f1566e2327 reuseport: env var to turn it off
reuseport is a hack. It is necessary for us to do certain kinds of
tcp nat traversal. Ideally, reuseport would be available in go:

  https://github.com/golang/go/issues/9661

But until that issue is fixed, we're stuck with this. In some cases,
reuseport is strictly a detriment: nodes are not NATed. This commit
introduces an ENV var IPFS_REUSEPORT that can be set to false to
avoid using reuseport entirely:

  IPFS_REUSEPORT=false ipfs daemon

This approach addresses our current need. It could become a config
var if necessary. If reuseport continues to give problems, we should
look into improving it.
2015-04-08 00:19:12 -07:00
Tor Arne Vestbø
0bb4df9d3b Extend logging when peer handshake detects clashing/same keys 2015-04-07 13:20:46 +02:00
Jeromy
2c8cb9fc75 bandwidth metering on streams
humanize bandwidth output

instrument conn.Conn for bandwidth metrics

add poll command for continuous bandwidth reporting

move bandwidth tracking onto multiaddr net connections

another mild refactor of recording locations

address concerns from PR

lower mock nodes in race test due to increased goroutines per connection
2015-03-31 19:58:08 -07:00
Ho-Sheng Hsiao
bf22aeec0a Reorged imports from jbenet/go-ipfs to ipfs/go-ipfs
- Modified Godeps/Godeps.json by hand
- [TEST] Updated welcome docs hash to sharness
- [TEST] Updated contact doc
- [TEST] disabled breaking test (t0080-repo refs local)
2015-03-31 12:52:25 -07:00
Juan Batiz-Benet
1d5b903611 added cancel func calls previously ignored 2015-03-07 09:31:46 -08:00
Alex
da80f22bfe Implemented @jbenet's suggestion to avoid panics if peerID is of length 0. 2015-03-03 09:20:23 -08:00
Alex
ee449cb884 Fixed #780 2015-03-02 23:53:30 -08:00
Henry
84262be070 godep&x/crypto: updated multihash and moved to x/crypto for blowfish 2015-03-01 00:49:44 +01:00
Henry
92d08db7a5 rewrote import paths of go.net/context to use golang.org/x/context
- updated go-ctxgroup and goprocess
ctxgroup: AddChildGroup was changed to AddChild. Used in two files:
- p2p/net/mock/mock_net.go
- routing/dht/dht.go

- updated context from hg repo to git
prev. commit in hg was ad01a6fcc8a19d3a4478c836895ffe883bd2ceab. (context: make parentCancelCtx iterative)
represents commit 84f8955a887232b6308d79c68b8db44f64df455c in git repo

- updated context to master (b6fdb7d8a4ccefede406f8fe0f017fb58265054c)

Aaron Jacobs (2):
net/context: Don't accept a context in the DoSomethingSlow example.
context: Be clear that users must cancel the result of WithCancel.

Andrew Gerrand (1):
go.net: use golang.org/x/... import paths

Bryan C. Mills (1):
net/context: Don't leak goroutines in Done example.

Damien Neil (1):
context: fix removal of cancelled timer contexts from parent

David Symonds (2):
context: Fix WithValue example code.
net: add import comments.

Sameer Ajmani (1):
context: fix TestAllocs to account for ints in interfaces
2015-02-25 11:58:19 +01:00
Jeromy
dfdf346b22 fix weird race condition in goprocess that caused a few panics 2015-02-19 20:01:19 -08:00
Jeromy
2309266f73 allow removal of stream handlers 2015-02-18 19:11:37 +00:00
Jeromy
03c0b2d3e0 keep routing logic out of NewStream on routedHost 2015-02-18 19:11:37 +00:00
Jeromy
584cdd3915 make NewStream run FindPeer if no addresses found 2015-02-18 19:11:37 +00:00
Juan Batiz-Benet
ee1450bf9e routed host stash 2015-02-18 18:56:56 +00:00
Brian Tiger Chow
0db1a94862 misc: suppress logs to Debug (from Info) 2015-02-14 14:13:53 -08:00
Jeromy
32fc3845f0 fix for #757 2015-02-13 07:47:51 +00:00
Juan Batiz-Benet
5171d3df6b p2p/net/conn: respect context on dialing
We were half-way with this. there's no way for net.Dialers
to respect contexts, so we have to let the dial finish in
the background.
2015-02-11 09:12:15 -08:00
Juan Batiz-Benet
1811f1efac ctx.Done fixes
thanks @whyrusleeping for finding these.
2015-02-09 23:18:23 -08:00
Juan Batiz-Benet
91a79bc203 ratelimiter: fixing rate limiter use
Use of the ratelimiter should be conscious of the ratelimiter's
potential closing. any loops that add work to ratelimiter
should (a) only do so if the rate limiter is not closed,
or (b) prevent limiter while work is added
(i.e. use limiter.Go(addWorkHere))
2015-02-06 10:59:03 -08:00
Juan Batiz-Benet
ee4a9a2711 p2p/protocol/identity: smarter tracking observed addrs
- time them out (already was doing that with addrbook)
- keep count to counter symmetric nats
2015-02-05 10:15:16 -08:00
Juan Batiz-Benet
cc6a78419b test/mocknet: this test fails on CI sometimes 2015-02-03 08:02:25 -08:00
Juan Batiz-Benet
10cd499a8b cmds/swarm connect had broken 2015-02-03 05:51:31 -08:00
Juan Batiz-Benet
58f39687cf logs: removed all log.Errors unhelpful to users
Let's save log.Error for things the user can take action on.
Moved all our diagnostics to log.Debug. We can ideally reduce them
even further.
2015-02-03 01:06:07 -08:00
Juan Batiz-Benet
9ba450b425 p2p/crypto/secio: dont bother user with mac errs. 2015-02-02 21:05:33 -08:00
Juan Batiz-Benet
37007b9c2b p2p/protocol/id: log version mismatch disconnects 2015-02-02 21:05:33 -08:00
Juan Batiz-Benet
690619145a p2p/protocol/id: break on version mismatch.
TODOs:
- need to consolidate all the versioning stuff into one package
- need to do the version check as a handshake, before further
  communication happens. we used to do this.
2015-02-02 21:05:32 -08:00
Juan Batiz-Benet
6b4664fc8b p2p/net/swarm: permute addrs in rate limited dials
so that we dont get stuck dialing bad addrs first always.
2015-02-02 21:04:14 -08:00
Juan Batiz-Benet
793048d310 p2p/net/swarm: rate limit dials. max of 10 addrs at a time.
This will mitigate the fd explosion, but slow down dials majorly
as any peer with more addresses than the rate limit will have
to wait a whole dial timeout (~15s)
2015-02-02 21:04:14 -08:00
Juan Batiz-Benet
e908effb4b AddrManager: use addr manager with smarter TTLs
This addr manager should seriously help with the addrsplosion
problem.
2015-02-02 21:04:14 -08:00
Juan Batiz-Benet
8b98c8fbdc p2p/peer/addr: manager with expirations 2015-02-02 21:04:13 -08:00
Juan Batiz-Benet
81e7c2b84e log(secio): session loggable for event 2015-02-01 22:08:48 -08:00
Juan Batiz-Benet
7c7ec14109 p2p/net/conn: log conn lifetime event 2015-02-01 22:08:48 -08:00
Brian Tiger Chow
b47241a762 doc(p2p/mux) rm stale comment 2015-02-01 21:54:20 -08:00
Brian Tiger Chow
ecddbd3a56 fix(mux) hold lock when reading default handler field 2015-02-01 21:49:39 -08:00
Juan Batiz-Benet
fc78f20093 p2p/conn: expose io.Closer interface 2015-02-01 06:35:48 -08:00
Juan Batiz-Benet
763cc945c0 p2p/host: nat manager
this commit moves management of the nat to its own object.
perhaps this can be general enough to work with any host
(not just BasicHost), but for now keeping here.

the nat manager:
- discovers and sets up the nat asynchronously.
- adds any port mappings necessary if/after nat has been found.
- listens to the network Listen() changes, adding/closing mappings
2015-01-30 20:37:53 -08:00
Juan Batiz-Benet
d7c9ae12ac p2p/nat: make nat mappings closable by client
After this commit, client can close individual mappings (without
closing the whole NAT)
2015-01-30 20:37:53 -08:00
Juan Batiz-Benet
98f2b0779f p2p/net: notify on listens
Network now signals when it successfully listens on some address
or when an address shuts down. This will be used to establish and
close nat port mappings. It could also be used to notify peers
of address changes.
2015-01-30 20:37:52 -08:00
Brian Tiger Chow
d98b05497f log(secio) rm handshake console log (still has event log) 2015-01-30 06:57:41 -08:00
Juan Batiz-Benet
df0967d6ee p2p/net: network interface Listen func
network interface now allows setting Listeners after the fact.
This is useful to create the network and start listening as
separate steps. And to keep the network up to date on new
addresses the node might have to listen to.
2015-01-30 06:51:29 -08:00
Jeromy
97e99ca167 fix nil pointer panic on version strings in ID message 2015-01-29 23:07:32 +00:00
Juan Batiz-Benet
1ce3ecf846 swarm: TestSimultOpenMany has problems in CI.
dialing 4000 connections somehow keeps choking both travis and
jenkins. dialing this down to 500
2015-01-29 01:25:54 -08:00
Juan Batiz-Benet
81bb548d23 p2p/net/swarm: fix TestDialBackoff
- attempts set to 1 now.
- timeouts must account for that.
2015-01-28 15:49:54 -08:00
Juan Batiz-Benet
56b14d8e9e Merge pull request #676 from jbenet/dial-events
p2p/net: dial log -> events
2015-01-28 02:25:56 -08:00
Juan Batiz-Benet
eb79770683 p2p/net: cleaned up dial events
+ fixed race
2015-01-28 02:15:32 -08:00
Juan Batiz-Benet
b4af146fc8 p2p/net: better dial log.Event 2015-01-28 00:13:42 -08:00