net/server_epoll.lua
changeset 7627 23fb3a084956
parent 7626 a1c040a5754f
child 7628 6afafd6d4ef0
--- a/net/server_epoll.lua	Mon Aug 22 17:12:58 2016 +0200
+++ b/net/server_epoll.lua	Mon Aug 22 17:13:39 2016 +0200
@@ -85,7 +85,8 @@
 	for i = #timers, 1, -1 do
 		local timer = timers[i];
 		local t, f = timer[1], timer[2];
-		local now = gettime(); -- inside or before the loop?
+		-- Get time for every iteration to increase accuracy
+		local now = gettime();
 		if t > now then
 			-- This timer should not fire yet
 			local diff = t - now;
@@ -96,6 +97,8 @@
 		end
 		local new_timeout = f(now);
 		if new_timeout then
+			-- Schedlue for 'delay' from the time actually sheduled,
+			-- not from now, in order to prevent timer drift.
 			timer[1] = t + new_timeout;
 			resort_timers = true;
 		else
@@ -487,6 +490,7 @@
 	self:setflags(true);
 end
 
+-- Pause connection for some time
 function interface:pausefor(t)
 	if self._pausefor then
 		self._pausefor:close();