Randomize http redirect.
Randomize http redirect. Also remove unnecessary empty string checking.
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"math/rand"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -122,11 +123,7 @@ 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 {
|
||||||
url := machines[0].PublicUrl
|
http.Redirect(w, r, "http://"+machines[rand.Intn(len(machines))].PublicUrl+r.URL.Path, http.StatusMovedPermanently)
|
||||||
if url == "" {
|
|
||||||
url = machines[0].Url()
|
|
||||||
}
|
|
||||||
http.Redirect(w, r, "http://"+url+r.URL.Path, 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))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user