Skip to content

Commit 951173b

Browse files
authored
Restart mDNS every time the connection information changes (#155)
1 parent 2a99c2d commit 951173b

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

network.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
"github.com/vishvananda/netlink/nl"
1414
)
1515

16+
var mDNSConn *mdns.Conn
17+
1618
var networkState struct {
1719
Up bool
1820
IPv4 string
@@ -91,13 +93,26 @@ func checkNetworkState() {
9193
}
9294

9395
if newState != networkState {
94-
networkState = newState
9596
fmt.Println("network state changed")
97+
//restart MDNS
98+
startMDNS()
99+
networkState = newState
96100
requestDisplayUpdate()
97101
}
98102
}
99103

100104
func startMDNS() error {
105+
//If server was previously running, stop it
106+
if mDNSConn != nil {
107+
fmt.Printf("Stopping mDNS server\n")
108+
err := mDNSConn.Close()
109+
if err != nil {
110+
fmt.Printf("failed to stop mDNS server: %v\n", err)
111+
}
112+
}
113+
114+
//Start a new server
115+
fmt.Printf("Starting mDNS server on jetkvm.local\n")
101116
addr4, err := net.ResolveUDPAddr("udp4", mdns.DefaultAddressIPv4)
102117
if err != nil {
103118
return err
@@ -118,10 +133,11 @@ func startMDNS() error {
118133
return err
119134
}
120135

121-
_, err = mdns.Server(ipv4.NewPacketConn(l4), ipv6.NewPacketConn(l6), &mdns.Config{
136+
mDNSConn, err = mdns.Server(ipv4.NewPacketConn(l4), ipv6.NewPacketConn(l6), &mdns.Config{
122137
LocalNames: []string{"jetkvm.local"}, //TODO: make it configurable
123138
})
124139
if err != nil {
140+
mDNSConn = nil
125141
return err
126142
}
127143
//defer server.Close()
@@ -157,7 +173,6 @@ func init() {
157173
}
158174
}
159175
}()
160-
fmt.Println("Starting mDNS server")
161176
err := startMDNS()
162177
if err != nil {
163178
fmt.Println("failed to run mDNS: %v", err)

0 commit comments

Comments
 (0)