@@ -280,43 +280,43 @@ exports.decodePayload = function (data, binaryType, callback) {
280280 return callback ( err , 0 , 1 ) ;
281281 }
282282
283- var length = ''
284- , n , msg ;
283+ var length = '' , n , msg ;
285284
286285 for ( var i = 0 , l = data . length ; i < l ; i ++ ) {
287286 var chr = data . charAt ( i ) ;
288287
289288 if ( ':' != chr ) {
290289 length += chr ;
291- } else {
292- if ( '' == length || ( length != ( n = Number ( length ) ) ) ) {
293- // parser error - ignoring payload
294- return callback ( err , 0 , 1 ) ;
295- }
290+ continue ;
291+ }
296292
297- msg = data . substr ( i + 1 , n ) ;
293+ if ( '' == length || ( length != ( n = Number ( length ) ) ) ) {
294+ // parser error - ignoring payload
295+ return callback ( err , 0 , 1 ) ;
296+ }
298297
299- if ( length != msg . length ) {
300- // parser error - ignoring payload
301- return callback ( err , 0 , 1 ) ;
302- }
298+ msg = data . substr ( i + 1 , n ) ;
303299
304- if ( msg . length ) {
305- packet = exports . decodePacket ( msg , binaryType , false ) ;
300+ if ( length != msg . length ) {
301+ // parser error - ignoring payload
302+ return callback ( err , 0 , 1 ) ;
303+ }
306304
307- if ( err . type == packet . type && err . data == packet . data ) {
308- // parser error in individual packet - ignoring payload
309- return callback ( err , 0 , 1 ) ;
310- }
305+ if ( msg . length ) {
306+ packet = exports . decodePacket ( msg , binaryType , false ) ;
311307
312- var ret = callback ( packet , i + n , l ) ;
313- if ( false === ret ) return ;
308+ if ( err . type == packet . type && err . data == packet . data ) {
309+ // parser error in individual packet - ignoring payload
310+ return callback ( err , 0 , 1 ) ;
314311 }
315312
316- // advance cursor
317- i += n ;
318- length = '' ;
313+ var ret = callback ( packet , i + n , l ) ;
314+ if ( false === ret ) return ;
319315 }
316+
317+ // advance cursor
318+ i += n ;
319+ length = '' ;
320320 }
321321
322322 if ( length != '' ) {
@@ -335,7 +335,7 @@ exports.decodePayload = function (data, binaryType, callback) {
335335
336336function bufferToString ( buffer ) {
337337 var str = '' ;
338- for ( var i = 0 ; i < buffer . length ; i ++ ) {
338+ for ( var i = 0 , l = buffer . length ; i < l ; i ++ ) {
339339 str += String . fromCharCode ( buffer [ i ] ) ;
340340 }
341341 return str ;
@@ -350,7 +350,7 @@ function bufferToString(buffer) {
350350
351351function stringToBuffer ( string ) {
352352 var buf = new Buffer ( string . length ) ;
353- for ( var i = 0 ; i < string . length ; i ++ ) {
353+ for ( var i = 0 , l = string . length ; i < l ; i ++ ) {
354354 buf . writeUInt8 ( string . charCodeAt ( i ) , i ) ;
355355 }
356356 return buf ;
@@ -446,17 +446,14 @@ exports.decodePayloadAsBinary = function (data, binaryType, callback) {
446446 while ( bufferTail . length > 0 ) {
447447 var strLen = '' ;
448448 var isString = bufferTail [ 0 ] === 0 ;
449- var numberTooLong = false ;
450449 for ( var i = 1 ; ; i ++ ) {
451450 if ( bufferTail [ i ] == 255 ) break ;
452451 // 310 = char length of Number.MAX_VALUE
453452 if ( strLen . length > 310 ) {
454- numberTooLong = true ;
455- break ;
453+ return callback ( err , 0 , 1 ) ;
456454 }
457455 strLen += '' + bufferTail [ i ] ;
458456 }
459- if ( numberTooLong ) return callback ( err , 0 , 1 ) ;
460457 bufferTail = bufferTail . slice ( strLen . length + 1 ) ;
461458
462459 var msgLength = parseInt ( strLen , 10 ) ;
0 commit comments