X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=net%2Fserver.lua;h=6fe72712ae26e5f7700ff1275ade476132886f4d;hb=4e16323f2a78a2f20bcd75957f2ada27a5d8b90f;hp=12502412f29a31ce7df2fe493d89de9ab2b50901;hpb=dc8907d8f3c8e6435bb4d7a64803b211e26e94fd;p=prosody.git diff --git a/net/server.lua b/net/server.lua index 12502412..6fe72712 100644 --- a/net/server.lua +++ b/net/server.lua @@ -1,19 +1,9 @@ --- Prosody IM --- Copyright (C) 2008-2009 Matthew Wild --- Copyright (C) 2008-2009 Waqas Hussain --- --- This project is MIT/X11 licensed. Please see the --- COPYING file in the source package for more information. --- - ---[[ - - server.lua by blastbeat - - - this script contains the server loop of the program - - other scripts can reg a server here - -]]-- +-- +-- server.lua by blastbeat of the luadch project +-- Re-used here under the MIT/X Consortium License +-- +-- Modifications (C) 2008-2009 Matthew Wild, Waqas Hussain +-- -- // wrapping luadch stuff // -- @@ -182,22 +172,30 @@ wrapserver = function( listeners, socket, ip, serverport, pattern, sslctx, maxco local ssl = false if sslctx then + ssl = true if not ssl_newcontext then - return nil, "luasec not found" + out_error "luasec not found" + ssl = false end if type( sslctx ) ~= "table" then out_error "server.lua: wrong server sslctx" - return nil, "wrong server sslctx" + ssl = false end sslctx, err = ssl_newcontext( sslctx ) if not sslctx then err = err or "wrong sslctx parameters" out_error( "server.lua: ", err ) - return nil, err + ssl = false end - ssl = true - else - out_put("server.lua: ", "ssl not enabled on ", serverport); + end + if not ssl then + sslctx = false; + if startssl then + out_error( "server.lua: Cannot start ssl on port: ", serverport ) + return nil, "Cannot start ssl, see log for details" + else + out_put("server.lua: ", "ssl not enabled on ", serverport); + end end local accept = socket.accept @@ -546,7 +544,8 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport socket:settimeout( 0 ) handler.readbuffer = handshake handler.sendbuffer = handshake - if not socket then -- do handshake + handshake( socket ) -- do handshake + if not socket then return nil, nil, "ssl handshake failed"; end else @@ -696,6 +695,7 @@ removeserver = function( port ) return nil, "no server found on port '" .. tostring( port ) "'" end handler.close( ) + _server[ port ] = nil return true end