Merge 0.10->trunk
[prosody.git] / net / server_select.lua
index b69b5fc73e452c78c99db2baf4fae61d9983f195..06deec322a491912814c145cca2851166362e6ee 100644 (file)
@@ -402,6 +402,7 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
        handler.clientport = function( )
                return clientport
        end
+       handler.port = handler.clientport -- COMPAT server_event
        local write = function( self, data )
                bufferlen = bufferlen + #data
                if bufferlen > maxsendlen then
@@ -709,6 +710,7 @@ local function link(sender, receiver, buffersize)
                        sender:lock_read(true);
                end
        end
+       sender:set_mode("*a");
 end
 
 ----------------------------------// PUBLIC //--
@@ -965,7 +967,7 @@ local addclient = function( address, port, listeners, pattern, sslctx, typ )
        end
        client:settimeout( 0 )
        local ok, err = client:connect( address, port )
-       if ok or err == "timeout" then
+       if ok or err == "timeout" or err == "Operation already in progress" then
                return wrapclient( client, address, port, listeners, pattern, sslctx )
        else
                return nil, err