Update redbean Fetch to close connection upon server request

This commit is contained in:
Paul Kulchenko 2023-05-14 00:13:07 -07:00
parent 745abb2ef5
commit 0a7b1718c2

View file

@ -227,7 +227,7 @@ static int LuaFetch(lua_State *L) {
requestlen = appendz(request).i;
_gc(request);
if (keepalive != kaKEEP && keepalive != kaCLOSE) {
if (keepalive == kaNONE || keepalive == kaOPEN) {
/*
* Perform DNS lookup.
*/
@ -449,6 +449,15 @@ Finished:
msg.status, urlarg, FetchHeaderLength(kHttpServer),
FetchHeaderData(kHttpServer));
// check if the server has requested to close the connection
// https://www.rfc-editor.org/rfc/rfc2616#section-14.10
if (keepalive && keepalive != kaCLOSE
&& FetchHasHeader(kHttpConnection)
&& FetchHeaderEqualCase(kHttpConnection, "close")) {
VERBOSEF("(ftch) close keepalive on server request");
keepalive = kaCLOSE;
}
// need to save updated sock for keepalive
if (keepalive && keepalive != kaCLOSE && lua_istable(L, 2)) {
lua_getfield(L, 2, "keepalive");