aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrans de Jonge <fransdejonge@gmail.com>2026-08-03 22:48:50 +0200
committerThijs Schreijer <thijs@thijsschreijer.nl>2026-08-31 20:00:40 +0200
commit3581b58b9d5c09e3e37b7e20b41205ee3553aaa4 (patch)
tree010f8b74b83224bd3acfeb95355adab1c5f60e8d
parentfa9b35a0cf11bc856cbd8bffbef5ad6fb3e62a93 (diff)
downloadluasocket-3581b58b9d5c09e3e37b7e20b41205ee3553aaa4.tar.gz
luasocket-3581b58b9d5c09e3e37b7e20b41205ee3553aaa4.tar.bz2
luasocket-3581b58b9d5c09e3e37b7e20b41205ee3553aaa4.zip
Add HTTP response headers callback to allow for early abort or different sink depending on response
-rw-r--r--src/http.lua12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/http.lua b/src/http.lua
index 21d3078..6cdc90a 100644
--- a/src/http.lua
+++ b/src/http.lua
@@ -360,6 +360,7 @@ local trequest, tredirect
360 headers = reqt.headers, 360 headers = reqt.headers,
361 proxy = reqt.proxy, 361 proxy = reqt.proxy,
362 maxredirects = reqt.maxredirects, 362 maxredirects = reqt.maxredirects,
363 response_headers = reqt.response_headers,
363 nredirects = (reqt.nredirects or 0) + 1, 364 nredirects = (reqt.nredirects or 0) + 1,
364 create = reqt.create 365 create = reqt.create
365 } 366 }
@@ -403,6 +404,17 @@ end
403 return tredirect(reqt, headers.location) 404 return tredirect(reqt, headers.location)
404 end 405 end
405 -- here we are finally done 406 -- here we are finally done
407 -- provide an opportunity to abort or replace the sink based on the response headers
408 if nreqt.response_headers then
409 local abort, sink = nreqt.response_headers(code, headers, status)
410 if abort then
411 h:close()
412 return 1, code, headers, status
413 end
414 if sink then
415 nreqt.sink = sink
416 end
417 end
406 if shouldreceivebody(nreqt, code) then 418 if shouldreceivebody(nreqt, code) then
407 h:receivebody(headers, nreqt.sink, nreqt.step) 419 h:receivebody(headers, nreqt.sink, nreqt.step)
408 end 420 end