Summary:ASTERISK-07634: [branch] XCON+BFCP - Centralized Conferencing Specs and Binary Floor Control Protocol
Reporter:Alfonso Buono (abuono)Labels:
Date Opened:2006-08-30 09:10:09Date Closed:2008-01-10 18:42:24.000-0600
Versions:Frequency of
Environment:Attachments:( 0) xcon_bfcp_patch-042307.diff
( 1) xcon_bfcp_patch-base64.diff
Description:1. Scheduler to handle Conference Control features
2. Binary Floor Control protocol to handle Conference Moderation in order to Grant/Revoke Media (Floor) to a specific user.
3. Modified chan_sip to include BFCP in SDP
4. Switching Video based on BFCP
5. Configuration files.

All the new features can be applied using "C" flag.


patch -p1 -u < patch-asterisk_rev41044.diff

For any other more detailed description follow this links:

Comments:By: Alfonso Buono (abuono) 2006-09-29 08:04:05

File patch_asterisk_28-9-06.diff.tar.gz adds the following feature to the application:

- Blueprints (Conferences Templates)

Patch brings all the previuos changes.

By: Serge Vecher (serge-v) 2006-09-29 12:29:21

go ahead and post the patches in non-compressed form for the ease of review ...

By: Olle Johansson (oej) 2006-10-31 05:04:55.000-0600

Please check the coding guidelines - no comments with "//" and we would really like a bit more comments that explains each function in Doxygen format.

By: Russell Bryant (russell) 2006-10-31 11:44:15.000-0600

I have created a branch in subversion for this code to ease further testing and review.  The branch will be automatically updated with changes from the trunk so that you don't have to worry about keeping the patch up to date.

However, to get this going, the patch will have to be updated to the trunk one last time.  It did not apply for me.

The branch is located here:

svn co http://svn.digium.com/svn/asterisk/team/russell/xcon_bfcp

By: Alfonso Buono (abuono) 2006-11-03 07:56:14.000-0600

The file patch_xconbfcp_branch_rev46875.diff was:

- Updated to general revision 46875
- For the chan_sip revision 4670
- For the meetme revision 46339

We Added more doxygen compliant comments.

By: Russell Bryant (russell) 2006-11-06 12:28:30.000-0600

The patch is now integrated into the branch in subversion.

If any further changes need to be submitted, it would be easiest to make the changes directly to the code that is in the branch.  Then, you can submit the changes in the format "svn diff > mychanges.diff".

By: Anthony LaMantia (alamantia) 2007-01-03 19:43:21.000-0600

what is the status on all of this?

By: Russell Bryant (russell) 2007-01-03 19:52:56.000-0600

The current code is sitting in a branch, but it needs testing and code review ...

By: Alfonso Buono (abuono) 2007-01-05 03:34:06.000-0600

Since we cannot directly apply the patch with "svn diff" because we also added several files, we sumbit a brand new .diff which has to be applied to existing XCON-BFCP branch.
These new files are:

- configs/xcon.conf
- configs/dcon.conf
- apps/xcon_bfcp/bfcp_base64.h
- apps/xcon_bfcp/bfcp_base64.c
- apps/xcon_bfcp/bfcp_gw.c
- apps/xcon_bfcp/bfcp_gw.h
- apps/xcon_bfcp/xcon_scheduler.c
- apps/xcon_bfcp/xcon_scheduler.h

By: Russell Bryant (russell) 2007-01-19 13:41:07.000-0600

The branch has been moved to:


By: Lorenzo Miniero (lminiero) 2007-01-29 04:46:16.000-0600

Hi Russell,
I noticed you applied the latest patch on the branch, but you forgot to create the new files before applying it. This causes the branch not to compile, because of these missing files. Could you fix this?
Thanks a lot in advance, best regards,

By: Russell Bryant (russell) 2007-01-29 13:08:40.000-0600

Oops!  The missing files have been added.

I see that you added some base64 routines.  It would be best if this code took advantage of as much of the Asterisk API as possible.  Two things that I have seen that need to use the Asterisk API are base64 encoding and decoding, as well as linked list handling.  There may be more, but I just haven't looked at this closely ...

By: Lorenzo Miniero (lminiero) 2007-01-30 03:27:43.000-0600

