File

util/bitcompat.lua @ 11922:28f5c8061dad

net.server_epoll: Fix streaming downloads (thanks Menel) ff4e34c448a4 broke the way net.http.server streams downloads from disk because it made writes from the ondrain callback no longer reset the want-write flag, causing the download to halt. Writes from the predrain handler still must not trigger anything but additions to the buffer, since it is about to do all the socket writing already.
author Kim Alvefur <zash@zash.se>
date Fri, 19 Nov 2021 15:45:01 +0100
parent 10241:48f7cda4174d
child 12573:0f4feaf9ca64
line wrap: on
line source

-- Compatibility layer for bitwise operations

-- First try the bit32 lib
-- Lua 5.3 has it with compat enabled
-- Lua 5.2 has it by default
if _G.bit32 then
	return _G.bit32;
else
	-- Lua 5.1 may have it as a standalone module that can be installed
	local ok, bitop = pcall(require, "bit32")
	if ok then
		return bitop;
	end
end

do
	-- Lua 5.3 and 5.4 would be able to use native infix operators
	local ok, bitop = pcall(require, "util.bit53")
	if ok then
		return bitop;
	end
end

do
	-- Lastly, try the LuaJIT bitop library
	local ok, bitop = pcall(require, "bit")
	if ok then
		return bitop;
	end
end

error "No bit module found. See https://prosody.im/doc/depends#bitop";