[asterisk-commits] oej: branch oej/iaxtrunkfix-1.4 r93922 - in /team/oej/iaxtrunkfix-1.4: ./ app...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Dec 19 04:19:37 CST 2007


Author: oej
Date: Wed Dec 19 04:19:37 2007
New Revision: 93922

URL: http://svn.digium.com/view/asterisk?view=rev&rev=93922
Log:
Reset, resolve

Removed:
    team/oej/iaxtrunkfix-1.4/build_tools/prep_moduledeps
Modified:
    team/oej/iaxtrunkfix-1.4/   (props changed)
    team/oej/iaxtrunkfix-1.4/Makefile
    team/oej/iaxtrunkfix-1.4/Makefile.moddir_rules
    team/oej/iaxtrunkfix-1.4/apps/   (props changed)
    team/oej/iaxtrunkfix-1.4/apps/Makefile
    team/oej/iaxtrunkfix-1.4/apps/app_queue.c
    team/oej/iaxtrunkfix-1.4/apps/app_voicemail.c
    team/oej/iaxtrunkfix-1.4/build_tools/make_version
    team/oej/iaxtrunkfix-1.4/build_tools/prep_tarball
    team/oej/iaxtrunkfix-1.4/cdr/   (props changed)
    team/oej/iaxtrunkfix-1.4/cdr/Makefile
    team/oej/iaxtrunkfix-1.4/channels/   (props changed)
    team/oej/iaxtrunkfix-1.4/channels/Makefile
    team/oej/iaxtrunkfix-1.4/channels/chan_h323.c
    team/oej/iaxtrunkfix-1.4/channels/chan_iax2.c
    team/oej/iaxtrunkfix-1.4/channels/chan_mgcp.c
    team/oej/iaxtrunkfix-1.4/channels/chan_misdn.c
    team/oej/iaxtrunkfix-1.4/channels/chan_sip.c
    team/oej/iaxtrunkfix-1.4/channels/chan_skinny.c
    team/oej/iaxtrunkfix-1.4/channels/chan_zap.c
    team/oej/iaxtrunkfix-1.4/codecs/   (props changed)
    team/oej/iaxtrunkfix-1.4/codecs/Makefile
    team/oej/iaxtrunkfix-1.4/configure
    team/oej/iaxtrunkfix-1.4/configure.ac
    team/oej/iaxtrunkfix-1.4/formats/   (props changed)
    team/oej/iaxtrunkfix-1.4/formats/Makefile
    team/oej/iaxtrunkfix-1.4/funcs/   (props changed)
    team/oej/iaxtrunkfix-1.4/funcs/Makefile
    team/oej/iaxtrunkfix-1.4/include/asterisk/autoconfig.h.in
    team/oej/iaxtrunkfix-1.4/include/asterisk/lock.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/time.h
    team/oej/iaxtrunkfix-1.4/main/channel.c
    team/oej/iaxtrunkfix-1.4/main/config.c
    team/oej/iaxtrunkfix-1.4/main/pbx.c
    team/oej/iaxtrunkfix-1.4/main/translate.c
    team/oej/iaxtrunkfix-1.4/main/utils.c
    team/oej/iaxtrunkfix-1.4/makeopts.in
    team/oej/iaxtrunkfix-1.4/pbx/   (props changed)
    team/oej/iaxtrunkfix-1.4/pbx/Makefile
    team/oej/iaxtrunkfix-1.4/res/   (props changed)
    team/oej/iaxtrunkfix-1.4/res/Makefile
    team/oej/iaxtrunkfix-1.4/res/res_agi.c

Propchange: team/oej/iaxtrunkfix-1.4/
------------------------------------------------------------------------------
    automerge = http://www.codename-pineapple.org/

Propchange: team/oej/iaxtrunkfix-1.4/
------------------------------------------------------------------------------
Binary property 'branch-1.2-blocked' - no diff available.

Propchange: team/oej/iaxtrunkfix-1.4/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.

Propchange: team/oej/iaxtrunkfix-1.4/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Dec 19 04:19:37 2007
@@ -1,1 +1,1 @@
-/branches/1.4:1-92665
+/branches/1.4:1-93920

Modified: team/oej/iaxtrunkfix-1.4/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/Makefile?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/Makefile (original)
+++ team/oej/iaxtrunkfix-1.4/Makefile Wed Dec 19 04:19:37 2007
@@ -58,6 +58,7 @@
 export SOLINK
 export STRIP
 export DOWNLOAD
+export AWK
 export GREP
 export ID
 export OSARCH
@@ -238,10 +239,10 @@
   ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include
 endif
 
-ASTERISKVERSION:=$(shell build_tools/make_version .)
+ASTERISKVERSION:=$(shell GREP=$(GREP) AWK=$(AWK) build_tools/make_version .)
 
 ifneq ($(wildcard .version),)
