diff --git a/libnetwork/drivers/bridge/bridge.go b/libnetwork/drivers/bridge/bridge.go index 8410eb037a..e276bc7b96 100644 --- a/libnetwork/drivers/bridge/bridge.go +++ b/libnetwork/drivers/bridge/bridge.go @@ -1243,8 +1243,17 @@ func (d *driver) ProgramExternalConnectivity(nid, eid string, options map[string return err } + defer func() { + if err != nil { + if e := network.releasePorts(endpoint); e != nil { + logrus.Errorf("Failed to release ports allocated for the bridge endpoint %s on failure %v because of %v", + eid, err, e) + } + endpoint.portMapping = nil + } + }() + if err = d.storeUpdate(endpoint); err != nil { - endpoint.portMapping = nil return fmt.Errorf("failed to update bridge endpoint %s to store: %v", endpoint.id[0:7], err) }