net.server_{select,event}: Don't rely on LuaSocket and LuaSec being present in the...
authorKim Alvefur <zash@zash.se>
Mon, 23 Feb 2015 11:04:43 +0000 (12:04 +0100)
committerKim Alvefur <zash@zash.se>
Mon, 23 Feb 2015 11:04:43 +0000 (12:04 +0100)
net/server_event.lua
net/server_select.lua

index 756e9837b43c7ffa13de2c2ba1c6fe03916519f6..daac7746ad6504dc5c9f2709a26e2f58f65380fe 100644 (file)
@@ -44,7 +44,7 @@ local setmetatable = use "setmetatable"
 local t_insert = table.insert
 local t_concat = table.concat
 
-local ssl = use "ssl"
+local has_luasec, ssl = pcall ( require , "ssl" )
 local socket = use "socket" or require "socket"
 
 local log = require ("util.logger").init("socket")
@@ -136,7 +136,7 @@ do
                                        self:_close()
                                        debug( "new connection failed. id:", self.id, "error:", self.fatalerror )
                                else
-                                       if plainssl and ssl then  -- start ssl session
+                                       if plainssl and has_luasec then  -- start ssl session
                                                self:starttls(self._sslctx, true)
                                        else  -- normal connection
                                                self:_start_session(true)
@@ -512,7 +512,7 @@ do
                        _sslctx = sslctx; -- parameters
                        _usingssl = false;  -- client is using ssl;
                }
-               if not ssl then interface.starttls = false; end
+               if not has_luasec then interface.starttls = false; end
                interface.id = tostring(interface):match("%x+$");
                interface.writecallback = function( event )  -- called on write events
                        --vdebug( "new client write event, id/ip/port:", interface, ip, port )
@@ -695,7 +695,7 @@ do
                                interface._connections = interface._connections + 1  -- increase connection count
                                local clientinterface = handleclient( client, client_ip, client_port, interface, pattern, listener, sslctx )
                                --vdebug( "client id:", clientinterface, "startssl:", startssl )
-                               if ssl and sslctx then
+                               if has_luasec and sslctx then
                                        clientinterface:starttls(sslctx, true)
                                else
                                        clientinterface:_start_session( true )
@@ -725,7 +725,7 @@ local addserver = ( function( )
                end
                local sslctx
                if sslcfg then
-                       if not ssl then
+                       if not has_luasec then
                                debug "fatal error: luasec not found"
                                return nil, "luasec not found"
                        end
@@ -766,7 +766,7 @@ do
                end
                local sslctx
                if sslcfg then  -- handle ssl/new context
-                       if not ssl then
+                       if not has_luasec then
                                debug "need luasec, but not available"
                                return nil, "luasec not found"
                        end
index 486e953b6cb0269f3c1eb94b762fdc5be118e912..322c0b5770f5f5901e004297b72db39afc800380 100644 (file)
@@ -48,13 +48,13 @@ local coroutine_yield = coroutine.yield
 
 --// extern libs //--
 
-local luasec = use "ssl"
+local has_luasec, luasec = pcall ( require , "ssl" )
 local luasocket = use "socket" or require "socket"
 local luasocket_gettime = luasocket.gettime
 
 --// extern lib methods //--
 
-local ssl_wrap = ( luasec and luasec.wrap )
+local ssl_wrap = ( has_luasec and luasec.wrap )
 local socket_bind = luasocket.bind
 local socket_sleep = luasocket.sleep
 local socket_select = luasocket.select
@@ -594,7 +594,7 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
                        end
                )
        end
-       if luasec then
+       if has_luasec then
                handler.starttls = function( self, _sslctx)
                        if _sslctx then
                                handler:set_sslctx(_sslctx);
@@ -647,7 +647,7 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
        _socketlist[ socket ] = handler
        _readlistlen = addsocket(_readlist, socket, _readlistlen)
 
-       if sslctx and luasec then
+       if sslctx and has_luasec then
                out_put "server.lua: auto-starting ssl negotiation..."
                handler.autostart_ssl = true;
                local ok, err = handler:starttls(sslctx);
@@ -731,7 +731,7 @@ addserver = function( addr, port, listeners, pattern, sslctx ) -- this function
                err = "invalid port"
        elseif _server[ addr..":"..port ] then
                err = "listeners on '[" .. addr .. "]:" .. port .. "' already exist"
-       elseif sslctx and not luasec then
+       elseif sslctx and not has_luasec then
                err = "luasec not found"
        end
        if err then