]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_dahdi/sig_pri: Prevent unnecessary PROGRESS events when overlap dialing is enabled.
authorRichard Mudgett <rmudgett@digium.com>
Tue, 13 May 2014 00:48:49 +0000 (00:48 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 13 May 2014 00:48:49 +0000 (00:48 +0000)
When overlap dialing is enabled, the lack of inband audio available
information in the SETUP_ACKNOWLEDGE events causes an interoperability
problem with SIP.  sig_pri doesn't know if there is dialtone present when
a SETUP_ACKNOWLEDGE is received so it assumes it is there and posts an
AST_CONTROL_PROGRESS frame.  The SIP channel driver then sends out a 183
Session Progress and blocks the desired 180 Ringing message when the
ALERTING message comes in.

* Made the configure script detect if the installed version of libpri
supports the SETUP_ACKNOWLEDGE enhancements.

* Using the new API, made generate an AST_CONTROL_PROGRESS frame on an
incoming SETUP_ACKNOWLEDGE message when the message indicates inband audio
is present instead of assuming that dialtone is present.

* Using the new API, made SETUP_ACKNOWLEDGE send out an inband audio
available indication only if dialtone is expected.  The change also makes
the fallback behaviour of sending the PROGRESS message better by sending
it only if dialtone is expected.

* Changed receiving a PROCEEDING message to not generate an
AST_CONTROL_PROGRESS frame if the progress indication ie indicates
non-end-to-end-ISDN.  This helps interoperability with SIP.

* Changed sending a PROCEEDING message in response to an
AST_CONTROL_PROCEEDING frame to not indicate inband audio available.  It
was silly to do so anyway because the channel driver doesn't know if
inband audio is even available.  This helps interoperability with SIP.

This patch and a corresponding change in libpri work together to allow
Asterisk to control the inband audio available progress indication ie on
the SETUP_ACKNOWLEDGE message when dialtone is present.

AST-1338 #close
Reported by: Tyler Stewart

Review: https://reviewboard.asterisk.org/r/3521/
........

Merged revisions 413714 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 413765 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/11.6@413773 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/sig_pri.c
configure
configure.ac
include/asterisk/autoconfig.h.in

index 01ceffce9a4b1342a2c92d0aeaa3420485b92d23..dce5fe0361481c248d93e664b967e63506287b25 100644 (file)
@@ -2019,10 +2019,10 @@ static void *pri_ss_thread(void *data)
                /* Start the real PBX */
                ast_channel_exten_set(chan, exten);
                sig_pri_dsp_reset_and_flush_digits(p);
-#if defined(ISSUE_16789)
+#if defined(JIRA_ASTERISK_15594)
                /*
-                * Conditionaled out this code to effectively revert the Mantis
-                * issue 16789 change.  It breaks overlap dialing through
+                * Conditionaled out this code to effectively revert the JIRA
+                * ASTERISK-15594 change.  It breaks overlap dialing through
                 * Asterisk.  There is not enough information available at this
                 * point to know if dialing is complete.  The
                 * ast_exists_extension(), ast_matchmore_extension(), and
@@ -2045,7 +2045,7 @@ static void *pri_ss_thread(void *data)
                        }
                        sig_pri_unlock_private(p);
                }
-#endif /* defined(ISSUE_16789) */
+#endif /* defined(JIRA_ASTERISK_15594) */
 
                sig_pri_set_echocanceller(p, 1);
                ast_setstate(chan, AST_STATE_RING);
@@ -6318,6 +6318,9 @@ static void *pri_dchannel(void *vpri)
                                /* Make sure extension exists (or in overlap dial mode, can exist) */
                                if (((pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING) && ast_canmatch_extension(NULL, pri->pvts[chanpos]->context, pri->pvts[chanpos]->exten, 1, pri->pvts[chanpos]->cid_num)) ||
                                        ast_exists_extension(NULL, pri->pvts[chanpos]->context, pri->pvts[chanpos]->exten, 1, pri->pvts[chanpos]->cid_num)) {
+                                       int could_match_more;
+                                       int need_dialtone;
+
                                        /* Select audio companding mode. */
                                        switch (e->ring.layer1) {
                                        case PRI_LAYER_1_ALAW:
@@ -6332,6 +6335,23 @@ static void *pri_dchannel(void *vpri)
                                                break;
                                        }
 
+                                       could_match_more = !e->ring.complete
+                                               && (pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING)
+                                               && ast_matchmore_extension(NULL, pri->pvts[chanpos]->context,
+                                                       pri->pvts[chanpos]->exten, 1, pri->pvts[chanpos]->cid_num);
+
+                                       need_dialtone = could_match_more
+                                               /*
+                                                * Must explicitly check the digital capability this
+                                                * way instead of checking the pvt->digital flag
+                                                * because the flag hasn't been set yet.
+                                                */
+                                               && !(e->ring.ctype & AST_TRANS_CAP_DIGITAL)
+                                               && !pri->pvts[chanpos]->no_b_channel
+                                               && (!strlen(pri->pvts[chanpos]->exten)
+                                                       || ast_ignore_pattern(pri->pvts[chanpos]->context,
+                                                               pri->pvts[chanpos]->exten));
+
                                        if (e->ring.complete || !(pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING)) {
                                                /* Just announce proceeding */
                                                pri->pvts[chanpos]->call_level = SIG_PRI_CALL_LEVEL_PROCEEDING;
@@ -6341,13 +6361,17 @@ static void *pri_dchannel(void *vpri)
                                                pri_answer(pri->pri, e->ring.call, PVT_TO_CHANNEL(pri->pvts[chanpos]), 1);
                                        } else {
                                                pri->pvts[chanpos]->call_level = SIG_PRI_CALL_LEVEL_OVERLAP;
-                                               pri_need_more_info(pri->pri, e->ring.call, PVT_TO_CHANNEL(pri->pvts[chanpos]), 1);
+#if defined(HAVE_PRI_SETUP_ACK_INBAND)
+                                               pri_setup_ack(pri->pri, e->ring.call,
+                                                       PVT_TO_CHANNEL(pri->pvts[chanpos]), 1, need_dialtone);
+#else  /* !defined(HAVE_PRI_SETUP_ACK_INBAND) */
+                                               pri_need_more_info(pri->pri, e->ring.call,
+                                                       PVT_TO_CHANNEL(pri->pvts[chanpos]), 1);
+#endif /* !defined(HAVE_PRI_SETUP_ACK_INBAND) */
                                        }
 
                                        /* Start PBX */
-                                       if (!e->ring.complete
-                                               && (pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING)
-                                               && ast_matchmore_extension(NULL, pri->pvts[chanpos]->context, pri->pvts[chanpos]->exten, 1, pri->pvts[chanpos]->cid_num)) {
+                                       if (could_match_more) {
                                                /*
                                                 * Release the PRI lock while we create the channel so other
                                                 * threads can send D channel messages.  We must also release
@@ -6431,12 +6455,9 @@ static void *pri_dchannel(void *vpri)
                                                        sig_pri_handle_subcmds(pri, chanpos, e->e, e->ring.subcmds,
                                                                e->ring.call);
 
-                                                       if (!pri->pvts[chanpos]->digital
-                                                               && !pri->pvts[chanpos]->no_b_channel) {
-                                                               /*
-                                                                * Call has a channel.
-                                                                * Indicate that we are providing dialtone.
-                                                                */
+#if !defined(HAVE_PRI_SETUP_ACK_INBAND)
+                                                       if (need_dialtone) {
+                                                               /* Indicate that we are providing dialtone. */
                                                                pri->pvts[chanpos]->progress = 1;/* No need to send plain PROGRESS again. */
 #ifdef HAVE_PRI_PROG_W_CAUSE
                                                                pri_progress_with_cause(pri->pri, e->ring.call,
@@ -6446,6 +6467,7 @@ static void *pri_dchannel(void *vpri)
                                                                        PVT_TO_CHANNEL(pri->pvts[chanpos]), 1);
 #endif
                                                        }
+#endif /* !defined(HAVE_PRI_SETUP_ACK_INBAND) */
                                                }
                                                if (c && !ast_pthread_create_detached(&threadid, NULL, pri_ss_thread, pri->pvts[chanpos])) {
                                                        ast_verb(3, "Accepting overlap call from '%s' to '%s' on channel %d/%d, span %d\n",
@@ -6744,8 +6766,15 @@ static void *pri_dchannel(void *vpri)
                                if (!pri->pvts[chanpos]->progress
                                        && !pri->pvts[chanpos]->no_b_channel
 #ifdef PRI_PROGRESS_MASK
-                                       && (e->proceeding.progressmask
-                                               & (PRI_PROG_CALL_NOT_E2E_ISDN | PRI_PROG_INBAND_AVAILABLE))
+                                       /*
+                                        * We only care about PRI_PROG_INBAND_AVAILABLE to open the
+                                        * voice path.
+                                        *
+                                        * We explicitly DO NOT want to check PRI_PROG_CALL_NOT_E2E_ISDN
+                                        * because it will mess up ISDN to SIP interoperability for
+                                        * the ALERTING message.
+                                        */
+                                       && (e->proceeding.progressmask & PRI_PROG_INBAND_AVAILABLE)
 #else
                                        && e->proceeding.progress == 8
 #endif
@@ -6756,6 +6785,12 @@ static void *pri_dchannel(void *vpri)
                                        sig_pri_set_dialing(pri->pvts[chanpos], 0);
                                        sig_pri_open_media(pri->pvts[chanpos]);
                                } else if (pri->inband_on_proceeding) {
+                                       /*
+                                        * XXX This is to accomodate a broken switch that sends a
+                                        * PROCEEDING without any progress indication ie for
+                                        * inband audio.  This should be part of the conditional
+                                        * test above to bring the voice path up.
+                                        */
                                        sig_pri_set_dialing(pri->pvts[chanpos], 0);
                                }
                                sig_pri_unlock_private(pri->pvts[chanpos]);
@@ -7374,7 +7409,19 @@ static void *pri_dchannel(void *vpri)
                                if (!pri->pvts[chanpos]->progress
                                        && (pri->overlapdial & DAHDI_OVERLAPDIAL_OUTGOING)
                                        && !pri->pvts[chanpos]->digital
-                                       && !pri->pvts[chanpos]->no_b_channel) {
+                                       && !pri->pvts[chanpos]->no_b_channel
+#if defined(HAVE_PRI_SETUP_ACK_INBAND)
+                                       /*
+                                        * We only care about PRI_PROG_INBAND_AVAILABLE to open the
+                                        * voice path.
+                                        *
+                                        * We explicitly DO NOT want to check PRI_PROG_CALL_NOT_E2E_ISDN
+                                        * because it will mess up ISDN to SIP interoperability for
+                                        * the ALERTING message.
+                                        */
+                                       && (e->setup_ack.progressmask & PRI_PROG_INBAND_AVAILABLE)
+#endif /* defined(HAVE_PRI_SETUP_ACK_INBAND) */
+                                       ) {
                                        /*
                                         * Call has a channel.
                                         * Indicate for overlap dialing that dialtone may be present.
@@ -8235,11 +8282,7 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi
                        p->call_level = SIG_PRI_CALL_LEVEL_PROCEEDING;
                        if (p->pri && p->pri->pri) {
                                pri_grab(p, p->pri);
-                               pri_proceeding(p->pri->pri,p->call, PVT_TO_CHANNEL(p),
-                                       p->no_b_channel || p->digital ? 0 : 1);
-                               if (!p->no_b_channel && !p->digital) {
-                                       sig_pri_set_dialing(p, 0);
-                               }
+                               pri_proceeding(p->pri->pri,p->call, PVT_TO_CHANNEL(p), 0);
                                pri_rel(p->pri);
                        }
                }
index ef6194208917a1dc2cf80ae1d6d8871632f72ab5..27739a68a6ddddcfcb4b8c994bece011a9de3219 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Revision: 388769 .
+# From configure.ac Revision: 402382 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.68 for asterisk trunk.
 #
@@ -871,6 +871,10 @@ PBX_PRI_L2_PERSISTENCE
 PRI_L2_PERSISTENCE_DIR
 PRI_L2_PERSISTENCE_INCLUDE
 PRI_L2_PERSISTENCE_LIB
+PBX_PRI_SETUP_ACK_INBAND
+PRI_SETUP_ACK_INBAND_DIR
+PRI_SETUP_ACK_INBAND_INCLUDE
+PRI_SETUP_ACK_INBAND_LIB
 PBX_PRI
 PRI_DIR
 PRI_INCLUDE
@@ -9941,6 +9945,18 @@ fi
 
 
 
+PRI_SETUP_ACK_INBAND_DESCRIP="ISDN PRI progress inband ie in SETUP ACK"
+PRI_SETUP_ACK_INBAND_OPTION=pri
+PRI_SETUP_ACK_INBAND_DIR=${PRI_DIR}
+
+PBX_PRI_SETUP_ACK_INBAND=0
+
+
+
+
+
+
+
 PRI_L2_PERSISTENCE_DESCRIP="ISDN Layer 2 persistence option"
 PRI_L2_PERSISTENCE_OPTION=pri
 PRI_L2_PERSISTENCE_DIR=${PRI_DIR}
@@ -17057,6 +17073,7 @@ LIBS=${old_LIBS}
 
 
 
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
        if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
@@ -18263,6 +18280,7 @@ if test -n "$ILBC_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_ILBC_CFLAGS=`$PKG_CONFIG --cflags "libilbc" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -18279,6 +18297,7 @@ if test -n "$ILBC_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_ILBC_LIBS=`$PKG_CONFIG --libs "libilbc" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -18298,9 +18317,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               ILBC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libilbc" 2>&1`
+               ILBC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libilbc" 2>&1`
         else
-               ILBC_PKG_ERRORS=`$PKG_CONFIG --print-errors "libilbc" 2>&1`
+               ILBC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libilbc" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$ILBC_PKG_ERRORS" >&5
@@ -18368,6 +18387,7 @@ if test -n "$LIBEDIT_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBEDIT_CFLAGS=`$PKG_CONFIG --cflags "libedit" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -18384,6 +18404,7 @@ if test -n "$LIBEDIT_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBEDIT_LIBS=`$PKG_CONFIG --libs "libedit" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -18403,9 +18424,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libedit" 2>&1`
+               LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libedit" 2>&1`
         else
-               LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "libedit" 2>&1`
+               LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libedit" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBEDIT_PKG_ERRORS" >&5
 
 
 
+if test "x${PBX_PRI_SETUP_ACK_INBAND}" != "x1" -a "${USE_PRI_SETUP_ACK_INBAND}" != "no"; then
+   pbxlibdir=""
+   # if --with-PRI_SETUP_ACK_INBAND=DIR has been specified, use it.
+   if test "x${PRI_SETUP_ACK_INBAND_DIR}" != "x"; then
+      if test -d ${PRI_SETUP_ACK_INBAND_DIR}/lib; then
+         pbxlibdir="-L${PRI_SETUP_ACK_INBAND_DIR}/lib"
+      else
+         pbxlibdir="-L${PRI_SETUP_ACK_INBAND_DIR}"
+      fi
+   fi
+   pbxfuncname="pri_setup_ack"
+   if test "x${pbxfuncname}" = "x" ; then   # empty lib, assume only headers
+      AST_PRI_SETUP_ACK_INBAND_FOUND=yes
+   else
+      ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
+      CFLAGS="${CFLAGS} "
+      as_ac_Lib=`$as_echo "ac_cv_lib_pri_${pbxfuncname}" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${pbxfuncname} in -lpri" >&5
+$as_echo_n "checking for ${pbxfuncname} in -lpri... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpri ${pbxlibdir}  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ${pbxfuncname} ();
+int
+main ()
+{
+return ${pbxfuncname} ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  AST_PRI_SETUP_ACK_INBAND_FOUND=yes
+else
+  AST_PRI_SETUP_ACK_INBAND_FOUND=no
+fi
+
+      CFLAGS="${ast_ext_lib_check_save_CFLAGS}"
+   fi
+
+   # now check for the header.
+   if test "${AST_PRI_SETUP_ACK_INBAND_FOUND}" = "yes"; then
+      PRI_SETUP_ACK_INBAND_LIB="${pbxlibdir} -lpri "
+      # if --with-PRI_SETUP_ACK_INBAND=DIR has been specified, use it.
+      if test "x${PRI_SETUP_ACK_INBAND_DIR}" != "x"; then
+         PRI_SETUP_ACK_INBAND_INCLUDE="-I${PRI_SETUP_ACK_INBAND_DIR}/include"
+      fi
+      PRI_SETUP_ACK_INBAND_INCLUDE="${PRI_SETUP_ACK_INBAND_INCLUDE} "
+      if test "xlibpri.h" = "x" ; then # no header, assume found
+         PRI_SETUP_ACK_INBAND_HEADER_FOUND="1"
+      else                             # check for the header
+         ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
+         CPPFLAGS="${CPPFLAGS} ${PRI_SETUP_ACK_INBAND_INCLUDE}"
+         ac_fn_c_check_header_mongrel "$LINENO" "libpri.h" "ac_cv_header_libpri_h" "$ac_includes_default"
+if test "x$ac_cv_header_libpri_h" = xyes; then :
+  PRI_SETUP_ACK_INBAND_HEADER_FOUND=1
+else
+  PRI_SETUP_ACK_INBAND_HEADER_FOUND=0
+fi
+
+
+         CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
+      fi
+      if test "x${PRI_SETUP_ACK_INBAND_HEADER_FOUND}" = "x0" ; then
+         PRI_SETUP_ACK_INBAND_LIB=""
+         PRI_SETUP_ACK_INBAND_INCLUDE=""
+      else
+         if test "x${pbxfuncname}" = "x" ; then                # only checking headers -> no library
+            PRI_SETUP_ACK_INBAND_LIB=""
+         fi
+         PBX_PRI_SETUP_ACK_INBAND=1
+         cat >>confdefs.h <<_ACEOF
+#define HAVE_PRI_SETUP_ACK_INBAND 1
+_ACEOF
+
+      fi
+   fi
+fi
+
+
+
 if test "x${PBX_PRI_L2_PERSISTENCE}" != "x1" -a "${USE_PRI_L2_PERSISTENCE}" != "no"; then
    pbxlibdir=""
    # if --with-PRI_L2_PERSISTENCE=DIR has been specified, use it.
@@ -28101,6 +28226,7 @@ if test -n "$GMIME_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_GMIME_CFLAGS=`$PKG_CONFIG --cflags "gmime-$ver" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -28117,6 +28243,7 @@ if test -n "$GMIME_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_GMIME_LIBS=`$PKG_CONFIG --libs "gmime-$ver" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -28136,9 +28263,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               GMIME_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gmime-$ver" 2>&1`
+               GMIME_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gmime-$ver" 2>&1`
         else
-               GMIME_PKG_ERRORS=`$PKG_CONFIG --print-errors "gmime-$ver" 2>&1`
+               GMIME_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gmime-$ver" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$GMIME_PKG_ERRORS" >&5
@@ -29873,6 +30000,7 @@ if test -n "$GTK2_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_GTK2_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -29889,6 +30017,7 @@ if test -n "$GTK2_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_GTK2_LIBS=`$PKG_CONFIG --libs "gtk+-2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -29908,9 +30037,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0" 2>&1`
+               GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0" 2>&1`
         else
-               GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0" 2>&1`
+               GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$GTK2_PKG_ERRORS" >&5
index 33d5bbf917832d8a7984f13ae69acddef9304816..f466c0d239d99bf571c12c171a55c4fe22268433 100644 (file)
@@ -428,6 +428,7 @@ AST_EXT_LIB_SETUP([PGSQL], [PostgreSQL], [postgres])
 AST_EXT_LIB_SETUP([POPT], [popt], [popt])
 AST_EXT_LIB_SETUP([PORTAUDIO], [PortAudio], [portaudio])
 AST_EXT_LIB_SETUP([PRI], [ISDN PRI], [pri])
+AST_EXT_LIB_SETUP_OPTIONAL([PRI_SETUP_ACK_INBAND], [ISDN PRI progress inband ie in SETUP ACK], [PRI], [pri])
 AST_EXT_LIB_SETUP_OPTIONAL([PRI_L2_PERSISTENCE], [ISDN Layer 2 persistence option], [PRI], [pri])
 AST_EXT_LIB_SETUP_OPTIONAL([PRI_DATETIME_SEND], [ISDN PRI Date/time ie send policy], [PRI], [pri])
 AST_EXT_LIB_SETUP_OPTIONAL([PRI_MWI_V2], [ISDN PRI Message Waiting Indication (Fixed)], [PRI], [pri])
@@ -2006,6 +2007,7 @@ AST_EXT_LIB_CHECK([POPT], [popt], [poptStrerror], [popt.h])
 AST_EXT_LIB_CHECK([PORTAUDIO], [portaudio], [Pa_GetDeviceCount], [portaudio.h])
 
 AST_EXT_LIB_CHECK([PRI], [pri], [pri_connected_line_update], [libpri.h])
+AST_EXT_LIB_CHECK([PRI_SETUP_ACK_INBAND], [pri], [pri_setup_ack], [libpri.h])
 AST_EXT_LIB_CHECK([PRI_L2_PERSISTENCE], [pri], [pri_persistent_layer2_option], [libpri.h])
 AST_EXT_LIB_CHECK([PRI_DATETIME_SEND], [pri], [pri_date_time_send_option], [libpri.h])
 AST_EXT_LIB_CHECK([PRI_MWI_V2], [pri], [pri_mwi_indicate_v2], [libpri.h])
index b817c88410a5e07e13c95ca0a3eb74ea0b519bfb..838ac1b67f066f7730ac7009bda73bb3cf48efe9 100644 (file)
 /* Define to 1 if PRI has the ISDN service messages feature. */
 #undef HAVE_PRI_SERVICE_MESSAGES
 
+/* Define to 1 if PRI has the ISDN PRI progress inband ie in SETUP ACK
+   feature. */
+#undef HAVE_PRI_SETUP_ACK_INBAND
+
 /* Define to 1 if PRI has the ISDN PRI keypad facility in SETUP feature. */
 #undef HAVE_PRI_SETUP_KEYPAD
 
 /* Define to 1 if running on Darwin. */
 #undef _DARWIN_UNLIMITED_SELECT
 
-/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS