AnsweredAssumed Answered

StanzaListener not working for type='error'

Question asked by Luis Ángel on Feb 24, 2017
Latest reply on Feb 27, 2017 by Luis Ángel

Not sure if there's a thread about this already, but I've been looking for this and haven't seen anything useful yet.

 

So currently I am using Smack to create a chat, and everything is working fine, I just have one issue for handling errors, when I send a message and there's an error, I am not able to handle the error because I can't catch the stanza in any listener, so this is what I have:

 

I send this message:

 

<message

    from='user.a@domine.com/resource'

    to='user.b@domine.com/resource'

    type='chat'

    xml:lang='en'

    id='message_id'>

    <body>message</body>

</message>

 

and I have a stanza acknowledged listener, to listen the server when it gets the message, so I can mark my message as sent

mConnection.addStanzaAcknowledgedListener(packet -> {

     // In here update my local database for the message that I sent

});

 

so in this listener, I get the same message that I sent (the one above).

My problem comes here, I get an error from the server, and basically I get the same message, but the type for this is error, which is fin, I can just look at the message_id and update my database and say that the message wasn't sent

 

<message

    from='user.a@domine.com/resource'

    to='user.b@domine.com/resource'

    type='error'

    xml:lang='en'

    id='message_id'>

    <body>message</body>

    <error code='500'>error message</error>

</message>

 

My problem is that I cannot get this message in any listener, I get that from the logs in the console, but I am not able to get any packet listener using filters to catch this message that I am getting with the error.

 

finally the question:

Is there any way to catch this stanza message for the type='error'? which listener should I use?

Outcomes