# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1553790500 -3600
# Node ID aac4c55721f913387b9046c2381fc4c526d68dae
# Parent  12a31296d63d13043d340505d0ae57fa3297c6dc# Parent  df73ca804719f7cc318f145f176f2ed497c308ff
Merge 0.11->trunk

diff -r 12a31296d63d -r aac4c55721f9 net/server_epoll.lua
--- a/net/server_epoll.lua	Tue Mar 26 17:22:56 2019 +0000
+++ b/net/server_epoll.lua	Thu Mar 28 17:28:20 2019 +0100
@@ -340,22 +340,25 @@
 		self:onconnect();
 		self:on("incoming", data);
 	else
+		if err == "wantread" then
+			self:set(true, nil);
+			err = "timeout";
+		elseif err == "wantwrite" then
+			self:set(nil, true);
+			err = "timeout";
+		end
 		if partial and partial ~= "" then
 			self:onconnect();
 			self:on("incoming", partial, err);
 		end
-		if err == "wantread" then
-			self:set(true, nil);
-		elseif err == "wantwrite" then
-			self:set(nil, true);
-		elseif err ~= "timeout" then
+		if err ~= "timeout" then
 			self:on("disconnect", err);
 			self:destroy()
 			return;
 		end
 	end
 	if not self.conn then return; end
-	if self.conn:dirty() then
+	if self._wantread and self.conn:dirty() then
 		self:setreadtimeout(false);
 		self:pausefor(cfg.read_retry_delay);
 	else