From eef129c10376160e3ff030a79b60010761b07754 Mon Sep 17 00:00:00 2001 From: Jana Radhakrishnan Date: Thu, 3 Dec 2015 10:21:43 -0800 Subject: [PATCH] Do not attempt serf query when not initialized Sometimes, the vxlan kernel code may generate miss notifications for vxlan bound packets when serf is not initliazed. In such cases we should not try doing a query as it will create a panic. We should error out which will generate a log message. Signed-off-by: Jana Radhakrishnan --- libnetwork/drivers/overlay/ov_serf.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libnetwork/drivers/overlay/ov_serf.go b/libnetwork/drivers/overlay/ov_serf.go index a10bbf8e33..e3f373c0d0 100644 --- a/libnetwork/drivers/overlay/ov_serf.go +++ b/libnetwork/drivers/overlay/ov_serf.go @@ -151,6 +151,10 @@ func (d *driver) processQuery(q *serf.Query) { } func (d *driver) resolvePeer(nid string, peerIP net.IP) (net.HardwareAddr, net.IPMask, net.IP, error) { + if d.serfInstance == nil { + return nil, nil, nil, fmt.Errorf("could not resolve peer: serf instance not initialized") + } + qPayload := fmt.Sprintf("%s %s", string(nid), peerIP.String()) resp, err := d.serfInstance.Query("peerlookup", []byte(qPayload), nil) if err != nil {