Shut down multicast listener when client is shut down

This commit is contained in:
Bryan Boreham committed 2014-10-08 14:24:29 +01:00
1 parent de94b06e89
commit 3175e64b63
1 file changed
+4 -2
+4 -2
View File
@@ -44,6 +44,7 @@ type inflightQuery struct {
}
type MDNSClient struct {
server *dns.Server
conn *net.UDPConn
addr *net.UDPAddr
inflight map[string]*inflightQuery
@@ -82,7 +83,8 @@ func (c *MDNSClient) Start(ifi *net.Interface) error {
}
}
go dns.ActivateAndServe(nil, multicast, dns.HandlerFunc(handleMDNS))
c.server = &dns.Server{Listener: nil, PacketConn: multicast, Handler: dns.HandlerFunc(handleMDNS)}
go c.server.ActivateAndServe()
queryChan := make(chan *MDNSInteraction, 4)
c.queryChan = queryChan
@@ -174,6 +176,7 @@ func (c *MDNSClient) queryLoop(queryChan <-chan *MDNSInteraction) {
}
switch query.code {
case CShutdown:
c.server.Shutdown()
terminate = true
case CSendQuery:
err = c.handleSendQuery(query.payload.(mDNSQueryInfo))
@@ -186,7 +189,6 @@ func (c *MDNSClient) queryLoop(queryChan <-chan *MDNSInteraction) {
run()
}
}
// handle shutdown here
}
func (c *MDNSClient) handleSendQuery(q mDNSQueryInfo) (err error) {