X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=net%2Fconnlisteners.lua;h=ebb3cc18e2cec986ccfd888deacc83e777c35f36;hb=68aa12bf2c6ed9f24e90e918bff5e43ac5e3007f;hp=f027dfeb6457ed02308c45a90830e826849ab36f;hpb=5466de23f56d2121e384f47fe14f32b4ff5ed587;p=prosody.git diff --git a/net/connlisteners.lua b/net/connlisteners.lua index f027dfeb..ebb3cc18 100644 --- a/net/connlisteners.lua +++ b/net/connlisteners.lua @@ -1,26 +1,15 @@ --- Prosody IM v0.2 --- Copyright (C) 2008 Matthew Wild --- Copyright (C) 2008 Waqas Hussain +-- Prosody IM +-- Copyright (C) 2008-2009 Matthew Wild +-- Copyright (C) 2008-2009 Waqas Hussain -- --- This program is free software; you can redistribute it and/or --- modify it under the terms of the GNU General Public License --- as published by the Free Software Foundation; either version 2 --- of the License, or (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-- This project is MIT/X11 licensed. Please see the +-- COPYING file in the source package for more information. -- local listeners_dir = (CFG_SOURCEDIR or ".").."/net/"; -local server_add = require "net.server".add; +local server = require "net.server"; local log = require "util.logger".init("connlisteners"); local dofile, pcall, error = @@ -32,11 +21,11 @@ local listeners = {}; function register(name, listener) if listeners[name] and listeners[name] ~= listener then - log("warning", "Listener %s is already registered, not registering any more", name); + log("debug", "Listener %s is already registered, not registering any more", name); return false; end listeners[name] = listener; - log("info", "Registered connection listener %s", name); + log("debug", "Registered connection listener %s", name); return true; end @@ -55,13 +44,22 @@ function get(name) end function start(name, udata) - local h = get(name); + local h, err = get(name); if not h then - error("No such connection module: "..name, 0); + error("No such connection module: "..name.. (err and (" ("..err..")") or ""), 0); + end + + if udata then + if (udata.type == "ssl" or udata.type == "tls") and not udata.ssl then + error("No SSL context supplied for a "..tostring(udata.type):upper().." connection!", 0); + elseif udata.ssl and udata.type == "tcp" then + error("SSL context supplied for a TCP connection!", 0); + end end - return server_add(h, + + return server.addserver(h, (udata and udata.port) or h.default_port or error("Can't start listener "..name.." because no port was specified, and it has no default port", 0), - (udata and udata.interface) or "*", (udata and udata.mode) or h.default_mode or 1, (udata and udata.ssl) or nil ); + (udata and udata.interface) or h.default_interface or "*", (udata and udata.mode) or h.default_mode or 1, (udata and udata.ssl) or nil, 99999999, udata and udata.type == "ssl"); end return _M;