Browse Source

Merge pull request #1249 from mrjana/networkdb

Make sure broadcast queue is valid broadcasting
Alessandro Boch 9 years ago
parent
commit
cbbadbec22
1 changed files with 17 additions and 1 deletions
  1. 17 1
      libnetwork/networkdb/broadcast.go

+ 17 - 1
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,