You're right, there are base64 encoding/decoding methods in utils.c, I was not aware of this. We'll update the code so that it uses them instead of the new ones we added. About Asterisk linked lists, we used them for the ad-hoc lists in app_meetme but not yet for the included files, we'll fix this as well.
I'll also have a closer look to other functionality Asterisk may already provide and we replicate.

By: Russell Bryant (russell) 2007-02-12 10:23:28.000-0600

When updating the branch this morning to resolve some conflicts, I noticed that there are a good number of compilation warnings when building this code.

Please run ./configure --enable-dev-mode, and then build the code.  This, among other things, will turn on -Werror, and will treat warnings as errors so that you can get them cleaned up.  Thanks!

By: Lorenzo Miniero (lminiero) 2007-02-12 10:40:07.000-0600

Hi Russell,

yes, we're aware of the many warnings. They are mostly (90% circa) related to the behaviour layer of the BFCP protocol, which is currently subject to an almost whole rewrite exactly due to this reason.
The next patch will fix all this and more.


By: Lorenzo Miniero (lminiero) 2007-02-27 09:42:23.000-0600

[EDIT] Since the latest patch we posted last week has not been applied yet, we replace it with a new patch (xcon_bfcp_patch-030607.diff) to be used in place of the previous one, since it contains all its improvements and more. In addition to it, this patch has all the custom linked lists implementations replaced by the Asterisk macros.
*** NOTE *** We tried to have our module use the Asterisk routines for Base64 as well, but it looks they are corrupt, since they gave wrong results in some cases: e.g. 16 bytes of data were encoded in a 20 bytes string, which was then decoded to 15 bytes of data hence corrupting the data. Is it a known bug in the routines? Should I report it somewhere? *** NOTE ***
The other updates are listed in the following lines, taken from the text describing the previous patch. [/EDIT]

Hi all,

we just prepared a new patch (xcon_bfcp_patch-030607.diff) for the xcon_bfcp branch.
It is quite larger than the previous ones since it features a lot of enhancements, fixes, and partly rewrites:

1) support for the distribution of XCON conferences has been added, by means of a project, DCON, we're carrying on together with CONFIANCE; checkout the project page ( http://dcon.sf.net/ ) for more details;
2) the whole BFCP stack (both message processing and behaviour layers) has been refined and fixed;
3) support for BFCP over TLS (as stated in RFC4582) has been added as well; however, it has to be enabed and configured in xcon.conf, since by default the BFCP server will keep on exploiting simple TCP connections for BFCP communication;
4) videoswitching has been made available for basic MeetMe conferences as well, and not only for XCON/DCON conferences; since in MeetMe conferences the video source switching cannot be accomplished by means of the BFCP, it can currently be realized only using a new dedicated console command, 'videoswitch'; checkout our mail on the Asterisk-video mailing list for more details upon the feature ( http://lists.digium.com/pipermail/asterisk-video/2007-January/000389.html ).

Besides, all the warnings that Russell noticed should disappear applying this patch. At least, no warnings appear using our compiler (gcc version 4.1.1 20070105 (Red Hat 4.1.1-51)) on a Fedora Core 6 machine. Let us know if problems occur compiling on other machines and/or using different compilers.

To conclude, an existing file from the old version has been removed. This means that, before applying the patch to the branch, the old file (apps/xcon_bfcp/threads.h) should be removed, and its new filename (apps/xcon_bfcp/bfcp_threads.h) be created. It is a file needed by the BFCP stack to opportunely wrap to the right pthread methods, since Asterisk redefines some of the pthread methods and doesn't allow direct access to pthreads.

By: Serge Vecher (serge-v) 2007-03-06 09:33:11.000-0600

lminiero: please file the bugs with internal Asterisk base64 functions in a separate report, so that can be addressed.

By: Lorenzo Miniero (lminiero) 2007-03-06 10:31:52.000-0600

Base64 bug reported in a new issue: http://bugs.digium.com/view.php?id=9215

By: Russell Bryant (russell) 2007-03-06 16:12:08.000-0600

I have applied your latest patch to the branch.  I have also resolved some merge conflicts with some things that changed in trunk and re-enabled auto-merging of changes from the trunk.

By: Lorenzo Miniero (lminiero) 2007-03-07 11:03:53.000-0600

The attached small patch (xcon_bfcp_patch-base64.diff) replaces the custom Base64 functionality with the Asterisk Base64 encoding/decoding routines from utils.c

By: Lorenzo Miniero (lminiero) 2007-04-23 09:29:27

Hi all,
we just provided a new patch (xcon_bfcp_patch-042307.diff) for the branch.

[NOTE] Since the latest patch (the one regarding base64 routines) has not been applied yet, this patch contains those modifications too.[/NOTE]

Apart from some bugfixes and corrections (e.g. all calloc have been replaced with ast_calloc, and Asterisk base64 routines are exploited instead of the external ones), there are two notable updates:

1) all the BFCP library files have been removed, since we separated it in an external library which we added to the app_meetme dependencies (for menuselect). All files starting with bfcp_* are to be removed from SVN, _except_:

   * bfcp_sdp.c/h
   * bfcp_base.c/h
   * bfcp_gw.c/h
   * bfcp_threads.h

