Software / code / prosody
Comparison
net/server.lua @ 658:1952fdcf1017
Fix specifying ports in config, and SSL support
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sat, 27 Dec 2008 21:20:09 +0000 |
| parent | 657:7f1946174d4b |
| child | 659:c424bec771d9 |
comparison
equal
deleted
inserted
replaced
| 657:7f1946174d4b | 658:1952fdcf1017 |
|---|---|
| 92 | 92 |
| 93 stats = function( ) | 93 stats = function( ) |
| 94 return receivestat, sendstat | 94 return receivestat, sendstat |
| 95 end | 95 end |
| 96 | 96 |
| 97 wrapserver = function( listener, socket, ip, serverport, mode, sslctx ) -- this function wraps a server | 97 wrapserver = function( listener, socket, ip, serverport, mode, sslctx, wrapper_function ) -- this function wraps a server |
| 98 | 98 |
| 99 local dispatch, disconnect = listener.listener, listener.disconnect -- dangerous | 99 local dispatch, disconnect = listener.listener, listener.disconnect -- dangerous |
| 100 | 100 |
| 101 local wrapclient, err | 101 local wrapclient, err |
| 102 | 102 |
| 103 out_put("Starting a new server on "..tostring(serverport).." with ssl: "..tostring(sslctx)); | 103 out_put("Starting a new server on "..tostring(serverport).." with ssl: "..tostring(sslctx)); |
| 104 | 104 out_put(traceback()) |
| 105 if sslctx then | 105 if sslctx then |
| 106 if not ssl_newcontext then | 106 if not ssl_newcontext then |
| 107 return nil, "luasec not found" | 107 return nil, "luasec not found" |
| 108 end | 108 end |
| 109 if type( sslctx ) ~= "table" then | 109 if type( sslctx ) ~= "table" then |
| 114 if not sslctx then | 114 if not sslctx then |
| 115 err = err or "wrong sslctx parameters" | 115 err = err or "wrong sslctx parameters" |
| 116 out_error( "server.lua: ", err ) | 116 out_error( "server.lua: ", err ) |
| 117 return nil, err | 117 return nil, err |
| 118 end | 118 end |
| 119 end | |
| 120 | |
| 121 if wrapper_function then | |
| 122 wrapclient = wrapper_function | |
| 123 elseif sslctx then | |
| 119 wrapclient = wrapsslclient | 124 wrapclient = wrapsslclient |
| 120 wrapclient = wraptlsclient | |
| 121 else | 125 else |
| 122 wrapclient = wraptcpclient | 126 wrapclient = wraptcpclient |
| 123 end | 127 end |
| 124 | 128 |
| 125 local accept = socket.accept | 129 local accept = socket.accept |
| 126 local close = socket.close | 130 local close = socket.close |
| 127 | 131 |
| 128 --// public methods of the object //-- | 132 --// public methods of the object //-- |
| 129 | 133 |
| 766 for i, listener in ipairs( timelistener ) do | 770 for i, listener in ipairs( timelistener ) do |
| 767 listener( ) | 771 listener( ) |
| 768 end | 772 end |
| 769 end | 773 end |
| 770 | 774 |
| 771 addserver = function( listeners, port, addr, mode, sslctx ) -- this function provides a way for other scripts to reg a server | 775 addserver = function( listeners, port, addr, mode, sslctx, wrapper_function ) -- this function provides a way for other scripts to reg a server |
| 772 local err | 776 local err |
| 773 if type( listeners ) ~= "table" then | 777 if type( listeners ) ~= "table" then |
| 774 err = "invalid listener table" | 778 err = "invalid listener table" |
| 775 else | 779 else |
| 776 for name, func in pairs( listeners ) do | 780 for name, func in pairs( listeners ) do |
| 795 local server, err = socket_bind( addr, port ) | 799 local server, err = socket_bind( addr, port ) |
| 796 if err then | 800 if err then |
| 797 out_error( "server.lua: ", err ) | 801 out_error( "server.lua: ", err ) |
| 798 return nil, err | 802 return nil, err |
| 799 end | 803 end |
| 800 local handler, err = wrapserver( listeners, server, addr, port, mode, sslctx ) -- wrap new server socket | 804 local handler, err = wrapserver( listeners, server, addr, port, mode, sslctx, wrapper_function ) -- wrap new server socket |
| 801 if not handler then | 805 if not handler then |
| 802 server:close( ) | 806 server:close( ) |
| 803 return nil, err | 807 return nil, err |
| 804 end | 808 end |
| 805 server:settimeout( 0 ) | 809 server:settimeout( 0 ) |
| 875 loop = loop, | 879 loop = loop, |
| 876 stats = stats, | 880 stats = stats, |
| 877 closeall = closeall, | 881 closeall = closeall, |
| 878 addtimer = addtimer, | 882 addtimer = addtimer, |
| 879 wraptcpclient = wraptcpclient, | 883 wraptcpclient = wraptcpclient, |
| 884 wrapsslclient = wrapsslclient, | |
| 880 wraptlsclient = wraptlsclient, | 885 wraptlsclient = wraptlsclient, |
| 881 } | 886 } |