@@ -13,6 +13,8 @@ import (
1313 "github.com/vishvananda/netlink/nl"
1414)
1515
16+ var mDNSConn * mdns.Conn
17+
1618var 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
100104func 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