From 5aa58e6043ddbf5651cd6f142ccfcc95a4029fa9 Mon Sep 17 00:00:00 2001 From: David Wragg Date: Mon, 7 Sep 2015 17:31:18 +0100 Subject: [PATCH] go 1.5 broke PMTU detection --- router/utils.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/router/utils.go b/router/utils.go index 6f98f66c..26b59f34 100644 --- a/router/utils.go +++ b/router/utils.go @@ -6,6 +6,7 @@ import ( "encoding/gob" "fmt" "net" + "os" "github.com/weaveworks/weave/common" ) @@ -26,15 +27,19 @@ func checkWarn(e error) { } } +// Look inside an error produced by the net package to get to the +// syscall.Errno at the root of the problem. func PosixError(err error) error { - if err == nil { - return nil + if operr, ok := err.(*net.OpError); ok { + err = operr.Err } - operr, ok := err.(*net.OpError) - if !ok { - return nil + + // go1.5 wraps an Errno inside a SyscallError inside an OpError + if scerr, ok := err.(*os.SyscallError); ok { + err = scerr.Err } - return operr.Err + + return err } func (mtbe MsgTooBigError) Error() string {