diff --git a/libnetwork/drivers/bridge/bridge.go b/libnetwork/drivers/bridge/bridge.go index 05d08683c6..6124ccb6cb 100644 --- a/libnetwork/drivers/bridge/bridge.go +++ b/libnetwork/drivers/bridge/bridge.go @@ -338,16 +338,11 @@ func (c *networkConfiguration) conflictsWithNetworks(id string, others []*bridge } func (d *driver) configure(option map[string]interface{}) error { - var config *configuration - var err error - - err = d.initStore(option) - if err != nil { - return err - } - - d.Lock() - defer d.Unlock() + var ( + config *configuration + err error + natChain, filterChain *iptables.ChainInfo + ) genericData, ok := option[netlabel.GenericData] if !ok || genericData == nil { @@ -375,13 +370,23 @@ func (d *driver) configure(option map[string]interface{}) error { } if config.EnableIPTables { - d.natChain, d.filterChain, err = setupIPChains(config) + natChain, filterChain, err = setupIPChains(config) if err != nil { return err } } + d.Lock() + d.natChain = natChain + d.filterChain = filterChain d.config = config + d.Unlock() + + err = d.initStore(option) + if err != nil { + return err + } + return nil }