diff options
author | Ben Morrison <ben@gbmor.dev> | 2020-03-16 14:49:06 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2020-03-16 14:49:06 -0400 |
commit | 3bb022fb6f5c6d273e2787e10a28e821c88734d7 (patch) | |
tree | 052b3bda7febfd801206deb0db3cfeff23032731 /svc/handlers.go | |
parent | 23d4356931c90d83913ca483cb0ec42bcc357f58 (diff) | |
download | getwtxt-3bb022fb6f5c6d273e2787e10a28e821c88734d7.tar.gz |
eliminated panic when serving requests from empty registry v0.4.11
when generating an etag from a query that returns no results, indexing into the byte slice caused that thread to panic. now checking for a nil byte slice or a small byte slice in handlers.go:46:getEtag() on nil byte slice, return empty string for etag. on small byte slice, don't truncate it, but return the whole thing.
Diffstat (limited to 'svc/handlers.go')
-rw-r--r-- | svc/handlers.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/svc/handlers.go b/svc/handlers.go index ee58622..7ce4b77 100644 --- a/svc/handlers.go +++ b/svc/handlers.go @@ -45,6 +45,12 @@ func getEtagFromTime(modtime time.Time) string { // responses. func getEtag(data []byte) string { bytes := fnv.New32().Sum(data) + if bytes == nil { + return "" + } + if len(bytes) < 16 { + return fmt.Sprintf("%x", bytes) + } return fmt.Sprintf("%x", bytes[:16]) } |