diff --git a/libpod/networking.go b/libpod/networking.go index f92b80201d..a508cd7b41 100644 --- a/libpod/networking.go +++ b/libpod/networking.go @@ -42,9 +42,20 @@ func (r *Runtime) createNetNS(ctr *Container) (err error) { if err != nil { return errors.Wrapf(err, "error configuring network namespace for container %s", ctr.ID()) } + defer func() { + if err != nil { + if err2 := r.netPlugin.TearDownPod(podNetwork); err2 != nil { + logrus.Errorf("Error tearing down partially created network namespace for container %s: %v", ctr.ID(), err2) + } + } + }() - resultStruct := result.(*cnitypes.Result) - logrus.Debugf("Response from CNI plugins: %v", resultStruct.String()) + logrus.Debugf("Response from CNI plugins: %v", result.String()) + + resultStruct, err := cnitypes.GetResult(result) + if err != nil { + return errors.Wrapf(err, "error parsing result from CBI plugins") + } ctr.state.NetNS = ctrNS ctr.state.IPs = resultStruct.IPs