Stream management

Hi,

I’m in trouble

my code(SMACK 4.1 rc4):

XMPPTCPConnection connection = new XMPPTCPConnection(builder.build());

ReconnectionManager reconnectionManager = ReconnectionManager.getInstanceFor(connection);

reconnectionManager.enableAutomaticReconnection();

connection.setUseStreamManagement(true);

connection.connect();

connection.login();

first connect log:

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

It is right

but when the client got ‘unclean’ disconnection from the WiFi / GSM,

doesn’t send

stanza after reconnecting

always:

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

why?

Any thoughts would be appreciated,

Thanks!

Why don’t you use the latest released version of Smack?

I am …

But the problems still exist

Which version do you use then? Note that you also have to https://www.igniterealtime.org/builds/smack/docs/latest/javadoc/org/jivesoftware /smack/tcp/XMPPTCPConnection.html#setUse…

code is:

XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();

builder.setCompressionEnabled(false);

builder.setConnectTimeout(30 * 1000);

builder.setHost(service);

builder.setPort(port);

builder.setUsernameAndPassword(jid, pwd);

builder.setServiceName(service);

builder.setResource(jid);

builder.setDebuggerEnabled(true);

builder.setSendPresence(false);

builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);

XMPPTCPConnection connection = new XMPPTCPConnection(builder.build());

ReconnectionManager reconnectionManager = ReconnectionManager.getInstanceFor(connection);

reconnectionManager.enableAutomaticReconnection();

XMPPTCPConnection.setUseStreamManagementDefault(true);

XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);

connection.setUseStreamManagement(true);

connection.setUseStreamManagementResumption(true);

try {

connection.connect();

} catch (SmackException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (XMPPException e) {

e.printStackTrace();

}

try {

connection.login();

} catch (XMPPException e) {

e.printStackTrace();

} catch (SmackException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

lib:

org.igniterealtime.smack

smack-tcp

4.1.0

org.igniterealtime.smack

smack-android-extensions

4.1.0

still doesn’t send

stanza after reconnecting

Any thoughts would be appreciated,

Thanks!

Use a debugger to see why it isn’t sent.

first connect log:

D/SMACK﹕ SENT (0): <stream:stream xmlns=‘jabber:client’ to=‘jiazhangquan.im.etiantian.net’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’ from=‘2656202@jiazhangquan.im.etiantian.net’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): <?xml version='1.0'?><stream:stream xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ from=‘jiazhangquan.im.etiantian.net’ id=‘7c94a15c-d736-4474-a526-20afbe6315c6’ version=‘1.0’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): stream:featuresPLAINANONYMOUSzlib</stream:features>

D/SMACK﹕ SENT (0): ADI2NTYyMDIAMzgwZGU1MzQzODkyMjgwYTEyNzRkYjgyMDJkY2FmMDA=</aut h>

D/SMACK﹕ RECV (0):

D/SMACK﹕ SENT (0): <stream:stream xmlns=‘jabber:client’ to=‘jiazhangquan.im.etiantian.net’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’ from=‘2656202@jiazhangquan.im.etiantian.net’ id=‘7c94a15c-d736-4474-a526-20afbe6315c6’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): <?xml version='1.0'?><stream:stream xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ from=‘jiazhangquan.im.etiantian.net’ id=‘7c94a15c-d736-4474-a526-20afbe6315c6’ version=‘1.0’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): stream:featureszlib</stream:features>

D/SMACK﹕ SENT (0): phone

D/SMACK﹕ RECV (0): 2656202@jiazhangquan.im.etiantian.net/phone

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

D/SMACK﹕ User logged (0): 2656202@jiazhangquan.im.etiantian.net:5222/phone

D/SMACK﹕ XMPPConnection authenticated (0)

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

D/SMACK﹕ RECV (0):

reconnect log:

D/SMACK﹕ SENT (0): <stream:stream xmlns=‘jabber:client’ to=‘jiazhangquan.im.etiantian.net’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’ from=‘2656202@jiazhangquan.im.etiantian.net’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): <?xml version='1.0'?><stream:stream xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ from=‘jiazhangquan.im.etiantian.net’ id=‘54b5eecf-a26d-4f9e-9b51-97185eaafa65’ version=‘1.0’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): stream:featuresPLAINANONYMOUSzlib</stream:features>

D/SMACK﹕** XMPPConnection connected (0)**

D/SMACK﹕ SENT (0): ADI2NTYyMDIAMzgwZGU1MzQzODkyMjgwYTEyNzRkYjgyMDJkY2FmMDA=</aut h>

D/SMACK﹕ RECV (0):

