X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=net%2Fserver.lua;h=6fe72712ae26e5f7700ff1275ade476132886f4d;hb=4e16323f2a78a2f20bcd75957f2ada27a5d8b90f;hp=9418d388fc50fef66434db74efdb8c27947a897e;hpb=c6a0d3e8741f90af7ff841f731657b1fdb682a1a;p=prosody.git diff --git a/net/server.lua b/net/server.lua index 9418d388..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,10 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport socket:settimeout( 0 ) handler.readbuffer = handshake handler.sendbuffer = handshake - handshake( socket ) -- do handshake + handshake( socket ) -- do handshake + if not socket then + return nil, nil, "ssl handshake failed"; + end else -- We're not automatically doing SSL, so we're not secure (yet) ssl = false @@ -694,6 +695,7 @@ removeserver = function( port ) return nil, "no server found on port '" .. tostring( port ) "'" end handler.close( ) + _server[ port ] = nil return true end