Add ProgramMaxPayloadSize() API to Redbean

This way we don't have to use the flag and can configure it using
.init.lua instead.
This commit is contained in:
Justine Tunney 2022-06-10 03:28:46 -07:00
parent 2528536cff
commit f8520e10b2
2 changed files with 22 additions and 1 deletions

View file

@ -1081,6 +1081,20 @@ FUNCTIONS
operating system to choose a port, which may be revealed later on
by GetServerAddr or the -z flag to stdout.
ProgramMaxPayloadSize(int64)
Sets the maximum HTTP message payload size in bytes. The
default is very conservatively set to 65536 so this is
something many people will want to increase. This limit is
enforced at the transport layer, before any Lua code is
called, because right now redbean stores and forewards
messages. (Use the UNIX API for raw socket streaming.) Setting
this to a very high value can be useful if you're less
concerned about rogue clients and would rather have your Lua
code be granted more control to bounce unreasonable messages.
If a value less than 1450 is supplied, it'll automatically be
increased to 1450, since that's the size of ethernet frames.
This function can only be called from .init.lua.
ProgramPrivateKey(pem:str)
Same as the -K flag if called from .init.lua, e.g.
ProgramPrivateKey(LoadAsset("/.sign.key")) for zip loading or

View file

@ -4592,6 +4592,11 @@ static int LuaProgramGid(lua_State *L) {
return LuaProgramInt(L, ProgramGid);
}
static int LuaProgramMaxPayloadSize(lua_State *L) {
OnlyCallFromInitLua(L, "ProgramMaxPayloadSize");
return LuaProgramInt(L, ProgramMaxPayloadSize);
}
static int LuaGetClientFd(lua_State *L) {
OnlyCallDuringConnection(L, "GetClientFd");
lua_pushinteger(L, client);
@ -4954,17 +4959,18 @@ static const char *const kDontAutoComplete[] = {
"HasParam", //
"IsClientUsingSsl", //
"LaunchBrowser", //
"LuaProgramSslRequired", // TODO
"ProgramAddr", // TODO
"ProgramBrand", //
"ProgramCertificate", // TODO
"ProgramGid", //
"ProgramLogPath", // TODO
"ProgramMaxPayloadSize", // TODO
"ProgramPidPath", // TODO
"ProgramPort", // TODO
"ProgramPrivateKey", // TODO
"ProgramSslCiphersuite", // TODO
"ProgramSslClientVerify", // TODO
"LuaProgramSslRequired", // TODO
"ProgramSslCompression", //
"ProgramSslTicketLifetime", //
"ProgramTimeout", // TODO
@ -5095,6 +5101,7 @@ static const luaL_Reg kLuaFuncs[] = {
{"ProgramLogBodies", LuaProgramLogBodies}, //
{"ProgramLogMessages", LuaProgramLogMessages}, //
{"ProgramLogPath", LuaProgramLogPath}, //
{"ProgramMaxPayloadSize", LuaProgramMaxPayloadSize}, //
{"ProgramPidPath", LuaProgramPidPath}, //
{"ProgramPort", LuaProgramPort}, //
{"ProgramRedirect", LuaProgramRedirect}, //