-  ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
+  ASTERISKVERSIONNUM:=$(shell $(AWK) -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
   RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
 else
   RPMVERSION=unknown
@@ -263,6 +264,7 @@
 MOD_SUBDIRS_EMBED_LDSCRIPT:=$(MOD_SUBDIRS:%=%-embed-ldscript)
 MOD_SUBDIRS_EMBED_LDFLAGS:=$(MOD_SUBDIRS:%=%-embed-ldflags)
 MOD_SUBDIRS_EMBED_LIBS:=$(MOD_SUBDIRS:%=%-embed-libs)
+MOD_SUBDIRS_MENUSELECT_TREE:=$(MOD_SUBDIRS:%=%-menuselect-tree)
 
 ifneq ($(findstring darwin,$(OSARCH)),)
   ASTCFLAGS+=-D__Darwin__
@@ -279,6 +281,8 @@
 ifeq ($(OSARCH),SunOS)
   SOLINK=-shared -fpic -L/usr/local/ssl/lib
 endif
+
+SUBMAKE=$(MAKE) --quiet --no-print-directory
 
 # This is used when generating the doxygen documentation
 ifneq ($(DOT),:)
@@ -312,13 +316,17 @@
 	menuselect/menuselect --check-deps $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts
 
 $(MOD_SUBDIRS_EMBED_LDSCRIPT):
-	@echo "EMBED_LDSCRIPTS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules
+	@echo "EMBED_LDSCRIPTS+="`$(SUBMAKE) -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules
 
 $(MOD_SUBDIRS_EMBED_LDFLAGS):
-	@echo "EMBED_LDFLAGS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldflags=) SUBDIR=$(@:-embed-ldflags=) __embed_ldflags` >> makeopts.embed_rules
+	@echo "EMBED_LDFLAGS+="`$(SUBMAKE) -C $(@:-embed-ldflags=) SUBDIR=$(@:-embed-ldflags=) __embed_ldflags` >> makeopts.embed_rules
 
 $(MOD_SUBDIRS_EMBED_LIBS):
-	@echo "EMBED_LIBS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-libs=) SUBDIR=$(@:-embed-libs=) __embed_libs` >> makeopts.embed_rules
+	@echo "EMBED_LIBS+="`$(SUBMAKE) -C $(@:-embed-libs=) SUBDIR=$(@:-embed-libs=) __embed_libs` >> makeopts.embed_rules
+
+$(MOD_SUBDIRS_MENUSELECT_TREE):
+	@$(SUBMAKE) -C $(@:-menuselect-tree=) SUBDIR=$(@:-menuselect-tree=) moduleinfo
+	@$(SUBMAKE) -C $(@:-menuselect-tree=) SUBDIR=$(@:-menuselect-tree=) makeopts
 
 makeopts.embed_rules: menuselect.makeopts
 	@echo "Generating embedded module rules ..."
@@ -741,6 +749,14 @@
 
 menuselect-tree: $(foreach dir,$(filter-out main,$(MOD_SUBDIRS)),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml sounds/sounds.xml build_tools/embed_modules.xml configure
 	@echo "Generating input for menuselect ..."
-	@build_tools/prep_moduledeps > $@
+	@echo "<?xml version=\"1.0\"?>" > $@
+	@echo >> $@
+	@echo "<menu name=\"Asterisk Module and Build Option Selection\">" >> $@
+	@for dir in $(sort $(filter-out main,$(MOD_SUBDIRS))); do $(SUBMAKE) -C $${dir} SUBDIR=$${dir} moduleinfo >> $@; done
+	@for dir in $(sort $(filter-out main,$(MOD_SUBDIRS))); do $(SUBMAKE) -C $${dir} SUBDIR=$${dir} makeopts >> $@; done
+	@cat build_tools/cflags.xml >> $@
+	@cat build_tools/embed_modules.xml >> $@
+	@cat sounds/sounds.xml >> $@
+	@echo "</menu>" >> $@
 
 .PHONY: menuselect main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_DIST_CLEAN) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) menuselect.makeopts

Modified: team/oej/iaxtrunkfix-1.4/Makefile.moddir_rules
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/Makefile.moddir_rules?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/Makefile.moddir_rules (original)
+++ team/oej/iaxtrunkfix-1.4/Makefile.moddir_rules Wed Dec 19 04:19:37 2007
@@ -42,7 +42,7 @@
 modules.link: $(addsuffix .o,$(filter $(EMBEDDED_MODS),$(C_MODS)))
 modules.link: $(addsuffix .oo,$(filter $(EMBEDDED_MODS),$(CC_MODS)))
 
-.PHONY: clean uninstall _all
+.PHONY: clean uninstall _all moduleinfo makeopts
 
 ifneq ($(LOADABLE_MODS),)
 _all: $(LOADABLE_MODS:%=%.so)
@@ -79,6 +79,40 @@
 
 uninstall::
 
+dist-clean::
+	rm -f .*.moduleinfo .moduleinfo
+	rm -f .*.makeopts .makeopts
+
+.%.moduleinfo: %.c
+	@echo "<member name=\"$*\" displayname=\"$(shell $(GREP) -e AST_MODULE_INFO $< | head -n 1 | cut -d '"' -f 2)\" remove_on_change=\"$(SUBDIR)/$*.o $(SUBDIR)/$*.so\">" > $@
+	$(AWK) -f $(ASTTOPDIR)/build_tools/get_moduleinfo $< >> $@
+	echo "</member>" >> $@
+
+.%.moduleinfo: %.cc
+	@echo "<member name=\"$*\" displayname=\"$(shell $(GREP) -e AST_MODULE_INFO $< | head -n 1 | cut -d '"' -f 2)\" remove_on_change=\"$(SUBDIR)/$*.oo $(SUBDIR)/$*.so\">" > $@
+	$(AWK) -f $(ASTTOPDIR)/build_tools/get_moduleinfo $< >> $@
+	echo "</member>" >> $@
+
+.moduleinfo:: $(addsuffix .moduleinfo,$(addprefix .,$(ALL_C_MODS) $(ALL_CC_MODS)))
+	@echo "<category name=\"MENUSELECT_$(MENUSELECT_CATEGORY)\" displayname=\"$(MENUSELECT_DESCRIPTION)\" remove_on_change=\"$(SUBDIR)/modules.link\">" > $@
+	@cat $^ >> $@
+	@echo "</category>" >> $@
+
+moduleinfo: .moduleinfo
+	@cat $<
+
+.%.makeopts: %.c
+	@$(AWK) -f $(ASTTOPDIR)/build_tools/get_makeopts $< > $@
+
+.%.makeopts: %.cc
+	@$(AWK) -f $(ASTTOPDIR)/build_tools/get_makeopts $< > $@
+
+.makeopts:: $(addsuffix .makeopts,$(addprefix .,$(ALL_C_MODS) $(ALL_CC_MODS)))
+	@cat $^ > $@
+
+makeopts: .makeopts
+	@cat $<
+
 ifneq ($(wildcard .*.d),)
    include .*.d
 endif

Propchange: team/oej/iaxtrunkfix-1.4/apps/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Dec 19 04:19:37 2007
@@ -1,6 +1,8 @@
+*.a
 *.d
-*.a
+*.i
+*.makeopts
+*.moduleinfo
+*.s
 *.so
-*.s
-*.i
 modules.link

