From 0d2b952b610069996f733700117a2e62d5b73696 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Fri, 5 Dec 2008 19:24:01 +0000 Subject: Add TLS socket to readlist before handshake starts, fixes major slow-down on TLS connections --- net/server.lua | 16 ++++++++++++---- net/xmppclient_listener.lua | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'net') diff --git a/net/server.lua b/net/server.lua index 9d178cb2..d840d51b 100644 --- a/net/server.lua +++ b/net/server.lua @@ -504,13 +504,24 @@ wraptlsclient = function( listener, socket, ip, serverport, clientport, mode, ss handler.starttls = function (now) if not now then out_put("server.lua: we need to do tls, but delaying until later"); handler.need_tls = true; return; end out_put( "server.lua: attempting to start tls on "..tostring(socket) ) + local oldsocket = socket; socket, err = ssl_wrap( socket, sslctx ) -- wrap socket out_put("sslwrapped socket is "..tostring(socket)); if err then out_put( "server.lua: ssl error: ", err ) return nil, nil, err -- fatal error end - socket:settimeout( 1 ) + socket:settimeout(0); + + -- Add the new socket to our system + socketlist[ socket ] = handler + readlen = readlen + 1 + readlist[ readlen ] = socket + + -- Remove traces of the old socket + readlen = removesocket( readlist, oldsocket, readlen ) + socketlist [ oldsocket ] = nil; + send = socket.send receive = socket.receive close = socket.close @@ -536,9 +547,6 @@ wraptlsclient = function( listener, socket, ip, serverport, clientport, mode, ss handler.receivedata = handler._receivedata -- when handshake is done, replace the handshake function with regular functions handler.dispatchdata = handler._dispatchdata handler.need_tls = nil - socketlist[ client ] = handler - readlen = readlen + 1 - readlist[ readlen ] = client return true; else out_put( "server.lua: error during ssl handshake: ", err ) diff --git a/net/xmppclient_listener.lua b/net/xmppclient_listener.lua index 22af2de4..fe6ec57b 100644 --- a/net/xmppclient_listener.lua +++ b/net/xmppclient_listener.lua @@ -113,7 +113,7 @@ function xmppclient.listener(conn, data) if not session then session = sm_new_session(conn); sessions[conn] = session; - + -- Logging functions -- local mainlog, log = log; -- cgit v1.2.3