Merge "install_prereq: Update FreeBSD libraries."
authorJenkins2 <jenkins2@gerrit.asterisk.org>
Wed, 14 Mar 2018 12:56:10 +0000 (07:56 -0500)
committerGerrit Code Review <gerrit2@gerrit.digium.api>
Wed, 14 Mar 2018 12:56:10 +0000 (07:56 -0500)
76 files changed:
CHANGES
Makefile
UPGRADE.txt
addons/chan_ooh323.c
apps/app_directory.c
apps/app_fax.c
apps/app_minivm.c
apps/app_voicemail.c
build_tools/make_buildopts_h
cdr/cdr_adaptive_odbc.c
cdr/cdr_odbc.c
cdr/cdr_pgsql.c
cel/cel_odbc.c
cel/cel_pgsql.c
channels/chan_dahdi.c
channels/chan_sip.c
configure
configure.ac
contrib/scripts/install_prereq
funcs/func_odbc.c
include/asterisk.h
include/asterisk/_private.h
include/asterisk/astmm.h
include/asterisk/autoconfig.h.in
include/asterisk/chanvars.h
include/asterisk/compat.h
include/asterisk/config.h
include/asterisk/hashtab.h
include/asterisk/heap.h
include/asterisk/stringfields.h
include/asterisk/strings.h
include/asterisk/utils.h
main/asterisk.c
main/astmm.c
main/callerid.c
main/cel.c
main/chanvars.c
main/config.c
main/core_local.c
main/datastore.c
main/devicestate.c
main/dns_core.c
main/dns_system_resolver.c
main/dsp.c
main/features.c
main/features_config.c
main/hashtab.c
main/heap.c
main/indications.c
main/media_cache.c
main/netsock2.c
main/pbx.c
main/pbx_builtins.c
main/sched.c
main/sorcery.c
main/strcompat.c
main/stringfields.c
main/strings.c
main/utils.c
menuselect/strcompat.c
res/res_config_ldap.c
res/res_config_odbc.c
res/res_config_pgsql.c
res/res_config_sqlite.c
res/res_monitor.c
res/res_pjsip_session.c
res/res_rtp_asterisk.c
res/res_srtp.c
res/stasis_recording/stored.c
third-party/pjproject/Makefile
third-party/pjproject/patches/0070-sdp_media_fmt.patch [deleted file]
third-party/pjproject/patches/0071-sdp_fmtp_attr.patch [deleted file]
third-party/pjproject/patches/asterisk_malloc_debug.c
third-party/pjproject/patches/asterisk_malloc_debug.h
third-party/pjproject/patches/config_site.h
third-party/versions.mak

diff --git a/CHANGES b/CHANGES
index 37ec319..0f4ced2 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -17,6 +17,13 @@ app_fax
  * The app_fax module is now deprecated, users should migrate to the
    replacement module res_fax.
 
+Build System
+------------------
+ * MALLOC_DEBUG no longer has an effect on Asterisk's ABI.  Asterisk built
+   with MALLOC_DEBUG can now successfully load binary modules built without
+   MALLOC_DEBUG and vice versa.  Third-party pre-compiled modules no longer
+   need to have a special build with it enabled.
+
 app_macro
 ------------------
  * The app_macro module is now deprecated and by default it is no longer
index 4e6072e..54368f7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -217,7 +217,9 @@ ifeq ($(AST_DEVMODE),yes)
   endif
 endif
 
-ifneq ($(findstring BSD,$(OSARCH)),)
+ifeq ($(OSARCH),NetBSD)
+  _ASTCFLAGS+=-isystem /usr/pkg/include
+else ifneq ($(findstring BSD,$(OSARCH)),)
   _ASTCFLAGS+=-isystem /usr/local/include
 endif
 
@@ -239,7 +241,9 @@ ifeq ($(OSARCH),SunOS)
   _ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include -D_XPG4_2 -D__EXTENSIONS__
 endif
 
-ifneq ($(GREP),:)
+ifeq ($(GREP),)
+else ifeq ($(GREP),:)
+else
   ASTERISKVERSION:=$(shell GREP=$(GREP) AWK=$(AWK) GIT=$(GIT) build_tools/make_version .)
 endif
 ifneq ($(AWK),)
@@ -282,7 +286,9 @@ else
 # These are used for all but Darwin
   SOLINK=-shared
   DYLINK=$(SOLINK)
-  ifneq ($(findstring BSD,$(OSARCH)),)
+  ifeq ($(OSARCH),NetBSD)
+    _ASTLDFLAGS+=-L/usr/pkg/lib
+  else ifneq ($(findstring BSD,$(OSARCH)),)
     _ASTLDFLAGS+=-L/usr/local/lib
   endif
 endif
@@ -467,7 +473,9 @@ endif
                $(INSTALL) -m 644 $$x "$(DESTDIR)$(ASTDATADIR)/rest-api" ; \
        done
 
-ifneq ($(GREP),:)
+ifeq ($(GREP),)
+else ifeq ($(GREP),:)
+else
   XML_core_en_US = $(foreach dir,$(MOD_SUBDIRS),$(shell $(GREP) -l "language=\"en_US\"" $(dir)/*.c $(dir)/*.cc 2>/dev/null))
 endif
 
@@ -486,7 +494,9 @@ doc/core-en_US.xml: makeopts .lastclean $(XML_core_en_US)
        @echo
        @echo "</docs>" >> $@
 
-ifneq ($(GREP),:)
+ifeq ($(GREP),)
+else ifeq ($(GREP),:)
+else
   XML_full_en_US = $(foreach dir,$(MOD_SUBDIRS),$(shell $(GREP) -l "language=\"en_US\"" $(dir)/*.c $(dir)/*.cc 2>/dev/null))
 endif
 
@@ -630,7 +640,9 @@ oldmodcheck:
        fi
 
 ld-cache-update:
-ifneq ($(LDCONFIG),:)
+ifeq ($(LDCONFIG),)
+else ifeq ($(LDCONFIG),:)
+else
 ifeq ($(DESTDIR),)  # DESTDIR means binary archive creation; ldconfig should be run on postinst
        @if [ $$(id -u) -eq 0 ] ; then \
                $(LDCONFIG) "$(ASTLIBDIR)/" ; \
@@ -984,7 +996,9 @@ ifeq ($(HAVE_DAHDI),1)
        rm -f $(DESTDIR)$(DAHDI_UDEV_HOOK_DIR)/40-asterisk
 endif
        $(MAKE) -C sounds uninstall
-ifneq ($(LDCONFIG),:)
+ifeq ($(LDCONFIG),)
+else ifeq ($(LDCONFIG),:)
+else
        $(LDCONFIG) "$(ASTLIBDIR)/" || :
 endif
 
index 3668258..108c10a 100644 (file)
@@ -44,6 +44,12 @@ ARI:
  - The ContactInfo event's contact_status field is now set to "NonQualified"
    when a contact exists but has not been qualified.
 
+Build System:
+ - MALLOC_DEBUG no longer has an effect on Asterisk's ABI.  Asterisk built
+   with MALLOC_DEBUG can now successfully load binary modules built without
+   MALLOC_DEBUG and vice versa.  Third-party pre-compiled modules no longer
+   need to have a special build with it enabled.
+
 cdr_syslog:
  - The cdr_syslog module is now deprecated and by default it is no longer
    built.
index 8c4ff2c..278c587 100644 (file)
@@ -1174,8 +1174,7 @@ static int ooh323_answer(struct ast_channel *ast)
                                p->alertsent = 1;
                        }
                        ast_setstate(ast, AST_STATE_UP);
-                       if (option_debug)
-                               ast_debug(1, "ooh323_answer(%s)\n", ast_channel_name(ast));
+                       ast_debug(1, "ooh323_answer(%s)\n", ast_channel_name(ast));
                        ast_channel_unlock(ast);
                        ooAnswerCall(p->callToken);
                }
index 48533f5..a47fe3b 100644 (file)
@@ -815,10 +815,10 @@ static int do_directory(struct ast_channel *chan, struct ast_config *vmcfg, stru
        /* Sort items */
        sort_items(sorted, count);
 
-       if (option_debug) {
-               ast_debug(2, "Listing matching entries:\n");
+       if (DEBUG_ATLEAST(2)) {
+               ast_log(LOG_DEBUG, "Listing matching entries:\n");
                for (ptr = sorted, i = 0; i < count; i++, ptr++) {
-                       ast_debug(2, "%s: %s\n", ptr[0]->exten, ptr[0]->name);
+                       ast_log(LOG_DEBUG, "%s: %s\n", ptr[0]->exten, ptr[0]->name);
                }
        }
 
index 293925a..c5d0f51 100644 (file)
@@ -995,7 +995,7 @@ static int load_module(void)
 
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Simple FAX Application",
-       .support_level = AST_MODULE_SUPPORT_EXTENDED,
+       .support_level = AST_MODULE_SUPPORT_DEPRECATED,
        .load = load_module,
        .unload = unload_module,
 );
index e9fa211..c09fba1 100644 (file)
@@ -1438,7 +1438,7 @@ static int sendmail(struct minivm_template *template, struct minivm_account *vmu
                ast_debug(1, "Using default subject for this email \n");
        }
 
-       if (option_debug > 2)
+       if (DEBUG_ATLEAST(3))
                fprintf(p, "X-Asterisk-debug: template %s user account %s@%s\n", template->name, vmu->username, vmu->domain);
        fprintf(p, "MIME-Version: 1.0\n");
 
index 1e7d091..82fa3b3 100644 (file)
@@ -3657,7 +3657,7 @@ static void set_update(MAILSTREAM * stream)
        char buf[1024] = "";
 
        if (!(user = get_user_by_mailbox(mailbox, buf, sizeof(buf))) || !(vms = get_vm_state_by_imapuser(user, 0))) {
-               if (user && option_debug > 2)
+               if (user && DEBUG_ATLEAST(3))
                        ast_log(AST_LOG_WARNING, "User %s mailbox not found for update.\n", user);
                return;
        }
index 3ba4cb9..c47d508 100755 (executable)
@@ -20,18 +20,19 @@ fi
 TMP=`${GREP} -e "^MENUSELECT_CFLAGS" menuselect.makeopts | sed 's/MENUSELECT_CFLAGS\=//g' | sed 's/-D//g'`
 for x in ${TMP}; do
        echo "#define ${x} 1"
-       if test "${x}" = "DONT_OPTIMIZE" \
+       if test "${x}" = "AO2_DEBUG" \
                        -o "${x}" = "BETTER_BACKTRACES" \
-                       -o "${x}" = "LOTS_OF_SPANS" \
                        -o "${x}" = "BUILD_NATIVE" \
-                       -o "${x}" = "LOW_MEMORY" \
-                       -o "${x}" = "REF_DEBUG" \
-                       -o "${x}" = "AO2_DEBUG" \
-                       -o "${x}" = "REBUILD_PARSERS" \
-                       -o "${x}" = "RADIO_RELAX" \
                        -o "${x}" = "DEBUG_SCHEDULER" \
                        -o "${x}" = "DETECT_DEADLOCKS" \
-                       -o "${x}" = "DUMP_SCHEDULER" ; then
+                       -o "${x}" = "DONT_OPTIMIZE" \
+                       -o "${x}" = "DUMP_SCHEDULER" \
+                       -o "${x}" = "LOTS_OF_SPANS" \
+                       -o "${x}" = "LOW_MEMORY" \
+                       -o "${x}" = "MALLOC_DEBUG" \
+                       -o "${x}" = "RADIO_RELAX" \
+                       -o "${x}" = "REBUILD_PARSERS" \
+                       -o "${x}" = "REF_DEBUG" ; then
                # These aren't ABI affecting options, keep them out of AST_BUILDOPTS
                continue
        fi
index d4da850..e04b9fe 100644 (file)
@@ -35,6 +35,7 @@
 
 /*** MODULEINFO
        <depend>res_odbc</depend>
+       <depend>generic_odbc</depend>
        <support_level>core</support_level>
  ***/
 
index b44bbf5..efa68c1 100644 (file)
@@ -39,6 +39,7 @@
 
 /*** MODULEINFO
        <depend>res_odbc</depend>
+       <depend>generic_odbc</depend>
        <support_level>extended</support_level>
  ***/
 
index b482fe6..3af9b4b 100644 (file)
@@ -644,20 +644,20 @@ static int config_module(int reload)
                return -1;
        }
 
-       if (option_debug) {
+       if (DEBUG_ATLEAST(1)) {
                if (ast_strlen_zero(pghostname)) {
-                       ast_debug(1, "using default unix socket\n");
+                       ast_log(LOG_DEBUG, "using default unix socket\n");
                } else {
-                       ast_debug(1, "got hostname of %s\n", pghostname);
+                       ast_log(LOG_DEBUG, "got hostname of %s\n", pghostname);
                }
-               ast_debug(1, "got port of %s\n", pgdbport);
-               ast_debug(1, "got user of %s\n", pgdbuser);
-               ast_debug(1, "got dbname of %s\n", pgdbname);
-               ast_debug(1, "got password of %s\n", pgpassword);
-               ast_debug(1, "got application name of %s\n", pgappname);
-               ast_debug(1, "got sql table name of %s\n", table);
-               ast_debug(1, "got encoding of %s\n", encoding);
-               ast_debug(1, "got timezone of %s\n", tz);
+               ast_log(LOG_DEBUG, "got port of %s\n", pgdbport);
+               ast_log(LOG_DEBUG, "got user of %s\n", pgdbuser);
+               ast_log(LOG_DEBUG, "got dbname of %s\n", pgdbname);
+               ast_log(LOG_DEBUG, "got password of %s\n", pgpassword);
+               ast_log(LOG_DEBUG, "got application name of %s\n", pgappname);
+               ast_log(LOG_DEBUG, "got sql table name of %s\n", table);
+               ast_log(LOG_DEBUG, "got encoding of %s\n", encoding);
+               ast_log(LOG_DEBUG, "got timezone of %s\n", tz);
        }
 
        pgsql_reconnect();
index 05c1095..b4967b6 100644 (file)
@@ -28,6 +28,7 @@
 
 /*** MODULEINFO
        <depend>res_odbc</depend>
+       <depend>generic_odbc</depend>
        <support_level>core</support_level>
  ***/
 
index 5fe6678..eb8f5d8 100644 (file)
@@ -556,18 +556,18 @@ static int process_my_load_module(struct ast_config *cfg)
                ast_log(LOG_WARNING,"PostgreSQL Ran out of memory copying schema info\n");
                return AST_MODULE_LOAD_DECLINE;
        }
-       if (option_debug) {
+       if (DEBUG_ATLEAST(3)) {
                if (ast_strlen_zero(pghostname)) {
-                       ast_debug(3, "cel_pgsql: using default unix socket\n");
+                       ast_log(LOG_DEBUG, "cel_pgsql: using default unix socket\n");
                } else {
-                       ast_debug(3, "cel_pgsql: got hostname of %s\n", pghostname);
+                       ast_log(LOG_DEBUG, "cel_pgsql: got hostname of %s\n", pghostname);
                }
-               ast_debug(3, "cel_pgsql: got port of %s\n", pgdbport);
-               ast_debug(3, "cel_pgsql: got user of %s\n", pgdbuser);
-               ast_debug(3, "cel_pgsql: got dbname of %s\n", pgdbname);
-               ast_debug(3, "cel_pgsql: got password of %s\n", pgpassword);
-               ast_debug(3, "cel_pgsql: got sql table name of %s\n", table);
-               ast_debug(3, "cel_pgsql: got show_user_defined of %s\n",
+               ast_log(LOG_DEBUG, "cel_pgsql: got port of %s\n", pgdbport);
+               ast_log(LOG_DEBUG, "cel_pgsql: got user of %s\n", pgdbuser);
+               ast_log(LOG_DEBUG, "cel_pgsql: got dbname of %s\n", pgdbname);
+               ast_log(LOG_DEBUG, "cel_pgsql: got password of %s\n", pgpassword);
+               ast_log(LOG_DEBUG, "cel_pgsql: got sql table name of %s\n", table);
+               ast_log(LOG_DEBUG, "cel_pgsql: got show_user_defined of %s\n",
                        cel_show_user_def ? "Yes" : "No");
        }
 
index de2c152..0579a5a 100644 (file)
@@ -15058,14 +15058,14 @@ retry:
                ast_mutex_lock(&p->lock);
                if (p->owner && !p->restartpending) {
                        if (ast_channel_trylock(p->owner)) {
-                               if (option_debug > 2)
+                               if (DEBUG_ATLEAST(3))
                                        ast_verbose("Avoiding deadlock\n");
                                /* Avoid deadlock since you're not supposed to lock iflock or pvt before a channel */
                                ast_mutex_unlock(&p->lock);
                                ast_mutex_unlock(&iflock);
                                goto retry;
                        }
-                       if (option_debug > 2)
+                       if (DEBUG_ATLEAST(3))
                                ast_verbose("Softhanging up on %s\n", ast_channel_name(p->owner));
                        ast_softhangup_nolock(p->owner, AST_SOFTHANGUP_EXPLICIT);
                        p->restartpending = 1;
index f0cc2a6..cd29294 100644 (file)
@@ -22479,7 +22479,7 @@ static void sip_dump_history(struct sip_pvt *dialog)
                return;
        }
 
-       if (!option_debug && !sipdebug) {
+       if (!sipdebug && !DEBUG_ATLEAST(1)) {
                if (!errmsg) {
                        ast_log(LOG_NOTICE, "You must have debugging enabled (SIP or Asterisk) in order to dump SIP history.\n");
                        errmsg = 1;
@@ -22487,20 +22487,20 @@ static void sip_dump_history(struct sip_pvt *dialog)
                return;
        }
 
-       ast_debug(1, "\n---------- SIP HISTORY for '%s' \n", dialog->callid);
+       ast_log(LOG_DEBUG, "\n---------- SIP HISTORY for '%s' \n", dialog->callid);
        if (dialog->subscribed) {
-               ast_debug(1, "  * Subscription\n");
+               ast_log(LOG_DEBUG, "  * Subscription\n");
        } else {
-               ast_debug(1, "  * SIP Call\n");
+               ast_log(LOG_DEBUG, "  * SIP Call\n");
        }
        if (dialog->history) {
                AST_LIST_TRAVERSE(dialog->history, hist, list)
-                       ast_debug(1, "  %-3.3d. %s\n", ++x, hist->event);
+                       ast_log(LOG_DEBUG, "  %-3.3d. %s\n", ++x, hist->event);
        }
        if (!x) {
-               ast_debug(1, "Call '%s' has no history\n", dialog->callid);
+               ast_log(LOG_DEBUG, "Call '%s' has no history\n", dialog->callid);
        }
-       ast_debug(1, "\n---------- END SIP HISTORY for '%s' \n", dialog->callid);
+       ast_log(LOG_DEBUG, "\n---------- END SIP HISTORY for '%s' \n", dialog->callid);
 }
 
 
index 18609ca..afe61aa 100755 (executable)
--- a/configure
+++ b/configure
@@ -657,6 +657,8 @@ GMIME_LIBS
 GMIME_CFLAGS
 PBX_SSL_OP_NO_TLSV1_2
 PBX_SSL_OP_NO_TLSV1_1
+PORTAUDIO_LIBS
+PORTAUDIO_CFLAGS
 PYTHONDEV_LIBS
 PYTHONDEV_CFLAGS
 PYTHONDEV_INCLUDE
@@ -1485,6 +1487,8 @@ PJPROJECT_CFLAGS
 PJPROJECT_LIBS
 PYTHONDEV_CFLAGS
 PYTHONDEV_LIBS
+PORTAUDIO_CFLAGS
+PORTAUDIO_LIBS
 GMIME_CFLAGS
 GMIME_LIBS
 GTK2_CFLAGS
@@ -2244,6 +2248,10 @@ Some influential environment variables:
               C compiler flags for PYTHONDEV, overriding pkg-config
   PYTHONDEV_LIBS
               linker flags for PYTHONDEV, overriding pkg-config
+  PORTAUDIO_CFLAGS
+              C compiler flags for PORTAUDIO, overriding pkg-config
+  PORTAUDIO_LIBS
+              linker flags for PORTAUDIO, overriding pkg-config
   GMIME_CFLAGS
               C compiler flags for GMIME, overriding pkg-config
   GMIME_LIBS  linker flags for GMIME, overriding pkg-config
@@ -4671,6 +4679,11 @@ case "${host_os}" in
 esac
 
 case "${host_os}" in
+     netbsd*)
+     ac_default_prefix=/usr/pkg
+     CPPFLAGS=-I/usr/pkg/include
+     LDFLAGS=-L/usr/pkg/lib
+     ;;
      freebsd*)
      ac_default_prefix=/usr/local
      CPPFLAGS=-I/usr/local/include
@@ -13882,6 +13895,10 @@ _ACEOF
 fi
 
 
+if test "x$LIBUUID_LIB" != "x" ; then
+  UUID_INCLUDE="$LIBUUID_INCLUDE"
+  UUID_LIB="$LIBUUID_LIB"
+else
 
 if test "x${PBX_E2FSUUID}" != "x1" -a "${USE_E2FSUUID}" != "no"; then
    pbxlibdir=""
@@ -13978,7 +13995,11 @@ _ACEOF
 fi
 
 
-for ac_func in uuid_generate_random
+  if test "x$E2FSUUID_LIB" != "x" ; then
+    UUID_INCLUDE="$E2FSUUID_INCLUDE"
+    UUID_LIB="$E2FSUUID_LIB"
+  else
+    for ac_func in uuid_generate_random
 do :
   ac_fn_c_check_func "$LINENO" "uuid_generate_random" "ac_cv_func_uuid_generate_random"
 if test "x$ac_cv_func_uuid_generate_random" = xyes; then :
@@ -13991,18 +14012,13 @@ else
 fi
 done
 
-
-if test "x$LIBUUID_LIB" != "x" ; then
-  UUID_INCLUDE="$LIBUUID_INCLUDE"
-  UUID_LIB="$LIBUUID_LIB"
-elif test "x$E2FSUUID_LIB" != "x" ; then
-  UUID_INCLUDE="$E2FSUUID_INCLUDE"
-  UUID_LIB="$E2FSUUID_LIB"
-elif test "x$SYSUUID" != "x" ; then
-  UUID_INCLUDE=""
-  UUID_LIB=""
-else
-  as_fn_error $? "*** uuid support not found (this typically means the uuid development package is missing)" "$LINENO" 5
+    if test "x$SYSUUID" != "x" ; then
+      UUID_INCLUDE=""
+      UUID_LIB=""
+    else
+      as_fn_error $? "*** uuid support not found (this typically means the uuid development package is missing)" "$LINENO" 5
+    fi
+  fi
 fi
 
 
@@ -18623,6 +18639,9 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use rpath" >&5
 $as_echo_n "checking whether to use rpath... " >&6; }
 AST_RPATH=
+if test "${OSARCH}" = "NetBSD"; then
+       AST_RPATH="-Wl,-rpath,/usr/pkg/lib"
+fi
 if test "${check_rpath}" != yes; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped" >&5
 $as_echo "skipped" >&6; }