Modified: team/oej/iaxtrunkfix-1.4/apps/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/Makefile?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/Makefile (original)
+++ team/oej/iaxtrunkfix-1.4/apps/Makefile Wed Dec 19 04:19:37 2007
@@ -11,8 +11,14 @@
 
 -include ../menuselect.makeopts ../menuselect.makedeps
 
-C_MODS:=$(filter-out $(MENUSELECT_APPS),$(patsubst %.c,%,$(wildcard app_*.c)))
-CC_MODS:=$(filter-out $(MENUSELECT_APPS),$(patsubst %.cc,%,$(wildcard app_*.cc)))
+MENUSELECT_CATEGORY=APPS
+MENUSELECT_DESCRIPTION=Applications
+
+ALL_C_MODS:=$(patsubst %.c,%,$(wildcard app_*.c))
+ALL_CC_MODS:=$(patsubst %.cc,%,$(wildcard app_*.cc))
+
+C_MODS:=$(filter-out $(MENUSELECT_APPS),$(ALL_C_MODS))
+CC_MODS:=$(filter-out $(MENUSELECT_APPS),$(ALL_CC_MODS))
 
 LOADABLE_MODS:=$(C_MODS) $(CC_MODS)
 

Modified: team/oej/iaxtrunkfix-1.4/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_queue.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_queue.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_queue.c Wed Dec 19 04:19:37 2007
@@ -55,6 +55,10 @@
  *
  * \ingroup applications
  */
+
+/*** MODULEINFO
+        <depend>res_monitor</depend>
+ ***/
 
 #include "asterisk.h"
 

Modified: team/oej/iaxtrunkfix-1.4/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_voicemail.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_voicemail.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_voicemail.c Wed Dec 19 04:19:37 2007
@@ -1686,10 +1686,10 @@
 		}
 	}
 
+	fclose(fi);
+	
 	if (fputs(eol,so)==EOF)
 		return 0;
-
-	fclose(fi);
 
 	return 1;
 }
@@ -2356,6 +2356,7 @@
 		rewind(p);
 		if((buf = ast_malloc(len+1)) == NIL) {
 			ast_log(LOG_ERROR, "Can't allocate %ld bytes to read message\n", len+1);
+			fclose(p);
 			return -1;
 		}
 		fread(buf, len, 1, p);
@@ -6507,9 +6508,7 @@
 	/* Set language from config to override channel language */
 	if (!ast_strlen_zero(vmu->language))
 		ast_string_field_set(chan, language, vmu->language);
-#ifndef IMAP_STORAGE
 	create_dirpath(vms.curdir, sizeof(vms.curdir), vmu->context, vms.username, "");
-#endif	
 	/* Retrieve old and new message counts */
 	if (option_debug)
 		ast_log(LOG_DEBUG, "Before open_mailbox\n");

Modified: team/oej/iaxtrunkfix-1.4/build_tools/make_version
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/build_tools/make_version?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/build_tools/make_version (original)
+++ team/oej/iaxtrunkfix-1.4/build_tools/make_version Wed Dec 19 04:19:37 2007
@@ -3,7 +3,7 @@
 if [ -f ${1}/.version ]; then
 	cat ${1}/.version
 elif [ -d .svn ]; then
-    PARTS=`LANG=C svn info ${1} | grep URL | awk '{print $2;}' | sed -e 's:^.*/svn/asterisk/::' | sed -e 's:/: :g'`
+    PARTS=`LANG=C svn info ${1} | ${GREP} URL | ${AWK} '{print $2;}' | sed -e 's:^.*/svn/asterisk/::' | sed -e 's:/: :g'`
     BRANCH=0
     TEAM=0
     TAG=0

Modified: team/oej/iaxtrunkfix-1.4/build_tools/prep_tarball
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/build_tools/prep_tarball?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/build_tools/prep_tarball (original)
+++ team/oej/iaxtrunkfix-1.4/build_tools/prep_tarball Wed Dec 19 04:19:37 2007
@@ -5,4 +5,5 @@
 #
 # It will be executed from the top-level directory of the project.
 
-make -C sounds all MENUSELECT_CORE_SOUNDS=CORE-SOUNDS-EN-GSM MENUSELECT_MOH=MOH-FREEPLAY-WAV WGET=wget DOWNLOAD=wget
+make -C sounds MENUSELECT_CORE_SOUNDS=CORE-SOUNDS-EN-GSM MENUSELECT_MOH=MOH-FREEPLAY-WAV WGET=wget DOWNLOAD=wget all
+make AWK=awk GREP=grep menuselect-tree

Propchange: team/oej/iaxtrunkfix-1.4/cdr/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Dec 19 04:19:37 2007
@@ -1,6 +1,8 @@
+*.a
 *.d
-*.a
+*.i
+*.makeopts
+*.moduleinfo
+*.s
 *.so
-*.s
-*.i
 modules.link

Modified: team/oej/iaxtrunkfix-1.4/cdr/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/cdr/Makefile?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/cdr/Makefile (original)
+++ team/oej/iaxtrunkfix-1.4/cdr/Makefile Wed Dec 19 04:19:37 2007
@@ -11,8 +11,14 @@
 
 -include ../menuselect.makeopts ../menuselect.makedeps
 
-C_MODS:=$(filter-out $(MENUSELECT_CDR),$(patsubst %.c,%,$(wildcard cdr_*.c)))
-CC_MODS:=$(filter-out $(MENUSELECT_CDR),$(patsubst %.cc,%,$(wildcard cdr_*.cc)))
+MENUSELECT_CATEGORY=CDR
+MENUSELECT_DESCRIPTION=Call Detail Recording
+
+ALL_C_MODS:=$(patsubst %.c,%,$(wildcard cdr_*.c))
+ALL_CC_MODS:=$(patsubst %.cc,%,$(wildcard cdr_*.cc))
+
+C_MODS:=$(filter-out $(MENUSELECT_CDR),$(ALL_C_MODS))
+CC_MODS:=$(filter-out $(MENUSELECT_CDR),$(ALL_CC_MODS))
 
 LOADABLE_MODS:=$(C_MODS) $(CC_MODS)
 

Propchange: team/oej/iaxtrunkfix-1.4/channels/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Dec 19 04:19:37 2007
@@ -1,10 +1,12 @@
+*.a
 *.d
