215 { |
215 { |
216 this._setStatus(xmpp.Status.CONNECTED); |
216 this._setStatus(xmpp.Status.CONNECTED); |
217 } |
217 } |
218 } |
218 } |
219 this.debug("STANZA: "+stanza.toString()); |
219 this.debug("STANZA: "+stanza.toString()); |
|
220 |
|
221 // Match and call handlers |
|
222 var removeHandlers = []; |
|
223 for(var i=0;i<this.handlers.length;i++) |
|
224 { |
|
225 var handler = this.handlers[i]; |
|
226 if( |
|
227 (!handler.name || handler.name == stanza.name) && |
|
228 (!handler.xmlns || (handler.xmlns == stanza.attr.xmlns |
|
229 || (stanza.tags[0] && handler.xmlns == stanza.tags[0].attr.xmlns))) && |
|
230 (!handler.type || handler.type == stanza.attr.type) && |
|
231 (!handler.id || handler.id == stanza.attr.id) && |
|
232 (!handler.from || (handler.from == (handler.matchBare?xmpp.getBareJID(stanza.attr.from):stanza.attr.from))) && |
|
233 (!handler.to || (handler.to == (handler.matchBare?xmpp.getBareJID(stanza.attr.to):stanza.attr.to))) |
|
234 ) |
|
235 { |
|
236 var ret = handler.callback(stanza); |
|
237 if(ret == false) |
|
238 removeHandlers.push(i); |
|
239 } |
|
240 } |
|
241 |
|
242 var adjust = 0; |
|
243 for(var i=0;i<removeHandlers.length;i++) |
|
244 this.handlers.splice(removeHandlers[i]-(adjust++), 1); |
220 }, |
245 }, |
221 |
246 |
222 _stream_closed: function () |
247 _stream_closed: function () |
223 { |
248 { |
224 this.debug("STREAM: closed."); |
249 this.debug("STREAM: closed."); |