Skip to content

Commit a0cb194

Browse files
committed
Merge pull request #866 from fjl/p2p-last-minute
Last minute p2p fixes
2 parents b719801 + 3e2a928 commit a0cb194

File tree

6 files changed

+24
-26
lines changed

6 files changed

+24
-26
lines changed

p2p/discover/udp.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ var (
3131

3232
// Timeouts
3333
const (
34-
respTimeout = 300 * time.Millisecond
35-
sendTimeout = 300 * time.Millisecond
34+
respTimeout = 500 * time.Millisecond
35+
sendTimeout = 500 * time.Millisecond
3636
expiration = 20 * time.Second
3737

3838
refreshInterval = 1 * time.Hour

p2p/nat/nat.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ func Map(m Interface, c chan struct{}, protocol string, extport, intport int, na
9191
}()
9292
glog.V(logger.Debug).Infof("add mapping: %s %d -> %d (%s) using %s\n", protocol, extport, intport, name, m)
9393
if err := m.AddMapping(protocol, intport, extport, name, mapTimeout); err != nil {
94-
glog.V(logger.Error).Infof("mapping error: %v\n", err)
94+
glog.V(logger.Warn).Infof("network port %d could not be mapped: %v\n", intport, err)
95+
glog.V(logger.Debug).Infof("mapping with %v returned %v\n", m, err)
9596
}
9697
for {
9798
select {
@@ -102,7 +103,8 @@ func Map(m Interface, c chan struct{}, protocol string, extport, intport int, na
102103
case <-refresh.C:
103104
glog.V(logger.Detail).Infof("refresh mapping: %s %d -> %d (%s) using %s\n", protocol, extport, intport, name, m)
104105
if err := m.AddMapping(protocol, intport, extport, name, mapTimeout); err != nil {
105-
glog.V(logger.Error).Infof("mapping error: %v\n", err)
106+
glog.V(logger.Warn).Infof("network port %d could not be mapped: %v\n", intport, err)
107+
glog.V(logger.Debug).Infof("mapping with %v returned %v\n", m, err)
106108
}
107109
refresh.Reset(mapUpdateInterval)
108110
}
@@ -225,7 +227,7 @@ func (n *autodisc) wait() error {
225227
return nil
226228
}
227229
if found = <-n.done; found == nil {
228-
return errors.New("no devices discovered")
230+
return errors.New("no UPnP or NAT-PMP router discovered")
229231
}
230232
n.mu.Lock()
231233
n.found = found

p2p/peer.go

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"time"
1111

1212
"github.com/ethereum/go-ethereum/logger"
13+
"github.com/ethereum/go-ethereum/logger/glog"
1314
"github.com/ethereum/go-ethereum/p2p/discover"
1415
"github.com/ethereum/go-ethereum/rlp"
1516
)
@@ -34,10 +35,6 @@ const (
3435

3536
// Peer represents a connected remote node.
3637
type Peer struct {
37-
// Peers have all the log methods.
38-
// Use them to display messages related to the peer.
39-
*logger.Logger
40-
4138
conn net.Conn
4239
rw *conn
4340
running map[string]*protoRW
@@ -99,10 +96,8 @@ func (p *Peer) String() string {
9996
}
10097

10198
func newPeer(fd net.Conn, conn *conn, protocols []Protocol) *Peer {
102-
logtag := fmt.Sprintf("Peer %.8x %v", conn.ID[:], fd.RemoteAddr())
10399
protomap := matchProtocols(protocols, conn.Caps, conn)
104100
p := &Peer{
105-
Logger: logger.NewLogger(logtag),
106101
conn: fd,
107102
rw: conn,
108103
running: protomap,
@@ -130,7 +125,7 @@ func (p *Peer) run() DiscReason {
130125
} else {
131126
// Note: We rely on protocols to abort if there is a write
132127
// error. It might be more robust to handle them here as well.
133-
p.DebugDetailf("Read error: %v\n", err)
128+
glog.V(logger.Detail).Infof("%v: Read error: %v\n", p, err)
134129
reason = DiscNetworkError
135130
}
136131
case err := <-p.protoErr:
@@ -141,7 +136,7 @@ func (p *Peer) run() DiscReason {
141136
close(p.closed)
142137
p.politeDisconnect(reason)
143138
p.wg.Wait()
144-
p.Debugf("Disconnected: %v\n", reason)
139+
glog.V(logger.Debug).Infof("%v: Disconnected: %v\n", p, reason)
145140
return reason
146141
}
147142

@@ -195,7 +190,7 @@ func (p *Peer) handle(msg Msg) error {
195190
// This is the last message. We don't need to discard or
196191
// check errors because, the connection will be closed after it.
197192
rlp.Decode(msg.Payload, &reason)
198-
p.Debugf("Disconnect requested: %v\n", reason[0])
193+
glog.V(logger.Debug).Infof("%v: Disconnect Requested: %v\n", p, reason[0])
199194
return DiscRequested
200195
case msg.Code < baseProtocolLength:
201196
// ignore other base protocol messages
@@ -239,14 +234,14 @@ func (p *Peer) startProtocols() {
239234
for _, proto := range p.running {
240235
proto := proto
241236
proto.closed = p.closed
242-
p.DebugDetailf("Starting protocol %s/%d\n", proto.Name, proto.Version)
237+
glog.V(logger.Detail).Infof("%v: Starting protocol %s/%d\n", p, proto.Name, proto.Version)
243238
go func() {
244239
err := proto.Run(p, proto)
245240
if err == nil {
246-
p.DebugDetailf("Protocol %s/%d returned\n", proto.Name, proto.Version)
241+
glog.V(logger.Detail).Infof("%v: Protocol %s/%d returned\n", p, proto.Name, proto.Version)
247242
err = errors.New("protocol returned")
248-
} else {
249-
p.DebugDetailf("Protocol %s/%d error: %v\n", proto.Name, proto.Version, err)
243+
} else if err != io.EOF {
244+
glog.V(logger.Detail).Infof("%v: Protocol %s/%d error: \n", p, proto.Name, proto.Version, err)
250245
}
251246
p.protoErr <- err
252247
p.wg.Done()

p2p/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ func (srv *Server) dialLoop() {
428428
case <-refresh.C:
429429
// Grab some nodes to connect to if we're not at capacity.
430430
srv.lock.RLock()
431-
needpeers := len(srv.peers) < srv.MaxPeers
431+
needpeers := len(srv.peers) < srv.MaxPeers/2
432432
srv.lock.RUnlock()
433433
if needpeers {
434434
go func() {

whisper/peer.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"time"
66

77
"github.com/ethereum/go-ethereum/common"
8+
"github.com/ethereum/go-ethereum/logger"
9+
"github.com/ethereum/go-ethereum/logger/glog"
810
"github.com/ethereum/go-ethereum/p2p"
911
"github.com/ethereum/go-ethereum/rlp"
1012
"gopkg.in/fatih/set.v0"
@@ -36,13 +38,13 @@ func newPeer(host *Whisper, remote *p2p.Peer, rw p2p.MsgReadWriter) *peer {
3638
// into the network.
3739
func (self *peer) start() {
3840
go self.update()
39-
self.peer.Debugln("whisper started")
41+
glog.V(logger.Debug).Infof("%v: whisper started", self.peer)
4042
}
4143

4244
// stop terminates the peer updater, stopping message forwarding to it.
4345
func (self *peer) stop() {
4446
close(self.quit)
45-
self.peer.Debugln("whisper stopped")
47+
glog.V(logger.Debug).Infof("%v: whisper stopped", self.peer)
4648
}
4749

4850
// handshake sends the protocol initiation status message to the remote peer and
@@ -94,7 +96,7 @@ func (self *peer) update() {
9496

9597
case <-transmit.C:
9698
if err := self.broadcast(); err != nil {
97-
self.peer.Infoln("broadcast failed:", err)
99+
glog.V(logger.Info).Infof("%v: broadcast failed: %v", self.peer, err)
98100
return
99101
}
100102

@@ -152,7 +154,6 @@ func (self *peer) broadcast() error {
152154
if err := p2p.Send(self.ws, messagesCode, transmit); err != nil {
153155
return err
154156
}
155-
self.peer.DebugDetailln("broadcasted", len(transmit), "message(s)")
156-
157+
glog.V(logger.Detail).Infoln(self.peer, "broadcasted", len(transmit), "message(s)")
157158
return nil
158159
}

whisper/whisper.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,14 @@ func (self *Whisper) handlePeer(peer *p2p.Peer, rw p2p.MsgReadWriter) error {
197197
}
198198
var envelopes []*Envelope
199199
if err := packet.Decode(&envelopes); err != nil {
200-
peer.Infof("failed to decode enveloped: %v", err)
200+
glog.V(logger.Info).Infof("%v: failed to decode envelope: %v", peer, err)
201201
continue
202202
}
203203
// Inject all envelopes into the internal pool
204204
for _, envelope := range envelopes {
205205
if err := self.add(envelope); err != nil {
206206
// TODO Punish peer here. Invalid envelope.
207-
peer.Debugf("failed to pool envelope: %f", err)
207+
glog.V(logger.Debug).Infof("%v: failed to pool envelope: %v", peer, err)
208208
}
209209
whisperPeer.mark(envelope)
210210
}

0 commit comments

Comments
 (0)