[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