@@ -19762,9 +19781,7 @@ _ACEOF
 fi
 
 
-
-if test "${PBX_BFD}" = "0"; then
-  # Fedora/RedHat/CentOS require extra libraries
+# Fedora/RedHat/CentOS require extra libraries
 
 if test "x${PBX_BFD}" != "x1" -a "${USE_BFD}" != "no"; then
    pbxlibdir=""
@@ -19779,9 +19796,9 @@ if test "x${PBX_BFD}" != "x1" -a "${USE_BFD}" != "no"; then
 
       ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
       CFLAGS="${CFLAGS} "
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bfd_check_format in -lbfd" >&5
-$as_echo_n "checking for bfd_check_format in -lbfd... " >&6; }
-if ${ac_cv_lib_bfd_bfd_check_format+:} false; then :
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bfd_openr in -lbfd" >&5
+$as_echo_n "checking for bfd_openr in -lbfd... " >&6; }
+if ${ac_cv_lib_bfd_bfd_openr+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -19795,27 +19812,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char bfd_check_format ();
+char bfd_openr ();
 int
 main ()
 {
-return bfd_check_format ();
+return bfd_openr ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_bfd_bfd_check_format=yes
+  ac_cv_lib_bfd_bfd_openr=yes
 else
-  ac_cv_lib_bfd_bfd_check_format=no
+  ac_cv_lib_bfd_bfd_openr=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_check_format" >&5
-$as_echo "$ac_cv_lib_bfd_bfd_check_format" >&6; }
-if test "x$ac_cv_lib_bfd_bfd_check_format" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_openr" >&5
+$as_echo "$ac_cv_lib_bfd_bfd_openr" >&6; }
+if test "x$ac_cv_lib_bfd_bfd_openr" = xyes; then :
   AST_BFD_FOUND=yes
 else
   AST_BFD_FOUND=no
@@ -19861,10 +19878,7 @@ _ACEOF
 fi
 
 
-fi
-
-if test "${PBX_BFD}" = "0"; then
-  # openSUSE requires -lz
+# openSUSE requires -lz
 
 if test "x${PBX_BFD}" != "x1" -a "${USE_BFD}" != "no"; then
    pbxlibdir=""
@@ -19879,9 +19893,9 @@ if test "x${PBX_BFD}" != "x1" -a "${USE_BFD}" != "no"; then
 
       ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
       CFLAGS="${CFLAGS} "
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bfd_check_format in -lbfd" >&5
-$as_echo_n "checking for bfd_check_format in -lbfd... " >&6; }
-if ${ac_cv_lib_bfd_bfd_check_format+:} false; then :
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bfd_openr in -lbfd" >&5
+$as_echo_n "checking for bfd_openr in -lbfd... " >&6; }
+if ${ac_cv_lib_bfd_bfd_openr+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -19895,27 +19909,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char bfd_check_format ();
+char bfd_openr ();
 int
 main ()
 {
-return bfd_check_format ();
+return bfd_openr ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_bfd_bfd_check_format=yes
+  ac_cv_lib_bfd_bfd_openr=yes
 else
-  ac_cv_lib_bfd_bfd_check_format=no
+  ac_cv_lib_bfd_bfd_openr=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_check_format" >&5
-$as_echo "$ac_cv_lib_bfd_bfd_check_format" >&6; }
-if test "x$ac_cv_lib_bfd_bfd_check_format" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_openr" >&5
+$as_echo "$ac_cv_lib_bfd_bfd_openr" >&6; }
+if test "x$ac_cv_lib_bfd_bfd_openr" = xyes; then :
   AST_BFD_FOUND=yes
 else
   AST_BFD_FOUND=no
@@ -19961,7 +19975,6 @@ _ACEOF
 fi
 
 
-fi
 
 case "${OSARCH}" in
 linux*)
@@ -20768,8 +20781,7 @@ $as_echo "#define HAVE_LIBEDIT 1" >>confdefs.h
 fi
    fi
 
-if test "${PBX_LIBEDIT}" != 1; then
-       # some platforms do not list libedit via pkg-config, for example OpenBSD 6.2
+# some platforms do not list libedit via pkg-config, for example OpenBSD 6.2
 
 if test "x${PBX_LIBEDIT}" != "x1" -a "${USE_LIBEDIT}" != "no"; then
    pbxlibdir=""
@@ -20866,7 +20878,6 @@ _ACEOF
 fi
 
 
-fi
 if test "${PBX_LIBEDIT}" != 1; then
        as_fn_error $? "*** Please install the 'libedit' development package." "$LINENO" 5
        exit 1
@@ -21715,7 +21726,7 @@ $as_echo_n "checking for system c-client library...... " >&6; }
                CPPFLAGS="${saved_cppflags}"
                LIBS="${saved_libs}"
                imap_ldflags=""
-               imap_libs="-lc-client"
+               imap_libs="-lcrypto -lssl -lc-client"
                imap_include="-DUSE_SYSTEM_IMAP" #Try the imap directory first
                CPPFLAGS="${CPPFLAGS} ${imap_include}"
                LIBS="${LIBS} ${imap_libs} "`echo ${imap_ldflags}`
 
 
 
