Skip to content

Commit 059ae00

Browse files
committed
http/request: do not handle 304 Not Modified as a redirect code.
1 parent ddab283 commit 059ae00

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

http/request.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,7 @@ function request_methods:go(timeout)
623623
self.cookie_store:store_from_request(request_headers, headers, self.host, self.site_for_cookies)
624624
end
625625

626-
if self.follow_redirects and headers:get(":status"):sub(1,1) == "3" then
626+
if self.follow_redirects and headers:get(":status"):sub(1,1) == "3" and headers:get(":status") ~= "304" then
627627
stream:shutdown()
628628
local new_req, err2, errno2 = self:handle_redirect(headers)
629629
if not new_req then

spec/request_spec.lua

+12
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,18 @@ describe("http.request module", function()
606606
stream:shutdown()
607607
end)
608608
end)
609+
it("does not consider 304 a redirect response", function()
610+
test(function(stream)
611+
assert(stream:get_headers())
612+
local resp_headers = new_headers()
613+
resp_headers:append(":status", "304")
614+
assert(stream:write_headers(resp_headers, true))
615+
end, function(req)
616+
local headers, stream = assert(req:go())
617+
assert.same("304", headers:get(":status"))
618+
stream:shutdown()
619+
end)
620+
end)
609621
it("works with a proxy server", function()
610622
test(function(stream)
611623
local h = assert(stream:get_headers())

0 commit comments

Comments
 (0)