From 52d7c53e46476674e6f0571a60bb0192aefa5779 Mon Sep 17 00:00:00 2001 From: Arnout Kazemier Date: Wed, 6 Oct 2010 10:00:07 +0200 Subject: [PATCH] Updated the flash socket with error detection, and readystate detection. This is needed because when a error occures we close down the connection, and the stream will become unwriteable. Also changed to a single write instead of multiple writes. --- lib/socket.io/transports/flashsocket.js | 38 ++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/socket.io/transports/flashsocket.js b/lib/socket.io/transports/flashsocket.js index 2c85417ce7..2cef0b2937 100644 --- a/lib/socket.io/transports/flashsocket.js +++ b/lib/socket.io/transports/flashsocket.js @@ -25,27 +25,27 @@ Flashsocket.init = function(listener){ try { netserver = net.createServer(function(socket){ - socket.addListener("error",function(err){ - console.log("Socket.io::netserver request error: " + JSON.stringify(err)); socket.end && socket.end() || socket.destroy && socket.destroy(); - }); - socket.write('\n'); - socket.write('\n'); - socket.write('\n'); + socket.addListener("error",function(err){ + socket.end && socket.end() || socket.destroy && socket.destroy(); + }); + var xml = '\n\n\n'; - listeners.forEach(function(l){ - [].concat(l.options.origins).forEach(function(origin){ - var parts = origin.split(':'); - socket.write('\n'); - }); - }); + listeners.forEach(function(l){ + [].concat(l.options.origins).forEach(function(origin){ + var parts = origin.split(':'); + xml += '\n'; + }); + }); - socket.write('\n'); - socket.end(); - }); - netserver.addListener("error",function(err){ - console.log("Socket.io::netserver global error: " + JSON.stringify(err)); - }); - netserver.listen(843); + xml += '\n'; + + if(socket && socket.readyState == 'open'){ + socket.write(xml); + socket.end(); + } + }); + netserver.addListener("error",function(err){}); + netserver.listen(843); } catch(e){ if (e.errno == 13){ console.error("\x1B[1;31m" + [