Friday, September 9, 2016

Version 0.7.2 Released

A new bugfix version has just been released to Maven Central with the following issues resolved:
  • Fix reconnection issue, when using multiple connection methods per session.
  • Improve and fix stanza acknowledging and Stream Management
    • Add Delayed Delivery (XEP-0203) extension to stanzas, which are resent automatically later (when reconnected again)
    • Always resent all unacknowledged stanzas after login, not only after stream resumption.
    • Highlight StreamManagement’s request / answer pairs in VisualDebugger.
    • Update XEP-0198 Stream Management to version 1.5 (respect the ‘h’ attribute in the failed element)
  • Wait for the roster response before sending initial presence during login, to prevent receiving presence information from yet unknown contacts.
  • Make sure asynchronous method calls do not block (affected only few methods for avatars and entity capabilities)
  • Use the hostname instead of the domain for SASL clients (i.e. use the Sasl.createSaslClient API correctly as per the documentation, may affect DIGEST-MD5 authentication).
  • Call SaslClient.dispose() when SASL authentication has completed.
  • Include the requesting IQ in NoResponseException, when doing IQ queries.
  • XEP-0184: Add the sender of a receipt to the MessageDeliveryEvent.
  • Allow event consumption for outbound stanzas, which prevents the stanza to be sent.
  • Make stream feature negotiation more stable.
  • Minor graphical fixes in VisualDebugger.
  • Add API to include the hash and mime type in File Transfer offers.
  • Add API to create a chat session with a thread id.
  • Immediately complete (IQ-)queries if sending failed and don’t wait on the timeout.

6 comments:

  1. great job. you should add the binaries to https://bitbucket.org/sco0ter/babbler/downloads as well

    ReplyDelete
  2. Hi man, I'm a newbie in xmpp, and i was looking into smack, but this looks like a great start.

    I have one question and proposal. As i saw it, it looks like that you can easily add another XEP extension directly in android code. I want to add support for MAM (XEP 313 http://xmpp.org/extensions/xep-0313.html). Can you confirm it? Or do you maybe working on this (some message archive)?!

    Proposal is to maybe document a little better how one can add some XEP extensions so people can actively be involved.

    Best regards,
    Jovan

    ReplyDelete
    Replies
    1. Hi Jovan,

      the bad news first: This library is not designed to run on Android. It uses JDK 8 classes, which are not available on Android (like java.time, SASL, javax.xml.bind, ...)
      Not sure, if it can theoretically be made running on Android, but I guess no.

      Documentation for custom extensions is here:
      http://sco0ter.bitbucket.org/babbler/customextensions.html

      Of course one could still improve it.

      Indeed I've started working on XEP-0313. There's a branch (xep0313) on the git repository.

      -- Christian

      Delete
    2. Hi Cristian,

      You are totally right. I forgot about java 8. Android introduced some parts of java8, but it works only on Marshmallow and Nougat versions.

      What do you think to backport java 8 bytecode to java 6/7?! For example to use this: https://github.com/orfjackal/retrolambda
      Can it maybe work? I really liked what you did. :)

      Keep up with excellent work.

      Best regards,
      Jovan

      Delete
    3. The problem is not the Java 8 language part (like Lambda expressions), but the JDK classes, which are missing on Android.
      I have no experience with Android development at all, but from what I know, at least the following classes are missing on Android:

      javax.security.sasl.SaslClient (actually the whole SASL API)
      javax.xml.bind.* (JAXB)
      java.util.concurrent.CompletableFuture (only new since Android N)
      java.time.* (new DateTime API)

      I can't tell how hard it is to make JAXB and the other classes run on Android. It may be possible as per some articles, but I never tried it (no experience).

      Delete
    4. Thanks for info. I will see if there is some possibility to run this on android. If i have some luck, i will contact you.

      Delete