aboutsummaryrefslogtreecommitdiff
path: root/weed/server/raft_server.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2017-06-15 21:21:32 -0700
committerChris Lu <chris.lu@gmail.com>2017-06-15 21:21:32 -0700
commit72e89b615b02f1af03d0f838ea6feb394ab1d401 (patch)
treec03d0d66971f17945b2fbe94963a2ad4bfeddcb7 /weed/server/raft_server.go
parent761c0eb1ed6cd7645d747726292ff2656d0d4671 (diff)
downloadseaweedfs-72e89b615b02f1af03d0f838ea6feb394ab1d401.tar.xz
seaweedfs-72e89b615b02f1af03d0f838ea6feb394ab1d401.zip
301 is reported as 404 for http post
fix https://github.com/chrislusf/seaweedfs/issues/512
Diffstat (limited to 'weed/server/raft_server.go')
-rw-r--r--weed/server/raft_server.go16
1 files changed, 7 insertions, 9 deletions
diff --git a/weed/server/raft_server.go b/weed/server/raft_server.go
index 35b802753..e3914d9f8 100644
--- a/weed/server/raft_server.go
+++ b/weed/server/raft_server.go
@@ -189,14 +189,12 @@ func postFollowingOneRedirect(target string, contentType string, b bytes.Buffer)
return err
}
defer resp.Body.Close()
- reply, _ := ioutil.ReadAll(resp.Body)
statusCode := resp.StatusCode
+ data, _ := ioutil.ReadAll(resp.Body)
+ reply := string(data)
- if statusCode == http.StatusMovedPermanently {
- var urlStr string
- if urlStr = resp.Header.Get("Location"); urlStr == "" {
- return fmt.Errorf("%d response missing Location header", resp.StatusCode)
- }
+ if strings.HasPrefix(reply, "\"http") {
+ urlStr := reply[1 : len(reply)-1]
glog.V(0).Infoln("Post redirected to ", urlStr)
resp2, err2 := http.Post(urlStr, contentType, backupReader)
@@ -204,13 +202,13 @@ func postFollowingOneRedirect(target string, contentType string, b bytes.Buffer)
return err2
}
defer resp2.Body.Close()
- reply, _ = ioutil.ReadAll(resp2.Body)
+ data, _ = ioutil.ReadAll(resp2.Body)
statusCode = resp2.StatusCode
}
- glog.V(0).Infoln("Post returned status: ", statusCode, string(reply))
+ glog.V(0).Infoln("Post returned status: ", statusCode, string(data))
if statusCode != http.StatusOK {
- return errors.New(string(reply))
+ return errors.New(string(data))
}
return nil