specify between torrent and http errors
This commit is contained in:
parent
6d5290d85e
commit
d954378791
2 changed files with 23 additions and 7 deletions
|
@ -18,10 +18,13 @@ import (
|
||||||
|
|
||||||
func (t *Tracker) ServeAnnounce(w http.ResponseWriter, r *http.Request, p httprouter.Params) int {
|
func (t *Tracker) ServeAnnounce(w http.ResponseWriter, r *http.Request, p httprouter.Params) int {
|
||||||
ann, err := models.NewAnnounce(t.cfg, r, p)
|
ann, err := models.NewAnnounce(t.cfg, r, p)
|
||||||
if err != nil {
|
if err == models.ErrMalformedRequest {
|
||||||
fail(w, r, err)
|
fail(w, r, err)
|
||||||
return http.StatusOK
|
return http.StatusOK
|
||||||
}
|
}
|
||||||
|
if err != nil {
|
||||||
|
return http.StatusInternalServerError
|
||||||
|
}
|
||||||
|
|
||||||
conn, err := t.tp.Get()
|
conn, err := t.tp.Get()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -30,25 +33,31 @@ func (t *Tracker) ServeAnnounce(w http.ResponseWriter, r *http.Request, p httpro
|
||||||
|
|
||||||
if t.cfg.Whitelist {
|
if t.cfg.Whitelist {
|
||||||
err = conn.ClientWhitelisted(ann.ClientID())
|
err = conn.ClientWhitelisted(ann.ClientID())
|
||||||
if err != nil {
|
if err == tracker.ErrClientUnapproved {
|
||||||
fail(w, r, err)
|
fail(w, r, err)
|
||||||
return http.StatusOK
|
return http.StatusOK
|
||||||
|
} else if err != nil {
|
||||||
|
return http.StatusInternalServerError
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var user *models.User
|
var user *models.User
|
||||||
if t.cfg.Private {
|
if t.cfg.Private {
|
||||||
user, err = conn.FindUser(ann.Passkey)
|
user, err = conn.FindUser(ann.Passkey)
|
||||||
if err != nil {
|
if err == tracker.ErrUserDNE {
|
||||||
fail(w, r, err)
|
fail(w, r, err)
|
||||||
return http.StatusOK
|
return http.StatusOK
|
||||||
|
} else if err != nil {
|
||||||
|
return http.StatusInternalServerError
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
torrent, err := conn.FindTorrent(ann.Infohash)
|
torrent, err := conn.FindTorrent(ann.Infohash)
|
||||||
if err != nil {
|
if err == tracker.ErrTorrentDNE {
|
||||||
fail(w, r, err)
|
fail(w, r, err)
|
||||||
return http.StatusOK
|
return http.StatusOK
|
||||||
|
} else if err != nil {
|
||||||
|
return http.StatusInternalServerError
|
||||||
}
|
}
|
||||||
|
|
||||||
peer := models.NewPeer(ann, user, torrent)
|
peer := models.NewPeer(ann, user, torrent)
|
||||||
|
|
|
@ -12,14 +12,17 @@ import (
|
||||||
"github.com/julienschmidt/httprouter"
|
"github.com/julienschmidt/httprouter"
|
||||||
|
|
||||||
"github.com/chihaya/chihaya/bencode"
|
"github.com/chihaya/chihaya/bencode"
|
||||||
|
"github.com/chihaya/chihaya/drivers/tracker"
|
||||||
"github.com/chihaya/chihaya/models"
|
"github.com/chihaya/chihaya/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (t *Tracker) ServeScrape(w http.ResponseWriter, r *http.Request, p httprouter.Params) int {
|
func (t *Tracker) ServeScrape(w http.ResponseWriter, r *http.Request, p httprouter.Params) int {
|
||||||
scrape, err := models.NewScrape(t.cfg, r, p)
|
scrape, err := models.NewScrape(t.cfg, r, p)
|
||||||
if err != nil {
|
if err == models.ErrMalformedRequest {
|
||||||
fail(w, r, err)
|
fail(w, r, err)
|
||||||
return http.StatusOK
|
return http.StatusOK
|
||||||
|
} else if err != nil {
|
||||||
|
return http.StatusInternalServerError
|
||||||
}
|
}
|
||||||
|
|
||||||
conn, err := t.tp.Get()
|
conn, err := t.tp.Get()
|
||||||
|
@ -29,18 +32,22 @@ func (t *Tracker) ServeScrape(w http.ResponseWriter, r *http.Request, p httprout
|
||||||
|
|
||||||
if t.cfg.Private {
|
if t.cfg.Private {
|
||||||
_, err = conn.FindUser(scrape.Passkey)
|
_, err = conn.FindUser(scrape.Passkey)
|
||||||
if err != nil {
|
if err == tracker.ErrUserDNE {
|
||||||
fail(w, r, err)
|
fail(w, r, err)
|
||||||
return http.StatusOK
|
return http.StatusOK
|
||||||
|
} else if err != nil {
|
||||||
|
return http.StatusInternalServerError
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var torrents []*models.Torrent
|
var torrents []*models.Torrent
|
||||||
for _, infohash := range scrape.Infohashes {
|
for _, infohash := range scrape.Infohashes {
|
||||||
torrent, err := conn.FindTorrent(infohash)
|
torrent, err := conn.FindTorrent(infohash)
|
||||||
if err != nil {
|
if err == tracker.ErrTorrentDNE {
|
||||||
fail(w, r, err)
|
fail(w, r, err)
|
||||||
return http.StatusOK
|
return http.StatusOK
|
||||||
|
} else if err != nil {
|
||||||
|
return http.StatusInternalServerError
|
||||||
}
|
}
|
||||||
torrents = append(torrents, torrent)
|
torrents = append(torrents, torrent)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue