diff --git a/p2p/host/basic/basic_host.go b/p2p/host/basic/basic_host.go index 186094c630a4876e1df834a46575d152e87ee163..67a61253ef17d5e02f8e3e0b3cd20a7abbd09a8d 100644 --- a/p2p/host/basic/basic_host.go +++ b/p2p/host/basic/basic_host.go @@ -207,7 +207,17 @@ func (h *BasicHost) preferredProtocol(p peer.ID, pids []protocol.ID) protocol.ID prefs, ok := h.protoPrefs[p] if !ok { - return "" + supported, err := h.Peerstore().GetProtocols(p) + if err != nil { + log.Warningf("error getting protocol for peer %s: %s", p, err) + return "" + } + + prefs = make(map[protocol.ID]struct{}) + for _, proto := range supported { + prefs[protocol.ID(proto)] = struct{}{} + } + h.protoPrefs[p] = prefs } for _, pid := range pids {