Nevertheless, the SMACK log should provide you enough information to acknowledge the current behaviour is incorrect.
No it appears to be correct to me (besides the thing that the listeners for the stanza ID are not called at all): The first ack we receive from the server is received after you send the message. And if there is no ack received, then there is nothing to acknowledge.
You may want to install a "request ack predicate" that suits your needs: https://www.igniterealtime.org/builds/smack/dailybuilds/javadoc/org/jivesoftware /smack/tcp/XMPPTCPConnection.html#addReq…
So you are still invited to debug why the stanza id acked listeners are not called, as I see no reason looking at the relevant code why they should *not* be called (still can't rule out that I missed something).