@@ -13,6 +13,8 @@ import (
13
13
"github.com/vishvananda/netlink/nl"
14
14
)
15
15
16
+ var mDNSConn * mdns.Conn
17
+
16
18
var networkState struct {
17
19
Up bool
18
20
IPv4 string
@@ -91,13 +93,26 @@ func checkNetworkState() {
91
93
}
92
94
93
95
if newState != networkState {
94
- networkState = newState
95
96
fmt .Println ("network state changed" )
97
+ //restart MDNS
98
+ startMDNS ()
99
+ networkState = newState
96
100
requestDisplayUpdate ()
97
101
}
98
102
}
99
103
100
104
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 " )
101
116
addr4 , err := net .ResolveUDPAddr ("udp4" , mdns .DefaultAddressIPv4 )
102
117
if err != nil {
103
118
return err
@@ -118,10 +133,11 @@ func startMDNS() error {
118
133
return err
119
134
}
120
135
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 {
122
137
LocalNames : []string {"jetkvm.local" }, //TODO: make it configurable
123
138
})
124
139
if err != nil {
140
+ mDNSConn = nil
125
141
return err
126
142
}
127
143
//defer server.Close()
@@ -157,7 +173,6 @@ func init() {
157
173
}
158
174
}
159
175
}()
160
- fmt .Println ("Starting mDNS server" )
161
176
err := startMDNS ()
162
177
if err != nil {
163
178
fmt .Println ("failed to run mDNS: %v" , err )
0 commit comments