fix bug : master cann't redirect urlquery string

There is a bug that master can not redirect urlquery to slave volumn.
so i fix it, and it run good now.
This commit is contained in:
Mohanson 2015-12-25 16:32:50 +08:00
parent 7ae7029154
commit 3c9ef6245e

View file

@ -123,7 +123,13 @@ func (ms *MasterServer) redirectHandler(w http.ResponseWriter, r *http.Request)
} }
machines := ms.Topo.Lookup("", volumeId) machines := ms.Topo.Lookup("", volumeId)
if machines != nil && len(machines) > 0 { if machines != nil && len(machines) > 0 {
http.Redirect(w, r, util.NormalizeUrl(machines[rand.Intn(len(machines))].PublicUrl)+r.URL.Path, http.StatusMovedPermanently) var url string
if r.URL.RawQuery != "" {
url = util.NormalizeUrl(machines[rand.Intn(len(machines))].PublicUrl) + r.URL.Path + "?" + r.URL.RawQuery
} else {
url = util.NormalizeUrl(machines[rand.Intn(len(machines))].PublicUrl) + r.URL.Path
}
http.Redirect(w, r, url, http.StatusMovedPermanently)
} else { } else {
writeJsonError(w, r, http.StatusNotFound, fmt.Errorf("volume id %d not found", volumeId)) writeJsonError(w, r, http.StatusNotFound, fmt.Errorf("volume id %d not found", volumeId))
} }