Another fix:
Turns out that sometimes I’‘m getting back empty xml frames – don’'t ask me why.
The code blows up when it tries to parse them.
So I popped in a try - catch block to recover from those problems
XMPPConnect.as line 511
try{
xmlData.parseXML( ev.data );
var event:IncomingDataEvent = new IncomingDataEvent();
event.data = xmlData;
dispatchEvent( event );
// Read the data and send it to the appropriate parser
var firstNode:XMLNode = xmlData.firstChild;
var nodeName:String = firstNode.nodeName.toLowerCase();
switch( nodeName )
{
case “stream:stream”:
case “flash:stream”:
_expireTagSearch = false;
handleStream( firstNode );
break;
case “stream:error”:
handleStreamError( firstNode );
break;
case “iq”:
handleIQ( firstNode );
break;
case “message”:
handleMessage( firstNode );
break;
case “presence”:
handlePresence( firstNode );
break;
default:
// silently ignore lack of or unknown stanzas
// if the app designer wishes to handle raw data they
// can on “incomingData”.
// Use case: received null byte, XMLSocket parses empty document
// sends empty document
// I am enabling this for debugging
dispatchError( “undefined-condition”, “Unknown Error”, “modify”, 500 );
break;
}
}catch(e:Error){
trace(“Error: parse data error: Continuing…”);
}