diff --git a/p2p/discovery/mdns.go b/p2p/discovery/mdns.go index 003567cc496c1460695be12c91921fa1b47ff7c2..43c1bedb33f07a9da9191474ff7401e11a63dbbc 100644 --- a/p2p/discovery/mdns.go +++ b/p2p/discovery/mdns.go @@ -37,6 +37,7 @@ type mdnsService struct { server *mdns.Server service *mdns.MDNSService host host.Host + tag string lk sync.Mutex notifees []Notifee @@ -61,7 +62,7 @@ func getDialableListenAddrs(ph host.Host) ([]*net.TCPAddr, error) { return out, nil } -func NewMdnsService(ctx context.Context, peerhost host.Host, interval time.Duration) (Service, error) { +func NewMdnsService(ctx context.Context, peerhost host.Host, interval time.Duration, serviceTag string) (Service, error) { // TODO: dont let mdns use logging... golog.SetOutput(ioutil.Discard) @@ -82,7 +83,10 @@ func NewMdnsService(ctx context.Context, peerhost host.Host, interval time.Durat myid := peerhost.ID().Pretty() info := []string{myid} - service, err := mdns.NewMDNSService(myid, ServiceTag, "", "", port, ipaddrs, info) + if serviceTag == "" { + serviceTag = ServiceTag + } + service, err := mdns.NewMDNSService(myid, serviceTag, "", "", port, ipaddrs, info) if err != nil { return nil, err } @@ -98,6 +102,7 @@ func NewMdnsService(ctx context.Context, peerhost host.Host, interval time.Durat service: service, host: peerhost, interval: interval, + tag: serviceTag, } go s.pollForEntries(ctx) @@ -126,7 +131,7 @@ func (m *mdnsService) pollForEntries(ctx context.Context) { qp := &mdns.QueryParam{ Domain: "local", Entries: entriesCh, - Service: ServiceTag, + Service: m.tag, Timeout: time.Second * 5, } diff --git a/p2p/discovery/mdns_test.go b/p2p/discovery/mdns_test.go index ea2633ebde4e074b71a2ab757610350da3665586..5bbfd5269549c23548e18cc4d534a0f21bfb8466 100644 --- a/p2p/discovery/mdns_test.go +++ b/p2p/discovery/mdns_test.go @@ -28,12 +28,12 @@ func TestMdnsDiscovery(t *testing.T) { a := bhost.New(netutil.GenSwarmNetwork(t, ctx)) b := bhost.New(netutil.GenSwarmNetwork(t, ctx)) - sa, err := NewMdnsService(ctx, a, time.Second) + sa, err := NewMdnsService(ctx, a, time.Second, "someTag") if err != nil { t.Fatal(err) } - sb, err := NewMdnsService(ctx, b, time.Second) + sb, err := NewMdnsService(ctx, b, time.Second, "someTag") if err != nil { t.Fatal(err) }