Shout out to JRTPLib and Final Change log

The Jingle VOIP functions in Monal use JRTPlib by Jori Liesenborgs for the RTP communication. VOIP wouldn’t have been possible without it.  Thanks Jori for making this fantastic library free.

I am now testing Monal on all of my iOS devices. This is the final change log for 2.0.7 . Nothing will be added until 2.0.8

2.0.7 changelog

This is a major update that adds many features and fixes bugs.

1. Added XMPP jingle VOIP features. (XEP-0166)
2. Remains open in the background until you logout or lose connection
3. Many major bugfixes to improve stability and speed
4. Several UI enhancements/cosmetic changes
5. Removed AIM support due to AOL turning off supported servers
6. Added more retina graphics
7. Added tap gesture to dismiss keyboard
8. Added improved 2 pane iPad view in portrait mode
9. Properly times out when connection fails
10. Closing an active chat marks the messages as read
11. Properly able to handle resource ids and other users logged into multiple machines
12. Fixed digest-md5
13. Fixed Facebook login


How VOIP works in 2.0.7

2.0.7  is feature complete and I am testing for bugs. I hope to have it submitted to Apple in a week. This will be the first release with XMPP jingle VOIP enabled.   The voice calling is still not perfect so I have left the Beta label on the button.  At the moment it does not use STUN or do any NAT traversal. If both people are on the same network or not behind NAT it will work fine. I hope to fix this in 2.0.8.

The call button will only show up if the other client advertises XMPP jingle audio support.

2.0.7 and beyond

A quick peek behind the curtain. As  many people are curious about the progress of  the next release, this is my current task list.  The critical features are absolutely needed for 2.0.7 release. The nice to have ones might get added. Some are pretty low hanging fruit.  At the moment it looks like we are set for a late August/ early September release for 2.0.7 followed by 2.0.8 about a month later with much of the features that are in nice to have.


facebook account settings needs to prepopulate (regression)
facebook contacts dont load.
Replace mutable array with better circular buffer
own ver string is generated from algorithm (maybe generate and store  in app rather than on each run)
pass presence obj to DB layer functions
store ver string  in DB table as well
add ver string look up table
link ver string to  XMPP disco caps
accept legacy caps function
only show call button in the buddy info screen if there is an audio cap (ver or legacy)
link call screen to jingle
create screen to pick resource with jingle call
ipad version of call screen
tapping on a notificaiton message takes you to the conversation

Nice  to have  in 2.07 but may get pushed in to 2.08: 

fix  server obj to store server caps, various servers (proxy, search. MUC etc)
message Carbons (discover  server cap and implement)
buddy list buttons should be in will appear  function and not did appear (reduce flashing)
SSL oldstyle  on any port
when there is a login failure it should say specifically what caused it
offer to reconnect in 5 seconds
move MUC into better object/Object array
MUC session config screen
MUC should remember it is open
Search contacts
Sort contacts by status
Group contacts by group


2.0.7 is coming

2.0.7 changelog so far.
This is a major update that adds many features and fixes bugs.
1. Added XMPP jingle VOIP features.
2. Remains open in the background until you logout
3. major bugfixes to improve stability
4. several UI enhancements/cosmetic changes
5. Removed AIM support due to AOL turning off servers
6. added more retina graphics
7. added tap gesture to dismiss keyboard
4. added improved 2 pane iPad view in portrait mode

Let there be VOIP!

This is easily  most complicated things I’ve ever written since college.   Core audio on ios kicked my butt and took me days  to figure it out and a networking error with RTP drove me nuts for a few more days.   I’ve never worked with RTP or audio before, so the whole exercise was highly educational.

Monal 2.07 will support XMPP jingle VOIP using XMPP jingle.  It will remain open in the background and will not close after 10 min and you can also make  calls  to people on google talk!

Jingles and Tribulations

As many of you may know I have been working on adding XMPP Jingle to the next release. The last two nights ive been up all night trying to get a RTP packet to go from one host to another. Everything looked ok but for some reason VOIP wouldnt work.  I’ve been sniffing my network looking for packets  and kept gettin 100% loss.  Host is sending out but nothing comes in the other end.   I just  noticed what was wrong.    Look at this packet capture log. Notice something odd about the second IP address? It should be

Who ever runs the 45.x.x.x network has probably blacklisted me for blasting UDP packets at them all the time in the wee hours of the night
This i why you should ALWAYS make sure that when two computers talk the bye order is network byte order and not host byte order!