Merge 0.10->trunk
authorKim Alvefur <zash@zash.se>
Tue, 19 Apr 2016 16:23:44 +0000 (18:23 +0200)
committerKim Alvefur <zash@zash.se>
Tue, 19 Apr 2016 16:23:44 +0000 (18:23 +0200)
1  2 
net/server_event.lua

diff --combined net/server_event.lua
index 025e39498de7aaffee0defddc9c217a353c48f6a,5fd49d0a91d70f5b59facc3da261721159dc36dc..cfe9c6f58b3482f610647ae6cf6e6d90a7a8164b
@@@ -518,12 -518,11 +518,11 @@@ local function handleclient( client, ip
                                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.eventreadtimeout then
-                                       return EV_WRITE, EV_TIMEOUT
-                               end
-                               if interface.writebuffer ~= 0 then
+                               elseif interface.writebuffer ~= 0 then
                                        -- data possibly written from ondrain
                                        return EV_WRITE, cfg.WRITE_TIMEOUT
+                               elseif interface.eventreadtimeout then
+                                       return EV_WRITE, cfg.WRITE_TIMEOUT
                                end
                                interface.eventwrite = nil
                                return -1
@@@ -806,20 -805,6 +805,20 @@@ local function link(sender, receiver, b
        sender:set_mode("*a");
  end
  
 +local function add_task(delay, callback)
 +      local event_handle;
 +      event_handle = base:addevent(nil, 0, function ()
 +              local ret = callback(socket_gettime());
 +              if ret then
 +                      return 0, ret;
 +              elseif event_handle then
 +                      return -1;
 +              end
 +      end
 +      , delay);
 +      return event_handle;
 +end
 +
  return {
        cfg = cfg,
        base = base,
        closeall = closeallservers,
        get_backend = get_backend,
        hook_signal = hook_signal,
 +      add_task = add_task,
  
        __NAME = SCRIPT_NAME,
        __DATE = LAST_MODIFIED,