delete link and ip if err when cmdAdd to avoid resource leak.

This commit is contained in:
oilbeater 2017-11-27 15:26:07 +08:00
parent 92c634042c
commit 1f02326d56

View File

@ -161,11 +161,28 @@ func cmdAdd(args *skel.CmdArgs) error {
return err
}
// Delete link if err to avoid link leak in this ns
defer func() {
if err != nil {
netns.Do(func(_ ns.NetNS) error {
return ip.DelLinkByName(args.IfName)
})
}
}()
// run the IPAM plugin and get back the config to apply
r, err := ipam.ExecAdd(n.IPAM.Type, args.StdinData)
if err != nil {
return err
}
// Invoke ipam del if err to avoid ip leak
defer func() {
if err != nil {
ipam.ExecDel(n.IPAM.Type, args.StdinData)
}
}()
// Convert whatever the IPAM result was into the current Result type
result, err := current.NewResultFromResult(r)
if err != nil {