Software /
code /
prosody
Changeset
7422:41be97f8158f
Merge 0.10->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 04 May 2016 16:58:25 +0200 |
parents | 7418:e9f7043b86b5 (current diff) 7421:d6f12056afda (diff) |
children | 7423:63141a85beea |
files | net/server_event.lua |
diffstat | 2 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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