D/SMACK﹕ SENT (0): <stream:stream xmlns=‘jabber:client’ to=‘jiazhangquan.im.etiantian.net’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’ from=‘2656202@jiazhangquan.im.etiantian.net’ id=‘54b5eecf-a26d-4f9e-9b51-97185eaafa65’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): <?xml version='1.0'?><stream:stream xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ from=‘jiazhangquan.im.etiantian.net’ id=‘54b5eecf-a26d-4f9e-9b51-97185eaafa65’ version=‘1.0’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): stream:featureszlib</stream:features>

D/SMACK﹕ SENT (0): phone

D/SMACK﹕ RECV (0): 2656202@jiazhangquan.im.etiantian.net/phone

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):** **

D/SMACK﹕ User logged (0): 2656202@jiazhangquan.im.etiantian.net:5222/phone

D/SMACK﹕ XMPPConnection authenticated (0)

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ XMPPConnection reconnected (0)

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0): phone

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

D/SMACK﹕ RECV (0): 2656202@jiazhangquan.im.etiantian.net/phone

D/SMACK﹕ RECV (0):

D/SMACK﹕ RECV (0):

if use reconnectionManager.enableAutomaticReconnection() Log:

D/SMACK﹕ SENT (0): <stream:stream xmlns=‘jabber:client’ to=‘jiazhangquan.im.etiantian.net’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’ from=‘2656202@jiazhangquan.im.etiantian.net’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): <?xml version='1.0'?><stream:stream xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ from=‘jiazhangquan.im.etiantian.net’ id=‘8571f820-68c4-42eb-861d-dea6610087ee’ version=‘1.0’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): stream:featuresPLAINANONYMOUSzlib</stream:features>

D/SMACK﹕ XMPPConnection connected (0)

D/SMACK﹕ SENT (0): ADI2NTYyMDIAMzgwZGU1MzQzODkyMjgwYTEyNzRkYjgyMDJkY2FmMDA=</aut h>

D/SMACK﹕ RECV (0):

D/SMACK﹕ SENT (0): <stream:stream xmlns=‘jabber:client’ to=‘jiazhangquan.im.etiantian.net’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’ from=‘2656202@jiazhangquan.im.etiantian.net’ id=‘8571f820-68c4-42eb-861d-dea6610087ee’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): <?xml version='1.0'?><stream:stream xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ from=‘jiazhangquan.im.etiantian.net’ id=‘8571f820-68c4-42eb-861d-dea6610087ee’ version=‘1.0’ xml:lang=‘en’>

D/SMACK﹕ RECV (0): stream:featureszlib</stream:features>

D/SMACK﹕ SENT (0): phone

D/SMACK﹕ RECV (0): 2656202@jiazhangquan.im.etiantian.net/phone

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ User logged (0): 2656202@jiazhangquan.im.etiantian.net:5222/phone

D/SMACK﹕ XMPPConnection authenticated (0)

D/SMACK﹕ SENT (0):

D/SMACK﹕ XMPPConnection reconnected (0)

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0): phone

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ SENT (0):

D/SMACK﹕ RECV (0):

D/SMACK﹕ RECV (0): 2656202@jiazhangquan.im.etiantian.net/phone<presence id=“aY8oX-10” xmlns=“jabber:client” from="2656202@jiazhangquan.im.etiantian.net/phone" to="2656202@jiazhangqu

D/SMACK﹕ RECV (0): an.im.etiantian.net">

why doesn’t send ?

please help

why doesn’t send ?

I meant you should attach a Java/JVM/Android debugger to your running (JVM/dalvik/ART) process.

I am also having the same issue on android using the released version of Smack 4.1. My server is Tigase 5.2.2. In addition to this, on successful connection & login, I try to enable the stream using the following method,

private void enableStream(XMPPTCPConnection connection){

boolean isStreamAvailable = connection.isSmAvailable(); //Returns true

XMPPTCPConnection.setUseStreamManagementDefault(true);

connection.setUseStreamManagement(true);

connection.setUseStreamManagementResumption(true);

XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);

boolean isStreamSet = connection.isSmEnabled(); //This returns false

}

After this when my android client first disconnects from the server & reconnects back to the server(using ReconnectionManager.enableAutomaticReconnection()), I see the following in logcat,

04-24 07:18:58.472: D/SMACK(20076): SENT (0):

04-24 07:18:58.492: D/SMACK(20076): RECV (0):

Does anyone know, why is this not happening after connecting & logging in the first time ? Assuming that it is due to some logic in my app, when stream gets enabled after the first disconnect/reconnect & when I disconnect the app the second time & reconnect it <resume xmlns=‘urn:xmpp:sm:3’ … /> is not being sent from the app side to server. As a result, no messages are being received by the app while it was disconnected.

Please help.

As per the recent suggestion which I didn’t see until I posted my reply, I am attaching debugger to my android app & am continuously watching logcat output which doesn’t show <resume …> being sent. Is there a higher logging level which could be set to find out what is happening ?

Can you provide a demo about SMACK-333 ?