Merge 0.10->trunk
authorKim Alvefur <zash@zash.se>
Wed, 04 May 2016 16:58:25 +0200
changeset 7425 41be97f8158f
parent 7421 e9f7043b86b5 (current diff)
parent 7424 d6f12056afda (diff)
child 7426 63141a85beea
Merge 0.10->trunk
net/server_event.lua
--- a/core/portmanager.lua	Wed May 04 12:14:15 2016 +0200
+++ b/core/portmanager.lua	Wed May 04 16:58:25 2016 +0200
@@ -29,7 +29,7 @@
 	table.insert(default_local_interfaces, "::1");
 end
 
-local default_mode = config.get("*", "network_default_read_size") or "*a";
+local default_mode = config.get("*", "network_default_read_size") or 4096;
 
 --- Private state
 
--- a/net/server_event.lua	Wed May 04 12:14:15 2016 +0200
+++ b/net/server_event.lua	Wed May 04 16:58:25 2016 +0200
@@ -30,6 +30,7 @@
 	WRITE_TIMEOUT         = 180,  -- timeout in seconds for write data on socket
 	CONNECT_TIMEOUT       = 20,  -- timeout in seconds for connection attempts
 	CLEAR_DELAY           = 5,  -- seconds to wait for clearing interface list (and calling ondisconnect listeners)
+	READ_RETRY_DELAY      = 1e-06, -- if, after reading, there is still data in buffer, wait this long and continue reading
 	DEBUG                 = true,  -- show debug messages
 }
 
@@ -559,7 +560,7 @@
 			interface.eventread = nil
 			return -1
 		end
-		if EV_TIMEOUT == event and interface:onreadtimeout() ~= true then
+		if EV_TIMEOUT == event and not interface.conn:dirty() and interface:onreadtimeout() ~= true then
 			return -1 -- took too long to get some data from client -> disconnect
 		end
 		if interface._usingssl then  -- handle luasec
@@ -588,10 +589,7 @@
 					interface.eventwrite = addevent( base, interface.conn, EV_WRITE, interface.writecallback, cfg.WRITE_TIMEOUT )
 				end
 				interface.eventreadtimeout = addevent( base, nil, EV_TIMEOUT,
-				function( )
-					interface:_close()
-				end, cfg.READ_TIMEOUT
-				)
+					function( ) interface:_close() end, cfg.READ_TIMEOUT)
 				debug( "wantwrite during read attempt, reg it in writecallback but dont know what really happens next..." )
 				-- to be honest i dont know what happens next, if it is allowed to first read, the write etc...
 			else  -- connection was closed or fatal error
@@ -608,6 +606,9 @@
 			interface.eventread = nil;
 			return -1;
 		end
+		if interface.conn:dirty() then -- still data left in buffer
+			return EV_TIMEOUT, cfg.READ_RETRY_DELAY;
+		end
 		return EV_READ, cfg.READ_TIMEOUT
 	end