Remove stale unix socket
This commit is contained in:
parent
b03a6ab1b1
commit
91c1822473
|
@ -1,6 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
"net"
|
"net"
|
||||||
|
@ -48,12 +49,38 @@ func (l *UAPIListener) Addr() net.Addr {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func connectUnixSocket(path string) (net.Listener, error) {
|
||||||
|
|
||||||
|
// attempt inital connection
|
||||||
|
|
||||||
|
listener, err := net.Listen("unix", path)
|
||||||
|
if err == nil {
|
||||||
|
return listener, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if active
|
||||||
|
|
||||||
|
_, err = net.Dial("unix", path)
|
||||||
|
if err == nil {
|
||||||
|
return nil, errors.New("Unix socket in use")
|
||||||
|
}
|
||||||
|
|
||||||
|
// attempt cleanup
|
||||||
|
|
||||||
|
err = os.Remove(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return net.Listen("unix", path)
|
||||||
|
}
|
||||||
|
|
||||||
func NewUAPIListener(name string) (net.Listener, error) {
|
func NewUAPIListener(name string) (net.Listener, error) {
|
||||||
|
|
||||||
// open UNIX socket
|
// open UNIX socket
|
||||||
|
|
||||||
socketPath := fmt.Sprintf("/var/run/wireguard/%s.sock", name)
|
socketPath := fmt.Sprintf("/var/run/wireguard/%s.sock", name)
|
||||||
listener, err := net.Listen("unix", socketPath)
|
listener, err := connectUnixSocket(socketPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue