[asterisk-commits] seanbright: branch seanbright/issue13827-1.4 r157978 - in /team/seanbright/is...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Nov 19 18:29:32 CST 2008
Author: seanbright
Date: Wed Nov 19 18:29:31 2008
New Revision: 157978
URL: http://svn.digium.com/view/asterisk?view=rev&rev=157978
Log:
Merged revisions 153876,154120,154323,154419,154746,155071,155458,155607,155854,155912,156220,156279,156346,156435,156506,156531,156740,156803,156866,157154,157214,157356,157414,157552,157896 via svnmerge from
https://origsvn.digium.com/svn/asterisk/team/seanbright/issue5014-1.4
................
r153876 | root | 2008-11-03 08:39:56 -0500 (Mon, 03 Nov 2008) | 11 lines
Merged revisions 153823 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r153823 | kpfleming | 2008-11-03 07:01:18 -0600 (Mon, 03 Nov 2008) | 3 lines
somehow missed a bunch of gcc 4.3.x warnings in this branch on the first pass
........
................
r154120 | root | 2008-11-03 17:40:17 -0500 (Mon, 03 Nov 2008) | 19 lines
Merged revisions 154060,154066 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r154060 | tilghman | 2008-11-03 15:48:21 -0600 (Mon, 03 Nov 2008) | 3 lines
Remove the potential for a division by zero error.
(Closes issue #13810)
........
r154066 | tilghman | 2008-11-03 16:27:10 -0600 (Mon, 03 Nov 2008) | 5 lines
Attempting to expunge a mailbox when the mailstream is NULL will crash Asterisk.
(Closes issue #13829)
Reported by: jaroth
Patch by: me (modified jaroth's patch)
........
................
r154323 | root | 2008-11-04 14:38:30 -0500 (Tue, 04 Nov 2008) | 18 lines
Merged revisions 154263,154266 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r154263 | tilghman | 2008-11-04 12:58:05 -0600 (Tue, 04 Nov 2008) | 3 lines
Make the monitor thread non-detached, so it can be joined (suggested by Russell
on -dev list).
........
r154266 | rmudgett | 2008-11-04 13:01:08 -0600 (Tue, 04 Nov 2008) | 4 lines
JIRA ABE-1703
mISDN sets the channel to the wrong state when it receives
the indication AST_CONTROL_RINGING.
........
................
r154419 | root | 2008-11-04 16:37:45 -0500 (Tue, 04 Nov 2008) | 17 lines
Merged revisions 154365 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r154365 | tilghman | 2008-11-04 14:49:33 -0600 (Tue, 04 Nov 2008) | 9 lines
On busy systems, it's possible for the values checked within a single line
of code to change, unless the structure is locked to ensure a consistent
state.
(closes issue #13717)
Reported by: kowalma
Patches:
20081102__bug13717.diff.txt uploaded by Corydon76 (license 14)
Tested by: kowalma
........
................
r154746 | root | 2008-11-05 11:50:47 -0500 (Wed, 05 Nov 2008) | 18 lines
Merged revisions 154685,154724 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r154685 | murf | 2008-11-05 10:06:53 -0600 (Wed, 05 Nov 2008) | 1 line
This fix was prompted by communication from user, who was seeing thousands of error logs... looks like EAGAIN. Made such uninteresting.
........
r154724 | mmichelson | 2008-11-05 10:44:34 -0600 (Wed, 05 Nov 2008) | 6 lines
The logic of a strcasecmp call was reversed
(closes issue #13841)
Reported by: clegall_proformatique
........
................
r155071 | root | 2008-11-06 15:52:22 -0500 (Thu, 06 Nov 2008) | 16 lines
Merged revisions 155011 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r155011 | mmichelson | 2008-11-06 13:45:52 -0600 (Thu, 06 Nov 2008) | 8 lines
The documentation listed the ability to set 'maxmsg' per
context. The truth is that you can only set this in the general section
or per mailbox. Thus I am updating the sample config file to be more
accurate.
Thanks to sasargen on IRC for bringing up this issue.
........
................
r155458 | root | 2008-11-07 18:02:38 -0500 (Fri, 07 Nov 2008) | 15 lines
Merged revisions 155398 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r155398 | tilghman | 2008-11-07 16:27:32 -0600 (Fri, 07 Nov 2008) | 7 lines
Clarify error message.
(closes issue #13809)
Reported by: denke
Patches:
20081104__bug13809.diff.txt uploaded by Corydon76 (license 14)
Tested by: denke
........
................
r155607 | root | 2008-11-08 21:05:46 -0500 (Sat, 08 Nov 2008) | 14 lines
Merged revisions 155553 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r155553 | seanbright | 2008-11-08 19:08:07 -0600 (Sat, 08 Nov 2008) | 6 lines
Use static functions here instead of nested ones. This requires a small
change to the ast_bridge_config struct as well. To understand the reason
for this change, see the following post:
http://gcc.gnu.org/ml/gcc-help/2008-11/msg00049.html
........
................
r155854 | root | 2008-11-10 16:04:17 -0500 (Mon, 10 Nov 2008) | 9 lines
Merged revisions 155803 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r155803 | tilghman | 2008-11-10 14:49:59 -0600 (Mon, 10 Nov 2008) | 1 line
I got tired of saying this in every single bugnote referring to this file.
........
................
r155912 | root | 2008-11-10 17:08:04 -0500 (Mon, 10 Nov 2008) | 22 lines
Merged revisions 155861 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r155861 | mmichelson | 2008-11-10 15:07:39 -0600 (Mon, 10 Nov 2008) | 14 lines
Channel drivers assume that when their indicate callback
is invoked, that the channel on which the callback was called
is locked. This patch corrects an instance in chan_agent where
a channel's indicate callback is called directly without first
locking the channel.
This was leading to some observed locking issues in chan_local,
but considering that all channel drivers operate under the
same expectations, the generic fix in chan_agent is the right
way to go.
AST-126
........
................
r156220 | root | 2008-11-12 13:05:46 -0500 (Wed, 12 Nov 2008) | 36 lines
Merged revisions 156164,156167,156178 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156164 | russell | 2008-11-12 11:29:52 -0600 (Wed, 12 Nov 2008) | 7 lines
Move the sanity check that makes sure "always fork" is not set along with the
console option to be after the code that reads options from asterisk.conf.
This resolves a situation where Asterisk can start taking up 100% when
misconfigured.
(Thanks to Bryce Porter (x86 on IRC) for letting me log in to his system to
figure out what was causing the 100% CPU problem.)
........
r156167 | mmichelson | 2008-11-12 11:38:33 -0600 (Wed, 12 Nov 2008) | 7 lines
When doing some tests, I was having a crash at the end of every call
if an attended transfer occurred during the call. I traced the cause to
the CDR on one of the channels being NULL. murf suggested a check in
the end bridge callback to be sure the CDR is non-NULL before proceeding,
so that's what I'm adding.
........
r156178 | jpeeler | 2008-11-12 11:53:44 -0600 (Wed, 12 Nov 2008) | 8 lines
(closes issue #13173)
Reported by: pep
This change adds an announce_thread responsible for playing announcements to an existing conference. This allows all announcing to be immediately stopped if necessary but more importantly allows other threads that need to play something to not block. There are multiple benefits to this, but the actual bug is for solving the scenario for a channel to be unusable after hang up for the entire duration of the parting announcement. The parting announcement can be extremely long depending on what the user recorded upon joining the conference.
Reviewed by Russell on Review Board:
http://reviewboard.digium.com/r/25/
........
................
r156279 | root | 2008-11-12 14:03:22 -0500 (Wed, 12 Nov 2008) | 19 lines
Merged revisions 156229 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156229 | tilghman | 2008-11-12 12:39:21 -0600 (Wed, 12 Nov 2008) | 11 lines
Revert revision 132506, since it occasionally caused IAX2 HANGUP packets not
to be sent, and instead, schedule a task to destroy the iax2 pvt structure
10 seconds later. This allows the IAX2 HANGUP packet to be queued,
transmitted, and ACKed before the pvt is destroyed.
(closes issue #13645)
Reported by: dzajro
Patches:
20081111__bug13645__3.diff.txt uploaded by Corydon76 (license 14)
Tested by: vazir
Reviewed: http://reviewboard.digium.com/r/51/
........
................
r156346 | root | 2008-11-12 15:02:45 -0500 (Wed, 12 Nov 2008) | 41 lines
Merged revisions 156289,156294,156297 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156289 | jpeeler | 2008-11-12 13:10:12 -0600 (Wed, 12 Nov 2008) | 3 lines
For whatever reason, gcc only warned me about the possible use of an uninitialized variable when compiling 1.6.1.
........
r156294 | tilghman | 2008-11-12 13:26:45 -0600 (Wed, 12 Nov 2008) | 6 lines
If the SLA thread is not started, then reload causes a memory leak.
(closes issue #13889)
Reported by: eliel
Patches:
app_meetme.c.patch uploaded by eliel (license 64)
........
r156297 | murf | 2008-11-12 13:36:16 -0600 (Wed, 12 Nov 2008) | 18 lines
It turns out that the 0x0XX00 codes being returned for
N, X, and Z are off by one, as per conversation with
jsmith on #asterisk-dev; he was teaching a class
and disconcerted that this published rule was not
being followed, with patterns _NXX, _[1-8]22 and
_[2-9]22... and NXX was winning, but [1-8] should
have been.
This change, tested on these 3 patterns now
picks the proper one.
However, this change may surprise users who
set up dialplans based on previous behavior,
which has been there for what, 2 and half
years or so now.
........
................
r156435 | root | 2008-11-12 17:01:42 -0500 (Wed, 12 Nov 2008) | 13 lines
Merged revisions 156386 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156386 | tilghman | 2008-11-12 15:18:57 -0600 (Wed, 12 Nov 2008) | 5 lines
When using call limits under 1 second, infinite call lengths are allowed,
instead.
(closes issue #13851)
Reported by: ruddy
........
................
r156506 | root | 2008-11-13 06:57:26 -0500 (Thu, 13 Nov 2008) | 9 lines
Merged revisions 156485 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156485 | kpfleming | 2008-11-13 05:51:27 -0600 (Thu, 13 Nov 2008) | 1 line
correct minor syntax error... no functional change
........
................
r156531 | root | 2008-11-13 07:56:33 -0500 (Thu, 13 Nov 2008) | 9 lines
Merged revisions 156510 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156510 | kpfleming | 2008-11-13 05:58:41 -0600 (Thu, 13 Nov 2008) | 1 line
revert this change... non-functional changes don't belong here
........
................
r156740 | root | 2008-11-13 17:02:29 -0500 (Thu, 13 Nov 2008) | 15 lines
Merged revisions 156688 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156688 | tilghman | 2008-11-13 15:24:00 -0600 (Thu, 13 Nov 2008) | 7 lines
Provide more space for all the data which can appear in an originating
channel name.
(closes issue #13398)
Reported by: bamby
Patches:
manager.c.diff uploaded by bamby (license 430)
........
................
r156803 | root | 2008-11-13 20:01:44 -0500 (Thu, 13 Nov 2008) | 14 lines
Merged revisions 156755 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156755 | tilghman | 2008-11-13 18:41:37 -0600 (Thu, 13 Nov 2008) | 6 lines
ast_waitfordigit() requires that the channel be up, for no good logical
reason. This prevents While/EndWhile from working within the "h"
extension.
Reported by: jgalarneau (for ABE C.2)
Fixed by: me
........
................
r156866 | root | 2008-11-14 11:01:58 -0500 (Fri, 14 Nov 2008) | 18 lines
Merged revisions 156816 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r156816 | mmichelson | 2008-11-14 09:18:59 -0600 (Fri, 14 Nov 2008) | 10 lines
If the prompt to reenter a voicemail password timed out, it
resulted in the password not being saved, even if the input matched
what you gave when first prompted to enter a new password. This is
because the return value of ast_readstring was checked, but not checked
properly.
This bug was discovered by Jared Smith during an Asterisk training course.
Thanks for reporting it!
........
................
r157154 | root | 2008-11-15 14:04:07 -0500 (Sat, 15 Nov 2008) | 21 lines
Merged revisions 157104 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r157104 | kpfleming | 2008-11-15 12:00:32 -0600 (Sat, 15 Nov 2008) | 13 lines
major update to doxygen configuration file:
1) update to doxygen 1.5.x style file, as used in trunk
2) tell doxygen where are header files are, so include-file processing can be done
3) make all macros that are used to define variables/functions be expanded, so that doxygen will properly document the resulting variable/function
4) make all macros that are used to provide the contents of a variable (structure) be expanded, so that doxygen will be able to document the resulting fields
5) suppress compiler attributes (__attribute__(xxx)) from being seen by doxygen, so it will properly match up function definition and usage (for an example of th effect of this, look at the doxygen docs for ast_log() from before and afte this commit)
........
................
r157214 | root | 2008-11-15 15:02:05 -0500 (Sat, 15 Nov 2008) | 13 lines
Merged revisions 157162-157163 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r157162 | kpfleming | 2008-11-15 13:24:24 -0600 (Sat, 15 Nov 2008) | 1 line
dist-clean should remove dependency information files as well
........
r157163 | kpfleming | 2008-11-15 13:31:03 -0600 (Sat, 15 Nov 2008) | 1 line
when an individual directory dist-clean is run, run clean in that directory first, and when running top-level dist-clean, do not run subdirectory clean operations twice
........
................
r157356 | root | 2008-11-18 14:04:04 -0500 (Tue, 18 Nov 2008) | 20 lines
Merged revisions 157305 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r157305 | mmichelson | 2008-11-18 12:25:55 -0600 (Tue, 18 Nov 2008) | 12 lines
Fix a crash in the end_bridge_callback of app_dial and
app_followme which would occur at the end of an attended
transfer. The error occurred because we initially stored
a pointer to an ast_channel which then was hung up due
to a masquerade.
This commit adds a "fixup" callback to the bridge_config
structure to allow for end_bridge_callback_data to be
changed in the case that a new channel pointer is needed
for the end_bridge_callback.
........
................
r157414 | root | 2008-11-18 15:01:47 -0500 (Tue, 18 Nov 2008) | 14 lines
Merged revisions 157365 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r157365 | jpeeler | 2008-11-18 13:13:33 -0600 (Tue, 18 Nov 2008) | 6 lines
(closes issue #13899)
Reported by: akkornel
This fix is the result of a bug fix in ast_app_separate_args r124395. If an argument does not exist it should always be set to a null string rather than a null pointer.
........
................
r157552 | root | 2008-11-18 18:03:20 -0500 (Tue, 18 Nov 2008) | 21 lines
Merged revisions 157503 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r157503 | mmichelson | 2008-11-18 16:47:57 -0600 (Tue, 18 Nov 2008) | 13 lines
Add some missing invite state changes necessary in the sip_write
function. Not setting the invite state correctly on the call was
resulting in the Record application leaving empty files. I also
have updated the doxygen comment next to the declaration of the
INV_EARLY_MEDIA constant to reflect that we also use this state
when we *send* a 18X response to an INVITE.
(closes issue #13878)
Reported by: nahuelgreco
Patches:
sip-early-media-recording-1.4.22.patch uploaded by nahuelgreco (license 162)
Tested by: putnopvut
........
................
r157896 | root | 2008-11-19 17:01:32 -0500 (Wed, 19 Nov 2008) | 15 lines
Merged revisions 157859 via svnmerge from
file:///srv/subversion/repos/asterisk/branches/1.4
........
r157859 | kpfleming | 2008-11-19 15:34:47 -0600 (Wed, 19 Nov 2008) | 7 lines
the gcc optimizer frequently finds broken code (use of uninitalized variables, unreachable code, etc.), which is good. however, developers usually compile with the optimizer turned off, because if they need to debug the resulting code, optimized code makes that process very difficult. this means that we get code changes committed that weren't adequately checked over for these sorts of problems.
with this build system change, if (and only if) --enable-dev-mode was used and DONT_OPTIMIZE is turned on, when a source file is compiled it will actually be preprocessed (into a .i or .ii file), then compiled once with optimization (with the result sent to /dev/null) and again without optimization (but only if the first compile succeeded, of course).
while making these changes, i did some cleanup work in Makefile.rules to move commonly-used combinations of flag variables into their own variables, to make the file easier to read and maintain
........
................
Modified:
team/seanbright/issue13827-1.4/ (props changed)
team/seanbright/issue13827-1.4/Makefile
team/seanbright/issue13827-1.4/Makefile.moddir_rules
team/seanbright/issue13827-1.4/Makefile.rules
team/seanbright/issue13827-1.4/apps/app_dial.c
team/seanbright/issue13827-1.4/apps/app_followme.c
team/seanbright/issue13827-1.4/apps/app_meetme.c
team/seanbright/issue13827-1.4/apps/app_voicemail.c
team/seanbright/issue13827-1.4/apps/app_while.c
team/seanbright/issue13827-1.4/channels/ (props changed)
team/seanbright/issue13827-1.4/channels/chan_agent.c
team/seanbright/issue13827-1.4/channels/chan_dahdi.c
team/seanbright/issue13827-1.4/channels/chan_h323.c
team/seanbright/issue13827-1.4/channels/chan_iax2.c
team/seanbright/issue13827-1.4/channels/chan_local.c
team/seanbright/issue13827-1.4/channels/chan_misdn.c
team/seanbright/issue13827-1.4/channels/chan_oss.c
team/seanbright/issue13827-1.4/channels/chan_sip.c
team/seanbright/issue13827-1.4/channels/misdn/ (props changed)
team/seanbright/issue13827-1.4/channels/misdn/Makefile
team/seanbright/issue13827-1.4/codecs/gsm/Makefile
team/seanbright/issue13827-1.4/codecs/gsm/src/ (props changed)
team/seanbright/issue13827-1.4/configs/voicemail.conf.sample
team/seanbright/issue13827-1.4/contrib/asterisk-ng-doxygen
team/seanbright/issue13827-1.4/doc/valgrind.txt
team/seanbright/issue13827-1.4/funcs/func_odbc.c
team/seanbright/issue13827-1.4/include/asterisk/channel.h
team/seanbright/issue13827-1.4/main/asterisk.c
team/seanbright/issue13827-1.4/main/channel.c
team/seanbright/issue13827-1.4/main/db1-ast/Makefile
team/seanbright/issue13827-1.4/main/db1-ast/btree/ (props changed)
team/seanbright/issue13827-1.4/main/db1-ast/db/ (props changed)
team/seanbright/issue13827-1.4/main/db1-ast/hash/ (props changed)
team/seanbright/issue13827-1.4/main/db1-ast/mpool/ (props changed)
team/seanbright/issue13827-1.4/main/db1-ast/recno/ (props changed)
team/seanbright/issue13827-1.4/main/file.c
team/seanbright/issue13827-1.4/main/http.c
team/seanbright/issue13827-1.4/main/manager.c
team/seanbright/issue13827-1.4/main/pbx.c
team/seanbright/issue13827-1.4/main/rtp.c
team/seanbright/issue13827-1.4/main/stdtime/ (props changed)
team/seanbright/issue13827-1.4/main/stdtime/Makefile
team/seanbright/issue13827-1.4/main/utils.c
team/seanbright/issue13827-1.4/pbx/Makefile
team/seanbright/issue13827-1.4/pbx/ael/ (props changed)
team/seanbright/issue13827-1.4/pbx/pbx_config.c
team/seanbright/issue13827-1.4/res/Makefile
team/seanbright/issue13827-1.4/res/res_features.c
team/seanbright/issue13827-1.4/res/res_jabber.c
team/seanbright/issue13827-1.4/res/snmp/ (props changed)
Propchange: team/seanbright/issue13827-1.4/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Nov 19 18:29:31 2008
@@ -1,1 +1,1 @@
-/branches/1.4:1-153702 /team/seanbright/issue5014-1.4:1-153825
+/branches/1.4:1-153825 /team/seanbright/issue5014-1.4:1-157896
Modified: team/seanbright/issue13827-1.4/Makefile
URL: http://svn.digium.com/view/asterisk/team/seanbright/issue13827-1.4/Makefile?view=diff&rev=157978&r1=157977&r2=157978
==============================================================================
--- team/seanbright/issue13827-1.4/Makefile (original)
+++ team/seanbright/issue13827-1.4/Makefile Wed Nov 19 18:29:31 2008
@@ -373,7 +373,9 @@
$(SUBDIRS_DIST_CLEAN):
@$(MAKE) --no-print-directory -C $(@:-dist-clean=) dist-clean
-clean: $(SUBDIRS_CLEAN)
+clean: $(SUBDIRS_CLEAN) _clean
+
+_clean:
rm -f defaults.h
rm -f include/asterisk/build.h
rm -f include/asterisk/version.h
@@ -382,7 +384,7 @@
dist-clean: distclean
-distclean: $(SUBDIRS_DIST_CLEAN) clean
+distclean: $(SUBDIRS_DIST_CLEAN) _clean
@$(MAKE) -C menuselect dist-clean
@$(MAKE) -C sounds dist-clean
rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps
@@ -758,6 +760,6 @@
@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) badshell menuselect.makeopts installdirs
+.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) badshell menuselect.makeopts installdirs _clean
FORCE:
Modified: team/seanbright/issue13827-1.4/Makefile.moddir_rules
URL: http://svn.digium.com/view/asterisk/team/seanbright/issue13827-1.4/Makefile.moddir_rules?view=diff&rev=157978&r1=157977&r2=157978
==============================================================================
--- team/seanbright/issue13827-1.4/Makefile.moddir_rules (original)
+++ team/seanbright/issue13827-1.4/Makefile.moddir_rules Wed Nov 19 18:29:31 2008
@@ -64,7 +64,7 @@
@for file in $(patsubst %,$(SUBDIR)/%,$(filter-out %.o,$^)); do echo "INPUT (../$${file})" >> $@; done
clean::
- rm -f *.so *.o *.oo *.s *.i
+ rm -f *.so *.o *.oo *.s *.i *.ii
rm -f .*.o.d .*.oo.d
rm -f modules.link
@@ -76,6 +76,7 @@
dist-clean::
rm -f .*.moduleinfo .moduleinfo
rm -f .*.makeopts .makeopts
+ rm -f .*.d
.%.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\">" > $@
Modified: team/seanbright/issue13827-1.4/Makefile.rules
URL: http://svn.digium.com/view/asterisk/team/seanbright/issue13827-1.4/Makefile.rules?view=diff&rev=157978&r1=157977&r2=157978
==============================================================================
--- team/seanbright/issue13827-1.4/Makefile.rules (original)
+++ team/seanbright/issue13827-1.4/Makefile.rules Wed Nov 19 18:29:31 2008
@@ -3,7 +3,7 @@
#
# Makefile rules
#
-# Copyright (C) 2006, Digium, Inc.
+# Copyright (C) 2006-2008, Digium, Inc.
#
# Kevin P. Fleming <kpfleming at digium.com>
#
@@ -19,44 +19,95 @@
.PHONY: dist-clean
+# extra cflags to build dependencies. Recursively expanded.
+MAKE_DEPS=-MD -MT $@ -MF .$(subst /,_,$@).d -MP
+
ifeq ($(NOISY_BUILD),)
- ECHO_PREFIX=@
- CMD_PREFIX=@
+ ECHO_PREFIX=@
+ CMD_PREFIX=@
else
- ECHO_PREFIX=@\#
- CMD_PREFIX=
+ ECHO_PREFIX=@\#
+ CMD_PREFIX=
endif
+OPTIMIZE?=-O6
+
ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
-# More GSM codec optimization
-# Uncomment to enable MMXTM optimizations for x86 architecture CPU's
-# which support MMX instructions. This should be newer pentiums,
-# ppro's, etc, as well as the AMD K6 and K7.
-#K6OPT=-DK6OPT
+ # More GSM codec optimization
+ # Uncomment to enable MMXTM optimizations for x86 architecture CPU's
+ # which support MMX instructions. This should be newer pentiums,
+ # ppro's, etc, as well as the AMD K6 and K7.
+ #K6OPT=-DK6OPT
-OPTIMIZE?=-O6
-ASTCFLAGS+=$(OPTIMIZE)
+ ASTCFLAGS+=$(OPTIMIZE)
endif
+
+# shortcuts for common combinations of flags; these must be recursively expanded so that
+# per-target settings will be applied
+CC_CFLAGS=$(PTHREAD_CFLAGS) $(ASTCFLAGS)
+CXX_CFLAGS=$(PTHREAD_CFLAGS) $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(AST_DECLARATION_AFTER_STATEMENT),$(ASTCFLAGS))
+CC_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK)
+CXX_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK)
+CC_LIBS=$(PTHREAD_LIBS) $(LIBS)
+CXX_LIBS=$(PTHREAD_LIBS) $(LIBS)
+
+# determine whether to double-compile so that the optimizer can report code path problems
+# this is only done when developer mode and DONT_OPTIMIZE are both enabled
+# in that case, we run the preprocessor to produce a .i or .ii file from the source
+# code, then compile once with optimizer enabled (and the output to /dev/null),
+# and if that doesn't fail then compile again with optimizer disabled
+ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS))$(AST_DEVMODE),DONT_OPTIMIZEyes)
+COMPILE_DOUBLE=yes
+endif
+
+%.o: %.s
+ $(ECHO_PREFIX) echo " [AS] $< -> $@"
+ifeq ($(COMPILE_DOUBLE),yes)
+ $(CMD_PREFIX) $(CC) -o /dev/null -c $< $(CC_CFLAGS) $(OPTIMIZE)
+endif
+ $(CMD_PREFIX) $(CC) -o $@ -c $< $(CC_CFLAGS)
+
+%.o: %.i
+ $(ECHO_PREFIX) echo " [CCi] $< -> $@"
+ifeq ($(COMPILE_DOUBLE),yes)
+ $(CMD_PREFIX) $(CC) -o /dev/null -c $< $(CC_CFLAGS) $(OPTIMIZE)
+endif
+ $(CMD_PREFIX) $(CC) -o $@ -c $< $(CC_CFLAGS)
%.o: %.c
$(ECHO_PREFIX) echo " [CC] $< -> $@"
- $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) -MD -MT $@ -MF .$(subst /,_,$@).d -MP
-
-%.o: %.i
- $(ECHO_PREFIX) echo " [CCi] $< -> $@"
- $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) -MD -MT $@ -MF .$(subst /,_,$@).d -MP
+ifeq ($(COMPILE_DOUBLE),yes)
+ $(CMD_PREFIX) $(CC) -o $(@:%.o=%.i) -E $< $(CC_CFLAGS) $(MAKE_DEPS)
+ $(CMD_PREFIX) $(CC) -o /dev/null -c $(@:%.o=%.i) $(CC_CFLAGS) $(OPTIMIZE)
+ $(CMD_PREFIX) $(CC) -o $@ -c $(@:%.o=%.i) $(CC_CFLAGS)
+else
+ $(CMD_PREFIX) $(CC) -o $@ -c $< $(CC_CFLAGS) $(MAKE_DEPS)
+endif
%.i: %.c
$(ECHO_PREFIX) echo " [CPP] $< -> $@"
- $(CMD_PREFIX) $(CC) -o $@ -E $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) -MD -MT $@ -MF .$(subst /,_,$@).d -MP
+ $(CMD_PREFIX) $(CC) -o $@ -E $< $(CC_CFLAGS) $(MAKE_DEPS)
-%.o: %.s
- $(ECHO_PREFIX) echo " [AS] $< -> $@"
- $(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) -MD -MT $@ -MF .$(subst /,_,$@).d -MP
+%.oo: %.ii
+ $(ECHO_PREFIX) echo " [CXXi] $< -> $@"
+ifeq ($(COMPILE_DOUBLE),yes)
+ $(CMD_PREFIX) $(CXX) -o /dev/null -c $< $(CXX_CFLAGS) $(OPTIMIZE)
+endif
+ $(CMD_PREFIX) $(CXX) -o $@ -c $< $(CXX_CFLAGS)
%.oo: %.cc
$(ECHO_PREFIX) echo " [CXX] $< -> $@"
- $(CMD_PREFIX) $(CXX) -o $@ -c $< $(PTHREAD_CFLAGS) $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(AST_DECLARATION_AFTER_STATEMENT),$(ASTCFLAGS)) -MD -MT $@ -MF .$(subst /,_,$@).d -MP
+ifeq ($(COMPILE_DOUBLE),yes)
+ $(CMD_PREFIX) $(CXX) -o $(@:%.oo=%.ii) -E $< $(CXX_CFLAGS) $(MAKE_DEPS)
+ $(CMD_PREFIX) $(CXX) -o /dev/null -c $(@:%.oo=%.ii) $(CXX_CFLAGS) $(MAKE_DEPS) $(OPTIMIZE)
+ $(CMD_PREFIX) $(CXX) -o $@ -c $(@:%.oo=%.ii) $(CXX_CFLAGS) $(MAKE_DEPS)
+else
+ $(CMD_PREFIX) $(CXX) -o $@ -c $< $(CXX_CFLAGS) $(MAKE_DEPS)
+endif
+
+%.ii: %.cc
+ $(ECHO_PREFIX) echo " [CPP] $< -> $@"
+ $(CMD_PREFIX) $(CXX) -o $@ -E $< $(CXX_CFLAGS) $(MAKE_DEPS)
%.c: %.y
$(ECHO_PREFIX) echo " [BISON] $< -> $@"
@@ -68,14 +119,14 @@
%.so: %.o
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
- $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK) $^ $(PTHREAD_LIBS) $(LIBS)
+ $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(CC_LDFLAGS_SO) $^ $(CC_LIBS)
%.so: %.oo
$(ECHO_PREFIX) echo " [LDXX] $^ -> $@"
- $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK) $^ $(PTHREAD_LIBS) $(LIBS)
+ $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(CXX_LDFLAGS_SO) $^ $(CXX_LIBS)
%: %.o
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
- $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $^ $(PTHREAD_LIBS) $(LIBS)
+ $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $^ $(CXX_LIBS)
-dist-clean::
+dist-clean:: clean
Modified: team/seanbright/issue13827-1.4/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/seanbright/issue13827-1.4/apps/app_dial.c?view=diff&rev=157978&r1=157977&r2=157978
==============================================================================
--- team/seanbright/issue13827-1.4/apps/app_dial.c (original)
+++ team/seanbright/issue13827-1.4/apps/app_dial.c Wed Nov 19 18:29:31 2008
@@ -832,6 +832,35 @@
ast_set_flag(&(features->features_caller), AST_FEATURE_PARKCALL);
}
+static void end_bridge_callback (void *data)
+{
+ char buf[80];
+ time_t end;
+ struct ast_channel *chan = data;
+
+ if (!chan->cdr) {
+ return;
+ }
+
+ time(&end);
+
+ ast_channel_lock(chan);
+ if (chan->cdr->answer.tv_sec) {
+ snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
+ pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
+ }
+
+ if (chan->cdr->start.tv_sec) {
+ snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
+ pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
+ }
+ ast_channel_unlock(chan);
+}
+
+static void end_bridge_callback_data_fixup(struct ast_bridge_config *bconfig, struct ast_channel *originator, struct ast_channel *terminator) {
+ bconfig->end_bridge_callback_data = originator;
+}
+
static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags *peerflags, int *continue_exec)
{
int res = -1;
@@ -1719,6 +1748,9 @@
if (!res) {
if (calldurationlimit > 0) {
peer->whentohangup = time(NULL) + calldurationlimit;
+ } else if (timelimit > 0) {
+ /* Not enough granularity to make it less, but we can't use the special value 0 */
+ peer->whentohangup = time(NULL) + 1;
}
if (!ast_strlen_zero(dtmfcalled)) {
if (option_verbose > 2)
@@ -1734,27 +1766,6 @@
if (!res) {
struct ast_bridge_config config;
-
- auto void end_bridge_callback(void);
- void end_bridge_callback (void)
- {
- char buf[80];
- time_t end;
-
- time(&end);
-
- ast_channel_lock(chan);
- if (chan->cdr->answer.tv_sec) {
- snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
- pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
- }
-
- if (chan->cdr->start.tv_sec) {
- snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
- pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
- }
- ast_channel_unlock(chan);
- }
memset(&config,0,sizeof(struct ast_bridge_config));
if (play_to_caller)
@@ -1787,6 +1798,8 @@
config.end_sound = end_sound;
config.start_sound = start_sound;
config.end_bridge_callback = end_bridge_callback;
+ config.end_bridge_callback_data = chan;
+ config.end_bridge_callback_data_fixup = end_bridge_callback_data_fixup;
if (moh) {
moh = 0;
ast_moh_stop(chan);
@@ -1846,7 +1859,7 @@
ast_log(LOG_DEBUG, "Exiting with DIALSTATUS=%s.\n", status);
if ((ast_test_flag(peerflags, OPT_GO_ON)) && (!chan->_softhangup) && (res != AST_PBX_KEEPALIVE)) {
- if (calldurationlimit)
+ if (timelimit)
chan->whentohangup = 0;
res = 0;
}
Modified: team/seanbright/issue13827-1.4/apps/app_followme.c
URL: http://svn.digium.com/view/asterisk/team/seanbright/issue13827-1.4/apps/app_followme.c?view=diff&rev=157978&r1=157977&r2=157978
==============================================================================
--- team/seanbright/issue13827-1.4/apps/app_followme.c (original)
+++ team/seanbright/issue13827-1.4/apps/app_followme.c Wed Nov 19 18:29:31 2008
@@ -914,6 +914,32 @@
}
+static void end_bridge_callback (void *data)
+{
+ char buf[80];
+ time_t end;
+ struct ast_channel *chan = data;
+
+ time(&end);
+
+ ast_channel_lock(chan);
+ if (chan->cdr->answer.tv_sec) {
+ snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
+ pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
+ }
+
+ if (chan->cdr->start.tv_sec) {
+ snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
+ pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
+ }
+ ast_channel_unlock(chan);
+}
+
+static void end_bridge_callback_data_fixup(struct ast_bridge_config *bconfig, struct ast_channel *originator, struct ast_channel *terminator)
+{
+ bconfig->end_bridge_callback_data = originator;
+}
+
static int app_exec(struct ast_channel *chan, void *data)
{
struct fm_args targs;
@@ -1025,27 +1051,6 @@
ast_stream_and_wait(chan, targs.sorryprompt, chan->language, "");
res = 0;
} else {
- auto void end_bridge_callback(void);
- void end_bridge_callback (void)
- {
- char buf[80];
- time_t end;
-
- time(&end);
-
- ast_channel_lock(chan);
- if (chan->cdr->answer.tv_sec) {
- snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
- pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
- }
-
- if (chan->cdr->start.tv_sec) {
- snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
- pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
- }
- ast_channel_unlock(chan);
- }
-
caller = chan;
outbound = targs.outbound;
/* Bridge the two channels. */
@@ -1056,6 +1061,8 @@
ast_set_flag(&(config.features_caller), AST_FEATURE_AUTOMON);
config.end_bridge_callback = end_bridge_callback;
+ config.end_bridge_callback_data = chan;
+ config.end_bridge_callback_data_fixup = end_bridge_callback_data_fixup;
ast_moh_stop(caller);
/* Be sure no generators are left on it */
Modified: team/seanbright/issue13827-1.4/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/seanbright/issue13827-1.4/apps/app_meetme.c?view=diff&rev=157978&r1=157977&r2=157978
==============================================================================
--- team/seanbright/issue13827-1.4/apps/app_meetme.c (original)
+++ team/seanbright/issue13827-1.4/apps/app_meetme.c Wed Nov 19 18:29:31 2008
@@ -64,6 +64,7 @@
#include "asterisk/translate.h"
#include "asterisk/ulaw.h"
#include "asterisk/astobj.h"
+#include "asterisk/astobj2.h"
#include "asterisk/devicestate.h"
#include "asterisk/dial.h"
#include "asterisk/causes.h"
@@ -316,6 +317,20 @@
#define MAX_CONFNUM 80
#define MAX_PIN 80
+enum announcetypes {
+ CONF_HASJOIN,
+ CONF_HASLEFT
+};
+
+struct announce_listitem {
+ AST_LIST_ENTRY(announce_listitem) entry;
+ char namerecloc[PATH_MAX]; /*!< Name Recorded file Location */
+ char language[MAX_LANGUAGE];
+ struct ast_channel *confchan;
+ int confusers;
+ enum announcetypes announcetype;
+};
+
/*! \brief The MeetMe Conference object */
struct ast_conference {
ast_mutex_t playlock; /*!< Conference specific lock (players) */
@@ -333,7 +348,7 @@
unsigned int isdynamic:1; /*!< Created on the fly? */
unsigned int locked:1; /*!< Is the conference locked? */
pthread_t recordthread; /*!< thread for recording */
- ast_mutex_t recordthreadlock; /*!< control threads trying to start recordthread */
+ ast_mutex_t recordthreadlock; /*!< control threads trying to start recordthread */
pthread_attr_t attr; /*!< thread attribute */
const char *recordingfilename; /*!< Filename to record the Conference into */
const char *recordingformat; /*!< Format to record the Conference in */
@@ -344,6 +359,13 @@
struct ast_trans_pvt *transpath[32];
AST_LIST_HEAD_NOLOCK(, ast_conf_user) userlist;
AST_LIST_ENTRY(ast_conference) list;
+ /* announce_thread related data */
+ pthread_t announcethread;
+ ast_mutex_t announcethreadlock;
+ unsigned int announcethread_stop:1;
+ ast_cond_t announcelist_addition;
+ AST_LIST_HEAD_NOLOCK(, announce_listitem) announcelist;
+ ast_mutex_t announcelistlock;
};
static AST_LIST_HEAD_STATIC(confs, ast_conference);
@@ -762,6 +784,8 @@
ast_mutex_init(&cnf->listenlock);
cnf->recordthread = AST_PTHREADT_NULL;
ast_mutex_init(&cnf->recordthreadlock);
+ cnf->announcethread = AST_PTHREADT_NULL;
+ ast_mutex_init(&cnf->announcethreadlock);
ast_copy_string(cnf->confno, confno, sizeof(cnf->confno));
ast_copy_string(cnf->pin, pin, sizeof(cnf->pin));
ast_copy_string(cnf->pinadmin, pinadmin, sizeof(cnf->pinadmin));
@@ -1233,6 +1257,7 @@
static int conf_free(struct ast_conference *conf)
{
int x;
+ struct announce_listitem *item;
AST_LIST_REMOVE(&confs, conf, list);
@@ -1254,6 +1279,20 @@
if (conf->transpath[x])
ast_translator_free_path(conf->transpath[x]);
}
+ if (conf->announcethread != AST_PTHREADT_NULL) {
+ ast_mutex_lock(&conf->announcelistlock);
+ conf->announcethread_stop = 1;
+ ast_softhangup(conf->chan, AST_SOFTHANGUP_EXPLICIT);
+ ast_cond_signal(&conf->announcelist_addition);
+ ast_mutex_unlock(&conf->announcelistlock);
+ pthread_join(conf->announcethread, NULL);
+
+ while ((item = AST_LIST_REMOVE_HEAD(&conf->announcelist, entry))) {
+ ast_filedelete(item->namerecloc, NULL);
+ ao2_ref(item, -1);
+ }
+ ast_mutex_destroy(&conf->announcelistlock);
+ }
if (conf->origframe)
ast_frfree(conf->origframe);
if (conf->lchan)
@@ -1266,6 +1305,8 @@
ast_mutex_destroy(&conf->playlock);
ast_mutex_destroy(&conf->listenlock);
ast_mutex_destroy(&conf->recordthreadlock);
+ ast_mutex_destroy(&conf->announcethreadlock);
+
free(conf);
return 0;
@@ -1288,6 +1329,10 @@
struct sla_trunk_ref *trunk_ref, struct sla_station *station, int lock)
{
struct sla_event *event;
+
+ if (sla.thread == AST_PTHREADT_NULL) {
+ return;
+ }
if (!(event = ast_calloc(1, sizeof(*event))))
return;
@@ -1370,6 +1415,72 @@
return res;
}
+static const char *get_announce_filename(enum announcetypes type)
+{
+ switch (type) {
+ case CONF_HASLEFT:
+ return "conf-hasleft";
+ break;
+ case CONF_HASJOIN:
+ return "conf-hasjoin";
+ break;
+ default:
+ return "";
+ }
+}
+
+static void *announce_thread(void *data)
+{
+ struct announce_listitem *current;
+ struct ast_conference *conf = data;
+ int res;
+ char filename[PATH_MAX] = "";
+ AST_LIST_HEAD_NOLOCK(, announce_listitem) local_list;
+ AST_LIST_HEAD_INIT_NOLOCK(&local_list);
+
+ while (!conf->announcethread_stop) {
+ ast_mutex_lock(&conf->announcelistlock);
[... 1535 lines stripped ...]
More information about the asterisk-commits
mailing list