diff --git a/p2p/host/basic/basic_host.go b/p2p/host/basic/basic_host.go index 094fcd36b03cc6d2c4f57b98bda220575f09d594..d1bd0d653a04651669f496f12592bba8de6b6a61 100644 --- a/p2p/host/basic/basic_host.go +++ b/p2p/host/basic/basic_host.go @@ -14,6 +14,7 @@ import ( pstore "github.com/libp2p/go-libp2p-peerstore" protocol "github.com/libp2p/go-libp2p-protocol" identify "github.com/libp2p/go-libp2p/p2p/protocol/identify" + ping "github.com/libp2p/go-libp2p/p2p/protocol/ping" ma "github.com/multiformats/go-multiaddr" madns "github.com/multiformats/go-multiaddr-dns" msmux "github.com/multiformats/go-multistream" @@ -56,6 +57,7 @@ type BasicHost struct { network inet.Network mux *msmux.MultistreamMuxer ids *identify.IDService + pings *ping.PingService natmgr NATManager addrs AddrsFactory maResolver *madns.Resolver @@ -96,6 +98,9 @@ type HostOpts struct { // ConnManager is a libp2p connection manager ConnManager ifconnmgr.ConnManager + + // EnablePing indicates whether to instantiate the ping service + EnablePing bool } // NewHost constructs a new *BasicHost and activates it by attaching its stream and connection handlers to the given inet.Network. @@ -149,6 +154,10 @@ func NewHost(ctx context.Context, net inet.Network, opts *HostOpts) (*BasicHost, net.Notify(h.cmgr.Notifee()) } + if opts.EnablePing { + h.pings = ping.NewPingService(h) + } + net.SetConnHandler(h.newConnHandler) net.SetStreamHandler(h.newStreamHandler) return h, nil