Mercurial > prosody-hg
comparison net/server_select.lua @ 6782:ec172dbe9d14
net.server_{select,event}: Don't rely on LuaSocket and LuaSec being present in the globals table
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 23 Feb 2015 12:04:43 +0100 |
| parents | ba421af3dfd3 |
| children | e813e8cf6046 7af63377a1cf |
comparison
equal
deleted
inserted
replaced
| 6781:05cd80ec107c | 6782:ec172dbe9d14 |
|---|---|
| 46 local coroutine_wrap = coroutine.wrap | 46 local coroutine_wrap = coroutine.wrap |
| 47 local coroutine_yield = coroutine.yield | 47 local coroutine_yield = coroutine.yield |
| 48 | 48 |
| 49 --// extern libs //-- | 49 --// extern libs //-- |
| 50 | 50 |
| 51 local luasec = use "ssl" | 51 local has_luasec, luasec = pcall ( require , "ssl" ) |
| 52 local luasocket = use "socket" or require "socket" | 52 local luasocket = use "socket" or require "socket" |
| 53 local luasocket_gettime = luasocket.gettime | 53 local luasocket_gettime = luasocket.gettime |
| 54 | 54 |
| 55 --// extern lib methods //-- | 55 --// extern lib methods //-- |
| 56 | 56 |
| 57 local ssl_wrap = ( luasec and luasec.wrap ) | 57 local ssl_wrap = ( has_luasec and luasec.wrap ) |
| 58 local socket_bind = luasocket.bind | 58 local socket_bind = luasocket.bind |
| 59 local socket_sleep = luasocket.sleep | 59 local socket_sleep = luasocket.sleep |
| 60 local socket_select = luasocket.select | 60 local socket_select = luasocket.select |
| 61 | 61 |
| 62 --// functions //-- | 62 --// functions //-- |
| 592 _ = handler and handler:force_close("ssl handshake failed") | 592 _ = handler and handler:force_close("ssl handshake failed") |
| 593 return false, err -- handshake failed | 593 return false, err -- handshake failed |
| 594 end | 594 end |
| 595 ) | 595 ) |
| 596 end | 596 end |
| 597 if luasec then | 597 if has_luasec then |
| 598 handler.starttls = function( self, _sslctx) | 598 handler.starttls = function( self, _sslctx) |
| 599 if _sslctx then | 599 if _sslctx then |
| 600 handler:set_sslctx(_sslctx); | 600 handler:set_sslctx(_sslctx); |
| 601 end | 601 end |
| 602 if bufferqueuelen > 0 then | 602 if bufferqueuelen > 0 then |
| 645 shutdown = ( ssl and id ) or socket.shutdown | 645 shutdown = ( ssl and id ) or socket.shutdown |
| 646 | 646 |
| 647 _socketlist[ socket ] = handler | 647 _socketlist[ socket ] = handler |
| 648 _readlistlen = addsocket(_readlist, socket, _readlistlen) | 648 _readlistlen = addsocket(_readlist, socket, _readlistlen) |
| 649 | 649 |
| 650 if sslctx and luasec then | 650 if sslctx and has_luasec then |
| 651 out_put "server.lua: auto-starting ssl negotiation..." | 651 out_put "server.lua: auto-starting ssl negotiation..." |
| 652 handler.autostart_ssl = true; | 652 handler.autostart_ssl = true; |
| 653 local ok, err = handler:starttls(sslctx); | 653 local ok, err = handler:starttls(sslctx); |
| 654 if ok == false then | 654 if ok == false then |
| 655 return nil, nil, err | 655 return nil, nil, err |
| 729 end | 729 end |
| 730 if type( port ) ~= "number" or not ( port >= 0 and port <= 65535 ) then | 730 if type( port ) ~= "number" or not ( port >= 0 and port <= 65535 ) then |
| 731 err = "invalid port" | 731 err = "invalid port" |
| 732 elseif _server[ addr..":"..port ] then | 732 elseif _server[ addr..":"..port ] then |
| 733 err = "listeners on '[" .. addr .. "]:" .. port .. "' already exist" | 733 err = "listeners on '[" .. addr .. "]:" .. port .. "' already exist" |
| 734 elseif sslctx and not luasec then | 734 elseif sslctx and not has_luasec then |
| 735 err = "luasec not found" | 735 err = "luasec not found" |
| 736 end | 736 end |
| 737 if err then | 737 if err then |
| 738 out_error( "server.lua, [", addr, "]:", port, ": ", err ) | 738 out_error( "server.lua, [", addr, "]:", port, ": ", err ) |
| 739 return nil, err | 739 return nil, err |
