diff --git a/libnetwork/networkdb/broadcast.go b/libnetwork/networkdb/broadcast.go index 7008a1f431..2e07729569 100644 --- a/libnetwork/networkdb/broadcast.go +++ b/libnetwork/networkdb/broadcast.go @@ -80,10 +80,26 @@ func (nDB *NetworkDB) sendTableEvent(event TableEvent_Type, nid string, tname st return err } + var broadcastQ *memberlist.TransmitLimitedQueue nDB.RLock() - broadcastQ := nDB.networks[nDB.config.NodeName][nid].tableBroadcasts + thisNodeNetworks, ok := nDB.networks[nDB.config.NodeName] + if ok { + // The network may have been removed + network, networkOk := thisNodeNetworks[nid] + if !networkOk { + nDB.RUnlock() + return nil + } + + broadcastQ = network.tableBroadcasts + } nDB.RUnlock() + // The network may have been removed + if broadcastQ == nil { + return nil + } + broadcastQ.QueueBroadcast(&tableEventMessage{ msg: raw, id: nid,