net/server.lua

changeset 563
099d8a102deb
parent 562
04ee161d936b
child 564
779ab5b99e13
child 565
3a49d85cafbc
--- a/net/server.lua	Fri Dec 05 19:22:34 2008 +0000
+++ b/net/server.lua	Fri Dec 05 19:24:01 2008 +0000
@@ -504,13 +504,24 @@
 	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 @@
 							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 )

mercurial