-*.a
-*.so
-*.s
 *.i
 *.oo
+*.makeopts
+*.moduleinfo
+*.s
+*.so
+busy.h
 gentone
-busy.h
+modules.link
 ringtone.h
-modules.link

Modified: team/oej/iaxtrunkfix-1.4/channels/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/channels/Makefile?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/channels/Makefile (original)
+++ team/oej/iaxtrunkfix-1.4/channels/Makefile Wed Dec 19 04:19:37 2007
@@ -11,8 +11,14 @@
 
 -include ../menuselect.makeopts ../menuselect.makedeps
 
-C_MODS:=$(filter-out $(MENUSELECT_CHANNELS),$(patsubst %.c,%,$(wildcard chan_*.c)))
-CC_MODS:=$(filter-out $(MENUSELECT_CHANNELS),$(patsubst %.cc,%,$(wildcard chan_*.cc)))
+MENUSELECT_CATEGORY=CHANNELS
+MENUSELECT_DESCRIPTION=Channel Drivers
+
+ALL_C_MODS:=$(patsubst %.c,%,$(wildcard chan_*.c))
+ALL_CC_MODS:=$(patsubst %.cc,%,$(wildcard chan_*.cc))
+
+C_MODS:=$(filter-out $(MENUSELECT_CHANNELS),$(ALL_C_MODS))
+CC_MODS:=$(filter-out $(MENUSELECT_CHANNELS),$(ALL_CC_MODS))
 
 ifeq ($(OSARCH),OpenBSD)
   PTLIB=-lpt_OpenBSD_x86_r

Modified: team/oej/iaxtrunkfix-1.4/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/channels/chan_h323.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/channels/chan_h323.c (original)
+++ team/oej/iaxtrunkfix-1.4/channels/chan_h323.c Wed Dec 19 04:19:37 2007
@@ -2710,6 +2710,56 @@
 	show_tokens_usage },
 };
 
+static void delete_users(void)
+{
+	int pruned = 0;
+
+	/* Delete all users */
+	ASTOBJ_CONTAINER_WRLOCK(&userl);
+	ASTOBJ_CONTAINER_TRAVERSE(&userl, 1, do {
+		ASTOBJ_RDLOCK(iterator);
+		ASTOBJ_MARK(iterator);
+		++pruned;
+		ASTOBJ_UNLOCK(iterator);
+	} while (0) );
+	if (pruned) {
+		ASTOBJ_CONTAINER_PRUNE_MARKED(&userl, oh323_destroy_user);
+	}
+	ASTOBJ_CONTAINER_UNLOCK(&userl);
+
+	ASTOBJ_CONTAINER_WRLOCK(&peerl);
+	ASTOBJ_CONTAINER_TRAVERSE(&peerl, 1, do {
+		ASTOBJ_RDLOCK(iterator);
+		ASTOBJ_MARK(iterator);
+		ASTOBJ_UNLOCK(iterator);
+	} while (0) );
+	ASTOBJ_CONTAINER_UNLOCK(&peerl);
+}
+
+static void delete_aliases(void)
+{
+	int pruned = 0;
+
+	/* Delete all aliases */
+	ASTOBJ_CONTAINER_WRLOCK(&aliasl);
+	ASTOBJ_CONTAINER_TRAVERSE(&aliasl, 1, do {
+		ASTOBJ_RDLOCK(iterator);
+		ASTOBJ_MARK(iterator);
+		++pruned;
+		ASTOBJ_UNLOCK(iterator);
+	} while (0) );
+	if (pruned) {
+		ASTOBJ_CONTAINER_PRUNE_MARKED(&aliasl, oh323_destroy_alias);
+	}
+	ASTOBJ_CONTAINER_UNLOCK(&aliasl);
+}
+
+static void prune_peers(void)
+{
+	/* Prune peers who still are supposed to be deleted */
+	ASTOBJ_CONTAINER_PRUNE_MARKED(&peerl, oh323_destroy_peer);
+}
+
 static int reload_config(int is_reload)
 {
 	int format;
@@ -2731,6 +2781,12 @@
 	if (!cfg) {
 		ast_log(LOG_NOTICE, "Unable to load config %s, H.323 disabled\n", config);
 		return 1;
+	}
+
+	if (is_reload) {
+		delete_users();
+		delete_aliases();
+		prune_peers();
 	}
 
 	/* fire up the H.323 Endpoint */
@@ -2923,56 +2979,6 @@
 	return 0;
 }
 
