From 61849bec4743d1882132130805403d188ac4e345 Mon Sep 17 00:00:00 2001 From: Ori Bernstein Date: Wed, 13 May 2020 16:09:29 +0000 Subject: [PATCH] Make mDNS opportunistic It seems like mDNS was intended to be opportunistic, but right now, if creating an mDNS client fails, the whole ICE connection fails. This allows pion to work in more restricted network namespaces, or on less supported environments like 9front. This fixes webwormhole on 9front. --- README.md | 1 + agent.go | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7ccf92f..d64924e 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Check out the **[contributing wiki](https://github.com/pion/webrtc/wiki/Contribu * [Nevio Vesic](https://github.com/0x19) * [David Hamilton](https://github.com/dihamilton) * [adwpc](https://github.com/adwpc) +* [Ori Bernstein](https://eigenstate.org) ### License MIT License - see [LICENSE](LICENSE) for full text diff --git a/agent.go b/agent.go index ea32c9c..93e5a28 100644 --- a/agent.go +++ b/agent.go @@ -354,8 +354,10 @@ func NewAgent(config *AgentConfig) (*Agent, error) { var mDNSConn *mdns.Conn mDNSConn, mDNSMode, err = createMulticastDNS(mDNSMode, mDNSName, log) + // Opportunistic mDNS: If we can't open the connection, that's ok: we + // can continue without it. if err != nil { - return nil, err + log.Warnf("Failed to initialize mDNS %s: %v", mDNSName, err) } closeMDNSConn := func() { if mDNSConn != nil { @@ -808,6 +810,9 @@ func (a *Agent) AddRemoteCandidate(c Candidate) error { } func (a *Agent) resolveAndAddMulticastCandidate(c *CandidateHost) { + if a.mDNSConn == nil { + return + } _, src, err := a.mDNSConn.Query(context.TODO(), c.Address()) if err != nil { a.log.Warnf("Failed to discover mDNS candidate %s: %v", c.Address(), err)