Changeset

13553:850e4ade7a01

net.server_epoll: Make running out of buffer space a fatal error Prevent Bad Things from happening when the buffer gets full. This of course opens up the possibility of intentionally killing connections by sending much stuff, which need to be mitigated with rate limits elsewhere.
author Kim Alvefur <zash@zash.se>
date Sat, 09 Nov 2024 15:42:31 +0100
parents 13552:f0b2c026e542
children 13554:902d25cd0557
files net/server_epoll.lua
diffstat 1 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/net/server_epoll.lua	Sat Nov 09 00:37:15 2024 +0100
+++ b/net/server_epoll.lua	Sat Nov 09 15:42:31 2024 +0100
@@ -612,6 +612,8 @@
 				-- Try to flush buffer to make room
 				self:onwritable();
 				if not buffer:write(prev_buffer) then
+					self:on("disconnect", "no space left in buffer");
+					self:destroy();
 					return false;
 				end
 			end
@@ -622,6 +624,8 @@
 			end
 			self:onwritable();
 			if not buffer:write(data) then
+				self:on("disconnect", "no space left in buffer");
+				self:destroy();
 				return false;
 			end
 		end
@@ -631,6 +635,8 @@
 		end
 		self:onwritable();
 		if not buffer:write(data) then
+			self:on("disconnect", "no space left in buffer");
+			self:destroy();
 			return false;
 		end
 	end