diff options
author | Paul Holzinger <pholzing@redhat.com> | 2021-09-13 16:25:05 +0200 |
---|---|---|
committer | Matthew Heon <mheon@redhat.com> | 2021-09-16 09:42:14 -0400 |
commit | ffc8e57d3bb55e3df460c9df41a95993cf5dd2cf (patch) | |
tree | 6d60de0a4193439c45d4da71b357a669fd510480 | |
parent | fd8d332a4e440462f2dc8fbd1de4c291187fd92a (diff) | |
download | podman-ffc8e57d3bb55e3df460c9df41a95993cf5dd2cf.tar.gz podman-ffc8e57d3bb55e3df460c9df41a95993cf5dd2cf.tar.bz2 podman-ffc8e57d3bb55e3df460c9df41a95993cf5dd2cf.zip |
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 abdedc31a25e.
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
-rw-r--r-- | pkg/rootlessport/rootlessport_linux.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/pkg/rootlessport/rootlessport_linux.go b/pkg/rootlessport/rootlessport_linux.go index 730d91aa2..10d135e0b 100644 --- a/pkg/rootlessport/rootlessport_linux.go +++ b/pkg/rootlessport/rootlessport_linux.go @@ -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) } |