net.server_select: Clean up buffer and fire drained callback on successful write before we try and start TLS negotiation (if negotiation fails instantly then we can be left without a handler to use for cleanup) (thanks dersd)

Fri, 02 Jul 2010 17:24:40 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Fri, 02 Jul 2010 17:24:40 +0100
changeset 3311
88cfe1bba690
parent 3310
ddcab5be2a5e
child 3312
12fc7e005e8b
child 3313
9bcf8d612a52

net.server_select: Clean up buffer and fire drained callback on successful write before we try and start TLS negotiation (if negotiation fails instantly then we can be left without a handler to use for cleanup) (thanks dersd)

net/server_select.lua file | annotate | diff | comparison | revisions
--- a/net/server_select.lua	Fri Jul 02 17:23:17 2010 +0100
+++ b/net/server_select.lua	Fri Jul 02 17:24:40 2010 +0100
@@ -479,11 +479,11 @@
 			bufferqueuelen = 0
 			bufferlen = 0
 			_sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) -- delete socket from writelist
-			_ = needtls and handler:starttls(nil, true)
 			_writetimes[ handler ] = nil
 			if drain then
 				drain(handler)
 			end
+			_ = needtls and handler:starttls(nil, true)
 			_ = toclose and handler:close( )
 			return true
 		elseif byte and ( err == "timeout" or err == "wantwrite" ) then -- want write

mercurial