Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6beea44fc5 | ||
|
|
d33316caf3 |
@@ -310,8 +310,8 @@ path under `/v1/` answers 200, in maintenance mode too.
|
||||
- 403 when the upstream host, or a host it redirects to, has an address in a
|
||||
blocked network (see `blocked_networks`).
|
||||
- 429 over `image_requests_per_minute` (below).
|
||||
- 499 when the client goes away while waiting for an image another request
|
||||
is making (below).
|
||||
- 499 when the client goes away before its image is ready, unless its
|
||||
request is the one making the image (below).
|
||||
- 415 when the upstream answers with a `Content-Type` that is not one of the
|
||||
source formats (below).
|
||||
- 415 when the upstream sends a body whose first bytes are not those of the
|
||||
|
||||
@@ -31,9 +31,9 @@ P2: security: per-origin rate limiting
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-26 on both image routes, a request is answered 499 and logged at info
|
||||
level when its client goes away while waiting for an image another request is
|
||||
making (closes #339). It was answered 500 and logged at error level, as pixa's
|
||||
own failure.
|
||||
level when its client goes away before its image is ready, unless it is the
|
||||
request making the image (closes #339). It was answered 500 and logged at
|
||||
error level, as pixa's own failure.
|
||||
- The line is "client went away before the image was ready". It carries the
|
||||
`request_id`, the host and the path.
|
||||
- The 499 has no body, since nobody reads it.
|
||||
|
||||
@@ -21,9 +21,9 @@ import (
|
||||
)
|
||||
|
||||
// statusClientClosedRequest is the status nginx calls "client closed
|
||||
// request". The image routes answer it when the client goes away while
|
||||
// waiting for an image another request is making. Nobody reads it; it is for
|
||||
// logs and metrics.
|
||||
// request". The image routes answer it when the client goes away before its
|
||||
// image is ready, unless its request is the one making the image. Nobody reads
|
||||
// it; it is for logs and metrics.
|
||||
const statusClientClosedRequest = 499
|
||||
|
||||
// HandleImage handles the main image proxy route:
|
||||
@@ -353,8 +353,8 @@ func notModified(w http.ResponseWriter, r *http.Request, etag string) bool {
|
||||
// once they have the request and its URL's expiry, which ends the
|
||||
// Cache-Control max-age. It chooses the format for the format auto, answers
|
||||
// If-None-Match with 304 and HEAD with the headers only. It answers 499 when
|
||||
// the client goes away while waiting for an image another request is making.
|
||||
// It answers any other error of the image service with respondImageError.
|
||||
// the image service stopped because the client went away, and any other error
|
||||
// of the image service with respondImageError.
|
||||
func (s *Handlers) serveImage(
|
||||
w http.ResponseWriter, r *http.Request,
|
||||
req *imagerequest.Request, expires time.Time,
|
||||
|
||||
Reference in New Issue
Block a user