From 7dc1b50d3b1a87701d6496a6dfc95ff473eaa81b Mon Sep 17 00:00:00 2001 From: David Wragg Date: Tue, 10 Nov 2015 23:17:01 +0000 Subject: [PATCH] Handle the case where Forward returns nil Forward can return nil if the remote peer has HasShortID false. That can happen if we learn about a 1.2 peer from a 1.1 peer and attempt to connect to it. This change just fixes the panic. HasShortID will never be set, so we'll fall back to sleeve. But if that occurs, if can be fixed by a restart of the affected routers. --- router/fastdp.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/router/fastdp.go b/router/fastdp.go index 5e9b6ce0..250f0ac4 100644 --- a/router/fastdp.go +++ b/router/fastdp.go @@ -674,7 +674,10 @@ func (fwd *fastDatapathForwarder) sendHeartbeat() { DstPeer: fwd.remotePeer, } fwd.lock.RUnlock() - fwd.Forward(pk).Process(buf, dec, false) + + if fop := fwd.Forward(pk); fop != nil { + fop.Process(buf, dec, false) + } } const (