From 93a35ad2516accdcb9735db509550979d01de2c3 Mon Sep 17 00:00:00 2001
From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com>
Date: Wed, 17 Mar 2021 17:54:25 +0000
Subject: [PATCH] fix: prefix handling on http router

---
 http/data.go  | 2 +-
 http/utils.go | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/http/data.go b/http/data.go
index bc9bdd56..9779cb43 100644
--- a/http/data.go
+++ b/http/data.go
@@ -73,5 +73,5 @@ func handle(fn handleFunc, prefix string, store *storage.Storage, server *settin
 		}
 	})
 
-	return http.StripPrefix(prefix, handler)
+	return stripPrefix(prefix, handler)
 }
diff --git a/http/utils.go b/http/utils.go
index ce605b36..c1c3fa65 100644
--- a/http/utils.go
+++ b/http/utils.go
@@ -56,11 +56,13 @@ func stripPrefix(prefix string, h http.Handler) http.Handler {
 
 	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		p := strings.TrimPrefix(r.URL.Path, prefix)
+		rp := strings.TrimPrefix(r.URL.RawPath, prefix)
 		r2 := new(http.Request)
 		*r2 = *r
 		r2.URL = new(url.URL)
 		*r2.URL = *r.URL
 		r2.URL.Path = p
+		r2.URL.RawPath = rp
 		h.ServeHTTP(w, r2)
 	})
 }