From 37672c4e008492fa0d39c838c82c729a8eae8825 Mon Sep 17 00:00:00 2001 From: brianrossetti Date: Thu, 30 Mar 2023 12:12:09 -0600 Subject: [PATCH] reutrning explicit connection failed status on network issues --- module/traceroute/traceroute.go | 10 ++++++++++ module/traceroute/types.go | 1 + 2 files changed, 11 insertions(+) diff --git a/module/traceroute/traceroute.go b/module/traceroute/traceroute.go index 25f04de..1cd8320 100644 --- a/module/traceroute/traceroute.go +++ b/module/traceroute/traceroute.go @@ -4,8 +4,10 @@ import ( "context" "encoding/json" "fmt" + "net" "os" "os/exec" + "regexp" "strings" "validation-bot/task" @@ -105,6 +107,14 @@ func (q Auditor) ValidateProvider(ctx context.Context, provider string) (*Result hops, err := q.Traceroute(ctx, host, port, q.useSudo) if err != nil { + re := regexp.MustCompile("network is unreachable") + var netErr net.OpError + if ok := errors.As(err, &netErr); ok && re.MatchString(err.Error()) { + return &ResultContent{ + Status: ConnectError, + ErrorMessage: "network is unreachable", + }, nil + } return nil, errors.Wrap(err, "failed to traceroute") } diff --git a/module/traceroute/types.go b/module/traceroute/types.go index 8428930..6269af8 100644 --- a/module/traceroute/types.go +++ b/module/traceroute/types.go @@ -24,6 +24,7 @@ const ( Success Status = "success" InvalidMultiAddress Status = "invalid_multi_address" NoMultiAddress Status = "no_multi_address" + ConnectError Status = "connect_error" ) type HopResult struct {