-static void delete_users(void)
-{
-	int pruned = 0;
-
-	/* Delete all users */
-	ASTOBJ_CONTAINER_WRLOCK(&userl);
-	ASTOBJ_CONTAINER_TRAVERSE(&userl, 1, do {
-		ASTOBJ_RDLOCK(iterator);
-		ASTOBJ_MARK(iterator);
-		++pruned;
-		ASTOBJ_UNLOCK(iterator);
-	} while (0) );
-	if (pruned) {
-		ASTOBJ_CONTAINER_PRUNE_MARKED(&userl, oh323_destroy_user);
-	}
-	ASTOBJ_CONTAINER_UNLOCK(&userl);
-
-	ASTOBJ_CONTAINER_WRLOCK(&peerl);
-	ASTOBJ_CONTAINER_TRAVERSE(&peerl, 1, do {
-		ASTOBJ_RDLOCK(iterator);
-		ASTOBJ_MARK(iterator);
-		ASTOBJ_UNLOCK(iterator);
-	} while (0) );
-	ASTOBJ_CONTAINER_UNLOCK(&peerl);
-}
-
-static void delete_aliases(void)
-{
-	int pruned = 0;
-
-	/* Delete all aliases */
-	ASTOBJ_CONTAINER_WRLOCK(&aliasl);
-	ASTOBJ_CONTAINER_TRAVERSE(&aliasl, 1, do {
-		ASTOBJ_RDLOCK(iterator);
-		ASTOBJ_MARK(iterator);
-		++pruned;
-		ASTOBJ_UNLOCK(iterator);
-	} while (0) );
-	if (pruned) {
-		ASTOBJ_CONTAINER_PRUNE_MARKED(&aliasl, oh323_destroy_alias);
-	}
-	ASTOBJ_CONTAINER_UNLOCK(&aliasl);
-}
-
-static void prune_peers(void)
-{
-	/* Prune peers who still are supposed to be deleted */
-	ASTOBJ_CONTAINER_PRUNE_MARKED(&peerl, oh323_destroy_peer);
-}
-
 static int h323_reload(int fd, int argc, char *argv[])
 {
 	ast_mutex_lock(&h323_reload_lock);
@@ -2988,9 +2994,6 @@
 
 static int h323_do_reload(void)
 {
-	delete_users();
-	delete_aliases();
-	prune_peers();
 	reload_config(1);
 	return 0;
 }

Modified: team/oej/iaxtrunkfix-1.4/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/channels/chan_iax2.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/channels/chan_iax2.c (original)
+++ team/oej/iaxtrunkfix-1.4/channels/chan_iax2.c Wed Dec 19 04:19:37 2007
@@ -30,6 +30,7 @@
 
 /*** MODULEINFO
 	<use>zaptel</use>
+        <depend>res_features</depend>
  ***/
 
 #include "asterisk.h"
@@ -2722,9 +2723,11 @@
 	time_t regseconds = 0, nowtime;
 	int dynamic=0;
 
-	if (peername)
-		var = ast_load_realtime("iaxpeers", "name", peername, NULL);
-	else {
+	if (peername) {
+		var = ast_load_realtime("iaxpeers", "name", peername, "host", "dynamic", NULL);
+		if (!var && sin)
+			var = ast_load_realtime("iaxpeers", "name", peername, "host", ast_inet_ntoa(sin->sin_addr));
+	} else if (sin) {
 		char porta[25];
 		sprintf(porta, "%d", ntohs(sin->sin_port));
 		var = ast_load_realtime("iaxpeers", "ipaddr", ast_inet_ntoa(sin->sin_addr), "port", porta, NULL);
@@ -2733,6 +2736,29 @@
 			for (tmp = var; tmp; tmp = tmp->next) {
 				if (!strcasecmp(tmp->name, "name"))
 					peername = tmp->value;
+			}
+		}
+	}
+	if (!var) { /* Last ditch effort */
+		var = ast_load_realtime("iaxpeers", "name", peername, NULL);
+		/*!\note
+		 * If this one loaded something, then we need to ensure that the host
+		 * field matched.  The only reason why we can't have this as a criteria
+		 * is because we only have the IP address and the host field might be
+		 * set as a name (and the reverse PTR might not match).
+		 */
+		if (var) {
+			for (tmp = var; tmp; tmp = tmp->next) {
+				if (!strcasecmp(tmp->name, "host")) {
+					struct in_addr sin2 = { 0, };
+					struct ast_dnsmgr_entry *dnsmgr = NULL;
+					if ((ast_dnsmgr_lookup(tmp->value, &sin2, &dnsmgr) < 0) || (memcmp(&sin2, &sin->sin_addr, sizeof(sin2)) != 0)) {
+						/* No match */
+						ast_variables_destroy(var);
+						var = NULL;
+					}
+					break;
+				}
 			}
 		}
 	}
@@ -2811,13 +2837,45 @@
 	return peer;
 }
 
-static struct iax2_user *realtime_user(const char *username)
+static struct iax2_user *realtime_user(const char *username, struct sockaddr_in *sin)
 {
 	struct ast_variable *var;
 	struct ast_variable *tmp;
 	struct iax2_user *user=NULL;
 
-	var = ast_load_realtime("iaxusers", "name", username, NULL);
+	var = ast_load_realtime("iaxusers", "name", username, "host", "dynamic", NULL);
+	if (!var)
+		var = ast_load_realtime("iaxusers", "name", username, "host", ast_inet_ntoa(sin->sin_addr));
+	if (!var && sin) {
+		char porta[6];
+		snprintf(porta, sizeof(porta), "%d", ntohs(sin->sin_port));
+		var = ast_load_realtime("iaxusers", "name", username, "ipaddr", ast_inet_ntoa(sin->sin_addr), "port", porta, NULL);
+		if (!var)
+			var = ast_load_realtime("iaxusers", "ipaddr", ast_inet_ntoa(sin->sin_addr), "port", porta, NULL);
+	}
+	if (!var) { /* Last ditch effort */
+		var = ast_load_realtime("iaxusers", "name", username, NULL);
+		/*!\note
+		 * If this one loaded something, then we need to ensure that the host
+		 * field matched.  The only reason why we can't have this as a criteria
+		 * is because we only have the IP address and the host field might be
+		 * set as a name (and the reverse PTR might not match).
+		 */
+		if (var) {
+			for (tmp = var; tmp; tmp = tmp->next) {
+				if (!strcasecmp(tmp->name, "host")) {
+					struct in_addr sin2 = { 0, };
+					struct ast_dnsmgr_entry *dnsmgr = NULL;
+					if ((ast_dnsmgr_lookup(tmp->value, &sin2, &dnsmgr) < 0) || (memcmp(&sin2, &sin->sin_addr, sizeof(sin2)) != 0)) {
+						/* No match */
+						ast_variables_destroy(var);
+						var = NULL;
+					}
+					break;
+				}
+			}
+		}
+	}
 	if (!var)
 		return NULL;
 
@@ -5026,7 +5084,7 @@
 	}
 	user = best;
 	if (!user && !ast_strlen_zero(iaxs[callno]->username)) {
-		user = realtime_user(iaxs[callno]->username);
+		user = realtime_user(iaxs[callno]->username, sin);
 		if (user && !ast_strlen_zero(iaxs[callno]->context) &&			/* No context specified */
 		    !apply_context(user->contexts, iaxs[callno]->context)) {		/* Context is permitted */
 			user = user_unref(user);
@@ -9592,6 +9650,20 @@
 #endif
 }
 
+static void set_config_destroy(void)
+{
+	strcpy(accountcode, "");
+	strcpy(language, "");
+	strcpy(mohinterpret, "default");
+	strcpy(mohsuggest, "");
+	amaflags = 0;
+	delayreject = 0;
+	ast_clear_flag((&globalflags), IAX_NOTRANSFER);	
+	ast_clear_flag((&globalflags), IAX_TRANSFERMEDIA);	
+	ast_clear_flag((&globalflags), IAX_USEJITTERBUF);	
+	ast_clear_flag((&globalflags), IAX_FORCEJITTERBUF);	
+	delete_users();
+}
 
 /*! \brief Load configuration */
 static int set_config(char *config_file, int reload)
@@ -9618,6 +9690,10 @@
 	if (!cfg) {
 		ast_log(LOG_ERROR, "Unable to load config %s\n", config_file);
 		return -1;
+	}
+
+	if (reload) {
+		set_config_destroy();
 	}
 
 	/* Reset global codec prefs */	
@@ -9954,7 +10030,7 @@
 	}
 	ast_config_destroy(cfg);
 	set_timing();
