mirror of
https://github.com/willnorris/imageproxy.git
synced 2024-12-16 21:56:43 -05:00
return 504 status for timeout errors
modify custom TimeoutHandler to return 504 error and switch imageproxy to use that func. Fixes #75
This commit is contained in:
parent
e180185856
commit
576b7c023a
2 changed files with 4 additions and 3 deletions
|
@ -32,6 +32,7 @@ import (
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/gregjones/httpcache"
|
"github.com/gregjones/httpcache"
|
||||||
|
tphttp "willnorris.com/go/imageproxy/third_party/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Proxy serves image requests.
|
// Proxy serves image requests.
|
||||||
|
@ -105,7 +106,7 @@ func (p *Proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
var h http.Handler = http.HandlerFunc(p.serveImage)
|
var h http.Handler = http.HandlerFunc(p.serveImage)
|
||||||
if p.Timeout > 0 {
|
if p.Timeout > 0 {
|
||||||
h = http.TimeoutHandler(h, p.Timeout, "")
|
h = tphttp.TimeoutHandler(h, p.Timeout, "Gateway timeout waiting for remote resource.")
|
||||||
}
|
}
|
||||||
h.ServeHTTP(w, r)
|
h.ServeHTTP(w, r)
|
||||||
}
|
}
|
||||||
|
|
4
third_party/http/server.go
vendored
4
third_party/http/server.go
vendored
|
@ -18,7 +18,7 @@ import (
|
||||||
//
|
//
|
||||||
// The new Handler calls h.ServeHTTP to handle each request, but if a
|
// The new Handler calls h.ServeHTTP to handle each request, but if a
|
||||||
// call runs for longer than its time limit, the handler responds with
|
// call runs for longer than its time limit, the handler responds with
|
||||||
// a 503 Service Unavailable error and the given message in its body.
|
// a 504 Gateway Timeout error and the given message in its body.
|
||||||
// (If msg is empty, a suitable default message will be sent.)
|
// (If msg is empty, a suitable default message will be sent.)
|
||||||
// After such a timeout, writes by h to its ResponseWriter will return
|
// After such a timeout, writes by h to its ResponseWriter will return
|
||||||
// ErrHandlerTimeout.
|
// ErrHandlerTimeout.
|
||||||
|
@ -89,7 +89,7 @@ func (h *timeoutHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
case <-timeout:
|
case <-timeout:
|
||||||
tw.mu.Lock()
|
tw.mu.Lock()
|
||||||
defer tw.mu.Unlock()
|
defer tw.mu.Unlock()
|
||||||
w.WriteHeader(http.StatusServiceUnavailable)
|
w.WriteHeader(http.StatusGatewayTimeout)
|
||||||
io.WriteString(w, h.errorBody())
|
io.WriteString(w, h.errorBody())
|
||||||
tw.timedOut = true
|
tw.timedOut = true
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in a new issue