X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=net%2Fserver_event.lua;h=53198a128d34c6acf4b0d6fb692c9da4c8b6bffa;hb=409ea7826d085d86bce956ec741bc3df62feda02;hp=6ef0f5b17dff901f9c4693a4359c501d27cc2674;hpb=489f9a61fad282920ab981ad6a3c94526bfe36b3;p=prosody.git diff --git a/net/server_event.lua b/net/server_event.lua index 6ef0f5b1..53198a12 100644 --- a/net/server_event.lua +++ b/net/server_event.lua @@ -44,8 +44,8 @@ local tostring = use "tostring" local coroutine = use "coroutine" local setmetatable = use "setmetatable" -local ssl = use "ssl" -local socket = use "socket" +local ssl = use "ssl" or require "ssl" +local socket = use "socket" or require "socket" local log = require ("util.logger").init("socket") @@ -352,6 +352,10 @@ do return self._port end + function interface_mt:serverport() + return self._serverport + end + function interface_mt:ip() return self._ip end @@ -464,6 +468,7 @@ do -- Properties _ip = ip, _port = port, _server = server, _pattern = pattern, + _serverport = (server and server:port() or nil), _sslctx = sslctx; -- parameters _usingssl = false; -- client is using ssl; } @@ -618,6 +623,9 @@ do readcallback = false; -- read event callback fatalerror = false; -- error message nointerface = true; -- lock/unlock parameter + + _ip = addr, _port = port, _pattern = pattern, + _sslctx = sslctx; } interface.id = tostring(interface):match("%x+$"); interface.readcallback = function( event ) -- server handler, called on incoming connections @@ -760,12 +768,24 @@ end )( ) local closeallservers = function( arg ) for _, item in ipairs( interfacelist( ) ) do - if item "type" == "server" then - item( "close", arg ) + if item.type == "server" then + item:close( arg ) end end end +local function setquitting(yes) + if yes then + -- Quit now + closeallservers(); + base:loopexit(); + end +end + +function get_backend() + return base:method(); +end + return { cfg = cfg, @@ -777,7 +797,9 @@ return { addserver = addserver, addclient = addclient, wrapclient = wrapclient, - closeallservers = closeallservers, + setquitting = setquitting, + closeall = closeallservers, + get_backend = get_backend, __NAME = SCRIPT_NAME, __DATE = LAST_MODIFIED,