-	return capability;
+	return 1;
 }
 
 static void poke_all_peers(void)
@@ -9973,30 +10049,16 @@
 	char *config = "iax.conf";
 	struct iax2_registry *reg;
 
-	strcpy(accountcode, "");
-	strcpy(language, "");
-	strcpy(mohinterpret, "default");
-	strcpy(mohsuggest, "");
-	global_max_trunk_mtu = MAX_TRUNK_MTU;
-	amaflags = 0;
-	delayreject = 0;
-	ast_clear_flag((&globalflags), IAX_NOTRANSFER);	
-	ast_clear_flag((&globalflags), IAX_TRANSFERMEDIA);	
-	ast_clear_flag((&globalflags), IAX_USEJITTERBUF);	
-	ast_clear_flag((&globalflags), IAX_FORCEJITTERBUF);	
-	delete_users();
-	set_config(config, 1);
-	prune_peers();
-	prune_users();
-        trunk_timed = trunk_untimed = 0; 
-	trunk_nmaxmtu = trunk_maxmtu = 0; 
-
-	AST_LIST_LOCK(&registrations);
-	AST_LIST_TRAVERSE(&registrations, reg, entry)
-		iax2_do_register(reg);
-	AST_LIST_UNLOCK(&registrations);
-	/* Qualify hosts, too */
-	poke_all_peers();
+	if (set_config(config, 1) > 0) {
+		prune_peers();
+		prune_users();
+		AST_LIST_LOCK(&registrations);
+		AST_LIST_TRAVERSE(&registrations, reg, entry)
+			iax2_do_register(reg);
+		AST_LIST_UNLOCK(&registrations);
+		/* Qualify hosts, too */
+		poke_all_peers();
+	}
 	reload_firmware(0);
 	iax_provision_reload();
 

Modified: team/oej/iaxtrunkfix-1.4/channels/chan_mgcp.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/channels/chan_mgcp.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/channels/chan_mgcp.c (original)
+++ team/oej/iaxtrunkfix-1.4/channels/chan_mgcp.c Wed Dec 19 04:19:37 2007
@@ -27,6 +27,9 @@
  *
  * \ingroup channel_drivers
  */
+/*** MODULEINFO
+        <depend>res_features</depend>
+ ***/
 
 #include "asterisk.h"
 

Modified: team/oej/iaxtrunkfix-1.4/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/channels/chan_misdn.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/channels/chan_misdn.c (original)
+++ team/oej/iaxtrunkfix-1.4/channels/chan_misdn.c Wed Dec 19 04:19:37 2007
@@ -4376,11 +4376,11 @@
 			ch->overlap_tv = ast_tvnow();
 			ast_mutex_unlock(&ch->overlap_tv_lock);
 
+			wait_for_digits(ch, bc, chan);
 			if (ch->overlap_dial_task == -1) 
 				ch->overlap_dial_task = 
 					misdn_tasks_add_variable(ch->overlap_dial, misdn_overlap_dial_task, ch);
 
-			wait_for_digits(ch, bc, chan);
 			break;
 		}
 

Modified: team/oej/iaxtrunkfix-1.4/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/channels/chan_sip.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/channels/chan_sip.c (original)
+++ team/oej/iaxtrunkfix-1.4/channels/chan_sip.c Wed Dec 19 04:19:37 2007
@@ -87,6 +87,10 @@
  * - the ALERT_INFO dialplan variable
  */
 
+/*** MODULEINFO
+        <depend>res_features</depend>
+ ***/
+
 
 #include "asterisk.h"
 
@@ -145,6 +149,7 @@
 #include "asterisk/compiler.h"
 #include "asterisk/threadstorage.h"
 #include "asterisk/translate.h"
+#include "asterisk/dnsmgr.h"
 
 #ifndef FALSE
 #define FALSE    0
@@ -2493,9 +2498,35 @@
 	unsigned short portnum;
 
 	/* First check on peer name */
