diff options
| author | tnextday <fw2k4@163.com> | 2016-02-27 17:42:41 +0800 |
|---|---|---|
| committer | tnextday <fw2k4@163.com> | 2016-02-27 17:42:41 +0800 |
| commit | a98f359122f5bd9f1c86e1751a55073c3c90f31a (patch) | |
| tree | df32d4629df91d7614075afee2fe28465da8f2fe /go/weed | |
| parent | a436b0345a3400610c4bc7e8e93336c707e45571 (diff) | |
| download | seaweedfs-a98f359122f5bd9f1c86e1751a55073c3c90f31a.tar.xz seaweedfs-a98f359122f5bd9f1c86e1751a55073c3c90f31a.zip | |
Fix chunk manifest replicate upload error
Escape the redirect url in volume read handler
Diffstat (limited to 'go/weed')
| -rw-r--r-- | go/weed/weed_server/volume_server_handlers_read.go | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/go/weed/weed_server/volume_server_handlers_read.go b/go/weed/weed_server/volume_server_handlers_read.go index bfa6d6a4f..52b22426f 100644 --- a/go/weed/weed_server/volume_server_handlers_read.go +++ b/go/weed/weed_server/volume_server_handlers_read.go @@ -11,6 +11,8 @@ import ( "strings" "time" + "net/url" + "github.com/chrislusf/seaweedfs/go/glog" "github.com/chrislusf/seaweedfs/go/images" "github.com/chrislusf/seaweedfs/go/operation" @@ -46,7 +48,15 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request) lookupResult, err := operation.Lookup(vs.GetMasterNode(), volumeId.String()) glog.V(2).Infoln("volume", volumeId, "found on", lookupResult, "error", err) if err == nil && len(lookupResult.Locations) > 0 { - http.Redirect(w, r, util.NormalizeUrl(lookupResult.Locations[0].PublicUrl)+r.URL.Path, http.StatusMovedPermanently) + u, _ := url.Parse(util.NormalizeUrl(lookupResult.Locations[0].PublicUrl)) + u.Path = r.URL.Path + arg := url.Values{} + if c := r.FormValue("collection"); c != "" { + arg.Set("collection", c) + } + u.RawQuery = arg.Encode() + http.Redirect(w, r, u.String(), http.StatusMovedPermanently) + } else { glog.V(2).Infoln("lookup error:", err, r.URL.Path) w.WriteHeader(http.StatusNotFound) |
