I write my own jabber client. The stream flow is described as below. However, after SASL authentication success (on step 2 & 3), there is no "compression" feature. Based on XEP-0170, the recommended of order stream negotiation is
1.TLS
2.SASL
3.Stream compression
4.Resource binding
The stream compresssion should be supported after SASL negotiation. I find similar issue on
About your suggestion on my previous discussion (ejabberd 2.1.6 with postgres 9), I will try to give you feedback as soon as possible. Thanks for your kind response.
1. Open stream
<stream:features>
<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'>
<compression xmlns='http://jabber.org/features/compress'>
<method>zlib
<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
<mechanism>DIGEST-MD5
<mechanism>PLAIN
<c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='4tUF5PLCsYGpwAj5xfQ9p+zIzTU='>
<register xmlns='http://jabber.org/features/iq-register'>
2. Using SASL
<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">xxxx
3. Authentication success
<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
4. Open stream again
<stream:stream to="natalius-vaio" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" >
5. Features List after SASL
<stream:features>
<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
<session xmlns='urn:ietf:params:xml:ns:xmpp-session'>
<c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='4tUF5PLCsYGpwAj5xfQ9p+zIzTU='>
<register xmlns='http://jabber.org/features/iq-register'>
</stream:features>
6. Start to resource binding
<iq type="set" id="bind">bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><resource>Chat