net.xmppclient_listener: Add small comment
[prosody.git] / net / server.lua
index aa259c7d735b43923d0c1a90e1da70bb2ce3ac52..d7872f51aea48dde25b7b0a2a5f76520ff6e141f 100644 (file)
@@ -77,6 +77,7 @@ local idfalse
 local addtimer\r
 local closeall\r
 local addserver\r
+local getserver\r
 local wrapserver\r
 local getsettings\r
 local closesocket\r
@@ -325,7 +326,9 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
             if not ( forced or fatalerror ) then\r
                 handler.sendbuffer( )\r
                 if bufferqueuelen ~= 0 then   -- try again...\r
-                    handler.write = nil    -- ... but no further writing allowed\r
+                    if handler then\r
+                        handler.write = nil    -- ... but no further writing allowed\r
+                    end\r
                     toclose = true\r
                     return false\r
                 end\r
@@ -337,9 +340,11 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
         socket:close( )\r
         _sendlistlen = removesocket( _sendlist, socket, _sendlistlen )\r
         _socketlist[ socket ] = nil\r
-        _writetimes[ handler ] = nil\r
-        _closelist[ handler ] = nil\r
-        handler = nil\r
+        if handler then\r
+            _writetimes[ handler ] = nil\r
+            _closelist[ handler ] = nil\r
+            handler = nil\r
+        end\r
         socket = nil\r
         mem_free( )\r
        if server then\r
@@ -457,7 +462,7 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
         sendtraffic = sendtraffic + count\r
         _sendtraffic = _sendtraffic + count\r
         _ = _cleanqueue and clean( bufferqueue )\r
-        --out_put( "server.lua: sended '", buffer, "', bytes: ", succ, ", error: ", err, ", part: ", byte, ", to: ", ip, ":", clientport )\r
+        --out_put( "server.lua: sended '", buffer, "', bytes: ", tostring(succ), ", error: ", tostring(err), ", part: ", tostring(byte), ", to: ", tostring(ip), ":", tostring(clientport) )\r
         if succ then    -- sending succesful\r
             bufferqueuelen = 0\r
             bufferlen = 0\r
@@ -535,6 +540,8 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
             handler.sendbuffer = handshake\r
             handshake( socket )    -- do handshake\r
         else\r
+            -- We're not automatically doing SSL, so we're not secure (yet)\r
+            ssl = false\r
             handler.starttls = function( now )\r
                 if not now then\r
                     --out_put "server.lua: we need to do tls, but delaying until later"\r
@@ -571,6 +578,9 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
 \r
                 handler.starttls = nil\r
                 needtls = nil\r
+                \r
+                -- Secure now\r
+                ssl = true\r
 \r
                 handler.readbuffer = handshake\r
                 handler.sendbuffer = handshake\r
@@ -666,6 +676,10 @@ addserver = function( listeners, port, addr, pattern, sslctx, maxconnections, st
     return handler\r
 end\r
 \r
+getserver = function ( port )\r
+       return _server[ port ];\r
+end\r
+\r
 removeserver = function( port )\r
     local handler = _server[ port ]\r
     if not handler then\r
@@ -724,7 +738,7 @@ stats = function( )
     return _readtraffic, _sendtraffic, _readlistlen, _sendlistlen, _timerlistlen\r
 end\r
 \r
-local dontstop = true;\r
+local dontstop = true; -- thinking about tomorrow, ...\r
 \r
 setquitting = function (quit)\r
        dontstop = not quit;\r
@@ -782,7 +796,7 @@ local wrapclient = function( socket, ip, serverport, listeners, pattern, sslctx,
 end\r
 \r
 local addclient = function( address, port, listeners, pattern, sslctx, startssl )\r
-    local client, err = socket.tcp( )\r
+    local client, err = luasocket.tcp( )\r
     if err then\r
         return nil, err\r
     end\r
@@ -791,7 +805,7 @@ local addclient = function( address, port, listeners, pattern, sslctx, startssl
     if err then    -- try again\r
         local handler = wrapclient( client, address, port, listeners )\r
     else\r
-        wrapconnection( server, listeners, socket, address, port, "clientport", pattern, sslctx, startssl )\r
+        wrapconnection( nil, listeners, client, address, port, "clientport", pattern, sslctx, startssl )\r
     end\r
 end\r
 \r
@@ -840,6 +854,7 @@ return {
     closeall = closeall,\r
     addtimer = addtimer,\r
     addserver = addserver,\r
+    getserver = getserver,\r
     getsettings = getsettings,\r
     setquitting = setquitting,\r
     removeserver = removeserver,\r