which still provide needed functionality for BFCP in Asterisk.

2) we added support for the Message Session Relay Protocol (MSRP) to provide chatroom functionality in XCON conferences; we modified chan_sip to enable COMEDIA-based SIP/SDP negotiation of the MSRP connections between clients ("endpoints") and the conference rooms ("switches"). The MSRP library, as BFCP, is external, so we added it to the app_meetme dependencies.

Since we added the BFCP and MSRP libraries we wrote as external dependencies, we needed to add them to the Asterisk autoconf scripts to have them correctly handled by menuselect. To do so, we modified the following files:

   * configure.ac
   * makeopts.in
   * build_tools/menuselect-deps.in

The configure scripts, however, have not been "bootstraped" yet after the changes, since we use the non-compliant autoconf 2.59 which gives errors. This means that the bootstrap script will have to be manually launched after the patch has been applied.

Both the external libraries are available on sourceforge:

   * http://sourceforge.net/projects/libbfcp (bfcpmsg-06 and bfcpsrv-06 will be needed);
   * http://sourceforge.net/projects/libmsrp (msrp-02 will be needed).

By: Ronald Chan (loloski) 2007-05-14 07:50:51


I really want to test this, do you have the latest patch against SVN Trunk ? as far as i can say this branch doesn't seems updated.

r62808 | automerge | 2007-05-03 08:03:04 +0800 (Thu, 03 May 2007) | 1 line

automerge cancel
r62751 | automerge | 2007-05-03 05:03:01 +0800 (Thu, 03 May 2007) | 1 line

automerge commit
r62703 | automerge | 2007-05-03 02:03:17 +0800 (Thu, 03 May 2007) | 1 line

automerge commit
r62677 | automerge | 2007-05-02 23:59:45 +0800 (Wed, 02 May 2007) | 1 line

automerge commit
r62659 | automerge | 2007-05-02 20:59:45 +0800 (Wed, 02 May 2007) | 1 line

automerge commit
r62643 | automerge | 2007-05-02 17:59:52 +0800 (Wed, 02 May 2007) | 1 line

Thank you!!


By: Lorenzo Miniero (lminiero) 2007-05-14 08:06:42

Hi Ronald,
you can get an up-to-date version on our project page:


You'll find a patch to apply on the 1.4.3 version of Asterisk, and a patch for the MiniSip softphone we use to test the functionality we provided.

In case you encounter any problem in installing the whole thing, fell free to drop me a mail (lorenzo.miniero AT unina.it).


By: Ronald Chan (loloski) 2007-05-14 08:20:13


Thanks for fast reply, i will report my progress here, as soon as i can. This looks very promising so the latest patch was meant on SVN 1.4.3 Release right? ok i will test this and i'll let you know how is it going.



By: Olle Johansson (oej) 2007-12-06 05:17:28.000-0600

Which clients can I use to test this functionality?

By: Olle Johansson (oej) 2007-12-06 05:19:44.000-0600

You make meetme depend on msrp and bfcp libraries. This is no good, it has to be optional.

By: Olle Johansson (oej) 2007-12-06 05:24:18.000-0600

We might want to take this in steps and start with adding MSRP support to chan_sip and Asterisk, then look into the rests.

What's the license of the libraries you use here?

By: Olle Johansson (oej) 2007-12-06 08:15:09.000-0600

Mailed the confiance mailing list, asking for license clarification on the libraries.

By: Russell Bryant (russell) 2008-01-10 18:42:22.000-0600

I checked out the libraries and they are licensed under the GPL.  I was not aware of this before.  Due to licensing restrictions, we can not include this code in the official Asterisk tree.

Please contact me at russell@digium.com if you have any questions or would like to discuss this further.