@cryptotaxi247 / kubo / commits / 4e2431a0e

p2p/net/swarm/listener: consume peerstream listeners

Juan Batiz-Benet committed Jan 11, 2015 at 12:46 UTC 4e2431a0e45b71cae77f31b6d379b772abd2c50c
1 file changed +24 -2
p2p/net/swarm/swarm_listen.go
+24 -2
@@ -66,8 +66,30 @@ func (s *Swarm) setupListener(maddr ma.Multiaddr) error {
66
67 // AddListener to the peerstream Listener. this will begin accepting connections
68 // and streams!
69 - _, err = s.swarm.AddListener(list)
70 - return err
69 + sl, err := s.swarm.AddListener(list)
70 + if err != nil {
71 + return err
72 + }
73 +
74 + // go consume peerstream's listen accept errors. note, these ARE errors.
75 + // they may be killing the listener, and if we get _any_ we should be
76 + // fixing this in our conn.Listener (to ignore them or handle them
77 + // differently.)
78 + go func(ctx context.Context, sl *ps.Listener) {
79 + for {
80 + select {
81 + case err, more := <-sl.AcceptErrors():
82 + if !more {
83 + return
84 + }
85 + log.Info(err)
86 + case <-ctx.Done():
87 + return
88 + }
89 + }
90 + }(s.cg.Context(), sl)
91 +
92 + return nil
93 }
94
95 // connHandler is called by the StreamSwarm whenever a new connection is added