From 8b9da402600ec5cea44968b05bfe0ccf92cf0999 Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Tue, 30 Jun 2020 18:31:48 +0200
Subject: net.server_epoll: Add setting for turning off callback protections

Might improve (CPU) performance at the risk of triggering top level
errors.
---
 net/server_epoll.lua | 6 ++++++
 1 file changed, 6 insertions(+)

(limited to 'net')

diff --git a/net/server_epoll.lua b/net/server_epoll.lua
index 5ad20371..f767db78 100644
--- a/net/server_epoll.lua
+++ b/net/server_epoll.lua
@@ -74,6 +74,9 @@ local default_config = { __index = {
 	-- Whether to kill connections in case of callback errors.
 	fatal_errors = false;
 
+	-- Or disable protection (like server_select) for potential performance gains
+	protect_listeners = true;
+
 	-- Attempt writes instantly
 	opportunistic_writes = false;
 }};
@@ -192,6 +195,9 @@ function interface:on(what, ...)
 		self:noise("Missing listener 'on%s'", what); -- uncomment for development and debugging
 		return;
 	end
+	if not cfg.protect_listeners then
+		return listener(self, ...);
+	end
 	local onerror = self.listeners.onerror or traceback;
 	local ok, err = xpcall(listener, onerror, self, ...);
 	if not ok then
-- 
cgit v1.2.3