diff --git a/libpod/container_internal_freebsd.go b/libpod/container_internal_freebsd.go index ac9892ef2a..4635da064b 100644 --- a/libpod/container_internal_freebsd.go +++ b/libpod/container_internal_freebsd.go @@ -146,15 +146,18 @@ func (c *Container) cleanupNetwork() error { } // Stop the container's network namespace (if it has one) - if err := c.runtime.teardownNetNS(c); err != nil { - logrus.Errorf("Unable to cleanup network for container %s: %q", c.ID(), err) + neterr := c.runtime.teardownNetNS(c) + + // always save even when there was an error + err = c.save() + if err != nil { + if neterr != nil { + logrus.Errorf("Unable to clean up network for container %s: %q", c.ID(), neterr) + } + return err } - if c.valid { - return c.save() - } - - return nil + return neterr } // reloadNetwork reloads the network for the given container, recreating diff --git a/libpod/container_internal_linux.go b/libpod/container_internal_linux.go index c479a0255d..5ea2448e20 100644 --- a/libpod/container_internal_linux.go +++ b/libpod/container_internal_linux.go @@ -187,18 +187,20 @@ func (c *Container) cleanupNetwork() error { } // Stop the container's network namespace (if it has one) - if err := c.runtime.teardownNetNS(c); err != nil { - logrus.Errorf("Unable to clean up network for container %s: %q", c.ID(), err) - } - + neterr := c.runtime.teardownNetNS(c) c.state.NetNS = "" c.state.NetworkStatus = nil - if c.valid { - return c.save() + // always save even when there was an error + err = c.save() + if err != nil { + if neterr != nil { + logrus.Errorf("Unable to clean up network for container %s: %q", c.ID(), neterr) + } + return err } - return nil + return neterr } // reloadNetwork reloads the network for the given container, recreating