Merge 0.10->trunk
[prosody.git] / net / server_event.lua
index 0c3c4b040fb010063b7987bd18d8df3c70b5d799..9e1ef50dba810988395ec07dacc4948c220dd570 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"
@@ -803,6 +803,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,
@@ -818,6 +832,7 @@ return {
        closeall = closeallservers,
        get_backend = get_backend,
        hook_signal = hook_signal,
+       add_task = add_task,
 
        __NAME = SCRIPT_NAME,
        __DATE = LAST_MODIFIED,