mirror of https://github.com/containers/podman.git
remove rootlessport socket to prevent EADDRINUSE
When we restart a container via podman restart or restart policy the
rootlessport process fails with `address already in use` because the
socketfile still exists.
This is a regression and was introduced in commit abdedc31a2.
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
parent
0f3d3bd21d
commit
32424d9a9b
|
|
@ -218,6 +218,9 @@ outer:
|
|||
|
||||
// we only need to have a socket to reload ports when we run under rootless cni
|
||||
if cfg.RootlessCNI {
|
||||
socketfile := filepath.Join(socketDir, cfg.ContainerID)
|
||||
// make sure to remove the file if it exists to prevent EADDRINUSE
|
||||
_ = os.Remove(socketfile)
|
||||
// workaround to bypass the 108 char socket path limit
|
||||
// open the fd and use the path to the fd as bind argument
|
||||
fd, err := unix.Open(socketDir, unix.O_PATH, 0)
|
||||
|
|
@ -229,6 +232,8 @@ outer:
|
|||
return err
|
||||
}
|
||||
err = unix.Close(fd)
|
||||
// remove the socket file on exit
|
||||
defer os.Remove(socketfile)
|
||||
if err != nil {
|
||||
logrus.Warnf("failed to close the socketDir fd: %v", err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue