]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Tidy up error handling on HTTP tracker client
authorMatt Joiner <anacrolix@gmail.com>
Fri, 27 Mar 2015 06:18:45 +0000 (17:18 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 27 Mar 2015 06:18:45 +0000 (17:18 +1100)
tracker/http.go

index 8c2682a89d18359498d99045f0c8c49bbad177b3..0a65fc707bd8ec3d59c628df65744fc188607060 100644 (file)
@@ -5,7 +5,6 @@ import (
        "errors"
        "fmt"
        "io"
-       "log"
        "net"
        "net/http"
        "net/url"
@@ -79,10 +78,14 @@ func (me *client) Announce(ar *AnnounceRequest) (ret AnnounceResponse, err error
        defer resp.Body.Close()
        buf := bytes.Buffer{}
        io.Copy(&buf, resp.Body)
-       log.Printf("%q", buf.Bytes())
+       if resp.StatusCode != 200 {
+               err = fmt.Errorf("response from tracker: %s: %s", resp.Status, buf.String())
+               return
+       }
        var trackerResponse response
-       err = bencode.NewDecoder(&buf).Decode(&trackerResponse)
+       err = bencode.Unmarshal(buf.Bytes(), &trackerResponse)
        if err != nil {
+               err = fmt.Errorf("error decoding %q: %s", buf.Bytes(), err)
                return
        }
        if trackerResponse.FailureReason != "" {