|
|
@ -5,6 +5,7 @@ import ( |
|
|
|
"errors" |
|
|
|
"fmt" |
|
|
|
"io/ioutil" |
|
|
|
"math/rand" |
|
|
|
"net/http" |
|
|
|
"strconv" |
|
|
|
"strings" |
|
|
@ -122,11 +123,7 @@ func (ms *MasterServer) redirectHandler(w http.ResponseWriter, r *http.Request) |
|
|
|
} |
|
|
|
machines := ms.Topo.Lookup("", volumeId) |
|
|
|
if machines != nil && len(machines) > 0 { |
|
|
|
url := machines[0].PublicUrl |
|
|
|
if url == "" { |
|
|
|
url = machines[0].Url() |
|
|
|
} |
|
|
|
http.Redirect(w, r, "http://"+url+r.URL.Path, http.StatusMovedPermanently) |
|
|
|
http.Redirect(w, r, "http://"+machines[rand.Intn(len(machines))].PublicUrl+r.URL.Path, http.StatusMovedPermanently) |
|
|
|
} else { |
|
|
|
writeJsonError(w, r, http.StatusNotFound, fmt.Errorf("volume id %d not found.", volumeId)) |
|
|
|
} |
|
|
|