about summary refs log tree commit diff stats
path: root/svc/handlers.go
diff options
context:
space:
mode:
authorBen Morrison <ben@gbmor.dev>2020-03-16 14:49:06 -0400
committerBen Morrison <ben@gbmor.dev>2020-03-16 14:49:06 -0400
commit3bb022fb6f5c6d273e2787e10a28e821c88734d7 (patch)
tree052b3bda7febfd801206deb0db3cfeff23032731 /svc/handlers.go
parent23d4356931c90d83913ca483cb0ec42bcc357f58 (diff)
downloadgetwtxt-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.go6
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])
 }