diff --git a/lib/server.js b/lib/server.js
index 32ff5eff..0194d1bd 100644
--- a/lib/server.js
+++ b/lib/server.js
@@ -271,29 +271,16 @@ Server.prototype.onWebSocket = function(req, socket){
var policy = readFileSync(__dirname + '/transports/flashsocket.xml');
-Server.prototype.handleSocket = function (socket) {
- var chunks = ''
- , buffer = false
-
- socket.on('data', function onData (data) {
- if (!buffer && 60 == data[0]) {
- buffer = true;
- } else {
- socket.removeListener('data', onData);
- return;
- }
-
- if (chunks.length < 23) {
- chunks += data.toString('ascii');
- }
-
- if (chunks.length >= 23) {
- if ('\0' == chunks.substr(0, 23)) {
+Server.prototype.handleSocket = function(socket){
+ socket.on('data', function onData(data){
+ // no need for buffering as node will discard subsequent packets
+ // since they constitute a malformed HTTP request
+ if (60 == data[0] && 23 == data.length) {
+ var str = data.slice(0, 23).toString();
+ if ('\0' == str) {
socket.end(policy);
- } else {
- chunks = null;
- socket.removeListener('data', onData);
}
}
+ socket.removeListener('data', onData);
});
};