Merge 0.10->trunk
[prosody.git] / net / server_event.lua
index 5fd49d0a91d70f5b59facc3da261721159dc36dc..08524646c19e4ebf2aa63e89f1e4d6e92ae1a648 100644 (file)
@@ -518,7 +518,7 @@ 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.writebuffer ~= 0 then
+                               elseif interface.writebufferlen ~= 0 then
                                        -- data possibly written from ondrain
                                        return EV_WRITE, cfg.WRITE_TIMEOUT
                                elseif interface.eventreadtimeout then
@@ -805,6 +805,20 @@ local function link(sender, receiver, buffersize)
        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,
@@ -820,6 +834,7 @@ return {
        closeall = closeallservers,
        get_backend = get_backend,
        hook_signal = hook_signal,
+       add_task = add_task,
 
        __NAME = SCRIPT_NAME,
        __DATE = LAST_MODIFIED,