On 2013-04-14 21:10, Christian Lauinger wrote:
dpkg -l asterisk*
ii  asterisk                                 1:1.8.13.1~dfsg-3         amd64    
Open Source Private Branch Exchange (PBX)
ii  asterisk-chan-capi                       1.1.6-1                   amd64    
Common ISDN API 2.0 implementation for Asterisk

Hi Christian,

It seems you are using asterisk-chan-capi which is not even in wheezy...

I had the same problem as you: Because I am still running squeeze, I had to use the asterisk version available from squeeze-backports (still at 1:1.8.13.1~dfsg-1~bpo60+1). In order to use chan_capi with it, I backported asterisk-chan-capi from unstable (1.1.6-1) in my private repository. Then asterisk 1:1.8.13.1~dfsg-2 became available and I backported that too and after installation: boom, segfault when loading chan_capi. :(

The problem now is that the fix in asterisk for CVE-2012-5977 introduced an incompatible change in the module API. All stock asterisk modules were of course updated, but the out-of-tree modules like chan_capi were not. Because of bug #694793 (or, more precisely, #694805) the package management system doesn't know about this incompatibility.

What you need is a new (yet unreleased) version of chan_capi with a (rather simple) fix taken from the chan_capi svn repository (see attached patch). If you're really desperate, you can try to build the package yourself from my backported source package at http://www.bbg.xssoft.de/debian/pool/main/asterisk/asterisk-chan-capi_1.1.6-1~bpo60+2.dsc This is just my private repository, so it only has binary builds for squeeze on i386.

--
So long,
Christian.
Description: Adapt to new cache argument for ast_devstate_changed()

Index: chan_capi_devstate.c
===================================================================
--- a/chan_capi_devstate.c      (revision 957)
+++ b/chan_capi_devstate.c      (working copy)
@@ -113,7 +113,11 @@
 {
        if (capiChatProviderRegistered != 0) {
 #ifdef CC_AST_HAS_VERSION_1_6
-               ast_devstate_changed((inUse != 0) ? AST_DEVICE_INUSE : 
AST_DEVICE_NOT_INUSE, "capichat:%s", roomName);
+               ast_devstate_changed((inUse != 0) ? AST_DEVICE_INUSE : 
AST_DEVICE_NOT_INUSE,
+#ifdef CC_AST_HAS_AST_DEVSTATE_CACHE
+                       AST_DEVSTATE_CACHABLE,
+#endif
+                       "capichat:%s", roomName);
 #else
                ast_device_state_changed("capichat:%s", roomName);
 #endif
@@ -130,7 +134,11 @@
                        ((capiController->nfreebchannels >= 
capiController->nfreebchannelsHardThr) &&
                                (capiController->nfreebchannels - 
channelsChanged < capiController->nfreebchannelsHardThr))) {
 #ifdef CC_AST_HAS_VERSION_1_6
-               ast_devstate_changed(AST_DEVICE_UNKNOWN, 
CC_MESSAGE_BIGNAME"/I%d/congestion", capiController->controller);
+               ast_devstate_changed(AST_DEVICE_UNKNOWN,
+#ifdef CC_AST_HAS_AST_DEVSTATE_CACHE
+                       AST_DEVSTATE_CACHABLE,
+#endif
+                       CC_MESSAGE_BIGNAME"/I%d/congestion", 
capiController->controller);
 #else
                ast_device_state_changed (CC_MESSAGE_BIGNAME"/I%d/congestion", 
capiController->controller);
 #endif
Index: create_config.sh
===================================================================
--- a/create_config.sh  (revision 957)
+++ b/create_config.sh  (working copy)
@@ -205,6 +205,13 @@
                echo "#undef CC_AST_HAS_AST_DEVSTATE2STR" >>$CONFIGFILE
                echo " * obsolete devstate2str function"
        fi
+       if grep -q "ast_devstate_changed.*ast_devstate_cache" 
$INCLUDEDIR/devicestate.h; then
+               echo "#define CC_AST_HAS_AST_DEVSTATE_CACHE" >>$CONFIGFILE
+               echo " * found ast_devstate_cache in ast_devstate_changed 
function"
+       else
+               echo "#undef CC_AST_HAS_AST_DEVSTATE_CACHE" >>$CONFIGFILE
+               echo " * no ast_devstate_cache in ast_devstate_changed function"
+       fi
        if grep -q "ast_request.*requestor" $INCLUDEDIR/channel.h; then
                echo "#define CC_AST_HAS_REQUEST_REQUESTOR" >>$CONFIGFILE
                echo " * found requestor in ast_request"
Index: CHANGES
===================================================================
--- a/CHANGES   (revision 957)
+++ b/CHANGES   (working copy)
@@ -1,6 +1,11 @@
 CHANGES
 =======
 
+HEAD
+------------------
+- ast_devstate_changed() changes with new cache argument
+
+
 chan_capi-1.1.6
 ------------------
 - Asterisk 1.8 changes

Reply via email to