From 3e113e29157f0223c38eedc9a43fee82e1c70dc9 Mon Sep 17 00:00:00 2001 From: "Daniel A. Nagy" Date: Tue, 12 May 2015 21:06:29 +0200 Subject: [PATCH] Support HTTP HEAD requests, always add Content-Length HTTP header. --- bzz/httpaccess.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bzz/httpaccess.go b/bzz/httpaccess.go index 839b534ae6..c25aed60a9 100644 --- a/bzz/httpaccess.go +++ b/bzz/httpaccess.go @@ -10,6 +10,7 @@ import ( "io" "net/http" "regexp" + "strconv" "sync" "time" ) @@ -113,7 +114,7 @@ func handler(w http.ResponseWriter, r *http.Request, dpa *DPA) { } else { http.Error(w, "No POST to "+uri+" allowed.", http.StatusBadRequest) } - case r.Method == "GET": + case r.Method == "GET" || r.Method == "HEAD": if uriMatcher.MatchString(uri) { dpaLogger.Debugf("Swarm: Raw GET request %s received", uri) name := uri[5:69] @@ -191,10 +192,11 @@ func handler(w http.ResponseWriter, r *http.Request, dpa *DPA) { http.Error(w, "Object "+uri+" not found.", http.StatusNotFound) break MANIFEST_RESOLUTION } else if mimeType != manifestType { + reader := dpa.Retrieve(key) w.Header().Set("Content-Type", mimeType) dpaLogger.Debugf("Swarm: HTTP Status %d", status) + w.Header().Set("Content-Length", strconv.FormatInt(reader.Size(), 10)) w.WriteHeader(int(status)) - reader := dpa.Retrieve(key) dpaLogger.Debugf("Swarm: Reading %d bytes.", reader.Size()) http.ServeContent(w, r, name, time.Unix(0, 0), reader) dpaLogger.Debugf("Swarm: Served %s as %s.", mimeType, uri)