mod_c2s: Another lurking string.format squashed.
[prosody.git] / net / server_event.lua
index 058d51fe38d079ca8e5d1229b3d72d6aa3585edb..8d6f5597b945d91eaed1d742afdcc58caf0528b0 100644 (file)
@@ -221,12 +221,12 @@ do
                                                                self.eventhandshake = nil
                                                                return -1
                                                        end
-                                                       debug( "error during ssl handshake:", err )
                                                        if err == "wantwrite" then
                                                                event = EV_WRITE
                                                        elseif err == "wantread" then
                                                                event = EV_READ
                                                        else
+                                                               debug( "ssl handshake error:", err )
                                                                self.fatalerror = err
                                                        end
                                                end
@@ -295,7 +295,10 @@ do
        end
 
        function interface_mt:resume()
-               return self:_lock(self.nointerface, false, self.nowriting);
+               self:_lock(self.nointerface, false, self.nowriting);
+               if not self.eventread then
+                       self.eventread = addevent( base, self.conn, EV_READ, self.readcallback, cfg.READ_TIMEOUT );  -- register callback
+               end
        end
 
        function interface_mt:counter(c)
@@ -340,24 +343,11 @@ do
                                return nil, "writebuffer not empty, waiting"
                        end
                else
-                       debug( "try to close server with id:", self.id, "args:", now )
+                       debug( "try to close server with id:", tostring(self.id), "args:", tostring(now) )
                        self.fatalerror = "server to close"
                        self:_lock( true )
-                       local count = 0
-                       for _, item in ipairs( interfacelist( ) ) do
-                               if ( item.type ~= "server" ) and ( item._server == self ) then  -- client/server match
-                                       if item:close( now ) then  -- writebuffer was empty
-                                               count = count + 1
-                                       end
-                               end
-                       end
-                       local timeout = 0  -- dont wait for unfinished writebuffers of clients...
-                       if not now then
-                               timeout = cfg.WRITE_TIMEOUT  -- ...or wait for it
-                       end
-                       self:_close( timeout )  -- add new event to remove the server interface
-                       debug( "seconds remained until server is closed:", timeout )
-                       return count  -- returns finished clients with empty writebuffer
+                       self:_close( 0 )  -- add new event to remove the server interface
+                       return true
                end
        end
        
@@ -460,7 +450,6 @@ do
        
        -- Stub handlers
        function interface_mt:onconnect()
-               return self:onincoming(nil);
        end
        function interface_mt:onincoming()
        end
@@ -643,6 +632,10 @@ do
                                                return -1
                                        end
                                end
+                               if interface.noreading then
+                                       interface.eventread = nil;
+                                       return -1;
+                               end
                                return EV_READ, cfg.READ_TIMEOUT
                        end
                end
@@ -828,14 +821,14 @@ local function setquitting(yes)
        end
 end
 
-function get_backend()
+local function get_backend()
        return base:method();
 end
 
 -- We need to hold onto the events to stop them
 -- being garbage-collected
 local signal_events = {}; -- [signal_num] -> event object
-function hook_signal(signal_num, handler)
+local function hook_signal(signal_num, handler)
        local function _handler(event)
                local ret = handler();
                if ret ~= false then -- Continue handling this signal?