From 8334b13144c108fc6e8521a4babe915c37854d29 Mon Sep 17 00:00:00 2001 From: Pieter Claerhout Date: Mon, 25 May 2020 10:07:34 +0200 Subject: [PATCH] Better error handling --- database.go | 6 ++++-- go.mod | 4 ++-- go.sum | 4 ++++ serverapp/handle_lookup.go | 6 ++++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/database.go b/database.go index df2f18d..c57f704 100644 --- a/database.go +++ b/database.go @@ -48,9 +48,11 @@ func (database *Database) Lookup(ipaddress string) (*IPLocation, error) { defer db.Close() ip := net.ParseIP(ipaddress) + if ip == nil { + return nil, errors.New("Invalid IP address") + } - err = db.Lookup(ip, &location) - if err != nil { + if err := db.Lookup(ip, &location); err != nil { return location, err } diff --git a/go.mod b/go.mod index e56e17b..717e853 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/joho/godotenv v1.3.0 github.com/markusthoemmes/goautoneg v0.0.0-20190713162725-c6008fefa5b1 // indirect github.com/oschwald/maxminddb-golang v1.6.0 - github.com/pieterclaerhout/go-log v1.13.0 - github.com/pieterclaerhout/go-webserver/v2 v2.0.2 + github.com/pieterclaerhout/go-log v1.14.0 + github.com/pieterclaerhout/go-webserver/v2 v2.0.3 github.com/pkg/errors v0.9.1 ) diff --git a/go.sum b/go.sum index ee4cffa..8995a7d 100644 --- a/go.sum +++ b/go.sum @@ -29,8 +29,12 @@ github.com/pieterclaerhout/go-formatter v1.0.4 h1:XKFCBb9aNwazTqhtH1snru/D8E7yXQ github.com/pieterclaerhout/go-formatter v1.0.4/go.mod h1:1okQQFUwXCLGTWXoWoh3OGchp3i7KeebwIx/ufmsjks= github.com/pieterclaerhout/go-log v1.13.0 h1:Jx12Ou5O7olkB48mD5IdqRWiYt5AHwfuLLDlz5LnDXw= github.com/pieterclaerhout/go-log v1.13.0/go.mod h1:Zwdhg00fN6IuEWDvktUpu/XFMC5Y+NWrXyQ1RQHRPjc= +github.com/pieterclaerhout/go-log v1.14.0 h1:TWh+YvSWdqYeejB15pxa6S8p06kDDLCUz1nfNyqOJPo= +github.com/pieterclaerhout/go-log v1.14.0/go.mod h1:Zwdhg00fN6IuEWDvktUpu/XFMC5Y+NWrXyQ1RQHRPjc= github.com/pieterclaerhout/go-webserver/v2 v2.0.2 h1:7WBPFuNwlEvZDb7ooZRkn0Zxx+2Azrswm53K/XaxaFE= github.com/pieterclaerhout/go-webserver/v2 v2.0.2/go.mod h1:LNTKF6X39cC9DtFA2AbHt2kOJK5TwTfB3NtzMxrpjAk= +github.com/pieterclaerhout/go-webserver/v2 v2.0.3 h1:4jqg7LiAH3jXayGiQDTRWThXQlmS/h1iDIIZyeY03CI= +github.com/pieterclaerhout/go-webserver/v2 v2.0.3/go.mod h1:lvYt/vW838Slf62NWLOECTWBaUiWCugRsxCKmb9A5Qs= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= diff --git a/serverapp/handle_lookup.go b/serverapp/handle_lookup.go index 94db672..1778226 100644 --- a/serverapp/handle_lookup.go +++ b/serverapp/handle_lookup.go @@ -1,6 +1,7 @@ package serverapp import ( + "errors" "net/http" "github.com/pieterclaerhout/go-webserver/v2/binder" @@ -21,6 +22,11 @@ func (a *serverApp) handleLookup() http.HandlerFunc { return } + if req.IPAddress == "" { + respond.Error(errors.New("No IP address specified")).Write(w, r) + return + } + result, err := a.db.Lookup(req.IPAddress) if err != nil { respond.Error(err).Write(w, r)