// Listen for new connections on the given multiaddr func (s *Swarm) connListen(maddr *ma.Multiaddr) error { netstr, addr, err := maddr.DialArgs() if err != nil { return err } list, err := net.Listen(netstr, addr) if err != nil { return err } // NOTE: this may require a lock around it later. currently, only run on setup s.listeners = append(s.listeners, list) // Accept and handle new connections on this listener until it errors go func() { for { nconn, err := list.Accept() if err != nil { e := fmt.Errorf("Failed to accept connection: %s - %s [%s]", netstr, addr, err) go func() { s.Chan.Errors <- e }() return } go s.handleNewConn(nconn) } }() return nil }