net.server_event: Collect entire one line function on one line
[prosody.git] / net / server_event.lua
index 0c3c4b040fb010063b7987bd18d8df3c70b5d799..e0dc175fdbd2d25f432070f544dbfb83cc527b57 100644 (file)
@@ -97,7 +97,7 @@ function interface_mt:_close()
        return self:_destroy();
 end
 
-function interface_mt:_start_connection(plainssl) -- should be called from addclient
+function interface_mt:_start_connection(plainssl) -- called from wrapclient
        local callback = function( event )
                if EV_TIMEOUT == event then  -- timeout during connection
                        self.fatalerror = "connection timeout"
@@ -518,8 +518,11 @@ local function handleclient( client, ip, port, server, pattern, listener, sslctx
                                elseif interface.startsslcallback then  -- start ssl connection if needed
                                        debug "starting ssl handshake after writing"
                                        interface.eventstarthandshake = addevent( base, nil, EV_TIMEOUT, interface.startsslcallback, 0 )
+                               elseif interface.writebufferlen ~= 0 then
+                                       -- data possibly written from ondrain
+                                       return EV_WRITE, cfg.WRITE_TIMEOUT
                                elseif interface.eventreadtimeout then
-                                       return EV_WRITE, EV_TIMEOUT
+                                       return EV_WRITE, cfg.WRITE_TIMEOUT
                                end
                                interface.eventwrite = nil
                                return -1
@@ -585,10 +588,7 @@ local function handleclient( client, ip, port, server, pattern, listener, sslctx
                                        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
@@ -730,7 +730,6 @@ local function addclient( addr, serverport, listener, pattern, sslctx, typ )
        if res or ( err == "timeout" ) then
                local ip, port = client:getsockname( )
                local interface = wrapclient( client, ip, serverport, listener, pattern, sslctx )
-               interface:_start_connection( sslctx )
                debug( "new connection id:", interface.id )
                return interface, err
        else