-	if (newpeername) 
-		var = ast_load_realtime("sippeers", "name", newpeername, NULL);
-	else if (sin) {	/* Then check on IP address */
+	if (newpeername) {
+		var = ast_load_realtime("sippeers", "name", newpeername, "host", "dynamic", NULL);
+		if (!var && sin) {
+			var = ast_load_realtime("sippeers", "name", newpeername, "host", ast_inet_ntoa(sin->sin_addr), NULL);
+			if (!var) {
+				var = ast_load_realtime("sippeers", "name", newpeername, NULL);
+				/*!\note
+				 * If this one loaded something, then we need to ensure that the host
+				 * field matched.  The only reason why we can't have this as a criteria
+				 * is because we only have the IP address and the host field might be
+				 * set as a name (and the reverse PTR might not match).
+				 */
+				if (var) {
+					for (tmp = var; tmp; tmp = tmp->next) {
+						if (!strcasecmp(var->name, "host")) {
+							struct in_addr sin2 = { 0, };
+							struct ast_dnsmgr_entry *dnsmgr = NULL;
+							if ((ast_dnsmgr_lookup(tmp->value, &sin2, &dnsmgr) < 0) || (memcmp(&sin2, &sin->sin_addr, sizeof(sin2)) != 0)) {
+								/* No match */
+								ast_variables_destroy(var);
+								var = NULL;
+							}
+							break;
+						}
+					}
+				}
+			}
+		}
+	} else if (sin) {	/* Then check on IP address */
 		iabuf = ast_inet_ntoa(sin->sin_addr);
 		portnum = ntohs(sin->sin_port);
 		sprintf(portstring, "%d", portnum);
@@ -10674,8 +10705,8 @@
 static int __sip_show_channels(int fd, int argc, char *argv[], int subscriptions)
 {
 #define FORMAT3 "%-15.15s  %-10.10s  %-11.11s  %-15.15s  %-13.13s  %-15.15s %-10.10s\n"
-#define FORMAT2 "%-15.15s  %-10.10s  %-11.11s  %-11.11s  %-4.4s  %-7.7s  %-15.15s\n"
-#define FORMAT  "%-15.15s  %-10.10s  %-11.11s  %5.5d/%5.5d  %-4.4s  %-3.3s %-3.3s  %-15.15s %-10.10s\n"
+#define FORMAT2 "%-15.15s  %-10.10s  %-11.11s  %-11.11s  %-15.15s  %-7.7s  %-15.15s\n"
+#define FORMAT  "%-15.15s  %-10.10s  %-11.11s  %5.5d/%5.5d  %-15.15s  %-3.3s %-3.3s  %-15.15s %-10.10s\n"
 	struct sip_pvt *cur;
 	int numchans = 0;
 	char *referstatus = NULL;
@@ -16660,6 +16691,36 @@
 		return -1;
 	}
 	
+	if (option_debug > 3)
+		ast_log(LOG_DEBUG, "--------------- SIP reload started\n");
+
+	clear_realm_authentication(authl);
+	clear_sip_domains();
+	authl = NULL;
+
+	/* First, destroy all outstanding registry calls */
+	/* This is needed, since otherwise active registry entries will not be destroyed */
+	ASTOBJ_CONTAINER_TRAVERSE(&regl, 1, do {
+		ASTOBJ_RDLOCK(iterator);
+		if (iterator->call) {
+			if (option_debug > 2)
+				ast_log(LOG_DEBUG, "Destroying active SIP dialog for registry %s@%s\n", iterator->username, iterator->hostname);
+			/* This will also remove references to the registry */
+			sip_destroy(iterator->call);
+		}
+		ASTOBJ_UNLOCK(iterator);
+	
+	} while(0));
+
+	/* Then, actually destroy users and registry */
+	ASTOBJ_CONTAINER_DESTROYALL(&userl, sip_destroy_user);
+	if (option_debug > 3)
+		ast_log(LOG_DEBUG, "--------------- Done destroying user list\n");
+	ASTOBJ_CONTAINER_DESTROYALL(&regl, sip_registry_destroy);
+	if (option_debug > 3)
+		ast_log(LOG_DEBUG, "--------------- Done destroying registry list\n");
+	ASTOBJ_CONTAINER_MARKALL(&peerl);
+
 	/* Initialize copy of current global_regcontext for later use in removing stale contexts */
 	ast_copy_string(oldcontexts, global_regcontext, sizeof(oldcontexts));
 	oldregcontext = oldcontexts;
@@ -17668,35 +17729,6 @@
 /*! \brief Reload module */
 static int sip_do_reload(enum channelreloadreason reason)
 {
-	if (option_debug > 3)
-		ast_log(LOG_DEBUG, "--------------- SIP reload started\n");
-
-	clear_realm_authentication(authl);
-	clear_sip_domains();
-	authl = NULL;
-
-	/* First, destroy all outstanding registry calls */
-	/* This is needed, since otherwise active registry entries will not be destroyed */
-	ASTOBJ_CONTAINER_TRAVERSE(&regl, 1, do {
-		ASTOBJ_RDLOCK(iterator);
-		if (iterator->call) {
-			if (option_debug > 2)
-				ast_log(LOG_DEBUG, "Destroying active SIP dialog for registry %s@%s\n", iterator->username, iterator->hostname);
-			/* This will also remove references to the registry */
-			sip_destroy(iterator->call);
-		}
-		ASTOBJ_UNLOCK(iterator);
-	
-	} while(0));
-
-	/* Then, actually destroy users and registry */
-	ASTOBJ_CONTAINER_DESTROYALL(&userl, sip_destroy_user);
-	if (option_debug > 3)
-		ast_log(LOG_DEBUG, "--------------- Done destroying user list\n");
-	ASTOBJ_CONTAINER_DESTROYALL(&regl, sip_registry_destroy);
-	if (option_debug > 3)
-		ast_log(LOG_DEBUG, "--------------- Done destroying registry list\n");
-	ASTOBJ_CONTAINER_MARKALL(&peerl);
 	reload_config(reason);
 
 	/* Prune peers who still are supposed to be deleted */

Modified: team/oej/iaxtrunkfix-1.4/channels/chan_skinny.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/channels/chan_skinny.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/channels/chan_skinny.c (original)
+++ team/oej/iaxtrunkfix-1.4/channels/chan_skinny.c Wed Dec 19 04:19:37 2007
@@ -107,7 +107,7 @@
 #define htolel(x) (x)
 #define htoles(x) (x)
 #else
-#if defined(SOLARIS) || defined(__Darwin__) || defined(__NetBSD__) || defined(__OpenBSD__)
+#if defined(SOLARIS) || defined(__Darwin__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
 #define __bswap_16(x) \
 	((((x) & 0xff00) >> 8) | \
 	 (((x) & 0x00ff) << 8))

Modified: team/oej/iaxtrunkfix-1.4/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/channels/chan_zap.c?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/channels/chan_zap.c (original)
+++ team/oej/iaxtrunkfix-1.4/channels/chan_zap.c Wed Dec 19 04:19:37 2007
@@ -42,6 +42,7 @@
 	<depend>zaptel_vldtmf</depend>
 	<depend>zaptel</depend>
 	<depend>tonezone</depend>
+	<depend>res_features</depend>
 	<use>pri</use>
  ***/
 
@@ -3796,6 +3797,11 @@
 							ast_setstate(ast, AST_STATE_UP);
 							p->subs[index].f.frametype = AST_FRAME_CONTROL;
 							p->subs[index].f.subclass = AST_CONTROL_ANSWER;
+							/* If aops=0 and hops=1, this is necessary */
+							p->polarity = POLARITY_REV;
+						} else {
+							/* Start clean, so we can catch the change to REV polarity when party answers */
+							p->polarity = POLARITY_IDLE;
 						}
 					}
 				}
