Commit Graph

197 Commits

Author SHA1 Message Date
Russell Bryant
730e60e583 Merged revisions 201600 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r201600 | russell | 2009-06-18 10:24:31 -0500 (Thu, 18 Jun 2009) | 29 lines
  
  Fix memory corruption and leakage related reloads of non files mode MoH classes.
  
  For Music on Hold classes that are not files mode, meaning that we are executing
  an application that will feed us audio data, we use a thread to monitor the
  external application and read audio from it.  This thread also makes use of the
  MoH class object.  In the MoH class destructor, we used pthread_cancel() to ask
  the thread to exit.  Unfortunately, the code did not wait to ensure that the
  thread actually went away.  What needed to be done is a pthread_join() to ensure
  that the thread fully cleans up before we proceed.  By adding this one line, we
  resolve two significant problems:
  
    1) Since the thread was never joined, it never fully goes away.  So, on every
       reload of non-files mode MoH, an unused thread was sticking around.
  
    2) There was a race condition here where the application monitoring thread
       could still try to access the MoH class, even though the thread executing
       the MoH reload has already destroyed it.
  
  (issue #15109)
  Reported by: jvandal
  
  (issue #15123)
  Reported by: axisinternet
  
  (issue #15195)
  Reported by: amorsen
  
  (issue AST-208)
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@201610 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-18 15:27:10 +00:00
Eliel C. Sardanons
515166ba37 Move music on hold related applications documentation to XML.
Move MusicOnHold, SetMusicOnHold, StartMusicOnHold, StopMusicOnHold static
documentation to the new AstXML form.

(issue #15245)
Reported by: eliel
Patches:
      res_musiconhold_static_conversion.txt uploaded by lmadsen (license 10)
      (with some fixes and formatting by me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@199413 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-06 23:03:15 +00:00
Kevin P. Fleming
e6b2e9a750 Const-ify the world (or at least a good part of it)
This patch adds 'const' tags to a number of Asterisk APIs where they are appropriate (where the API already demanded that the function argument not be modified, but the compiler was not informed of that fact). The list includes:

- CLI command handlers
- CLI command handler arguments
- AGI command handlers
- AGI command handler arguments
- Dialplan application handler arguments
- Speech engine API function arguments

In addition, various file-scope and function-scope constant arrays got 'const' and/or 'static' qualifiers where they were missing.

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



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@196072 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-05-21 21:13:09 +00:00
Mark Michelson
0102e6cc44 Fix another crash related to cached realtime music on hold.
This was another off-by-one problem caused by moh_register.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@188102 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-04-13 19:31:48 +00:00
Mark Michelson
5b5bd544ba Use safe macro practices even though they really aren't necessary.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@187424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-04-09 17:34:39 +00:00
Mark Michelson
0058b02563 Fix a crash in res_musiconhold when using cached realtime moh.
The moh_register function links an mohclass and then immediately
unrefs the class since the container now has a reference. The problem
with using realtime music on hold is that the class is allocated,
registered, and started in one fell swoop. The refcounting logic 
resulted in the count being off by one. The same problem did not
happen when using a static config because the allocation and registration
of an mohclass is a separate operation from starting moh. This also did
not affect non-cached realtime moh because the classes are not registered
at all.

I also have modified res_musiconhold to use the _t_ variants of the ao2_
functions so that more info can be gleaned when attempting to trace the
refcounts. I found this to be incredibly helpful for debugging this issue
and there's no good reason to remove it.

(closes issue #14661)
Reported by: sum



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@187421 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-04-09 17:30:39 +00:00
Mark Michelson
da786078f3 Merged revisions 187045 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r187045 | mmichelson | 2009-04-08 11:52:03 -0500 (Wed, 08 Apr 2009) | 10 lines
  
  Fix a small logical error when loading moh classes.
  
  We were unconditionally incrementing the number of mohclasses
  registered. However, we should actually only increment if the
  call to moh_register was successful.
  
  While this probably has never caused problems, I noticed it
  and decided to fix it anyway.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@187046 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-04-08 16:52:20 +00:00
Joshua Colp
815c56369f Merged revisions 181664 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r181664 | file | 2009-03-12 13:56:20 -0300 (Thu, 12 Mar 2009) | 2 lines
  
  Fix incorrect usage of strncasecmp... I really meant to use strcasecmp.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@181665 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-12 16:56:58 +00:00
Joshua Colp
e12265e530 Merged revisions 181659-181660 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r181659 | file | 2009-03-12 13:50:37 -0300 (Thu, 12 Mar 2009) | 8 lines
  
  Fix another scenario where depending on configuration the stream would not get read.
  
  For custom commands we don't know whether the audio is coming from a stream or not
  so we are going to have to read the data despite no channels.
  
  (closes issue #14416)
  Reported by: caspy
........
  r181660 | file | 2009-03-12 13:52:45 -0300 (Thu, 12 Mar 2009) | 2 lines
  
  Fix logic flaw in previous commit.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@181661 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-12 16:53:52 +00:00
Joshua Colp
a80c5e37af Merged revisions 181655 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r181655 | file | 2009-03-12 13:29:19 -0300 (Thu, 12 Mar 2009) | 10 lines
  
  Fix issue with streaming MOH failing if nobody is listening.
  
  When a music class is setup to actually provide music on hold
  from a stream we need to constantly read audio from it since it
  will constantly be providing audio. This is now done despite there
  being no channels listening to it.
  
  (closes issue #14416)
  Reported by: caspy
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@181656 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-12 16:32:20 +00:00
Joshua Colp
23760c47d3 Merged revisions 174218 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r174218 | file | 2009-02-09 10:48:21 -0400 (Mon, 09 Feb 2009) | 4 lines
  
  Don't overwrite our pointer to the music class when music on hold stops. We will use this if it starts again to see if we can resume the music where it left off.
  (closes issue #14407)
  Reported by: mostyn
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@174219 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-02-09 14:49:24 +00:00
Russell Bryant
458a1025ad Merged revisions 168198 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r168198 | russell | 2009-01-09 16:14:38 -0600 (Fri, 09 Jan 2009) | 2 lines

Make this compile for mvanbaak

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@168200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-01-09 22:21:05 +00:00
Russell Bryant
dd7ed66142 Cosmetic change - don't mix struct initializer styles.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@166436 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-22 21:45:28 +00:00
Russell Bryant
cf25187ac4 Fix a bad typo.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@166377 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-22 20:26:48 +00:00
Russell Bryant
77b1fe0ceb Re-work ref count handling of MoH classes using astobj2 to resolve crashes.
(closes issue #13566)
Reported by: igorcarneiro
Tested by: russell
Review: http://reviewboard.digium.com/r/106/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@166273 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-22 16:10:40 +00:00
Russell Bryant
8cc50d4677 Merged revisions 165661 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r165661 | russell | 2008-12-18 12:52:18 -0600 (Thu, 18 Dec 2008) | 7 lines

Set the process group ID on the MOH process so that all children will get killed

(closes issue #14099)
Reported by: caspy
Patches:
      res_musiconhold.c.patch.killpg.try2 uploaded by caspy (license 645)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@165662 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-18 18:54:47 +00:00
Russell Bryant
1f40479382 Merged revisions 164605 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r164605 | russell | 2008-12-16 08:28:10 -0600 (Tue, 16 Dec 2008) | 5 lines

Don't try to change working directory if a directory was not configured.

(closes issue #14089)
Reported by: caspy

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@164606 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-16 14:31:02 +00:00
Jeff Peeler
f0883cacca Merged revisions 162926 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r162926 | jpeeler | 2008-12-10 16:52:51 -0600 (Wed, 10 Dec 2008) | 3 lines

Oops, inverted logic for a strcasecmp check. Pointed out by mmichelson, thanks!


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@162927 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-10 22:53:34 +00:00
Jeff Peeler
040e552c26 Merged revisions 162874 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r162874 | jpeeler | 2008-12-10 16:04:18 -0600 (Wed, 10 Dec 2008) | 5 lines

(closes issue #13229)
Reported by: clegall_proformatique

Ensure that moh_generate does not return prematurely before local_ast_moh_stop is called. Also, the sleep in mp3_spawn now only occurs for http locations since it seems to have been added originally only for failing media streams.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@162891 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-10 22:11:46 +00:00
Eliel C. Sardanons
1e8e12efcf Janitor, use ARRAY_LEN() when possible.
(closes issue #13990)
Reported by: eliel
Patches:
      array_len.diff uploaded by eliel (license 64)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@161218 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-05 10:31:25 +00:00
Mark Michelson
a361f7897a This change prevents a crash from occurring if res_musiconhold.so
is unloaded and then Asterisk is stopped. The problem was that
we are not unregistering the ast_moh_destroy function at exit.

(closes issue #13761)
Reported by: eliel
Patches:
      res_musiconhold.c.patch uploaded by eliel (license 64)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@157592 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-18 23:59:02 +00:00
Kevin P. Fleming
60ef8fdae8 fix small bug introduced while cleaning up compiler warnings
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@153618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-02 19:09:41 +00:00
Kevin P. Fleming
bd4eb070f3 bring over all the fixes for the warnings found by gcc 4.3.x from the 1.4 branch, and add the ones needed for all the new code here too
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@153616 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-02 18:52:13 +00:00
Kevin P. Fleming
109a17ae79 support relative paths in musiconhold.conf, which makes moh work by default when Asterisk was configured using --prefix and 'make samples' is run
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@149917 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-16 08:30:32 +00:00
Tilghman Lesher
08af5bb312 Create a new config file status, CONFIG_STATUS_FILEINVALID for differentiating
when a file is invalid from when a file is missing.  This is most important when
we have two configuration files.  Consider the following example:

Old system:
sip.conf     users.conf     Old result               New result
========     ==========     ==========               ==========
Missing      Missing        SIP doesn't load         SIP doesn't load
Missing      OK             SIP doesn't load         SIP doesn't load
Missing      Invalid        SIP doesn't load         SIP doesn't load
OK           Missing        SIP loads                SIP loads
OK           OK             SIP loads                SIP loads
OK           Invalid        SIP loads incompletely   SIP doesn't load
Invalid      Missing        SIP doesn't load         SIP doesn't load
Invalid      OK             SIP doesn't load         SIP doesn't load
Invalid      Invalid        SIP doesn't load         SIP doesn't load

So in the case when users.conf doesn't load because there's a typo that
disrupts the syntax, we may only partially load users, instead of failing with
an error, which may cause some calls not to get processed.  Worse yet, the old
system would do this with no indication that anything was even wrong.

(closes issue #10690)
 Reported by: dtyoo
 Patches: 
       20080716__bug10690.diff.txt uploaded by Corydon76 (license 14)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@142992 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-09-12 23:30:03 +00:00
Sean Bright
357bf3e90b All of the res/ stuff (other than res_jabber) from the RSW branch.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@137028 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-10 00:47:56 +00:00
Tilghman Lesher
638a720eee Add AMI events for start/stop of MOH
(closes issue #12909)
 Reported by: chris-mac
 Patches: 
       res_musiconhold-event.patch uploaded by chris-mac (license 506)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@127169 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-01 21:21:26 +00:00
Kevin P. Fleming
b71f8ac66a fix compile failure found by buildbot (go, buildbot!)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@125279 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-26 12:09:24 +00:00
Kevin P. Fleming
fd4a60c459 Merged revisions 125132 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r125132 | kpfleming | 2008-06-25 17:21:30 -0500 (Wed, 25 Jun 2008) | 10 lines

allow tonezone to live in a different place than DAHDI/Zaptel, since dahdi-tools and dahdi-linux are now separate packages and can be installed in different places

don't include tonezone.h in dahdi_compat.h, because only a couple of modules need it

get app_rpt building again after the DAHDI changes

(closes issue #12911)
Reported by: tzafrir


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@125138 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-25 23:05:28 +00:00
Michiel van Baak
8e8359465b Older versions of GNU gcc do not allow 'NULL' as sentinel.
They want (char *)NULL as sentinel.
An example is OpenBSD (confirmed on 4.3) that ships with gcc 3.3.4

This commit introduces a contstant SENTINEL which is declared as:
#define SENTINEL ((char *)NULL)

All places I could test compile on my openbsd system are converted.
Update CODING-GUIDELINES to tell about this constant.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@124127 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-19 20:48:33 +00:00
Jeff Peeler
ef3b214728 Goodbye Zaptel, hello DAHDI. Removes Zaptel driver support with DAHDI. Configuration file and dialplan backwards compatability has been put in place where appropiate. Release announcement to follow.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@122234 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-12 17:27:55 +00:00
Michiel van Baak
f1e9371da8 - revert change to ast_queue_hangup and create ast_queue_hangup_with_cause
- make data member of the ast_frame struct a named union instead of a void

Recently the ast_queue_hangup function got a new parameter, the hangupcause
Feedback came in that this is no good and that instead a new function should be created.
This I did.

The hangupcause was stored in the seqno member of the ast_frame struct. This is not very
elegant, and since there's already a data member that one should be used.
Problem is, this member was a void *.
Now it's a named union so it can hold a pointer, an uint32 and there's a padding in case someone
wants to store another type in there in the future.

This commit is so massive, because all ast_frame.data uses have to be
altered to ast_frame.data.data

Thanks russellb and kpfleming for the feedback.

(closes issue #12674)
Reported by: mvanbaak


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@117802 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-05-22 16:29:54 +00:00
Jason Parker
d63b790247 Merged revisions 115418 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r115418 | qwell | 2008-05-06 14:34:58 -0500 (Tue, 06 May 2008) | 7 lines

Switch to using ast_random() rather than just rand().
This does not fix the bug reported, but I believe it is correct.

(from issue #12446)
Patches:
      bug_12446.diff uploaded by snuffy (license 35)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@115419 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-05-06 19:38:44 +00:00
Jason Parker
8e26876b3e Merged revisions 114594 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r114594 | qwell | 2008-04-23 13:28:44 -0500 (Wed, 23 Apr 2008) | 8 lines

Fix reload/unload for res_musiconhold module.

(closes issue #11575)
Reported by: sunder
Patches:
      M11575_14_rev3.diff uploaded by junky (license 177)
      bug11575_trunk.diff.txt uploaded by jamesgolovich (license 176)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@114595 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-23 18:33:28 +00:00
Tilghman Lesher
123ac5fd64 Standardized routines for forking processes (keeps all the specialized code in one place).
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@114188 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-16 22:57:54 +00:00
Russell Bryant
3c6cf5dcc5 Add some fixes that I made in regards to wideband codec handling to get
G.722 music on hold working for me.

(issue #12164, reported by milazzo and jsmith, patches by me)

res/res_musiconhold.c:
 - I moved a single line so that the sample queue update happened before
   ast_write().  The reason that this was a bug is that the G.722 frame
   originally says it has 320 samples in it (which is correct).  However,
   when the frame is written to a channel that uses RTP, main/rtp.c modifies
   the frame to cut the number of samples in half before it sends it on
   the wire.  This is to account for the stupid incorrect G.722 spec that
   makes it so we have to lie about the number of samples with RTP.  I should
   probably go and re-work the RTP code so it doesn't modify the frame so
   that a bug like this won't happen in the future.  However, this change to
   MOH is harmless.

main/channel.c:
 - I made two fixes in regards to generator timing.  Generators use samples
   for timing.  However, this code assumed 8 kHz samples.  In one case, it was
   a hard coded 160 samples, that is now written as the sample rate / 50.  The
   other place was dealing with timing a generator based on frames coming from
   the other direction.  However, that would have only worked if the sample
   rates for the formats in both directions were the same.  The code now takes
   into account that the sample rates may differ, and scales the generator
   samples accordingly.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@110268 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-20 17:41:22 +00:00
Joshua Colp
db0c6576d2 Merged revisions 110035 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r110035 | file | 2008-03-19 16:11:33 -0300 (Wed, 19 Mar 2008) | 4 lines

Add sanity checking for position resuming. We *have* to make sure that the position does not exceed the total number of files present, and we have to make sure that the position's filename is the same as previous. These values can change if a music class is reloaded and give unpredictable behavior.
(closes issue #11663)
Reported by: junky

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@110036 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-19 19:13:39 +00:00
Jason Parker
71e3883f9f Merged revisions 108682 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r108682 | qwell | 2008-03-14 09:29:05 -0500 (Fri, 14 Mar 2008) | 4 lines

Fix a potential segfault if chan (or chan->music_state) is NULL.

Closes issue #12210, credit to edantie for pointing this out.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@108683 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-14 14:32:55 +00:00
Mark Michelson
8c3cf89933 1. Deprecate SetMusicOnHold and WaitMusicOnHold.
2. Add a duration parameter to MusicOnHold

(closes issue #11904)
Reported by: dimas
Patches:
      v2-moh.patch uploaded by dimas (license 88)
	  Tested by: dimas



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@103658 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-13 15:47:25 +00:00
Mark Michelson
27cebd1d5c Removing a pointless memset. The memory was just calloc'd, so the
memory is already zeroed out



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@92402 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-11 21:46:16 +00:00
Joshua Colp
48da910225 Merged revisions 90101 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r90101 | file | 2007-11-28 18:59:28 -0400 (Wed, 28 Nov 2007) | 6 lines

Fix a few memory leaks.
(closes issue #11405)
Reported by: eliel
Patches:
      load_realtime.patch uploaded by eliel (license 64)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@90102 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-28 23:03:09 +00:00
Mark Michelson
a42259c3ff Adding support for realtime music on hold. The following are the main points:
1. When moh is started, we search first in memory to find the class. If we do not
   find it in memory, we search realtime instead.

2. When moh is restarted (as in, it had been started on this particular channel, stopped,
   and now we're starting it again), if using the "files" mode, then realtime will always
   be rechecked. If you are using other modes, however, we will simply reattach to the external
   running process which was playing moh earlier in the call. This is a necessary compromise so that
   we don't end up with too many background processes.

3. musiconhold.conf has a general section now. It has one option: cachertclasses. If set to yes,
   then moh classes found in realtime will be added to the in-memory list. This has the advantage
   of not requiring database lookups each time moh is started, but it has the disadvantage of not
   truly being realtime.

I have tested this for functionality, and it passes. I also tested this under valgrind and there
are no memory problems reported under typical use.

Special thanks to Sergee for implementing this feature and enduring my complaints on the bugtracker!

(closes issue #11196, reported and patched by sergee)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89946 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-28 00:47:22 +00:00
Luigi Rizzo
e0ff5fef5c remove a bunch of useless #include "options.h"
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89511 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-21 23:09:02 +00:00
Luigi Rizzo
0595b5e2aa include "logger.h" and errno.h from asterisk.h - usage shows that they
were included almost everywhere.
Remove some of the instances.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-19 18:52:04 +00:00
Luigi Rizzo
fdb7f7ba3d Start untangling header inclusion in a way that does not affect
build times - tested, there is no measureable difference before and
after this commit.

In this change:

use asterisk/compat.h to include a small set of system headers:
inttypes.h, unistd.h, stddef.h, stddint.h, sys/types.h, stdarg.h,
stdlib.h, alloca.h, stdio.h

Where available, the inclusion is conditional on HAVE_FOO_H as determined
by autoconf.

Normally, source files should not include any of the above system headers,
and instead use either "asterisk.h" or "asterisk/compat.h" which does it
better. 

For the time being I have left alone second-level directories
(main/db1-ast, etc.).



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89333 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-16 20:04:58 +00:00
Kevin P. Fleming
edc78d6023 improve linked-list macros in two ways:
- the *_CURRENT macros no longer need the list head pointer argument
  - add AST_LIST_MOVE_CURRENT to encapsulate the remove/add operation when moving entries between lists


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89106 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-08 05:28:47 +00:00
Russell Bryant
4e871ae483 Merged revisions 89053 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r89053 | russell | 2007-11-06 14:18:49 -0600 (Tue, 06 Nov 2007) | 3 lines

Fix init_classes() so that classes that actually do have files loaded aren't
treated as empty, and immediately destroyed ...

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89054 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 20:22:50 +00:00
Mark Michelson
5a4867543d "show application <foo>" changes for clarity.
(closes issue #11171, reported and patched by blitzrage)

Many thanks!



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89044 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 19:04:45 +00:00
Russell Bryant
4c6c69bdcc Merged revisions 89037 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r89037 | russell | 2007-11-06 12:20:07 -0600 (Tue, 06 Nov 2007) | 11 lines

If someone were to delete the files used by an existing MOH class, and then
issue a reload, further use of that class could result in a crash due to
dividing by zero.  This set of changes fixes up some places to prevent this
from happening.

(closes issue #10948)
Reported by: jcomellas
Patches:
      res_musiconhold_division_by_zero.patch uploaded by jcomellas (license 282)
	  Additional changes added by me.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89038 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 18:23:36 +00:00
Jason Parker
59c9ff7ef2 More changes to change return values from load_module functions.
(issue #11096)
Patches:
      codec_adpcm.c.patch uploaded by moy (license 222)
      codec_alaw.c.patch uploaded by moy (license 222)
      codec_a_mu.c.patch uploaded by moy (license 222)
      codec_g722.c.patch uploaded by moy (license 222)
      codec_g726.c.diff uploaded by moy (license 222)
      codec_gsm.c.patch uploaded by moy (license 222)
      codec_ilbc.c.patch uploaded by moy (license 222)
      codec_lpc10.c.patch uploaded by moy (license 222)
      codec_speex.c.patch uploaded by moy (license 222)
      codec_ulaw.c.patch uploaded by moy (license 222)
      codec_zap.c.patch uploaded by moy (license 222)
      format_g723.c.patch uploaded by moy (license 222)
      format_g726.c.patch uploaded by moy (license 222)
      format_g729.c.patch uploaded by moy (license 222)
      format_gsm.c.patch uploaded by moy (license 222)
      format_h263.c.patch uploaded by moy (license 222)
      format_h264.c.patch uploaded by moy (license 222)
      format_ilbc.c.patch uploaded by moy (license 222)
      format_jpeg.c.patch uploaded by moy (license 222)
      format_ogg_vorbis.c.patch uploaded by moy (license 222)
      format_pcm.c.patch uploaded by moy (license 222)
      format_sln.c.patch uploaded by moy (license 222)
      format_vox.c.patch uploaded by moy (license 222)
      format_wav.c.patch uploaded by moy (license 222)
      format_wav_gsm.c.patch uploaded by moy (license 222)
      res_adsi.c.patch uploaded by eliel (license 64)
      res_ael_share.c.patch uploaded by eliel (license 64)
      res_clioriginate.c.patch uploaded by eliel (license 64)
      res_convert.c.patch uploaded by eliel (license 64)
      res_indications.c.patch uploaded by eliel (license 64)
      res_musiconhold.c.patch uploaded by eliel (license 64)
      res_smdi.c.patch uploaded by eliel (license 64)
      res_speech.c.patch uploaded by eliel (license 64)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87889 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-31 19:24:29 +00:00