+   if test "x${PBX_PORTAUDIO}" != "x1" -a "${USE_PORTAUDIO}" != "no"; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PORTAUDIO" >&5
+$as_echo_n "checking for PORTAUDIO... " >&6; }
+
+if test -n "$PORTAUDIO_CFLAGS"; then
+    pkg_cv_PORTAUDIO_CFLAGS="$PORTAUDIO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"portaudio-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "portaudio-2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PORTAUDIO_CFLAGS=`$PKG_CONFIG --cflags "portaudio-2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$PORTAUDIO_LIBS"; then
+    pkg_cv_PORTAUDIO_LIBS="$PORTAUDIO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"portaudio-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "portaudio-2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PORTAUDIO_LIBS=`$PKG_CONFIG --libs "portaudio-2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               PORTAUDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "portaudio-2.0" 2>&1`
+        else
+               PORTAUDIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "portaudio-2.0" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$PORTAUDIO_PKG_ERRORS" >&5
+
+
+            PBX_PORTAUDIO=0
+
+
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+            PBX_PORTAUDIO=0
+
+
+else
+       PORTAUDIO_CFLAGS=$pkg_cv_PORTAUDIO_CFLAGS
+       PORTAUDIO_LIBS=$pkg_cv_PORTAUDIO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+            PBX_PORTAUDIO=1
+            PORTAUDIO_INCLUDE="$PORTAUDIO_CFLAGS"
+            PORTAUDIO_LIB="$PORTAUDIO_LIBS"
+
+$as_echo "#define HAVE_PORTAUDIO 1" >>confdefs.h
+
+
+fi
+   fi
+
+
 if test "x${PBX_PORTAUDIO}" != "x1" -a "${USE_PORTAUDIO}" != "no"; then
    pbxlibdir=""
    # if --with-PORTAUDIO=DIR has been specified, use it.
@@ -29706,7 +29805,7 @@ if test "x${PBX_LUA}" = "x1" ; then
        fi
 fi
 
-# Some distributions (like SuSE) remove the 5.1 suffix.
+# Some distributions (like openSUSE and NetBSD) remove the 5.x suffix.
 
 if test "x${PBX_LUA}" != "x1" -a "${USE_LUA}" != "no"; then
    pbxlibdir=""
@@ -29721,9 +29820,9 @@ if test "x${PBX_LUA}" != "x1" -a "${USE_LUA}" != "no"; then
 
       ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
       CFLAGS="${CFLAGS} "
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for luaL_openlib in -llua" >&5
-$as_echo_n "checking for luaL_openlib in -llua... " >&6; }
-if ${ac_cv_lib_lua_luaL_openlib+:} false; then :
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for luaL_newstate in -llua" >&5
+$as_echo_n "checking for luaL_newstate in -llua... " >&6; }
+if ${ac_cv_lib_lua_luaL_newstate+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -29737,27 +29836,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char luaL_openlib ();
+char luaL_newstate ();
 int
 main ()
 {
-return luaL_openlib ();
+return luaL_newstate ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lua_luaL_openlib=yes
+  ac_cv_lib_lua_luaL_newstate=yes
 else
-  ac_cv_lib_lua_luaL_openlib=no
+  ac_cv_lib_lua_luaL_newstate=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lua_luaL_openlib" >&5
-$as_echo "$ac_cv_lib_lua_luaL_openlib" >&6; }
-if test "x$ac_cv_lib_lua_luaL_openlib" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lua_luaL_newstate" >&5
+$as_echo "$ac_cv_lib_lua_luaL_newstate" >&6; }
+if test "x$ac_cv_lib_lua_luaL_newstate" = xyes; then :
   AST_LUA_FOUND=yes
 else
   AST_LUA_FOUND=no
index a59646c..4b9b830 100644 (file)
@@ -62,6 +62,11 @@ case "${host_os}" in
 esac
 
 case "${host_os}" in
+     netbsd*)
+     ac_default_prefix=/usr/pkg
+     CPPFLAGS=-I/usr/pkg/include
+     LDFLAGS=-L/usr/pkg/lib
+     ;;
      freebsd*)
      ac_default_prefix=/usr/local
      CPPFLAGS=-I/usr/local/include
@@ -638,20 +643,23 @@ AC_SUBST(EDITLINE_LIB)
 #  * -le2fs-uuid on OpenBSD
 #  * in libsystem on OS X
 AST_EXT_LIB_CHECK([LIBUUID], [uuid], [uuid_generate_random], [uuid/uuid.h], [])
-AST_EXT_LIB_CHECK([E2FSUUID], [e2fs-uuid], [uuid_generate_random], [uuid/uuid.h], [])
-AC_CHECK_FUNCS([uuid_generate_random], [SYSUUID=true], [SYSUUID=""])
-
 if test "x$LIBUUID_LIB" != "x" ; then
   UUID_INCLUDE="$LIBUUID_INCLUDE"
   UUID_LIB="$LIBUUID_LIB"
-elif test "x$E2FSUUID_LIB" != "x" ; then
-  UUID_INCLUDE="$E2FSUUID_INCLUDE"
-  UUID_LIB="$E2FSUUID_LIB"
-elif test "x$SYSUUID" != "x" ; then
-  UUID_INCLUDE=""
-  UUID_LIB=""
 else
-  AC_MSG_ERROR([*** uuid support not found (this typically means the uuid development package is missing)])
+  AST_EXT_LIB_CHECK([E2FSUUID], [e2fs-uuid], [uuid_generate_random], [uuid/uuid.h], [])
+  if test "x$E2FSUUID_LIB" != "x" ; then
+    UUID_INCLUDE="$E2FSUUID_INCLUDE"
+    UUID_LIB="$E2FSUUID_LIB"
+  else
+    AC_CHECK_FUNCS([uuid_generate_random], [SYSUUID=true], [SYSUUID=""])
+    if test "x$SYSUUID" != "x" ; then
+      UUID_INCLUDE=""
+      UUID_LIB=""
+    else
+      AC_MSG_ERROR([*** uuid support not found (this typically means the uuid development package is missing)])
+    fi
+  fi
 fi
 AC_SUBST(UUID_INCLUDE)
 AC_SUBST(UUID_LIB)
@@ -1313,6 +1321,9 @@ AC_ARG_ENABLE(rpath,
 
 AC_MSG_CHECKING(whether to use rpath)
 AST_RPATH=
+if test "${OSARCH}" = "NetBSD"; then
+       AST_RPATH="-Wl,-rpath,/usr/pkg/lib"
+fi
 if test "${check_rpath}" != yes; then
        AC_MSG_RESULT(skipped)
 elif test "${prefix}" = /usr || test "${prefix}" = NONE; then
@@ -1458,16 +1469,10 @@ PKG_PROG_PKG_CONFIG()
 AST_EXT_LIB_CHECK([ALSA], [asound], [snd_spcm_init], [alsa/asoundlib.h], [-lm -ldl])
 
 AST_EXT_LIB_CHECK([BFD], [bfd], [bfd_openr], [bfd.h])
-
-if test "${PBX_BFD}" = "0"; then
-  # Fedora/RedHat/CentOS require extra libraries
-  AST_EXT_LIB_CHECK([BFD], [bfd], [bfd_check_format], [bfd.h], [-ldl -liberty])
-fi
-
-if test "${PBX_BFD}" = "0"; then
-  # openSUSE requires -lz
-  AST_EXT_LIB_CHECK([BFD], [bfd], [bfd_check_format], [bfd.h], [-ldl -liberty -lz])
-fi
+# Fedora/RedHat/CentOS require extra libraries
+AST_EXT_LIB_CHECK([BFD], [bfd], [bfd_openr], [bfd.h], [-ldl -liberty])
+# openSUSE requires -lz
+AST_EXT_LIB_CHECK([BFD], [bfd], [bfd_openr], [bfd.h], [-ldl -liberty -lz])
 
 case "${OSARCH}" in
 linux*)
@@ -1575,10 +1580,8 @@ if test "${USE_ILBC}" != "no"; then
 fi
 
 AST_PKG_CONFIG_CHECK(LIBEDIT, libedit)
-if test "${PBX_LIBEDIT}" != 1; then
-       # some platforms do not list libedit via pkg-config, for example OpenBSD 6.2
-       AST_EXT_LIB_CHECK([LIBEDIT], [edit], [history_init], [histedit.h], [-ltermcap])
-fi
+# some platforms do not list libedit via pkg-config, for example OpenBSD 6.2
+AST_EXT_LIB_CHECK([LIBEDIT], [edit], [history_init], [histedit.h], [-ltermcap])
 if test "${PBX_LIBEDIT}" != 1; then
        AC_MSG_ERROR(*** Please install the 'libedit' development package.)
        exit 1
@@ -1861,7 +1864,7 @@ if test "${USE_IMAP_TK}" != "no"; then
                CPPFLAGS="${saved_cppflags}"
                LIBS="${saved_libs}"
                imap_ldflags=""
-               imap_libs="-lc-client"
+               imap_libs="-lcrypto -lssl -lc-client"
                imap_include="-DUSE_SYSTEM_IMAP" #Try the imap directory first
                CPPFLAGS="${CPPFLAGS} ${imap_include}"
                LIBS="${LIBS} ${imap_libs} "`echo ${imap_ldflags}`
@@ -2294,6 +2297,7 @@ AST_PKG_CONFIG_CHECK([PYTHONDEV], [python])
 
 AST_EXT_LIB_CHECK([POPT], [popt], [poptStrerror], [popt.h])
 
+AST_PKG_CONFIG_CHECK([PORTAUDIO], [portaudio-2.0])
 AST_EXT_LIB_CHECK([PORTAUDIO], [portaudio], [Pa_GetDeviceCount], [portaudio.h])
 
 AST_EXT_LIB_CHECK([PRI], [pri], [pri_connected_line_update], [libpri.h])
@@ -2387,8 +2391,8 @@ if test "x${PBX_LUA}" = "x1" ; then
        fi
 fi
 
-# Some distributions (like SuSE) remove the 5.1 suffix.
-AST_EXT_LIB_CHECK([LUA], [lua], [luaL_openlib], [lua.h], [-lm])
+# Some distributions (like openSUSE and NetBSD) remove the 5.x suffix.
+AST_EXT_LIB_CHECK([LUA], [lua], [luaL_newstate], [lua.h], [-lm])
 
 # Accept either RADIUS client library, their APIs are fully compatible,
 # just different header filenames and different SONAMEs
index 72ed922..1270349 100755 (executable)
@@ -51,6 +51,22 @@ PACKAGES_RH="$PACKAGES_RH wget subversion"
 PACKAGES_RH="$PACKAGES_RH bzip2 patch python-devel"
 
 # Basic build system:
+PACKAGES_NBSD="gmake pkg-config"
+# Asterisk: basic requirements:
+PACKAGES_NBSD="$PACKAGES_NBSD editline jansson sqlite3 libuuid libxml2"
+# Asterisk: for addons:
+PACKAGES_NBSD="$PACKAGES_NBSD speex speexdsp libogg libvorbis alsa-lib portaudio-devel curl bison flex"
+PACKAGES_NBSD="$PACKAGES_NBSD postgresql10-client unixodbc libltdl neon gmime lua52 uriparser libxslt openssl"
+PACKAGES_NBSD="$PACKAGES_NBSD mysql-client radiusclient-ng freetds bash"
+PACKAGES_NBSD="$PACKAGES_NBSD net-snmp iksemel popt libical spandsp"
+PACKAGES_NBSD="$PACKAGES_NBSD imap-uw srtp gsm doxygen graphviz libzip openldap-client"
+PACKAGES_NBSD="$PACKAGES_NBSD codec2 fftw libsndfile unbound"
+# Asterisk: for the unpackaged below:
+PACKAGES_NBSD="$PACKAGES_NBSD wget subversion-base"
+# Asterisk: for ./configure --with-pjproject-bundled:
+PACKAGES_NBSD="$PACKAGES_NBSD bzip2 patch python27"
+
+# Basic build system:
 PACKAGES_OBSD="gmake"
 # Asterisk: basic requirements:
 PACKAGES_OBSD="$PACKAGES_OBSD libxml sqlite3 e2fsprogs jansson"
@@ -167,6 +183,17 @@ handle_rh() {
        fi
 }
 
+handle_nbsd() {
+       extra_packs=`check_installed_pkgs $PACKAGES_NBSD`
+       if [ x"$extra_packs" != "x" ] ; then
+               if [ -z "$PKG_PATH" ] ; then
+                       # see NetBSD Problem Report #48177
+                       export PKG_PATH="http://cdn.NetBSD.org/pub/pkgsrc/packages/$(uname -s)/$(uname -p)/$(uname -r)/All"
+               fi
+               $testcmd pkg_add $extra_packs
+       fi
+}
+
 handle_obsd() {
        extra_packs=`check_installed_pkgs $PACKAGES_OBSD`
        if [ x"$extra_packs" != "x" ] ; then
@@ -244,7 +271,7 @@ OS=`uname -s`
 unsupported_distro=''
 
 # A number of distributions we don't (yet?) support.
-if [ "$OS" != 'Linux' -a "$OS" != 'OpenBSD' -a "$OS" != 'FreeBSD' ]; then
+if [ "$OS" != 'Linux' -a "$OS" != 'NetBSD' -a "$OS" != 'OpenBSD' -a "$OS" != 'FreeBSD' ]; then
        echo >&2 "$0: Your OS ($OS) is currently not supported. Aborting."
        exit 1
 fi
@@ -275,6 +302,8 @@ if [ -r /etc/debian_version ]; then
        handle_debian
 elif [ -r /etc/redhat-release ]; then
        handle_rh
+elif [ "$OS" = 'NetBSD' ]; then
+       handle_nbsd
 elif [ "$OS" = 'OpenBSD' ]; then
        handle_obsd
 elif [ "$OS" = 'FreeBSD' ]; then
index 0f6b65e..0d053f6 100644 (file)
@@ -29,6 +29,7 @@
 
 /*** MODULEINFO
        <depend>res_odbc</depend>
+       <depend>generic_odbc</depend>
        <support_level>core</support_level>
  ***/
 
index 3718602..27d66b7 100644 (file)
@@ -21,7 +21,7 @@
 #include "asterisk/autoconfig.h"
 #include "asterisk/compat.h"
 
-#if !defined(NO_MALLOC_DEBUG) && !defined(STANDALONE) && !defined(STANDALONE2) && defined(MALLOC_DEBUG)
+#if !defined(NO_MALLOC_DEBUG) && !defined(STANDALONE) && !defined(STANDALONE2)
 #include "asterisk/astmm.h"
 #endif
 
index e989b16..b9f552d 100644 (file)
@@ -59,6 +59,7 @@ int ast_test_init(void);            /*!< Provided by test.c */
 int ast_msg_init(void);             /*!< Provided by message.c */
 void ast_msg_shutdown(void);        /*!< Provided by message.c */
 int aco_init(void);             /*!< Provided by config_options.c */
+int dns_core_init(void);        /*!< Provided by dns_core.c */
 
 /*!
  * \brief Initialize the bridging system.
index 06300c8..4e4a65b 100644 (file)
@@ -32,27 +32,30 @@ extern "C" {
 #define _ASTERISK_ASTMM_H
 /* IWYU pragma: private, include "asterisk.h" */
 
+#if defined(MALLOC_DEBUG)
 #define __AST_DEBUG_MALLOC
 
+void __ast_mm_init_phase_1(void);
+void __ast_mm_init_phase_2(void);
+#endif
+
 void *ast_std_malloc(size_t size);
 void *ast_std_calloc(size_t nmemb, size_t size);
 void *ast_std_realloc(void *ptr, size_t size);
 void ast_std_free(void *ptr);
 void ast_free_ptr(void *ptr);
 
-void *__ast_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func);
-void *__ast_calloc_cache(size_t nmemb, size_t size, const char *file, int lineno, const char *func);
-void *__ast_malloc(size_t size, const char *file, int lineno, const char *func);
+void *__ast_repl_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func);
+void *__ast_repl_calloc_cache(size_t nmemb, size_t size, const char *file, int lineno, const char *func);
+void *__ast_repl_malloc(size_t size, const char *file, int lineno, const char *func);
 void __ast_free(void *ptr, const char *file, int lineno, const char *func);
-void *__ast_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func);
-char *__ast_strdup(const char *s, const char *file, int lineno, const char *func);
-char *__ast_strndup(const char *s, size_t n, const char *file, int lineno, const char *func);
-int __ast_asprintf(const char *file, int lineno, const char *func, char **strp, const char *format, ...)
+void *__ast_repl_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func);
+char *__ast_repl_strdup(const char *s, const char *file, int lineno, const char *func);
+char *__ast_repl_strndup(const char *s, size_t n, const char *file, int lineno, const char *func);
+int __ast_repl_asprintf(const char *file, int lineno, const char *func, char **strp, const char *format, ...)
        __attribute__((format(printf, 5, 6)));
-int __ast_vasprintf(char **strp, const char *format, va_list ap, const char *file, int lineno, const char *func)
+int __ast_repl_vasprintf(char **strp, const char *format, va_list ap, const char *file, int lineno, const char *func)
        __attribute__((format(printf, 2, 0)));
-void __ast_mm_init_phase_1(void);
-void __ast_mm_init_phase_2(void);
 
 /*!
  * \brief ASTMM_LIBC can be defined to control the meaning of standard allocators.
@@ -120,42 +123,42 @@ void __ast_mm_init_phase_2(void);
 #if ASTMM_LIBC == ASTMM_REDIRECT
 
 /* Redefine libc functions to our own versions */
-#define calloc(a,b) \
-       __ast_calloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+#define calloc(a, b) \
+       __ast_repl_calloc(a, b, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 #define malloc(a) \
-       __ast_malloc(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_malloc(a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 #define free(a) \
-       __ast_free(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
-#define realloc(a,b) \
-       __ast_realloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_free(a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+#define realloc(a, b) \
+       __ast_repl_realloc(a, b, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 #define strdup(a) \
-       __ast_strdup(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
-#define strndup(a,b) \
-       __ast_strndup(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_strdup(a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+#define strndup(a, b) \
+       __ast_repl_strndup(a, b, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 #define asprintf(a, b, c...) \
-       __ast_asprintf(__FILE__, __LINE__, __PRETTY_FUNCTION__, a, b, c)
-#define vasprintf(a,b,c) \
-       __ast_vasprintf(a,b,c,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_asprintf(__FILE__, __LINE__, __PRETTY_FUNCTION__, a, b, c)
+#define vasprintf(a, b, c) \
+       __ast_repl_vasprintf(a, b, c, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #elif ASTMM_LIBC == ASTMM_BLOCK
 
 /* Redefine libc functions to cause compile errors */
-#define calloc(a,b) \
-       Do_not_use_calloc__use_ast_calloc->fail(a,b)
+#define calloc(a, b) \
+       Do_not_use_calloc__use_ast_calloc->fail(a, b)
 #define malloc(a) \
        Do_not_use_malloc__use_ast_malloc->fail(a)
 #define free(a) \
        Do_not_use_free__use_ast_free_or_ast_std_free_for_remotely_allocated_memory->fail(a)
-#define realloc(a,b) \
-       Do_not_use_realloc__use_ast_realloc->fail(a,b)
+#define realloc(a, b) \
+       Do_not_use_realloc__use_ast_realloc->fail(a, b)
 #define strdup(a) \
        Do_not_use_strdup__use_ast_strdup->fail(a)
-#define strndup(a,b) \
-       Do_not_use_strndup__use_ast_strndup->fail(a,b)
+#define strndup(a, b) \
+       Do_not_use_strndup__use_ast_strndup->fail(a, b)
 #define asprintf(a, b, c...) \
-       Do_not_use_asprintf__use_ast_asprintf->fail(a,b,c)
-#define vasprintf(a,b,c) \
-       Do_not_use_vasprintf__use_ast_vasprintf->fail(a,b,c)
+       Do_not_use_asprintf__use_ast_asprintf->fail(a, b, c)
+#define vasprintf(a, b, c) \
+       Do_not_use_vasprintf__use_ast_vasprintf->fail(a, b, c)
 
 #else
 #error "Unacceptable value for the macro ASTMM_LIBC"
@@ -166,7 +169,7 @@ void __ast_mm_init_phase_2(void);
 /* Provide our own definition for ast_free */
 
 #define ast_free(a) \
-       __ast_free(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_free(a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #else
 #error "NEVER INCLUDE astmm.h DIRECTLY!!"
index 0611461..6d747ae 100644 (file)
 /* Define to 1 if you have the popt library. */
 #undef HAVE_POPT
 
-/* Define to 1 if you have the PortAudio library. */
+/* Define if your system has the PORTAUDIO libraries. */
 #undef HAVE_PORTAUDIO
 
 /* Define to 1 if you have the `pow' function. */
index 2040c7b..1a303c5 100644 (file)
@@ -35,12 +35,10 @@ AST_LIST_HEAD_NOLOCK(varshead, ast_var_t);
 
 struct varshead *ast_var_list_create(void);
 void ast_var_list_destroy(struct varshead *head);
-#ifdef __AST_DEBUG_MALLOC
+
 struct ast_var_t *_ast_var_assign(const char *name, const char *value, const char *file, int lineno, const char *function);
-#define ast_var_assign(a,b)    _ast_var_assign(a,b,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-struct ast_var_t *ast_var_assign(const char *name, const char *value);
-#endif
+#define ast_var_assign(name, value) _ast_var_assign(name, value, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 void ast_var_delete(struct ast_var_t *var);
 const char *ast_var_name(const struct ast_var_t *var);
 const char *ast_var_full_name(const struct ast_var_t *var);
index 2e89a39..8547283 100644 (file)
@@ -64,7 +64,7 @@
 void closefrom(int lowfd);
 #endif
 
-#if !defined(HAVE_ASPRINTF) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_ASPRINTF)
 int __attribute__((format(printf, 2, 3))) asprintf(char **str, const char *fmt, ...);
 #endif
 
@@ -96,7 +96,7 @@ int setenv(const char *name, const char *value, int overwrite);
 char *strcasestr(const char *, const char *);
 #endif
 
-#if !defined(HAVE_STRNDUP) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_STRNDUP)
 char *strndup(const char *, size_t);
 #endif
 
@@ -116,7 +116,7 @@ uint64_t strtoq(const char *nptr, char **endptr, int base);
 int unsetenv(const char *name);
 #endif
 
-#if !defined(HAVE_VASPRINTF) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_VASPRINTF)
 int __attribute__((format(printf, 2, 0))) vasprintf(char **strp, const char *fmt, va_list ap);
 #endif
 
index fd9641e..8912840 100644 (file)
@@ -919,12 +919,9 @@ void ast_category_destroy(struct ast_category *cat);
 struct ast_variable *ast_category_detach_variables(struct ast_category *cat);
 void ast_category_rename(struct ast_category *cat, const char *name);
 
-#ifdef __AST_DEBUG_MALLOC
 struct ast_variable *_ast_variable_new(const char *name, const char *value, const char *filename, const char *file, const char *function, int lineno);
 #define ast_variable_new(name, value, filename) _ast_variable_new(name, value, filename, __FILE__, __PRETTY_FUNCTION__, __LINE__)
-#else
-struct ast_variable *ast_variable_new(const char *name, const char *value, const char *filename);
-#endif
+
 struct ast_config_include *ast_include_new(struct ast_config *conf, const char *from_file, const char *included_file, int is_exec, const char *exec_file, int from_lineno, char *real_included_file_name, int real_included_file_name_size);
 struct ast_config_include *ast_include_find(struct ast_config *conf, const char *included_file);
 void ast_include_rename(struct ast_config *conf, const char *from_file, const char *to_file);
index cfe035b..64ed1bf 100644 (file)
@@ -251,22 +251,15 @@ unsigned int ast_hashtab_hash_short(const short num);
  * \param hash a func ptr to do the hashing
  * \param do_locking use locks to guarantee safety of iterators/insertion/deletion -- real simpleminded right now
 */
