mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Make sure broadcast queue is valid broadcasting
When broadcasting table event, make sure the broadcast queue is valid. The network may have been removed while in the process of sending the broadcast. Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
This commit is contained in:
parent
08014eadb6
commit
98b571a524
1 changed files with 17 additions and 1 deletions
|
@ -80,10 +80,26 @@ func (nDB *NetworkDB) sendTableEvent(event TableEvent_Type, nid string, tname st
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var broadcastQ *memberlist.TransmitLimitedQueue
|
||||||
nDB.RLock()
|
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()
|
nDB.RUnlock()
|
||||||
|
|
||||||
|
// The network may have been removed
|
||||||
|
if broadcastQ == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
broadcastQ.QueueBroadcast(&tableEventMessage{
|
broadcastQ.QueueBroadcast(&tableEventMessage{
|
||||||
msg: raw,
|
msg: raw,
|
||||||
id: nid,
|
id: nid,
|
||||||
|
|
Loading…
Add table
Reference in a new issue