@@ -4084,14 +4090,6 @@
 				if (ast->_state == AST_STATE_RING) {
 					p->ringt = p->ringt_base;
 				}
-
-				/* If we get a ring then we cannot be in 
-				 * reversed polarity. So we reset to idle */
-				if (option_debug)
-					ast_log(LOG_DEBUG, "Setting IDLE polarity due "
-						"to ring. Old polarity was %d\n", 
-						p->polarity);
-				p->polarity = POLARITY_IDLE;
 
 				/* Fall through */
 			case SIG_EM:
@@ -6376,6 +6374,14 @@
 					if (i & ZT_IOMUX_SIGEVENT) {
 						res = zt_get_event(p->subs[index].zfd);
 						ast_log(LOG_NOTICE, "Got event %d (%s)...\n", res, event2str(res));
+						/* If we get a PR event, they hung up while processing calerid */
+						if ( res == ZT_EVENT_POLARITY && p->hanguponpolarityswitch && p->polarity == POLARITY_REV) {
+							ast_log(LOG_DEBUG, "Hanging up due to polarity reversal on channel %d while detecting callerid\n", p->channel);
+							p->polarity = POLARITY_IDLE;
+							callerid_free(cs);
+							ast_hangup(chan);
+							return NULL;
+						}
 						res = 0;
 						/* Let us detect callerid when the telco uses distinctive ring */
 
@@ -6738,6 +6744,13 @@
 		case SIG_FXSLS:
 		case SIG_FXSKS:
 		case SIG_FXSGS:
+			/* We have already got a PR before the channel was 
+			   created, but it wasn't handled. We need polarity 
+			   to be REV for remote hangup detection to work. 
+			   At least in Spain */
+			if (i->hanguponpolarityswitch)
+				i->polarity = POLARITY_REV;
+
 			if (i->cid_start == CID_START_POLARITY) {
 				i->polarity = POLARITY_REV;
 				ast_verbose(VERBOSE_PREFIX_2 "Starting post polarity "
@@ -8736,8 +8749,13 @@
 					else if (!ast_strlen_zero(e->ring.callednum)) {
 						ast_copy_string(pri->pvts[chanpos]->exten, e->ring.callednum, sizeof(pri->pvts[chanpos]->exten));
 						ast_copy_string(pri->pvts[chanpos]->dnid, e->ring.callednum, sizeof(pri->pvts[chanpos]->dnid));
-					} else
+					} else if (pri->overlapdial)
 						pri->pvts[chanpos]->exten[0] = '\0';
+					else {
+						/* Some PRI circuits are set up to send _no_ digits.  Handle them as 's'. */
+						pri->pvts[chanpos]->exten[0] = 's';
+						pri->pvts[chanpos]->exten[1] = '\0';
+					}
 					/* Set DNID on all incoming calls -- even immediate */
 					if (!ast_strlen_zero(e->ring.callednum))
 						ast_copy_string(pri->pvts[chanpos]->dnid, e->ring.callednum, sizeof(pri->pvts[chanpos]->dnid));

Propchange: team/oej/iaxtrunkfix-1.4/codecs/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Dec 19 04:19:37 2007
@@ -1,6 +1,8 @@
+*.a
 *.d
-*.a
+*.i
+*.makeopts
+*.moduleinfo
 *.s
-*.i
 *.so
 modules.link

Modified: team/oej/iaxtrunkfix-1.4/codecs/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/codecs/Makefile?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/codecs/Makefile (original)
+++ team/oej/iaxtrunkfix-1.4/codecs/Makefile Wed Dec 19 04:19:37 2007
@@ -13,8 +13,14 @@
 
 -include ../menuselect.makeopts ../menuselect.makedeps
 
-C_MODS:=$(filter-out $(MENUSELECT_CODECS),$(patsubst %.c,%,$(wildcard codec_*.c)))
-CC_MODS:=$(filter-out $(MENUSELECT_CODECS),$(patsubst %.cc,%,$(wildcard codec_*.cc)))
+MENUSELECT_CATEGORY=CODECS
+MENUSELECT_DESCRIPTION=Codec Translators
+
+ALL_C_MODS:=$(patsubst %.c,%,$(wildcard codec_*.c))
+ALL_CC_MODS:=$(patsubst %.cc,%,$(wildcard codec_*.cc))
+
+C_MODS:=$(filter-out $(MENUSELECT_CODECS),$(ALL_C_MODS))
+CC_MODS:=$(filter-out $(MENUSELECT_CODECS),$(ALL_CC_MODS))
 
 LOADABLE_MODS:=$(C_MODS) $(CC_MODS)
 

Modified: team/oej/iaxtrunkfix-1.4/configure
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/configure?view=diff&rev=93922&r1=93921&r2=93922
==============================================================================
--- team/oej/iaxtrunkfix-1.4/configure (original)
+++ team/oej/iaxtrunkfix-1.4/configure Wed Dec 19 04:19:37 2007
@@ -1,7 +1,9 @@
 #! /bin/sh
-# From configure.ac Revision: 91032 .
+# From configure.ac Revision: 92463 .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.60.
+# Generated by GNU Autoconf 2.61 for asterisk 1.4.
+#
+# Report bugs to <www.asterisk.org>.
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -13,7 +15,8 @@
 ## M4sh Initialization.  ##
 ## --------------------- ##
 
-# Be Bourne compatible
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
@@ -22,10 +25,13 @@
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
 
 
 # PATH needs CR
@@ -218,7 +224,7 @@
 else
   as_candidate_shells=
     as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
@@ -236,7 +242,6 @@
 	 # Try only shells that exist, to save several forks.
 	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
 		{ ("$as_shell") 2> /dev/null <<\_ASEOF
-# Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
@@ -245,10 +250,12 @@
   alias -g '${1+"$@"}'='"$@"'

[... 13133 lines stripped ...]



More information about the asterisk-commits mailing list