--- 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.
---
-
---[[\r
-\r
- server.lua by blastbeat\r
-\r
- - this script contains the server loop of the program\r
- - other scripts can reg a server here\r
-\r
-]]--\r
+-- \r
+-- server.lua by blastbeat of the luadch project\r
+-- Re-used here under the MIT/X Consortium License\r
+-- \r
+-- Modifications (C) 2008-2009 Matthew Wild, Waqas Hussain\r
+--\r
\r
-- // wrapping luadch stuff // --\r
\r
local ssl = false\r
\r
if sslctx then\r
+ ssl = true\r
if not ssl_newcontext then\r
- return nil, "luasec not found"\r
+ out_error "luasec not found"\r
+ ssl = false\r
end\r
if type( sslctx ) ~= "table" then\r
out_error "server.lua: wrong server sslctx"\r
- return nil, "wrong server sslctx"\r
+ ssl = false\r
end\r
sslctx, err = ssl_newcontext( sslctx )\r
if not sslctx then\r
err = err or "wrong sslctx parameters"\r
out_error( "server.lua: ", err )\r
- return nil, err\r
+ ssl = false\r
end\r
- ssl = true\r
- else\r
- out_put("server.lua: ", "ssl not enabled on ", serverport);\r
+ end\r
+ if not ssl then\r
+ sslctx = false;\r
+ if startssl then\r
+ out_error( "server.lua: Cannot start ssl on port: ", serverport )\r
+ return nil, "Cannot start ssl, see log for details"\r
+ else\r
+ out_put("server.lua: ", "ssl not enabled on ", serverport);\r
+ end\r
end\r
\r
local accept = socket.accept\r
socket:settimeout( 0 )\r
handler.readbuffer = handshake\r
handler.sendbuffer = handshake\r
- if not socket then -- do handshake\r
+ handshake( socket ) -- do handshake\r
+ if not socket then\r
return nil, nil, "ssl handshake failed";\r
end\r
else\r
return nil, "no server found on port '" .. tostring( port ) "'"\r
end\r
handler.close( )\r
+ _server[ port ] = nil\r
return true\r
end\r
\r