-#ifdef __AST_DEBUG_MALLOC
-struct ast_hashtab * _ast_hashtab_create(int initial_buckets,
-                                       int (*compare)(const void *a, const void *b),
-                                       int (*resize)(struct ast_hashtab *),
-                                       int (*newsize)(struct ast_hashtab *tab),
-                                       unsigned int (*hash)(const void *obj),
-                                       int do_locking, const char *file, int lineno, const char *function);
-#define ast_hashtab_create(a,b,c,d,e,f)        _ast_hashtab_create(a,b,c,d,e,f,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-struct ast_hashtab * ast_hashtab_create(int initial_buckets,
-                                       int (*compare)(const void *a, const void *b),
-                                       int (*resize)(struct ast_hashtab *),
-                                       int (*newsize)(struct ast_hashtab *tab),
-                                       unsigned int (*hash)(const void *obj),
-                                       int do_locking );
-#endif
+struct ast_hashtab *_ast_hashtab_create(int initial_buckets,
+       int (*compare)(const void *a, const void *b),
+       int (*resize)(struct ast_hashtab *),
+       int (*newsize)(struct ast_hashtab *tab),
+       unsigned int (*hash)(const void *obj),
+       int do_locking,
+       const char *file, int lineno, const char *function);
+#define ast_hashtab_create(initial_buckets, compare, resize, newsize, hash, do_locking) \
+       _ast_hashtab_create(initial_buckets, compare, resize, newsize, hash, do_locking, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*!
  * \brief This func will free the hash table and all its memory.
@@ -294,12 +287,9 @@ void ast_hashtab_destroy( struct ast_hashtab *tab, void (*objdestroyfunc)(void *
  * \retval 1 on success
  * \retval 0 if there's a problem
 */
-#ifdef __AST_DEBUG_MALLOC
 int _ast_hashtab_insert_immediate(struct ast_hashtab *tab, const void *obj, const char *file, int lineno, const char *func);
-#define        ast_hashtab_insert_immediate(a,b)       _ast_hashtab_insert_immediate(a, b, __FILE__, __LINE__, __PRETTY_FUNCTION__)
-#else
-int ast_hashtab_insert_immediate(struct ast_hashtab *tab, const void *obj);
-#endif
+#define ast_hashtab_insert_immediate(tab, obj) \
+       _ast_hashtab_insert_immediate(tab, obj, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*!
  * \brief Insert without checking, hashing or locking
@@ -311,12 +301,9 @@ int ast_hashtab_insert_immediate(struct ast_hashtab *tab, const void *obj);
  * \retval 1 on success
  * \retval 0 if there's a problem
 */
-#ifdef __AST_DEBUG_MALLOC
 int _ast_hashtab_insert_immediate_bucket(struct ast_hashtab *tab, const void *obj, unsigned int h, const char *file, int lineno, const char *func);
-#define        ast_hashtab_insert_immediate_bucket(a,b,c)      _ast_hashtab_insert_immediate_bucket(a, b, c, __FILE__, __LINE__, __PRETTY_FUNCTION__)
-#else
-int ast_hashtab_insert_immediate_bucket(struct ast_hashtab *tab, const void *obj, unsigned int h);
-#endif
+#define ast_hashtab_insert_immediate_bucket(tab, obj, h) \
+       _ast_hashtab_insert_immediate_bucket(tab, obj, h, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*!
  * \brief Check and insert new object only if it is not there.
@@ -324,12 +311,9 @@ int ast_hashtab_insert_immediate_bucket(struct ast_hashtab *tab, const void *obj
  * \retval 1 on success
  * \retval  0 if there's a problem, or it's already there.
 */
-#ifdef __AST_DEBUG_MALLOC
 int _ast_hashtab_insert_safe(struct ast_hashtab *tab, const void *obj, const char *file, int lineno, const char *func);
-#define        ast_hashtab_insert_safe(a,b)    _ast_hashtab_insert_safe(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
-#else
-int ast_hashtab_insert_safe(struct ast_hashtab *tab, const void *obj);
-#endif
+#define ast_hashtab_insert_safe(tab, obj) \
+       _ast_hashtab_insert_safe(tab, obj, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*!
  * \brief Lookup this object in the hash table.
@@ -362,20 +346,14 @@ int ast_hashtab_size( struct ast_hashtab *tab);
 int ast_hashtab_capacity( struct ast_hashtab *tab);
 
 /*! \brief Return a copy of the hash table */
-#ifdef __AST_DEBUG_MALLOC
 struct ast_hashtab *_ast_hashtab_dup(struct ast_hashtab *tab, void *(*obj_dup_func)(const void *obj), const char *file, int lineno, const char *func);
-#define        ast_hashtab_dup(a,b)    _ast_hashtab_dup(a,b,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-struct ast_hashtab *ast_hashtab_dup(struct ast_hashtab *tab, void *(*obj_dup_func)(const void *obj));
-#endif
+#define ast_hashtab_dup(tab, obj_dup_func) \
+       _ast_hashtab_dup(tab, obj_dup_func, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*! \brief Gives an iterator to hastable */
-#ifdef __AST_DEBUG_MALLOC
 struct ast_hashtab_iter *_ast_hashtab_start_traversal(struct ast_hashtab *tab, const char *file, int lineno, const char *func);
-#define        ast_hashtab_start_traversal(a)  _ast_hashtab_start_traversal(a,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-struct ast_hashtab_iter *ast_hashtab_start_traversal(struct ast_hashtab *tab);
-#endif
+#define ast_hashtab_start_traversal(tab) \
+       _ast_hashtab_start_traversal(tab, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*! \brief end the traversal, free the iterator, unlock if necc. */
 void ast_hashtab_end_traversal(struct ast_hashtab_iter *it);
@@ -395,12 +373,9 @@ void *ast_hashtab_remove_this_object(struct ast_hashtab *tab, void *obj);
 /* ------------------ */
 
 /*! \brief Gives an iterator to hastable */
-#ifdef __AST_DEBUG_MALLOC
 struct ast_hashtab_iter *_ast_hashtab_start_write_traversal(struct ast_hashtab *tab, const char *file, int lineno, const char *func);
-#define        ast_hashtab_start_write_traversal(a)    _ast_hashtab_start_write_traversal(a,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-struct ast_hashtab_iter *ast_hashtab_start_write_traversal(struct ast_hashtab *tab);
-#endif
+#define ast_hashtab_start_write_traversal(tab) \
+       _ast_hashtab_start_write_traversal(tab, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*! \brief Looks up the object, removes the corresponding bucket */
 void *ast_hashtab_remove_object_via_lookup_nolock(struct ast_hashtab *tab, void *obj);
index 7283279..83c69a8 100644 (file)
@@ -97,14 +97,10 @@ typedef int (*ast_heap_cmp_fn)(void *elm1, void *elm2);
  * \return An instance of a max heap
  * \since 1.6.1
  */
-#ifdef __AST_DEBUG_MALLOC
 struct ast_heap *_ast_heap_create(unsigned int init_height, ast_heap_cmp_fn cmp_fn,
                ssize_t index_offset, const char *file, int lineno, const char *func);
-#define        ast_heap_create(a,b,c)  _ast_heap_create(a,b,c,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-struct ast_heap *ast_heap_create(unsigned int init_height, ast_heap_cmp_fn cmp_fn,
-               ssize_t index_offset);
-#endif
+#define ast_heap_create(init_height, cmp_fn, index_offset) \
+       _ast_heap_create(init_height, cmp_fn, index_offset, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*!
  * \brief Destroy a max heap
@@ -126,12 +122,9 @@ struct ast_heap *ast_heap_destroy(struct ast_heap *h);
  * \retval non-zero failure
  * \since 1.6.1
  */
-#ifdef __AST_DEBUG_MALLOC
 int _ast_heap_push(struct ast_heap *h, void *elm, const char *file, int lineno, const char *func);
-#define        ast_heap_push(a,b)      _ast_heap_push(a,b,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-int ast_heap_push(struct ast_heap *h, void *elm);
-#endif
+#define ast_heap_push(h, elm) \
+       _ast_heap_push(h, elm, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*!
  * \brief Pop the max element off of the heap
index 69f2fcc..5ac5e09 100644 (file)
@@ -228,11 +228,11 @@ struct ast_string_field_mgr {
        ast_string_field last_alloc;                    /*!< the last field allocated */
        struct ast_string_field_pool *embedded_pool;    /*!< pointer to the embedded pool, if any */
        struct ast_string_field_vector string_fields;   /*!< field vector for compare and copy */
-#if defined(__AST_DEBUG_MALLOC)
+       /* v-- MALLOC_DEBUG information */
        const char *owner_file;                         /*!< filename of owner */
        const char *owner_func;                         /*!< function name of owner */
        int owner_line;                                 /*!< line number of owner */
-#endif
+       /* ^-- MALLOC_DEBUG information */
 };
 
 /*!
index 85393b4..e4bef5f 100644 (file)
@@ -617,8 +617,8 @@ int ast_regex_string_to_regex_pattern(const char *regex_string, struct ast_str *
  * \note The result of this function is dynamically allocated memory, and must
  *       be free()'d after it is no longer needed.
  */
-#ifdef __AST_DEBUG_MALLOC
-#define        ast_str_create(a)       _ast_str_create(a,__FILE__,__LINE__,__PRETTY_FUNCTION__)
+#define ast_str_create(init_len) \
+       _ast_str_create(init_len, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 AST_INLINE_API(
 struct ast_str * attribute_malloc _ast_str_create(size_t init_len,
                const char *file, int lineno, const char *func),
@@ -636,24 +636,6 @@ struct ast_str * attribute_malloc _ast_str_create(size_t init_len,
        return buf;
 }
 )
-#else
-AST_INLINE_API(
-struct ast_str * attribute_malloc ast_str_create(size_t init_len),
-{
-       struct ast_str *buf;
-
-       buf = (struct ast_str *)ast_calloc(1, sizeof(*buf) + init_len);
-       if (buf == NULL)
-               return NULL;
-
-       buf->__AST_STR_LEN = init_len;
-       buf->__AST_STR_USED = 0;
-       buf->__AST_STR_TS = DS_MALLOC;
-
-       return buf;
-}
-)
-#endif
 
 /*! \brief Reset the content of a dynamic string.
  * Useful before a series of ast_str_append.
@@ -772,7 +754,6 @@ char *ast_str_truncate(struct ast_str *buf, ssize_t len),
 /*!
  * Make space in a new string (e.g. to read in data from a file)
  */
-#ifdef __AST_DEBUG_MALLOC
 AST_INLINE_API(
 int _ast_str_make_space(struct ast_str **buf, size_t new_len, const char *file, int lineno, const char *function),
 {
@@ -796,32 +777,8 @@ int _ast_str_make_space(struct ast_str **buf, size_t new_len, const char *file,
        return 0;
 }
 )
-#define ast_str_make_space(a,b)        _ast_str_make_space(a,b,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-AST_INLINE_API(
-int ast_str_make_space(struct ast_str **buf, size_t new_len),
-{
-       struct ast_str *old_buf = *buf;
-
-       if (new_len <= (*buf)->__AST_STR_LEN)
-               return 0;       /* success */
-       if ((*buf)->__AST_STR_TS == DS_ALLOCA || (*buf)->__AST_STR_TS == DS_STATIC)
-               return -1;      /* cannot extend */
-       *buf = (struct ast_str *)ast_realloc(*buf, new_len + sizeof(struct ast_str));
-       if (*buf == NULL) {
-               *buf = old_buf;
-               return -1;
-       }
-       if ((*buf)->__AST_STR_TS != DS_MALLOC) {
-               pthread_setspecific((*buf)->__AST_STR_TS->key, *buf);
-               _DB1(__ast_threadstorage_object_replace(old_buf, *buf, new_len + sizeof(struct ast_str));)
-       }
-
-       (*buf)->__AST_STR_LEN = new_len;
-       return 0;
-}
-)
-#endif
+#define ast_str_make_space(buf, new_len) \
+       _ast_str_make_space(buf, new_len, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 AST_INLINE_API(
 int ast_str_copy_string(struct ast_str **dst, struct ast_str *src),
@@ -965,14 +922,12 @@ enum {
  *       through calling one of the other functions or macros defined in this
  *       file.
  */
-#ifdef __AST_DEBUG_MALLOC
-int __attribute__((format(printf, 4, 0))) __ast_debug_str_helper(struct ast_str **buf, ssize_t max_len,
-                                                          int append, const char *fmt, va_list ap, const char *file, int lineno, const char *func);
-#define __ast_str_helper(a,b,c,d,e)    __ast_debug_str_helper(a,b,c,d,e,__FILE__,__LINE__,__PRETTY_FUNCTION__)
-#else
-int __attribute__((format(printf, 4, 0))) __ast_str_helper(struct ast_str **buf, ssize_t max_len,
-                                                          int append, const char *fmt, va_list ap);
-#endif
+int __attribute__((format(printf, 4, 0))) __ast_str_helper(struct ast_str **buf,
+       ssize_t max_len, int append, const char *fmt, va_list ap,
+       const char *file, int lineno, const char *func);
+#define _ast_str_helper(buf, max_len, append, fmt, ap) \
+       __ast_str_helper(buf, max_len, append, fmt, ap, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 char *__ast_str_helper2(struct ast_str **buf, ssize_t max_len,
        const char *src, size_t maxsrc, int append, int escapecommas);
 
@@ -1022,7 +977,7 @@ char *__ast_str_helper2(struct ast_str **buf, ssize_t max_len,
  */
 AST_INLINE_API(int __attribute__((format(printf, 3, 0))) ast_str_set_va(struct ast_str **buf, ssize_t max_len, const char *fmt, va_list ap),
 {
-       return __ast_str_helper(buf, max_len, 0, fmt, ap);
+       return _ast_str_helper(buf, max_len, 0, fmt, ap);
 }
 )
 
@@ -1040,7 +995,7 @@ AST_INLINE_API(int __attribute__((format(printf, 3, 0))) ast_str_set_va(struct a
  */
 AST_INLINE_API(int __attribute__((format(printf, 3, 0))) ast_str_append_va(struct ast_str **buf, ssize_t max_len, const char *fmt, va_list ap),
 {
-       return __ast_str_helper(buf, max_len, 1, fmt, ap);
+       return _ast_str_helper(buf, max_len, 1, fmt, ap);
 }
 )
 
index c6c3407..c00310d 100644 (file)
@@ -509,11 +509,11 @@ long int ast_random(void);
 #endif
 
 
-#ifndef __AST_DEBUG_MALLOC
-#define ast_std_malloc malloc
-#define ast_std_calloc calloc
-#define ast_std_realloc realloc
-#define ast_std_free free
+#if !defined(NO_MALLOC_DEBUG) && !defined(STANDALONE) && !defined(STANDALONE2)
+void *ast_std_malloc(size_t size);
+void *ast_std_calloc(size_t nmemb, size_t size);
+void *ast_std_realloc(void *ptr, size_t size);
+void ast_std_free(void *ptr);
 
 /*!
  * \brief free() wrapper
@@ -521,8 +521,44 @@ long int ast_random(void);
  * ast_free_ptr should be used when a function pointer for free() needs to be passed
  * as the argument to a function. Otherwise, astmm will cause seg faults.
  */
+void ast_free_ptr(void *ptr);
+void __ast_free(void *ptr, const char *file, int lineno, const char *func);
+
+#else
+
+/*
+ * Need to defeat the MALLOC_DEBUG API when building the standalone utilities.
+ */
+
+#define ast_std_malloc malloc
+#define ast_std_calloc calloc
+#define ast_std_realloc realloc
+#define ast_std_free free
+
+#define ast_free_ptr free
 #define ast_free free
-#define ast_free_ptr ast_free
+
+#define __ast_repl_calloc(nmemb, size, file, lineno, func) \
+       calloc(nmemb, size)
+
+#define __ast_repl_calloc_cache(nmemb, size, file, lineno, func) \
+       calloc(nmemb, size)
+
+#define __ast_repl_malloc(size, file, lineno, func) \
+       malloc(size)
+
+#define __ast_repl_realloc(ptr, size, file, lineno, func) \
+       realloc(ptr, size)
+
+#define __ast_repl_strdup(s, file, lineno, func) \
+       strdup(s)
+
+#define __ast_repl_strndup(s, n, file, lineno, func) \
+       strndup(s, n)
+
+#define __ast_repl_vasprintf(strp, format, ap, file, lineno, func) \
+       vasprintf(strp, format, ap)
+#endif
 
 #if defined(AST_IN_CORE)
 #define MALLOC_FAILURE_MSG \
@@ -539,7 +575,8 @@ void * attribute_malloc __ast_malloc(size_t len, const char *file, int lineno, c
 
        DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, NULL);
 
-       if (!(p = malloc(len))) {
+       p = __ast_repl_malloc(len, file, lineno, func);
+       if (!p) {
                MALLOC_FAILURE_MSG;
        }
 
@@ -554,7 +591,24 @@ void * attribute_malloc __ast_calloc(size_t num, size_t len, const char *file, i
 
        DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, NULL);
 
-       if (!(p = calloc(num, len))) {
+       p = __ast_repl_calloc(num, len, file, lineno, func);
+       if (!p) {
+               MALLOC_FAILURE_MSG;
+       }
+
+       return p;
+}
+)
+
+AST_INLINE_API(
+void * attribute_malloc __ast_calloc_cache(size_t num, size_t len, const char *file, int lineno, const char *func),
+{
+       void *p;
+
+       DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, NULL);
+
+       p = __ast_repl_calloc_cache(num, len, file, lineno, func);
+       if (!p) {
                MALLOC_FAILURE_MSG;
        }
 
@@ -569,7 +623,8 @@ void * attribute_malloc __ast_realloc(void *p, size_t len, const char *file, int
 
        DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, NULL);
 
-       if (!(newp = realloc(p, len))) {
+       newp = __ast_repl_realloc(p, len, file, lineno, func);
+       if (!newp) {
                MALLOC_FAILURE_MSG;
        }
 
@@ -585,7 +640,8 @@ char * attribute_malloc __ast_strdup(const char *str, const char *file, int line
        DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, NULL);
 
        if (str) {
-               if (!(newstr = strdup(str))) {
+               newstr = __ast_repl_strdup(str, file, lineno, func);
+               if (!newstr) {
                        MALLOC_FAILURE_MSG;
                }
        }
@@ -602,7 +658,8 @@ char * attribute_malloc __ast_strndup(const char *str, size_t len, const char *f
        DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, NULL);
 
        if (str) {
-               if (!(newstr = strndup(str, len))) {
+               newstr = __ast_repl_strndup(str, len, file, lineno, func);
+               if (!newstr) {
                        MALLOC_FAILURE_MSG;
                }
        }
@@ -611,8 +668,30 @@ char * attribute_malloc __ast_strndup(const char *str, size_t len, const char *f
 }
 )
 
-int __attribute__((format(printf, 5, 6)))
-       __ast_asprintf(const char *file, int lineno, const char *func, char **ret, const char *fmt, ...);
+AST_INLINE_API(
+__attribute__((format(printf, 5, 6)))
+int __ast_asprintf(const char *file, int lineno, const char *func, char **ret, const char *fmt, ...),
+{
+       int res;
+       va_list ap;
+
+       DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, -1);
+
+       va_start(ap, fmt);
+       res = __ast_repl_vasprintf(ret, fmt, ap, file, lineno, func);
+       if (res < 0) {
+               /*
+                * *ret is undefined so set to NULL to ensure it is
+                * initialized to something useful.
+                */
+               *ret = NULL;
+               MALLOC_FAILURE_MSG;
+       }
+       va_end(ap);
+
+       return res;
+}
+)
 
 AST_INLINE_API(
 __attribute__((format(printf, 2, 0)))
@@ -622,7 +701,7 @@ int __ast_vasprintf(char **ret, const char *fmt, va_list ap, const char *file, i
 
        DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, -1);
 
-       res = vasprintf(ret, fmt, ap);
+       res = __ast_repl_vasprintf(ret, fmt, ap, file, lineno, func);
        if (res < 0) {
                /*
                 * *ret is undefined so set to NULL to ensure it is
@@ -636,8 +715,6 @@ int __ast_vasprintf(char **ret, const char *fmt, va_list ap, const char *file, i
 }
 )
 
-#endif /* AST_DEBUG_MALLOC */
-
 /*!
  * \brief A wrapper for malloc()
  *
@@ -671,7 +748,7 @@ int __ast_vasprintf(char **ret, const char *fmt, va_list ap, const char *file, i
  * The arguments and return value are the same as calloc()
  */
 #define ast_calloc_cache(num, len) \
-       __ast_calloc((num), (len), __FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_calloc_cache((num), (len), __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 /*!
  * \brief A wrapper for realloc()
index e348b21..bec992f 100644 (file)
@@ -4548,6 +4548,7 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
        check_init(ast_parking_stasis_init(), "Parking Core");
        check_init(ast_device_state_engine_init(), "Device State Engine");
        check_init(ast_presence_state_engine_init(), "Presence State Engine");
+       check_init(dns_core_init(), "DNS Resolver Core");
        check_init(ast_dns_system_resolver_init(), "Default DNS resolver");
        check_init(ast_security_stasis_init(), "Security Stasis Topic and Events");
        check_init(ast_image_init(), "Image");
index accd2ff..1fa35d7 100644 (file)
@@ -149,31 +149,6 @@ AST_MUTEX_DEFINE_STATIC_NOTRACKING(reglock);
                }                                    \
        } while (0)
 
-void *ast_std_malloc(size_t size)
-{
-       return malloc(size);
-}
-
-void *ast_std_calloc(size_t nmemb, size_t size)
-{
-       return calloc(nmemb, size);
-}
-
-void *ast_std_realloc(void *ptr, size_t size)
-{
-       return realloc(ptr, size);
-}
-
-void ast_std_free(void *ptr)
-{
-       free(ptr);
-}
-
-void ast_free_ptr(void *ptr)
-{
-       ast_free(ptr);
-}
-
 static void print_backtrace(struct ast_bt *bt)
 {
        int i = 0;
@@ -479,7 +454,7 @@ static void __ast_free_region(void *ptr, const char *file, int lineno, const cha
        }
 }
 
-void *__ast_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
+void *__ast_repl_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
 {
        void *ptr;
 
@@ -491,7 +466,7 @@ void *__ast_calloc(size_t nmemb, size_t size, const char *file, int lineno, cons
        return ptr;
 }
 
-void *__ast_calloc_cache(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
+void *__ast_repl_calloc_cache(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
 {
        void *ptr;
 
@@ -503,7 +478,7 @@ void *__ast_calloc_cache(size_t nmemb, size_t size, const char *file, int lineno
        return ptr;
 }
 
-void *__ast_malloc(size_t size, const char *file, int lineno, const char *func)
+void *__ast_repl_malloc(size_t size, const char *file, int lineno, const char *func)
 {
        void *ptr;
 
@@ -539,7 +514,7 @@ static struct ast_region *region_find(void *ptr)
        return reg;
 }
 
-void *__ast_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func)
+void *__ast_repl_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func)
 {
        size_t len;
        struct ast_region *found;
@@ -588,7 +563,7 @@ void *__ast_realloc(void *ptr, size_t size, const char *file, int lineno, const
        return new_mem;
 }
 
-char *__ast_strdup(const char *s, const char *file, int lineno, const char *func)
+char *__ast_repl_strdup(const char *s, const char *file, int lineno, const char *func)
 {
        size_t len;
        void *ptr;
@@ -603,7 +578,7 @@ char *__ast_strdup(const char *s, const char *file, int lineno, const char *func
        return ptr;
 }
 
-char *__ast_strndup(const char *s, size_t n, const char *file, int lineno, const char *func)
+char *__ast_repl_strndup(const char *s, size_t n, const char *file, int lineno, const char *func)
 {
        size_t len;
        char *ptr;
@@ -621,7 +596,7 @@ char *__ast_strndup(const char *s, size_t n, const char *file, int lineno, const
        return ptr;
 }
 
-int __ast_asprintf(const char *file, int lineno, const char *func, char **strp, const char *fmt, ...)
+int __ast_repl_asprintf(const char *file, int lineno, const char *func, char **strp, const char *fmt, ...)
 {
        int size;
        va_list ap, ap2;
@@ -642,7 +617,7 @@ int __ast_asprintf(const char *file, int lineno, const char *func, char **strp,
        return size;
 }
 
-int __ast_vasprintf(char **strp, const char *fmt, va_list ap, const char *file, int lineno, const char *func)
+int __ast_repl_vasprintf(char **strp, const char *fmt, va_list ap, const char *file, int lineno, const char *func)
 {
        int size;
        va_list ap2;
@@ -1543,4 +1518,83 @@ void __ast_mm_init_phase_2(void)
        ast_register_cleanup(mm_atexit_ast);
 }
 
+#else  /* !defined(__AST_DEBUG_MALLOC) */
+
+void *__ast_repl_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
+{
+       return calloc(nmemb, size);
+}
+
+void *__ast_repl_calloc_cache(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
+{
+       return calloc(nmemb, size);
+}
+
+void *__ast_repl_malloc(size_t size, const char *file, int lineno, const char *func)
+{
+       return malloc(size);
+}
+
+void __ast_free(void *ptr, const char *file, int lineno, const char *func)
+{
+       free(ptr);
+}
+
+void *__ast_repl_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func)
+{
+       return realloc(ptr, size);
+}
+
+char *__ast_repl_strdup(const char *s, const char *file, int lineno, const char *func)
+{
+       return strdup(s);
+}
+
+char *__ast_repl_strndup(const char *s, size_t n, const char *file, int lineno, const char *func)
+{
+       return strndup(s, n);
+}
+
+int __ast_repl_asprintf(const char *file, int lineno, const char *func, char **strp, const char *format, ...)
+{
+       va_list ap;
+       int rc = 0;
+
+       va_start(ap, format);
+       rc = vasprintf(strp, format, ap);
+       va_end(ap);
+
+       return rc;
+}
+
+int __ast_repl_vasprintf(char **strp, const char *format, va_list ap, const char *file, int lineno, const char *func)
+{
+       return vasprintf(strp, format, ap);
+}
+
 #endif /* defined(__AST_DEBUG_MALLOC) */
+
+void *ast_std_malloc(size_t size)
+{
+       return malloc(size);
+}
+
+void *ast_std_calloc(size_t nmemb, size_t size)
+{
+       return calloc(nmemb, size);
+}
+
+void *ast_std_realloc(void *ptr, size_t size)
+{
+       return realloc(ptr, size);
+}
+
+void ast_std_free(void *ptr)
+{
+       free(ptr);
+}
+
+void ast_free_ptr(void *ptr)
+{
+       ast_free(ptr);
+}
index d6f8575..6c4e5cf 100644 (file)
@@ -501,7 +501,7 @@ int callerid_feed_jp(struct callerid_state *cid, unsigned char *ubuf, int len, s
                                                case 0x06: /* short dial number */
                                                case 0x07: /* reserved */
                                                default:   /* reserved */
-                                                       if (option_debug > 1)
+                                                       if (DEBUG_ATLEAST(2))
                                                                ast_log(LOG_NOTICE, "did info:#1=%X\n", (unsigned)cid->rawdata[x]);
                                                        break ;
                                                }
index e4fae6d..2813e60 100644 (file)
@@ -1563,7 +1563,6 @@ int ast_cel_engine_init(void)
        ao2_global_obj_replace_unref(cel_linkedids, container);
        ao2_cleanup(container);
        if (!container) {
-               cel_engine_cleanup();
                return -1;
        }
 
@@ -1572,17 +1571,14 @@ int ast_cel_engine_init(void)
        ao2_global_obj_replace_unref(cel_dialstatus_store, container);
        ao2_cleanup(container);
        if (!container) {
-               cel_engine_cleanup();
                return -1;
        }
 
        if (STASIS_MESSAGE_TYPE_INIT(cel_generic_type)) {
-               cel_engine_cleanup();
                return -1;
        }
 
        if (ast_cli_register(&cli_status)) {
-               cel_engine_cleanup();
                return -1;
        }
 
@@ -1590,12 +1586,10 @@ int ast_cel_engine_init(void)
        ao2_global_obj_replace_unref(cel_backends, container);
        ao2_cleanup(container);
        if (!container) {
-               cel_engine_cleanup();
                return -1;
        }
 
        if (aco_info_init(&cel_cfg_info)) {
-               cel_engine_cleanup();
                return -1;
        }
 
@@ -1608,7 +1602,6 @@ int ast_cel_engine_init(void)
                struct cel_config *cel_cfg = cel_config_alloc();
 
                if (!cel_cfg) {
-                       cel_engine_cleanup();
                        return -1;
                }
 
@@ -1621,12 +1614,10 @@ int ast_cel_engine_init(void)
        }
 
        if (create_subscriptions()) {
-               cel_engine_cleanup();
                return -1;
        }
 
        if (ast_cel_check_enabled() && create_routes()) {
-               cel_engine_cleanup();
                return -1;
        }
 
index 2cc90e4..0802646 100644 (file)
 #include "asterisk/strings.h"
 #include "asterisk/utils.h"
 
-#ifdef __AST_DEBUG_MALLOC
 struct ast_var_t *_ast_var_assign(const char *name, const char *value, const char *file, int lineno, const char *function)
-#else
-struct ast_var_t *ast_var_assign(const char *name, const char *value)
-#endif
 {
        struct ast_var_t *var;
        int name_len = strlen(name) + 1;
        int value_len = strlen(value) + 1;
 
-#ifdef __AST_DEBUG_MALLOC
-       if (!(var = __ast_calloc(sizeof(*var) + name_len + value_len, sizeof(char), file, lineno, function))) {
-#else
-       if (!(var = ast_calloc(sizeof(*var) + name_len + value_len, sizeof(char)))) {
-#endif
+       var = __ast_calloc(sizeof(*var) + name_len + value_len, sizeof(char),
+               file, lineno, function);
+       if (!var) {
                return NULL;
        }
 
index 8107fce..dfa6f09 100644 (file)
@@ -281,11 +281,7 @@ struct ast_config_include {
 static void ast_variable_destroy(struct ast_variable *doomed);
 static void ast_includes_destroy(struct ast_config_include *incls);
 
-#ifdef __AST_DEBUG_MALLOC
 struct ast_variable *_ast_variable_new(const char *name, const char *value, const char *filename, const char *file, const char *func, int lineno)
-#else
-struct ast_variable *ast_variable_new(const char *name, const char *value, const char *filename)
-#endif
 {
        struct ast_variable *variable;
        int name_len = strlen(name) + 1;
@@ -297,13 +293,9 @@ struct ast_variable *ast_variable_new(const char *name, const char *value, const
                fn_len = MIN_VARIABLE_FNAME_SPACE;
        }
 
-       if (
-#ifdef __AST_DEBUG_MALLOC
-               (variable = __ast_calloc(1, fn_len + name_len + val_len + sizeof(*variable), file, lineno, func))
-#else
-               (variable = ast_calloc(1, fn_len + name_len + val_len + sizeof(*variable)))
-#endif
-               ) {
+       variable = __ast_calloc(1, fn_len + name_len + val_len + sizeof(*variable),
+               file, lineno, func);
+       if (variable) {
                char *dst = variable->stuff;    /* writable space starts here */
 
                /* Put file first so ast_include_rename() can calculate space available. */
@@ -2785,9 +2777,7 @@ int ast_config_text_file_save2(const char *configfile, const struct ast_config *
                        }
                        cat = cat->next;
                }
-               if (!option_debug) {
-                       ast_verb(2, "Saving '%s': saved\n", fn);
-               }
+               ast_verb(2, "Saving '%s': saved\n", fn);
        } else {
                ast_debug(1, "Unable to open for writing: %s\n", fn);
                ast_verb(2, "Unable to write '%s' (%s)\n", fn, strerror(errno));
index 23c7cce..c3fa15f 100644 (file)
@@ -1049,7 +1049,6 @@ static void local_shutdown(void)
 
 int ast_local_init(void)
 {
-
        if (STASIS_MESSAGE_TYPE_INIT(ast_local_optimization_begin_type)) {
                return -1;
        }
@@ -1069,17 +1068,13 @@ int ast_local_init(void)
 
        locals = ao2_container_alloc_list(AO2_ALLOC_OPT_LOCK_MUTEX, 0, NULL, locals_cmp_cb);
        if (!locals) {
-               ao2_cleanup(local_tech.capabilities);
-               local_tech.capabilities = NULL;
                return -1;
        }
 
        /* Make sure we can register our channel type */
        if (ast_channel_register(&local_tech)) {
                ast_log(LOG_ERROR, "Unable to register channel class 'Local'\n");
-               ao2_ref(locals, -1);
-               ao2_cleanup(local_tech.capabilities);
-               local_tech.capabilities = NULL;
+
                return -1;
        }
        ast_cli_register_multiple(cli_local, ARRAY_LEN(cli_local));
index a12bbdf..5edad24 100644 (file)
@@ -47,7 +47,8 @@ struct ast_datastore *__ast_datastore_alloc(
                return NULL;
        }
 
-       if (!(datastore = __ast_calloc(1, sizeof(*datastore), file, line, function))) {
+       datastore = __ast_calloc(1, sizeof(*datastore), file, line, function);
+       if (!datastore) {
                return NULL;
        }
 
index 1db9a19..5df3449 100644 (file)
@@ -911,24 +911,20 @@ int devstate_init(void)
        }
        device_state_topic_all = stasis_topic_create("ast_device_state_topic");
        if (!device_state_topic_all) {
-               devstate_cleanup();
                return -1;
        }
        device_state_topic_pool = stasis_topic_pool_create(ast_device_state_topic_all());
        if (!device_state_topic_pool) {
-               devstate_cleanup();
                return -1;
        }
        device_state_cache = stasis_cache_create_full(device_state_get_id,
                device_state_aggregate_calc, device_state_aggregate_publish);
        if (!device_state_cache) {
-               devstate_cleanup();
                return -1;
        }
        device_state_topic_cached = stasis_caching_topic_create(ast_device_state_topic_all(),
                device_state_cache);
        if (!device_state_topic_cached) {
-               devstate_cleanup();
                return -1;
        }
 
@@ -936,7 +932,6 @@ int devstate_init(void)
                devstate_change_cb, NULL);
        if (!devstate_message_sub) {
                ast_log(LOG_ERROR, "Failed to create subscription creating uncached device state aggregate events.\n");
-               devstate_cleanup();
                return -1;
        }
 
index 3e270af..6f37a5d 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "asterisk.h"
 
+#include "asterisk/_private.h"
 #include "asterisk/linkedlists.h"
 #include "asterisk/astobj2.h"
 #include "asterisk/strings.h"
@@ -537,6 +538,22 @@ static void dns_shutdown(void)
        }
 }
 
+int dns_core_init(void)
+{
+       sched = ast_sched_context_create();
+       if (!sched) {
+               return -1;
+       }
+
+       if (ast_sched_start_thread(sched)) {
+               return -1;
+       }
+
+       ast_register_cleanup(dns_shutdown);
+
+       return 0;
+}
+
 int ast_dns_resolver_register(struct ast_dns_resolver *resolver)
 {
        struct ast_dns_resolver *iter;
@@ -559,27 +576,6 @@ int ast_dns_resolver_register(struct ast_dns_resolver *resolver)
 
        AST_RWLIST_WRLOCK(&resolvers);
 
-       /* On the first registration of a resolver start a scheduler for recurring queries */
-       if (AST_LIST_EMPTY(&resolvers) && !sched) {
-               sched = ast_sched_context_create();
-               if (!sched) {
-                       ast_log(LOG_ERROR, "DNS resolver '%s' could not be registered: Failed to create scheduler for recurring DNS queries\n",
-                               resolver->name);
-                       AST_RWLIST_UNLOCK(&resolvers);
-                       return -1;
-               }
-
-               if (ast_sched_start_thread(sched)) {
-                       ast_log(LOG_ERROR, "DNS resolver '%s' could not be registered: Failed to start thread for recurring DNS queries\n",
-                               resolver->name);
-                       dns_shutdown();
-                       AST_RWLIST_UNLOCK(&resolvers);
-                       return -1;
-               }
-
-               ast_register_cleanup(dns_shutdown);
-       }
-
        AST_LIST_TRAVERSE(&resolvers, iter, next) {
                if (!strcmp(iter->name, resolver->name)) {
                        ast_log(LOG_ERROR, "A DNS resolver with the name '%s' is already registered\n", resolver->name);
index 9358577..8cb92c0 100644 (file)
@@ -255,7 +255,6 @@ int ast_dns_system_resolver_init(void)
 
        /* Return error if the task processor failed to instantiate */
        if (!dns_system_resolver_tp) {
-               dns_system_resolver_destroy();
                return DNS_SYSTEM_RESOLVER_FAILURE;
        }
 
index 8b39fe5..66d95ad 100644 (file)
@@ -2402,17 +2402,18 @@ static void test_dsp_shutdown(void)
 
 int ast_dsp_init(void)
 {
-       int res = _dsp_init(0);
+       if (_dsp_init(0)) {
+               return -1;
+       }
 
 #ifdef TEST_FRAMEWORK
-       if (!res) {
-               AST_TEST_REGISTER(test_dsp_fax_detect);
-               AST_TEST_REGISTER(test_dsp_dtmf_detect);
+       AST_TEST_REGISTER(test_dsp_fax_detect);
+       AST_TEST_REGISTER(test_dsp_dtmf_detect);
 
-               ast_register_cleanup(test_dsp_shutdown);
-       }
+       ast_register_cleanup(test_dsp_shutdown);
 #endif
-       return res;
+
+       return 0;
 }
 
 int ast_dsp_reload(void)
index 516c64a..35039e0 100644 (file)
@@ -1164,17 +1164,10 @@ int ast_features_init(void)
        int res;
 
        res = ast_features_config_init();
-       if (res) {
-               return res;
-       }
        res |= ast_register_application2(app_bridge, bridge_exec, NULL, NULL, NULL);
        res |= ast_manager_register_xml_core("Bridge", EVENT_FLAG_CALL, action_bridge);
 
-       if (res) {
-               features_shutdown();
-       } else {
-               ast_register_cleanup(features_shutdown);
-       }
+       ast_register_cleanup(features_shutdown);
 
        return res;
 }
index a773f49..195fbac 100644 (file)
@@ -2000,9 +2000,5 @@ int ast_features_config_init(void)
        res |= __ast_custom_function_register(&featuremap_function, NULL);
        res |= ast_cli_register_multiple(cli_features_config, ARRAY_LEN(cli_features_config));
 
-       if (res) {
-               ast_features_config_shutdown();
-       }
-
        return res;
 }
index eefe443..1f9c7bf 100644 (file)
 #include "asterisk/hashtab.h"
 
 
-#ifdef __AST_DEBUG_MALLOC
 static void _ast_hashtab_resize(struct ast_hashtab *tab, const char *file, int lineno, const char *func);
-#define ast_hashtab_resize(a)  _ast_hashtab_resize(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
-#else
-static void ast_hashtab_resize(struct ast_hashtab *tab);
-#endif
+#define ast_hashtab_resize(tab) \
+       _ast_hashtab_resize(tab, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 static void *ast_hashtab_lookup_internal(struct ast_hashtab *tab, const void *obj, unsigned int h);
 
 /* some standard, default routines for general use */
@@ -215,40 +213,28 @@ unsigned int ast_hashtab_hash_short(const short x)
        return x;
 }
 
-struct ast_hashtab *
-#ifdef __AST_DEBUG_MALLOC
-_ast_hashtab_create
-#else
-ast_hashtab_create
-#endif
-(int initial_buckets,
+struct ast_hashtab *_ast_hashtab_create(int initial_buckets,
        int (*compare)(const void *a, const void *b),
        int (*resize)(struct ast_hashtab *),
        int (*newsize)(struct ast_hashtab *tab),
        unsigned int (*hash)(const void *obj),
-       int do_locking
-#ifdef __AST_DEBUG_MALLOC
-       , const char *file, int lineno, const char *function
-#endif
+       int do_locking,
+       const char *file, int lineno, const char *function
 )
 {
        struct ast_hashtab *ht;
 
-#ifdef __AST_DEBUG_MALLOC
-       if (!(ht = __ast_calloc(1, sizeof(*ht), file, lineno, function)))
-#else
-       if (!(ht = ast_calloc(1, sizeof(*ht))))
-#endif
+       ht = __ast_calloc(1, sizeof(*ht), file, lineno, function);
+       if (!ht) {
                return NULL;
+       }
 
        while (!ast_is_prime(initial_buckets)) /* make sure this is prime */
                initial_buckets++;
 
-#ifdef __AST_DEBUG_MALLOC
-       if (!(ht->array = __ast_calloc(initial_buckets, sizeof(*(ht->array)), file, lineno, function))) {
-#else
-       if (!(ht->array = ast_calloc(initial_buckets, sizeof(*(ht->array))))) {
-#endif
+       ht->array = __ast_calloc(initial_buckets, sizeof(*(ht->array)),
+               file, lineno, function);
+       if (!ht->array) {
                ast_free(ht);
                return NULL;
        }
@@ -272,25 +258,19 @@ ast_hashtab_create
        return ht;
 }
 
-#ifdef __AST_DEBUG_MALLOC
 struct ast_hashtab *_ast_hashtab_dup(struct ast_hashtab *tab, void *(*obj_dup_func)(const void *obj), const char *file, int lineno, const char *func)
-#else
-struct ast_hashtab *ast_hashtab_dup(struct ast_hashtab *tab, void *(*obj_dup_func)(const void *obj))
-#endif
 {
        struct ast_hashtab *ht;
        unsigned int i;
 
-       if (!(ht = ast_calloc(1, sizeof(*ht))))
+       ht = __ast_calloc(1, sizeof(*ht), file, lineno, func);
+       if (!ht) {
                return NULL;
+       }
 
-       if (!(ht->array =
-#ifdef __AST_DEBUG_MALLOC
-               __ast_calloc(tab->hash_tab_size, sizeof(*(ht->array)), file, lineno, func)
-#else
-               ast_calloc(tab->hash_tab_size, sizeof(*(ht->array)))
-#endif
-               )) {
+       ht->array = __ast_calloc(tab->hash_tab_size, sizeof(*(ht->array)),
+               file, lineno, func);
+       if (!ht->array) {
                ast_free(ht);
                return NULL;
        }
@@ -312,12 +292,9 @@ struct ast_hashtab *ast_hashtab_dup(struct ast_hashtab *tab, void *(*obj_dup_fun
                struct ast_hashtab_bucket *b = tab->array[i];
                while (b) {
                        void *newobj = (*obj_dup_func)(b->object);
-                       if (newobj)
-#ifdef __AST_DEBUG_MALLOC
+                       if (newobj) {
                                _ast_hashtab_insert_immediate_bucket(ht, newobj, i, file, lineno, func);
-#else
-                               ast_hashtab_insert_immediate_bucket(ht, newobj, i);
-#endif
+                       }
                        b = b->next;
                }
        }
@@ -424,11 +401,7 @@ void ast_hashtab_destroy(struct ast_hashtab *tab, void (*objdestroyfunc)(void *o
        }
 }
 
-#ifdef __AST_DEBUG_MALLOC
 int _ast_hashtab_insert_immediate(struct ast_hashtab *tab, const void *obj, const char *file, int lineno, const char *func)
-#else
-int ast_hashtab_insert_immediate(struct ast_hashtab *tab, const void *obj)
-#endif
 {
        unsigned int h;
        int res=0;
@@ -441,11 +414,7 @@ int ast_hashtab_insert_immediate(struct ast_hashtab *tab, const void *obj)
 
        h = (*tab->hash)(obj) % tab->hash_tab_size;
 
-#ifdef __AST_DEBUG_MALLOC
        res = _ast_hashtab_insert_immediate_bucket(tab, obj, h, file, lineno, func);
-#else
-       res = ast_hashtab_insert_immediate_bucket(tab, obj, h);
-#endif
 
        if (tab->do_locking)
                ast_rwlock_unlock(&tab->lock);
@@ -453,11 +422,7 @@ int ast_hashtab_insert_immediate(struct ast_hashtab *tab, const void *obj)
        return res;
 }
 
-#ifdef __AST_DEBUG_MALLOC
 int _ast_hashtab_insert_immediate_bucket(struct ast_hashtab *tab, const void *obj, unsigned int h, const char *file, int lineno, const char *func)
-#else
-int ast_hashtab_insert_immediate_bucket(struct ast_hashtab *tab, const void *obj, unsigned int h)
-#endif
 {
        int c;
        struct ast_hashtab_bucket *b;
@@ -471,13 +436,10 @@ int ast_hashtab_insert_immediate_bucket(struct ast_hashtab *tab, const void *obj
        if (c + 1 > tab->largest_bucket_size)
                tab->largest_bucket_size = c + 1;
 
-       if (!(b =
-#ifdef __AST_DEBUG_MALLOC
-                       __ast_calloc(1, sizeof(*b), file, lineno, func)
-#else
-                       ast_calloc(1, sizeof(*b))
-#endif
-               )) return 0;
+       b = __ast_calloc(1, sizeof(*b), file, lineno, func);
+       if (!b) {
+               return 0;
+       }
 
        b->object = obj;
        b->next = tab->array[h];
@@ -495,11 +457,7 @@ int ast_hashtab_insert_immediate_bucket(struct ast_hashtab *tab, const void *obj
        return 1;
 }
 
-#ifdef __AST_DEBUG_MALLOC
 int _ast_hashtab_insert_safe(struct ast_hashtab *tab, const void *obj, const char *file, int lineno, const char *func)
-#else
-int ast_hashtab_insert_safe(struct ast_hashtab *tab, const void *obj)
-#endif
 {
        /* check to see if the element is already there; insert only if
           it is not there. */
@@ -511,11 +469,7 @@ int ast_hashtab_insert_safe(struct ast_hashtab *tab, const void *obj)
                ast_rwlock_wrlock(&tab->lock);
 
        if (!ast_hashtab_lookup_bucket(tab, obj, &bucket)) {
-#ifdef __AST_DEBUG_MALLOC
                int ret2 = _ast_hashtab_insert_immediate_bucket(tab, obj, bucket, file, lineno, func);
-#else
-               int ret2 = ast_hashtab_insert_immediate_bucket(tab, obj, bucket);
-#endif
 
                if (tab->do_locking)
                        ast_rwlock_unlock(&tab->lock);
@@ -634,11 +588,7 @@ int ast_hashtab_capacity( struct ast_hashtab *tab)
 /* the insert operation calls this, and is wrlock'd when it does. */
 /* if you want to call it, you should set the wrlock yourself */
 
-#ifdef __AST_DEBUG_MALLOC
 static void _ast_hashtab_resize(struct ast_hashtab *tab, const char *file, int lineno, const char *func)
-#else
-static void ast_hashtab_resize(struct ast_hashtab *tab)
-#endif
 {
        /* this function is called either internally, when the resize func returns 1, or
           externally by the user to force a resize of the hash table */
@@ -656,14 +606,10 @@ static void ast_hashtab_resize(struct ast_hashtab *tab)
                tab->array[i] = 0; /* erase old ptrs */
        }
        ast_free(tab->array);
-       if (!(tab->array =
-#ifdef __AST_DEBUG_MALLOC
-               __ast_calloc(newsize, sizeof(*(tab->array)), file, lineno, func)
-#else
-               ast_calloc(newsize, sizeof(*(tab->array)))
-#endif
-               ))
+       tab->array = __ast_calloc(newsize, sizeof(*(tab->array)), file, lineno, func);
+       if (!tab->array) {
                return;
+       }
 
        /* now sort the buckets into their rightful new slots */
        tab->resize_count++;
@@ -688,23 +634,15 @@ static void ast_hashtab_resize(struct ast_hashtab *tab)
        }
 }
 
-#ifdef __AST_DEBUG_MALLOC
 struct ast_hashtab_iter *_ast_hashtab_start_traversal(struct ast_hashtab *tab, const char *file, int lineno, const char *func)
-#else
-struct ast_hashtab_iter *ast_hashtab_start_traversal(struct ast_hashtab *tab)
-#endif
 {
        /* returns an iterator */
        struct ast_hashtab_iter *it;
 
-       if (!(it =
-#ifdef __AST_DEBUG_MALLOC
-                       __ast_calloc(1, sizeof(*it), file, lineno, func)
-#else
-                       ast_calloc(1, sizeof(*it))
-#endif
-               ))
+       it = __ast_calloc(1, sizeof(*it), file, lineno, func);
+       if (!it) {
                return NULL;
+       }
 
        it->next = tab->tlist;
        it->tab = tab;
@@ -715,23 +653,15 @@ struct ast_hashtab_iter *ast_hashtab_start_traversal(struct ast_hashtab *tab)
 }
 
 /* use this function to get a write lock */
-#ifdef __AST_DEBUG_MALLOC
 struct ast_hashtab_iter *_ast_hashtab_start_write_traversal(struct ast_hashtab *tab, const char *file, int lineno, const char *func)
-#else
-struct ast_hashtab_iter *ast_hashtab_start_write_traversal(struct ast_hashtab *tab)
-#endif
 {
        /* returns an iterator */
        struct ast_hashtab_iter *it;
 
-       if (!(it =
-#ifdef __AST_DEBUG_MALLOC
-                       __ast_calloc(1, sizeof(*it), file, lineno, func)
-#else
-                       ast_calloc(1, sizeof(*it))
-#endif
-               ))
+       it = __ast_calloc(1, sizeof(*it), file, lineno, func);
+       if (!it) {
                return NULL;
+       }
 
        it->next = tab->tlist;
        it->tab = tab;
index b7d28ce..0b390f7 100644 (file)
@@ -109,13 +109,8 @@ int ast_heap_verify(struct ast_heap *h)
        return 0;
 }
 
-#ifdef __AST_DEBUG_MALLOC
 struct ast_heap *_ast_heap_create(unsigned int init_height, ast_heap_cmp_fn cmp_fn,
-               ssize_t index_offset, const char *file, int lineno, const char *func)
-#else
-struct ast_heap *ast_heap_create(unsigned int init_height, ast_heap_cmp_fn cmp_fn,
-               ssize_t index_offset)
-#endif
+       ssize_t index_offset, const char *file, int lineno, const char *func)
 {
        struct ast_heap *h;
 
@@ -128,13 +123,8 @@ struct ast_heap *ast_heap_create(unsigned int init_height, ast_heap_cmp_fn cmp_f
                init_height = 8;
        }
 
-       if (!(h =
-#ifdef __AST_DEBUG_MALLOC
-                       __ast_calloc(1, sizeof(*h), file, lineno, func)
-#else
-                       ast_calloc(1, sizeof(*h))
-#endif
-               )) {
+       h = __ast_calloc(1, sizeof(*h), file, lineno, func);
+       if (!h) {
                return NULL;
        }
 
@@ -142,13 +132,8 @@ struct ast_heap *ast_heap_create(unsigned int init_height, ast_heap_cmp_fn cmp_f
        h->index_offset = index_offset;
        h->avail_len = (1 << init_height) - 1;
 
-       if (!(h->heap =
-#ifdef __AST_DEBUG_MALLOC
-                       __ast_malloc(h->avail_len * sizeof(void *), file, lineno, func)
-#else
-                       ast_malloc(h->avail_len * sizeof(void *))
-#endif
-               )) {
+       h->heap = __ast_malloc(h->avail_len * sizeof(void *), file, lineno, func);
+       if (!h->heap) {
                ast_free(h);
                return NULL;
        }
@@ -173,20 +158,12 @@ struct ast_heap *ast_heap_destroy(struct ast_heap *h)
 /*!
  * \brief Add a row of additional storage for the heap.
  */
-static int grow_heap(struct ast_heap *h
-#ifdef __AST_DEBUG_MALLOC
-, const char *file, int lineno, const char *func
-#endif
-)
+static int grow_heap(struct ast_heap *h, const char *file, int lineno, const char *func)
 {
        void **new_heap;
        size_t new_len = h->avail_len * 2 + 1;
 
-#ifdef __AST_DEBUG_MALLOC
        new_heap = __ast_realloc(h->heap, new_len * sizeof(void *), file, lineno, func);
-#else
-       new_heap = ast_realloc(h->heap, new_len * sizeof(void *));
-#endif
        if (!new_heap) {
                return -1;
        }
@@ -242,17 +219,9 @@ static int bubble_up(struct ast_heap *h, int i)
        return i;
 }
 
-#ifdef __AST_DEBUG_MALLOC
 int _ast_heap_push(struct ast_heap *h, void *elm, const char *file, int lineno, const char *func)
-#else
-int ast_heap_push(struct ast_heap *h, void *elm)
-#endif
 {
-       if (h->cur_len == h->avail_len && grow_heap(h
-#ifdef __AST_DEBUG_MALLOC
-               , file, lineno, func
-#endif
-               )) {
+       if (h->cur_len == h->avail_len && grow_heap(h, file, lineno, func)) {
                return -1;
        }
 
index bde6e01..8971058 100644 (file)
@@ -1130,13 +1130,13 @@ static void indications_shutdown(void)
 /*! \brief Load indications module */
 int ast_indications_init(void)
 {
-       if (!(ast_tone_zones = ao2_container_alloc(NUM_TONE_ZONE_BUCKETS,
-                       ast_tone_zone_hash, ast_tone_zone_cmp))) {
+       ast_tone_zones = ao2_container_alloc(NUM_TONE_ZONE_BUCKETS,
+                       ast_tone_zone_hash, ast_tone_zone_cmp);
+       if (!ast_tone_zones) {
                return -1;
        }
 
        if (load_indications(0)) {
-               indications_shutdown();
                return -1;
        }
 
index 90057dc..e93d1a0 100644 (file)
@@ -645,7 +645,7 @@ static struct ast_cli_entry cli_media_cache[] = {
  */
 static void media_cache_shutdown(void)
 {
-       ao2_ref(media_cache, -1);
+       ao2_cleanup(media_cache);
        media_cache = NULL;
 
        ast_cli_unregister_multiple(cli_media_cache, ARRAY_LEN(cli_media_cache));
@@ -653,7 +653,7 @@ static void media_cache_shutdown(void)
 
 int ast_media_cache_init(void)
 {
-       ast_register_atexit(media_cache_shutdown);
+       ast_register_cleanup(media_cache_shutdown);
 
        media_cache = ao2_container_alloc_options(AO2_ALLOC_OPT_LOCK_MUTEX, AO2_BUCKETS,
                ast_sorcery_object_id_hash, ast_sorcery_object_id_compare);
@@ -662,7 +662,6 @@ int ast_media_cache_init(void)
        }
 
        if (ast_cli_register_multiple(cli_media_cache, ARRAY_LEN(cli_media_cache))) {
-               ao2_ref(media_cache, -1);
                return -1;
        }
 
index ef74ab9..fedbd94 100644 (file)
@@ -443,7 +443,7 @@ uint16_t _ast_sockaddr_port(const struct ast_sockaddr *addr, const char *file, i
                && addr->ss.ss_family == AF_INET6) {
                return ntohs(((struct sockaddr_in6 *)&addr->ss)->sin6_port);
        }
-       if (option_debug >= 1) {
+       if (DEBUG_ATLEAST(1)) {
                ast_log(__LOG_DEBUG, file, line, func, "Not an IPv4 nor IPv6 address, cannot get port.\n");
        }
        return 0;
@@ -461,7 +461,7 @@ void _ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port, const char
        } else if (addr->len == sizeof(struct sockaddr_in6)
                && addr->ss.ss_family == AF_INET6) {
                ((struct sockaddr_in6 *)&addr->ss)->sin6_port = htons(port);
-       } else if (option_debug >= 1) {
+       } else if (DEBUG_ATLEAST(1)) {
                ast_log(__LOG_DEBUG, file, line, func,
                        "Not an IPv4 nor IPv6 address, cannot set port.\n");
        }
@@ -657,7 +657,7 @@ int _ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
                return 0;
        }
 
-       if (addr->ss.ss_family != AF_INET && option_debug >= 1) {
+       if (addr->ss.ss_family != AF_INET && DEBUG_ATLEAST(1)) {
                ast_log(__LOG_DEBUG, file, line, func, "Address family is not AF_INET\n");
        }
 
@@ -670,7 +670,7 @@ void _ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in
 {
        memcpy(&addr->ss, sin, sizeof(*sin));
 
-       if (addr->ss.ss_family != AF_INET && option_debug >= 1) {
+       if (addr->ss.ss_family != AF_INET && DEBUG_ATLEAST(1)) {
                ast_log(__LOG_DEBUG, file, line, func, "Address family is not AF_INET\n");
        }
 
index 942c15c..70e72fe 100644 (file)
@@ -7508,13 +7508,13 @@ static int ast_add_extension2_lockopt(struct ast_context *con,
                        ast_add_hint(tmp);
                }
        }
-       if (option_debug) {
+       if (DEBUG_ATLEAST(1)) {
                if (tmp->matchcid == AST_EXT_MATCHCID_ON) {
-                       ast_debug(1, "Added extension '%s' priority %d (CID match '%s') to %s (%p)\n",
-                                         tmp->name, tmp->priority, tmp->cidmatch_display, con->name, con);
+                       ast_log(LOG_DEBUG, "Added extension '%s' priority %d (CID match '%s') to %s (%p)\n",
+                               tmp->name, tmp->priority, tmp->cidmatch_display, con->name, con);
                } else {
-                       ast_debug(1, "Added extension '%s' priority %d to %s (%p)\n",
-                                         tmp->name, tmp->priority, con->name, con);
+                       ast_log(LOG_DEBUG, "Added extension '%s' priority %d to %s (%p)\n",
+                               tmp->name, tmp->priority, con->name, con);
                }
        }
 
index 9d43c10..7f76b97 100644 (file)
@@ -1509,7 +1509,6 @@ int load_pbx_builtins(void)
        for (x = 0; x < ARRAY_LEN(builtins); x++) {
                if (ast_register_application2(builtins[x].name, builtins[x].execute, NULL, NULL, NULL)) {
                        ast_log(LOG_ERROR, "Unable to register builtin application '%s'\n", builtins[x].name);
-                       unload_pbx_builtins();
                        return -1;
                }
        }
index a4ca260..d8afc74 100644 (file)
 #include "asterisk.h"
 
 #ifdef DEBUG_SCHEDULER
-#define DEBUG(a) do { \
-       if (option_debug) \
-               DEBUG_M(a) \
-       } while (0)
+#define DEBUG(a) a
 #else
 #define DEBUG(a)
 #endif
@@ -548,8 +545,7 @@ int ast_sched_add_variable(struct ast_sched_context *con, int when, ast_sched_cb
        }
 #ifdef DUMP_SCHEDULER
        /* Dump contents of the context while we have the lock so nothing gets screwed up by accident. */
-       if (option_debug)
-               ast_sched_dump(con);
+       ast_sched_dump(con);
 #endif
        if (con->sched_thread) {
                ast_cond_signal(&con->sched_thread->cond);
@@ -649,8 +645,7 @@ int _ast_sched_del(struct ast_sched_context *con, int id, const char *file, int
 
 #ifdef DUMP_SCHEDULER
        /* Dump contents of the context while we have the lock so nothing gets screwed up by accident. */
-       if (option_debug)
-               ast_sched_dump(con);
+       ast_sched_dump(con);
 #endif
        if (con->sched_thread) {
                ast_cond_signal(&con->sched_thread->cond);
@@ -711,25 +706,33 @@ void ast_sched_report(struct ast_sched_context *con, struct ast_str **buf, struc
 void ast_sched_dump(struct ast_sched_context *con)
 {
        struct sched *q;
-       struct timeval when = ast_tvnow();
+       struct timeval when;
        int x;
        size_t heap_size;
+
+       if (!DEBUG_ATLEAST(1)) {
+               return;
+       }
+
+       when = ast_tvnow();
 #ifdef SCHED_MAX_CACHE
-       ast_debug(1, "Asterisk Schedule Dump (%zu in Q, %u Total, %u Cache, %u high-water)\n", ast_heap_size(con->sched_heap), con->eventcnt - 1, con->schedccnt, con->highwater);
+       ast_log(LOG_DEBUG, "Asterisk Schedule Dump (%zu in Q, %u Total, %u Cache, %u high-water)\n",
+               ast_heap_size(con->sched_heap), con->eventcnt - 1, con->schedccnt, con->highwater);
 #else
-       ast_debug(1, "Asterisk Schedule Dump (%zu in Q, %u Total, %u high-water)\n", ast_heap_size(con->sched_heap), con->eventcnt - 1, con->highwater);
+       ast_log(LOG_DEBUG, "Asterisk Schedule Dump (%zu in Q, %u Total, %u high-water)\n",
+               ast_heap_size(con->sched_heap), con->eventcnt - 1, con->highwater);
 #endif
 
-       ast_debug(1, "=============================================================\n");
-       ast_debug(1, "|ID    Callback          Data              Time  (sec:ms)   |\n");
-       ast_debug(1, "+-----+-----------------+-----------------+-----------------+\n");
+       ast_log(LOG_DEBUG, "=============================================================\n");
+       ast_log(LOG_DEBUG, "|ID    Callback          Data              Time  (sec:ms)   |\n");
+       ast_log(LOG_DEBUG, "+-----+-----------------+-----------------+-----------------+\n");
        ast_mutex_lock(&con->lock);
        heap_size = ast_heap_size(con->sched_heap);
        for (x = 1; x <= heap_size; x++) {
                struct timeval delta;
                q = ast_heap_peek(con->sched_heap, x);
                delta = ast_tvsub(q->when, when);
-               ast_debug(1, "|%.4d | %-15p | %-15p | %.6ld : %.6ld |\n",
+               ast_log(LOG_DEBUG, "|%.4d | %-15p | %-15p | %.6ld : %.6ld |\n",
                        q->sched_id->id,
                        q->callback,
                        q->data,
@@ -737,7 +740,7 @@ void ast_sched_dump(struct ast_sched_context *con)
                        (long int)delta.tv_usec);
        }
        ast_mutex_unlock(&con->lock);
-       ast_debug(1, "=============================================================\n");
+       ast_log(LOG_DEBUG, "=============================================================\n");
 }
 
 /*! \brief
index c79675c..9028707 100644 (file)
@@ -388,20 +388,17 @@ int ast_sorcery_init(void)
        wizards = ao2_container_alloc_hash(AO2_ALLOC_OPT_LOCK_MUTEX, 0, WIZARD_BUCKETS,
                ast_sorcery_internal_wizard_hash_fn, NULL, ast_sorcery_internal_wizard_cmp_fn);
        if (!wizards) {
-               sorcery_cleanup();
                return -1;
        }
 
        observers = ao2_container_alloc_list(AO2_ALLOC_OPT_LOCK_RWLOCK, 0, NULL, NULL);
        if (!observers) {
-               sorcery_cleanup();
                return -1;
        }
 
        instances = ao2_container_alloc_hash(AO2_ALLOC_OPT_LOCK_RWLOCK, 0, INSTANCE_BUCKETS,
                sorcery_proxy_hash_fn, NULL, sorcery_proxy_cmp_fn);
        if (!instances) {
-               sorcery_cleanup();
                return -1;
        }
 
index c3b4ff1..0034c21 100644 (file)
@@ -25,6 +25,7 @@
        <support_level>core</support_level>
  ***/
 
+#define ASTMM_LIBC ASTMM_IGNORE
 #include "asterisk.h"
 
 #include <ctype.h>
@@ -139,7 +140,7 @@ size_t strnlen(const char *s, size_t n)
 }
 #endif /* !HAVE_STRNLEN */
 
-#if !defined(HAVE_STRNDUP) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_STRNDUP)
 char *strndup(const char *s, size_t n)
 {
        size_t len = strnlen(s, n);
@@ -151,9 +152,9 @@ char *strndup(const char *s, size_t n)
        new[len] = '\0';
        return memcpy(new, s, len);
 }
-#endif /* !defined(HAVE_STRNDUP) && !defined(__AST_DEBUG_MALLOC) */
+#endif /* !defined(HAVE_STRNDUP) */
 
-#if !defined(HAVE_VASPRINTF) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_VASPRINTF)
 int vasprintf(char **strp, const char *fmt, va_list ap)
 {
        int size;
@@ -171,7 +172,7 @@ int vasprintf(char **strp, const char *fmt, va_list ap)
 
        return size;
 }
-#endif /* !defined(HAVE_VASPRINTF) && !defined(__AST_DEBUG_MALLOC) */
+#endif /* !defined(HAVE_VASPRINTF) */
 
 #ifndef HAVE_TIMERSUB
 void timersub(struct timeval *tvend, struct timeval *tvstart, struct timeval *tvdiff)
@@ -205,7 +206,7 @@ void timersub(struct timeval *tvend, struct timeval *tvstart, struct timeval *tv
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
-#if !defined(HAVE_ASPRINTF) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_ASPRINTF)
 int asprintf(char **str, const char *fmt, ...)
 {
        va_list ap;
@@ -218,7 +219,7 @@ int asprintf(char **str, const char *fmt, ...)
 
        return ret;
 }
-#endif /* !defined(HAVE_ASPRINTF) && !defined(__AST_DEBUG_MALLOC) */
+#endif /* !defined(HAVE_ASPRINTF) */
 
 #ifndef HAVE_STRTOQ
 #ifndef LONG_MIN
index 7e52bbc..30aa8cd 100644 (file)
@@ -55,12 +55,6 @@ static size_t optimal_alloc_size(size_t size)
        return (1 << count) - ALLOCATOR_OVERHEAD;
 }
 
-static void *calloc_wrapper(unsigned int num_structs, size_t struct_size,
-       const char *file, int lineno, const char *func)
-{
-       return __ast_calloc(num_structs, struct_size, file, lineno, func);
-}
-
 /*! \brief add a new block to the pool.
  * We can only allocate from the topmost pool, so the
  * fields in *mgr reflect the size of that only.
@@ -71,7 +65,8 @@ static int add_string_pool(struct ast_string_field_mgr *mgr, struct ast_string_f
        struct ast_string_field_pool *pool;
        size_t alloc_size = optimal_alloc_size(sizeof(*pool) + size);
 
-       if (!(pool = calloc_wrapper(1, alloc_size, file, lineno, func))) {
+       pool = __ast_calloc(1, alloc_size, file, lineno, func);
+       if (!pool) {
                return -1;
        }
 
@@ -184,11 +179,11 @@ int __ast_string_field_init(struct ast_string_field_mgr *mgr, struct ast_string_
        }
 
        mgr->last_alloc = NULL;
-#if defined(__AST_DEBUG_MALLOC)
+       /* v-- MALLOC_DEBUG information */
        mgr->owner_file = file;
        mgr->owner_func = func;
        mgr->owner_line = lineno;
-#endif
+       /* ^-- MALLOC_DEBUG information */
 
        if (AST_VECTOR_INIT(&mgr->string_fields, initial_vector_size)) {
                return -1;
@@ -227,13 +222,10 @@ ast_string_field __ast_string_field_alloc_space(struct ast_string_field_mgr *mgr
                        new_size *= 2;
                }
 
-#if defined(__AST_DEBUG_MALLOC)
-               if (add_string_pool(mgr, pool_head, new_size, mgr->owner_file, mgr->owner_line, mgr->owner_func))
-                       return NULL;
-#else
-               if (add_string_pool(mgr, pool_head, new_size, __FILE__, __LINE__, __FUNCTION__))
+               if (add_string_pool(mgr, pool_head, new_size,
+                       mgr->owner_file, mgr->owner_line, mgr->owner_func)) {
                        return NULL;
-#endif
+               }
        }
 
        /* pool->base is always aligned (gcc aligned attribute). We ensure that
@@ -388,8 +380,8 @@ void __ast_string_field_ptr_build(struct ast_string_field_mgr *mgr,
 }
 
 void *__ast_calloc_with_stringfields(unsigned int num_structs, size_t struct_size,
-       size_t field_mgr_offset, size_t field_mgr_pool_offset, size_t pool_size, const char *file,
-       int lineno, const char *func)
+       size_t field_mgr_offset, size_t field_mgr_pool_offset, size_t pool_size,
+       const char *file, int lineno, const char *func)
 {
        struct ast_string_field_mgr *mgr;
        struct ast_string_field_pool *pool;
@@ -402,7 +394,8 @@ void *__ast_calloc_with_stringfields(unsigned int num_structs, size_t struct_siz
 
        ast_assert(num_structs == 1);
 
-       if (!(allocation = calloc_wrapper(num_structs, size_to_alloc, file, lineno, func))) {
+       allocation = __ast_calloc(num_structs, size_to_alloc, file, lineno, func);
+       if (!allocation) {
                return NULL;
        }
 
@@ -426,11 +419,11 @@ void *__ast_calloc_with_stringfields(unsigned int num_structs, size_t struct_siz
        mgr->embedded_pool = pool;
        *pool_head = pool;
        pool->size = size_to_alloc - struct_size - sizeof(*pool);
-#if defined(__AST_DEBUG_MALLOC)
-               mgr->owner_file = file;
-               mgr->owner_func = func;
-               mgr->owner_line = lineno;
-#endif
+       /* v-- MALLOC_DEBUG information */
+       mgr->owner_file = file;
+       mgr->owner_func = func;
+       mgr->owner_line = lineno;
+       /* ^-- MALLOC_DEBUG information */
 
        return allocation;
 }
index ad96df2..640af61 100644 (file)
  *     ast_str_append_va(...)
  */
 
-#ifdef __AST_DEBUG_MALLOC
-int __ast_debug_str_helper(struct ast_str **buf, ssize_t max_len,
-       int append, const char *fmt, va_list ap, const char *file, int lineno, const char *function)
-#else
 int __ast_str_helper(struct ast_str **buf, ssize_t max_len,
-       int append, const char *fmt, va_list ap)
-#endif
+       int append, const char *fmt, va_list ap,
+       const char *file, int lineno, const char *function)
 {
        int res;
        int added;
@@ -110,13 +106,7 @@ int __ast_str_helper(struct ast_str **buf, ssize_t max_len,
                        need = max_len;
                }
 
-               if (
-#ifdef __AST_DEBUG_MALLOC
-                       _ast_str_make_space(buf, need, file, lineno, function)
-#else
-                       ast_str_make_space(buf, need)
-#endif
-                       ) {
+               if (_ast_str_make_space(buf, need, file, lineno, function)) {
                        ast_log_safe(LOG_VERBOSE, "failed to extend from %d to %d\n",
                                (int) (*buf)->__AST_STR_LEN, need);
 
index 928b89b..c2e07fc 100644 (file)
@@ -2322,28 +2322,6 @@ int ast_parse_digest(const char *digest, struct ast_http_digest *d, int request,
        return 0;
 }
 
-#ifndef __AST_DEBUG_MALLOC
-int __ast_asprintf(const char *file, int lineno, const char *func, char **ret, const char *fmt, ...)
-{
-       int res;
-       va_list ap;
-
-       va_start(ap, fmt);
-       res = vasprintf(ret, fmt, ap);
-       if (res < 0) {
-               /*
-                * *ret is undefined so set to NULL to ensure it is
-                * initialized to something useful.
-                */
-               *ret = NULL;
-               MALLOC_FAILURE_MSG;
-       }
-       va_end(ap);
-
-       return res;
-}
-#endif
-
 int ast_get_tid(void)
 {
        int ret = -1;
index c25609f..b78061c 100644 (file)
@@ -138,7 +138,7 @@ size_t strnlen(const char *s, size_t n)
 }
 #endif /* !HAVE_STRNLEN */
 
-#if !defined(HAVE_STRNDUP) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_STRNDUP)
 char *strndup(const char *s, size_t n)
 {
        size_t len = strnlen(s, n);
@@ -150,9 +150,9 @@ char *strndup(const char *s, size_t n)
        new[len] = '\0';
        return memcpy(new, s, len);
 }
-#endif /* !defined(HAVE_STRNDUP) && !defined(__AST_DEBUG_MALLOC) */
+#endif /* !defined(HAVE_STRNDUP) */
 
-#if !defined(HAVE_VASPRINTF) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_VASPRINTF)
 int vasprintf(char **strp, const char *fmt, va_list ap)
 {
        int size;
@@ -170,7 +170,7 @@ int vasprintf(char **strp, const char *fmt, va_list ap)
 
        return size;
 }
-#endif /* !defined(HAVE_VASPRINTF) && !defined(__AST_DEBUG_MALLOC) */
+#endif /* !defined(HAVE_VASPRINTF) */
 
 /*
  * Based on Code from bsd-asprintf from OpenSSH
@@ -191,7 +191,7 @@ int vasprintf(char **strp, const char *fmt, va_list ap)
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
-#if !defined(HAVE_ASPRINTF) && !defined(__AST_DEBUG_MALLOC)
+#if !defined(HAVE_ASPRINTF)
 int asprintf(char **str, const char *fmt, ...)
 {
         va_list ap;
@@ -204,7 +204,7 @@ int asprintf(char **str, const char *fmt, ...)
 
         return ret;
 }
-#endif /* !defined(HAVE_ASPRINTF) && !defined(__AST_DEBUG_MALLOC) */
+#endif /* !defined(HAVE_ASPRINTF) */
 
 #ifndef HAVE_GETLOADAVG
 #ifdef linux
index 10265c9..15d9ec0 100644 (file)
@@ -548,11 +548,11 @@ static struct ast_variable **realtime_ldap_result_to_vars(struct ldap_table_conf
                        } /*!< while (ldap_attribute_name) */
                        ber_free(ber, 0);
                        if (static_table_config == table_config) {
-                               if (option_debug > 2) {
+                               if (DEBUG_ATLEAST(3)) {
                                        const struct ast_variable *tmpdebug = variable_named(var, "variable_name");
                                        const struct ast_variable *tmpdebug2 = variable_named(var, "variable_value");
                                        if (tmpdebug && tmpdebug2) {
-                                               ast_debug(3, "Added to vars - %s = %s\n", tmpdebug->value, tmpdebug2->value);
+                                               ast_log(LOG_DEBUG, "Added to vars - %s = %s\n", tmpdebug->value, tmpdebug2->value);
                                        }
                                }
                                vars[entry_index++] = var;
@@ -1618,14 +1618,14 @@ static int update2_ldap(const char *basedn, const char *table_name, const struct
 
        /* Ready to update */
        ast_debug(3, "Modifying %zu matched entries\n", entry_count);
-       if (option_debug > 2) {
+       if (DEBUG_ATLEAST(3)) {
                size_t i;
                for (i = 0; modifications[i]; i++) {
                        if (modifications[i]->mod_op != LDAP_MOD_DELETE) {
-                               ast_debug(3, "%s => %s\n", modifications[i]->mod_type,
-                                               modifications[i]->mod_values[0]);
+                               ast_log(LOG_DEBUG, "%s => %s\n", modifications[i]->mod_type,
+                                       modifications[i]->mod_values[0]);
                        } else {
-                               ast_debug(3, "deleting %s\n", modifications[i]->mod_type);
+                               ast_log(LOG_DEBUG, "deleting %s\n", modifications[i]->mod_type);
                        }
                }
        }
index 186e89d..5d6c2c6 100644 (file)
@@ -30,6 +30,7 @@
 
 /*** MODULEINFO
        <depend>res_odbc</depend>
+       <depend>generic_odbc</depend>
        <support_level>core</support_level>
  ***/
 
index cee4e48..c259b30 100644 (file)
@@ -1528,16 +1528,16 @@ static int parse_config(int is_reload)
 
        ast_config_destroy(config);
 
-       if (option_debug) {
+       if (DEBUG_ATLEAST(1)) {
                if (!ast_strlen_zero(dbhost)) {
-                       ast_debug(1, "PostgreSQL RealTime Host: %s\n", dbhost);
-                       ast_debug(1, "PostgreSQL RealTime Port: %i\n", dbport);
+                       ast_log(LOG_DEBUG, "PostgreSQL RealTime Host: %s\n", dbhost);
+                       ast_log(LOG_DEBUG, "PostgreSQL RealTime Port: %i\n", dbport);
                } else {
-                       ast_debug(1, "PostgreSQL RealTime Socket: %s\n", dbsock);
+                       ast_log(LOG_DEBUG, "PostgreSQL RealTime Socket: %s\n", dbsock);
                }
-               ast_debug(1, "PostgreSQL RealTime User: %s\n", dbuser);
-               ast_debug(1, "PostgreSQL RealTime Password: %s\n", dbpass);
-               ast_debug(1, "PostgreSQL RealTime DBName: %s\n", dbname);
+               ast_log(LOG_DEBUG, "PostgreSQL RealTime User: %s\n", dbuser);
+               ast_log(LOG_DEBUG, "PostgreSQL RealTime Password: %s\n", dbpass);
+               ast_log(LOG_DEBUG, "PostgreSQL RealTime DBName: %s\n", dbname);
        }
 
        if (!pgsql_reconnect(NULL)) {
index 83d2dca..af3b124 100644 (file)
@@ -1773,7 +1773,7 @@ static int load_module(void)
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Realtime SQLite configuration",
-       .support_level = AST_MODULE_SUPPORT_EXTENDED,
+       .support_level = AST_MODULE_SUPPORT_DEPRECATED,
        .load = load_module,
        .unload = unload_module,
        .load_pri = AST_MODPRI_REALTIME_DRIVER,
index 95acf55..efedab7 100644 (file)
@@ -1007,7 +1007,7 @@ static int unload_module(void)
 
 /* usecount semantics need to be defined */
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Call Monitoring Resource",
-       .support_level = AST_MODULE_SUPPORT_CORE,
+       .support_level = AST_MODULE_SUPPORT_DEPRECATED,
        .load = load_module,
        .unload = unload_module,
        .load_pri = AST_MODPRI_CHANNEL_DEPEND,
index fcd190b..f252017 100644 (file)
@@ -876,15 +876,30 @@ static int handle_negotiated_sdp(struct ast_sip_session *session, const pjmedia_
        struct ast_stream_topology *topology;
        unsigned int changed = 0;
 
-       /* This situation can legitimately happen when an SDP is received in a
-        * 183 Session Progress message.  In that case, everything's been done
-        * by the time this function is called and there are no more pending
-        * streams.
-        */
        if (!session->pending_media_state->topology) {
-               ast_debug(1, "Pending topology was NULL for channel '%s'\n",
-                       session->channel ? ast_channel_name(session->channel) : "unknown");
-               return 0;
+               if (session->active_media_state->topology) {
+                       /*
+                        * This happens when we have negotiated media after receiving a 183,
+                        * and we're now receiving a 200 with a new SDP.  In this case, there
+                        * is active_media_state, but the pending_media_state has been reset.
+                        */
+                       struct ast_sip_session_media_state *active_media_state_clone;
+
+                       active_media_state_clone =
+                               ast_sip_session_media_state_clone(session->active_media_state);
+                       if (!active_media_state_clone) {
+                               ast_log(LOG_WARNING, "Unable to clone active media state for channel '%s'\n",
+                                       session->channel ? ast_channel_name(session->channel) : "unknown");
+                               return -1;
+                       }
+
+                       ast_sip_session_media_state_free(session->pending_media_state);
+                       session->pending_media_state = active_media_state_clone;
+               } else {
+                       ast_log(LOG_WARNING, "No pending or active media state for channel '%s'\n",
+                               session->channel ? ast_channel_name(session->channel) : "unknown");
+                       return -1;
+               }
        }
 
        /* If we're handling negotiated streams, then we should already have set
index b53b38a..d0e4824 100644 (file)
@@ -4565,11 +4565,9 @@ static int ast_rtp_write(struct ast_rtp_instance *instance, struct ast_frame *fr
        format = frame->subclass.format;
        if (ast_format_cmp(rtp->lasttxformat, format) == AST_FORMAT_CMP_NOT_EQUAL) {
                /* Oh dear, if the format changed we will have to set up a new smoother */
-               if (option_debug > 0) {
-                       ast_debug(1, "Ooh, format changed from %s to %s\n",
-                               ast_format_get_name(rtp->lasttxformat),
-                               ast_format_get_name(frame->subclass.format));
-               }
+               ast_debug(1, "Ooh, format changed from %s to %s\n",
+                       ast_format_get_name(rtp->lasttxformat),
+                       ast_format_get_name(frame->subclass.format));
                ao2_replace(rtp->lasttxformat, format);
                if (rtp->smoother) {
                        ast_smoother_free(rtp->smoother);
@@ -5744,7 +5742,7 @@ static int bridge_p2p_rtp_write(struct ast_rtp_instance *instance,
                                ast_sockaddr_stringify(&remote_address),
                                strerror(errno));
                } else if (((ast_test_flag(bridged, FLAG_NAT_ACTIVE) == FLAG_NAT_INACTIVE) || rtpdebug) && !ast_test_flag(bridged, FLAG_NAT_INACTIVE_NOWARN)) {
-                       if (option_debug || rtpdebug) {
+                       if (rtpdebug || DEBUG_ATLEAST(1)) {
                                ast_log(LOG_WARNING,
                                        "RTP NAT: Can't write RTP to private "
                                        "address %s, waiting for other end to "
@@ -6117,13 +6115,14 @@ static struct ast_frame *ast_rtp_read(struct ast_rtp_instance *instance, int rtc
        if (ext) {
                hdrlen += (ntohl(rtpheader[hdrlen/4]) & 0xffff) << 2;
                hdrlen += 4;
-               if (option_debug) {
+               if (DEBUG_ATLEAST(1)) {
                        unsigned int profile;
                        profile = (ntohl(rtpheader[3]) & 0xffff0000) >> 16;
-                       if (profile == 0x505a)
-                               ast_debug(1, "Found Zfone extension in RTP stream - zrtp - not supported.\n");
-                       else
-                               ast_debug(1, "Found unknown RTP Extensions %x\n", profile);
+                       if (profile == 0x505a) {
+                               ast_log(LOG_DEBUG, "Found Zfone extension in RTP stream - zrtp - not supported.\n");
+                       } else {
+                               ast_log(LOG_DEBUG, "Found unknown RTP Extensions %x\n", profile);
+                       }
                }
        }
 
index 1077f23..cda1291 100644 (file)
@@ -41,7 +41,6 @@
 
 #if HAVE_SRTP_VERSION > 1
 # include <srtp2/srtp.h>
-# include <srtp2/crypto_types.h>
 # include "srtp/srtp_compat.h"
 # include <openssl/rand.h>
 #else
index ac216ff..909524e 100644 (file)
@@ -123,18 +123,9 @@ static int split_path(const char *path, char **dir, char **file)
                return -1;
        }
 
-#if defined(__AST_DEBUG_MALLOC)
        *dir = ast_strdup(real_dir); /* Dupe so we can ast_free() */
-#else
-       /*
-        * ast_std_free() and ast_free() are the same thing at this time
-        * so we don't need to dupe.
-        */
-       *dir = real_dir;
-       real_dir = NULL;
-#endif /* defined(__AST_DEBUG_MALLOC) */
        *file = ast_strdup(file_portion);
-       return 0;
+       return (*dir && *file) ? 0 : -1;
 }
 
 struct match_recording_data {
index f7b9f0c..b95b332 100644 (file)
@@ -66,9 +66,9 @@ ifeq ($(SPECIAL_TARGETS),)
         endif
         ifeq ($(findstring MALLOC_DEBUG,$(MENUSELECT_CFLAGS)),MALLOC_DEBUG)
             CF += -DMALLOC_DEBUG
-            MALLOC_DEBUG_LIBS = source/pjsip-apps/lib/libasterisk_malloc_debug.a
-            MALLOC_DEBUG_LDFLAGS = -L$(PJDIR)/pjsip-apps/lib -Wl,-whole-archive -lasterisk_malloc_debug -Wl,-no-whole-archive
         endif
+        MALLOC_DEBUG_LIBS = source/pjsip-apps/lib/libasterisk_malloc_debug.a
+        MALLOC_DEBUG_LDFLAGS = -L$(PJDIR)/pjsip-apps/lib -Wl,-whole-archive -lasterisk_malloc_debug -Wl,-no-whole-archive
         ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
             CF += -O3
         endif
diff --git a/third-party/pjproject/patches/0070-sdp_media_fmt.patch b/third-party/pjproject/patches/0070-sdp_media_fmt.patch
deleted file mode 100644 (file)
index 0a0977d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c
-index a3dd80b..0a13206 100644
---- a/pjmedia/src/pjmedia/sdp.c
-+++ b/pjmedia/src/pjmedia/sdp.c
-@@ -1516,11 +1516,12 @@ PJ_DEF(pj_status_t) pjmedia_sdp_validate2(const pjmedia_sdp_session *sdp,
-            * RTC based programs sends "null" for instant messaging!
-            */
-           if (pj_isdigit(*m->desc.fmt[j].ptr)) {
--              unsigned pt = pj_strtoul(&m->desc.fmt[j]);
-+              unsigned long pt;
-+              pj_status_t status = pj_strtoul3(&m->desc.fmt[j], &pt, 10);
-               /* Payload type is between 0 and 127. 
-                */
--              CHECK( pt <= 127, PJMEDIA_SDP_EINPT);
-+              CHECK( status == PJ_SUCCESS && pt <= 127, PJMEDIA_SDP_EINPT);
-               /* If port is not zero, then for each dynamic payload type, an
-                * rtpmap attribute must be specified.
diff --git a/third-party/pjproject/patches/0071-sdp_fmtp_attr.patch b/third-party/pjproject/patches/0071-sdp_fmtp_attr.patch
deleted file mode 100644 (file)
index 8228d5d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c
-index a3dd80b..6117e07 100644
---- a/pjmedia/src/pjmedia/sdp.c
-+++ b/pjmedia/src/pjmedia/sdp.c
-@@ -256,7 +256,8 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_rtpmap( const pjmedia_sdp_attr *attr,
-     PJ_ASSERT_RETURN(pj_strcmp2(&attr->name, "rtpmap")==0, PJ_EINVALIDOP);
--    PJ_ASSERT_RETURN(attr->value.slen != 0, PJMEDIA_SDP_EINATTR);
-+    if (attr->value.slen == 0)
-+        return PJMEDIA_SDP_EINATTR;
-     init_sdp_parser();
-@@ -341,6 +342,9 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_fmtp( const pjmedia_sdp_attr *attr,
-     PJ_ASSERT_RETURN(pj_strcmp2(&attr->name, "fmtp")==0, PJ_EINVALIDOP);
-+    if (attr->value.slen == 0)
-+        return PJMEDIA_SDP_EINATTR;
-+
-     /* fmtp BNF:
-      *        a=fmtp:<format> <format specific parameter>
-      */
-@@ -379,6 +383,9 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_rtcp(const pjmedia_sdp_attr *attr,
-     PJ_ASSERT_RETURN(pj_strcmp2(&attr->name, "rtcp")==0, PJ_EINVALIDOP);
-+    if (attr->value.slen == 0)
-+        return PJMEDIA_SDP_EINATTR;
-+
-     init_sdp_parser();
-     /* fmtp BNF:
index aaf7985..061bdd4 100644 (file)
@@ -22,7 +22,7 @@
 #include <string.h>
 #include <stdarg.h>
 
-int __ast_asprintf(const char *file, int lineno, const char *func, char **strp, const char *format, ...)
+int __ast_repl_asprintf(const char *file, int lineno, const char *func, char **strp, const char *format, ...)
 {
        va_list ap;
        int rc = 0;
@@ -34,7 +34,7 @@ int __ast_asprintf(const char *file, int lineno, const char *func, char **strp,
        return rc;
 }
 
-void *__ast_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
+void *__ast_repl_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
 {
        return calloc(nmemb, size);
 }
@@ -44,27 +44,27 @@ void __ast_free(void *ptr, const char *file, int lineno, const char *func)
        free(ptr);
 }
 
-void *__ast_malloc(size_t size, const char *file, int lineno, const char *func)
+void *__ast_repl_malloc(size_t size, const char *file, int lineno, const char *func)
 {
        return malloc(size);
 }
 
-void *__ast_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func)
+void *__ast_repl_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func)
 {
        return realloc(ptr, size);
 }
 
-char *__ast_strdup(const char *s, const char *file, int lineno, const char *func)
+char *__ast_repl_strdup(const char *s, const char *file, int lineno, const char *func)
 {
        return strdup(s);
 }
 
-char *__ast_strndup(const char *s, size_t n, const char *file, int lineno, const char *func)
+char *__ast_repl_strndup(const char *s, size_t n, const char *file, int lineno, const char *func)
 {
        return strndup(s, n);
 }
 
-int __ast_vasprintf(char **strp, const char *format, va_list ap, const char *file, int lineno, const char *func)
+int __ast_repl_vasprintf(char **strp, const char *format, va_list ap, const char *file, int lineno, const char *func)
 {
        return vasprintf(strp, format, ap);
 }
index 44c4737..e5e04f1 100644 (file)
 extern "C" {
 #endif
 
-int __ast_asprintf(const char *file, int lineno, const char *func, char **strp, const char *format, ...)
+int __ast_repl_asprintf(const char *file, int lineno, const char *func, char **strp, const char *format, ...)
        __attribute__((format(printf, 5, 6)));
-void *__ast_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func);
+void *__ast_repl_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func);
 void __ast_free(void *ptr, const char *file, int lineno, const char *func);
-void *__ast_malloc(size_t size, const char *file, int lineno, const char *func);
-void *__ast_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func);
-char *__ast_strdup(const char *s, const char *file, int lineno, const char *func);
-char *__ast_strndup(const char *s, size_t n, const char *file, int lineno, const char *func);
-int __ast_vasprintf(char **strp, const char *format, va_list ap, const char *file, int lineno, const char *func)
+void *__ast_repl_malloc(size_t size, const char *file, int lineno, const char *func);
+void *__ast_repl_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func);
+char *__ast_repl_strdup(const char *s, const char *file, int lineno, const char *func);
+char *__ast_repl_strndup(const char *s, size_t n, const char *file, int lineno, const char *func);
+int __ast_repl_vasprintf(char **strp, const char *format, va_list ap, const char *file, int lineno, const char *func)
        __attribute__((format(printf, 2, 0)));
 
 /* Undefine any macros */
@@ -48,28 +48,28 @@ int __ast_vasprintf(char **strp, const char *format, va_list ap, const char *fil
 
  /* Provide our own definitions */
 #define asprintf(a, b, c...) \
-       __ast_asprintf(__FILE__, __LINE__, __PRETTY_FUNCTION__, a, b, c)
+       __ast_repl_asprintf(__FILE__, __LINE__, __PRETTY_FUNCTION__, a, b, c)
 
 #define calloc(a,b) \
-       __ast_calloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_calloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #define free(a) \
        __ast_free(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #define malloc(a) \
-       __ast_malloc(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_malloc(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #define realloc(a,b) \
-       __ast_realloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_realloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #define strdup(a) \
-       __ast_strdup(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_strdup(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #define strndup(a,b) \
-       __ast_strndup(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_strndup(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #define vasprintf(a,b,c) \
-       __ast_vasprintf(a,b,c,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+       __ast_repl_vasprintf(a,b,c,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #ifdef __cplusplus
 }
index d5aee82..67e3451 100644 (file)
@@ -8,7 +8,7 @@
  * Since both pjproject and asterisk source files will include config_site.h,
  * we need to make sure that only pjproject source files include asterisk_malloc_debug.h.
  */
-#if defined(MALLOC_DEBUG) && !defined(_ASTERISK_ASTMM_H)
+#if !defined(_ASTERISK_ASTMM_H)
 #include "asterisk_malloc_debug.h"
 #endif
 
index a90a523..b6daf19 100644 (file)
@@ -1,2 +1,2 @@
 
-PJPROJECT_VERSION = 2.7.1
+PJPROJECT_VERSION = 2.7.2