Commit Graph

951 Commits

Author SHA1 Message Date
Jason Parker d5c19c4c98 Fix issue with decoding ^-escaped characters in realtime.
(closes issue #17790)
Reported by: denzs
Patches: 
      17790-chunky.diff uploaded by qwell (license 4)
Tested by: qwell, denzs


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@283880 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-08-27 20:29:11 +00:00
Tilghman Lesher 8618bacfd8 Do not queue up DTMF frames while a call is on hold.
(Fixes ABE-2110)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@278167 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-20 20:59:06 +00:00
Jean Galarneau 20c9dd4aef Avoid trying to pickup a parked extension before the park operation is completed.
A crash could occur if the extension is picked up while the parking extension is
being announced. Testing pu->notquiteyet while searching for a parked extension
resolves this crash.

(ABE-2418)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@277906 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-19 20:16:36 +00:00
Tim Ringenbach 99202cbc03 Save and restore AST_FLAG_BRIDGE_HANGUP_DONT on attended transfer.
ast_bridge_call() clears AST_FLAG_BRIDGE_HANGUP_DONT. But during an attended
transfer, ast_bridge_call() is called for a second bridge on the same channel,
and it clears that flag, which still needs to get set for when the original
ast_bridge_call() gets control back and checks it.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@277625 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-16 22:43:39 +00:00
Tilghman Lesher d38b8e2674 Since we split values at the semicolon, we should store values with a semicolon as an encoded value.
(closes issue #17369)
 Reported by: gkservice
 Patches: 
       20100625__issue17369.diff.txt uploaded by tilghman (license 14)
 Tested by: tilghman


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@277568 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-16 21:54:29 +00:00
Russell Bryant 26706f51b4 Only reset a CDR that exists.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@276126 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-13 19:14:54 +00:00
Russell Bryant dca56377a4 Use chan->cdr instead of chan_cdr (just like peer->cdr instead of peer_cdr in the last commit).
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@276123 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-13 19:06:53 +00:00
Russell Bryant 2a19af50e8 Access peer->cdr directly instead of through a saved off reference.
At this point in the code, it is possible that peer_cdr may be invalid.
Specifically, in the blind transfer code, CDRs are swapped between channels.
So, peer_cdr is no longer == peer->cdr.

The scenario that exposed a crash in this code was a blind transfer that hit
the system call limit, causing the transferee channel to get destroyed after
the transfer attempt failed.  Even if it succeeds and this code doesn't crash,
this code was still trying to reset a CDR on a channel that was now owned by
a different thread, which is a BadThing(tm).

(ABE-2417)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@275994 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-13 16:51:18 +00:00
Tzafrir Cohen 97f61244f9 Fix various typos, reported by Lintian
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@273640 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-02 15:54:17 +00:00
Paul Belanger f86d4ad81e Properly play first file in sort list.
When using sort=alpha we would always skip the first file
in the list first time through.  We now check for that
properly. 

(closes issue #17470)
Reported by: pabelanger
Patches:
      sort.aplha.patch uploaded by pabelanger (license 224)
Tested by: lmadsen

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@270331 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-14 21:31:59 +00:00
Jason Parker c4eee1ee7e Let systems without a working fork() use res_musiconhold.
Files mode doesn't require anything special, so that can still be used just fine.

AST-357


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@269426 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-09 21:19:17 +00:00
Tilghman Lesher 7f7ae0d3cf Not finding rows in the DB does not rise to the level of a warning.
(closes issue #17062)
 Reported by: drookie
 Patches: 
       20100525__issue17062.diff.txt uploaded by tilghman (license 14)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@265910 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-05-26 16:21:00 +00:00
Mark Michelson 1a098e8e98 Fix potential crash from race condition due to accessing channel data without the channel locked.
In res_musiconhold.c, there are several places where a channel's
stream's existence is checked prior to calling ast_closestream on it. The issue
here is that in several cases, the channel was not locked while checking the
stream. The result was that if two threads checked the state of the channel's
stream at approximately the same time, then there could be a situation where
both threads attempt to call ast_closestream on the channel's stream. The result
here is that the refcount for the stream would go below 0, resulting in a crash.

I have added proper channel locking to res_musiconhold.c to ensure that
we do not try to check chan->stream without the channel locked. A Digium customer
has been using this patch for several weeks and has not had any crashes since
applying the patch.

ABE-2147



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@260345 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-04-30 20:08:15 +00:00
Tilghman Lesher bb48f80e58 When StopMonitor is called, ensure that it will not be restarted by a channel event.
(closes issue #16590)
 Reported by: kkm
 Patches: 
       resmonitor-16590-trunk.239289.diff uploaded by kkm (license 888)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@258775 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-04-25 18:09:05 +00:00
Matthew Nicholson 5375985fa9 Fix broken CDR behavior.
This change allows a CDR record previously marked with disposition ANSWERED to be set as BUSY or NO ANSWER.

Additionally this change partially reverts r235635 and does not set the AST_CDR_FLAG_ORIGINATED flag on CDRs generated from ast_call().  To preserve proper CDR behavior, the AST_CDR_FLAG_DIALED flag is now cleared from all brige CDRs in ast_bridge_call().

(closes issue #16797)
Reported by: VarnishedOtter
Tested by: mnicholson



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@258670 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-04-22 21:49:07 +00:00
Jeff Peeler 92e1ca0016 Ensure that monitor recordings are written to the correct location (again)
This is an extension to 248860. As such the dialplan test has been extended:

; non absolute path, not combined
exten => 5040, 1, monitor(wav,tmp/jeff/monitor_test)
exten => 5040, n, dial(sip/5001)
; absolute path, not combined
exten => 5041, 1, monitor(wav,/tmp/jeff/monitor_test2)
exten => 5041, n, dial(sip/5001)
; no path, not combined
exten => 5042, 1, monitor(wav,monitor_test3)
exten => 5042, n, dial(sip/5001)
; combined: changemonitor from non absolute to no path (leaves tmp/jeff)
exten => 5043, 1, monitor(wav,tmp/jeff/monitor_test4,m)
exten => 5043, n, changemonitor(monitor_test5)
exten => 5043, n, dial(sip/5001)
; combined: changemonitor from no path to non absolute path
exten => 5044, 1, monitor(wav,monitor_test6,m)
exten => 5044, n, changemonitor(tmp/jeff/monitor_test7) ; this wasn't possible before
exten => 5044, n, dial(sip/5001)
; non absolute path, combined
exten => 5045, 1, monitor(wav,tmp/jeff/monitor_test8,m)
exten => 5045, n, dial(sip/5001)
; absolute path, combined 
exten => 5046, 1, monitor(wav,/tmp/jeff/monitor_test9,m)
exten => 5046, n, dial(sip/5001)
; no path, combined
exten => 5047, 1, monitor(wav,monitor_test10,m)
exten => 5047, n, dial(sip/5001)
; combined: changemonitor from non absolute to absolute (leaves tmp/jeff)
exten => 5048, 1, monitor(wav,tmp/jeff/monitor_test11,m)
exten => 5048, n, changemonitor(/tmp/jeff/monitor_test12)
exten => 5048, n, dial(sip/5001)
; combined: changemonitor from absolute to non absolute (leaves /tmp/jeff)
exten => 5049, 1, monitor(wav,/tmp/jeff/monitor_test13,m)
exten => 5049, n, changemonitor(tmp/jeff/monitor_test14)
exten => 5049, n, dial(sip/5001)
; combined: changemonitor from no path to absolute
exten => 5050, 1, monitor(wav,monitor_test15,m)
exten => 5050, n, changemonitor(/tmp/jeff/monitor_test16)
exten => 5050, n, dial(sip/5001)
; combined: changemonitor from absolute to no path (leaves /tmp/jeff)
exten => 5051, 1, monitor(wav,/tmp/jeff/monitor_test17,m)
exten => 5051, n, changemonitor(monitor_test18)
exten => 5051, n, dial(sip/5001)
; not combined: changemonitor from non absolute to no path (leaves tmp/jeff)
exten => 5052, 1, monitor(wav,tmp/jeff/monitor_test19)
exten => 5052, n, changemonitor(monitor_test20)
exten => 5052, n, dial(sip/5001)
; not combined: changemonitor from no path to non absolute
exten => 5053, 1, monitor(wav,monitor_test21)
exten => 5053, n, changemonitor(tmp/jeff/monitor_test22)
exten => 5053, n, dial(sip/5001)
; not combined: changemonitor from non absolute to absolute (leaves tmp/jeff)
exten => 5054, 1, monitor(wav,tmp/jeff/monitor_test23)
exten => 5054, n, changemonitor(/tmp/jeff/monitor_test24)
exten => 5054, n, dial(sip/5001)
; not combined: changemonitor from absolute to non absolute (leaves /tmp/jeff)
exten => 5055, 1, monitor(wav,/tmp/jeff/monitor_test24)
exten => 5055, n, changemonitor(tmp/jeff/monitor_test25)
exten => 5055, n, dial(sip/5001)
; not combined: changemonitor from no path to absolute
exten => 5056, 1, monitor(wav,monitor_test26)
exten => 5056, n, changemonitor(/tmp/jeff/monitor_test27)
exten => 5056, n, dial(sip/5001)
; not combined: changemonitor from absolute to no path (leaves /tmp/jeff)
exten => 5057, 1, monitor(wav,/tmp/jeff/monitor_test28)
exten => 5057, n, changemonitor(monitor_test29)
exten => 5057, n, dial(sip/5001)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@254235 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-24 00:37:23 +00:00
Matthew Nicholson 41d8051361 Unconditionally copy the caller's account code to the called party.
(related to issue #16331)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@253799 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-22 19:50:00 +00:00
Russell Bryant 43393bd1a9 Resolve a number of FreeBSD build issues.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@253631 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-20 19:17:28 +00:00
Jeff Peeler 093e1d34f3 Fix not being able to specify a URL in MOH class directory.
Don't attempt to chdir on a URL!

(closes issue #16875)
Reported by: raarts
Patches: 
      moh-http.patch uploaded by raarts (license 937)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@250786 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-05 01:02:58 +00:00
Jeff Peeler dbdbc92a4a Ensure that monitor recordings are written to the correct location (again)
This is an extension to 248757. As such the dialplan test has been extended:

exten => 5040, 1, monitor(wav,tmp/jeff/monitor_test,b)
exten => 5040, n, dial(sip/5001)
exten => 5041, 1, monitor(wav,/tmp/jeff/monitor_test2,b)
exten => 5041, n, dial(sip/5001)
exten => 5042, 1, monitor(wav,monitor_test3,b)
exten => 5042, n, dial(sip/5001)
exten => 5043, 1, monitor(wav,tmp/jeff/monitor_test3,m)
exten => 5043, n, changemonitor(monitor_test4)
exten => 5043, n, dial(sip/5001)
exten => 5044, 1, monitor(wav,monitor_test4,m)
exten => 5044, n, changemonitor(tmp/jeff/monitor_test5) ; this looks to fail by design and emits a warning
exten => 5044, n, dial(sip/5001)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@248860 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-02-25 21:22:06 +00:00
Jeff Peeler 3371a165f5 Ensure that monitor recordings are written to the correct location.
Recordings should be placed in the monitor directory when a non-absolute path
is used.

Exact dialplan used for testing:
exten => 5040, 1, monitor(wav,tmp/jeff/monitor_test,b)
exten => 5040, n, dial(sip/5001)
exten => 5041, 1, monitor(wav,/tmp/jeff/monitor_test2,b)
exten => 5041, n, dial(sip/5001)
exten => 5042, 1, monitor(wav,monitor_test3,b)
exten => 5042, n, dial(sip/5001)

ABE-2101


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@248757 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-02-25 18:06:54 +00:00
Matthew Nicholson 815f726220 Copy the calling party's account code to the called party if they don't already have one.
(closes issue #16331)
Reported by: bluefox
Tested by: mnicholson


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@247651 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-02-18 19:38:09 +00:00
Olle Johansson b279512253 Make sure that res_smdi loads regardless of configuration, since chan_dahdi depends on res_smdi
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@245909 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-02-10 08:24:34 +00:00
Olle Johansson ed94dddd97 Res_features depends on res_adsi in 1.4
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@245422 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-02-08 11:57:52 +00:00
Tilghman Lesher bad37b9a69 When a transferer hangs up during an attended transfer BEFORE the transfer is answered, don't stop playing MOH.
(closes issue #16513)
 Reported by: litnimax
 Patches: 
       atxfer_moh_16513.patch uploaded by gknispel proformatique (license 261)
 Tested by: litnimax


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@244151 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-02-01 18:38:37 +00:00
David Vossel fb0cf432f1 fixes bug with channel receiving wrong privileges after call parking
(closes issue #16429)
Reported by: Yasuhiro Konishi
Patches:
      features.c.diff uploaded by Yasuhiro Konishi (license 947)
Tested by: dvossel



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@243390 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-01-26 23:55:49 +00:00
Jeff Peeler 40fed194b6 Fix regression for timed out parked call returning to caller
This issue seems to have been exposed by the fix in 160390 whereby using a
masquerade prevented a crash. The new channel used in the masquerade was
not copying the macro information from the old channel.

(closes issue #15459)
Reported by: djrodman
Patches: 
      patch_15459.txt uploaded by mnick (license )


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@239838 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-01-13 19:43:33 +00:00
Jeff Peeler 5be54b36b2 Stop a crash when no peer is passed to masq_park_call.
(distantly related to issue #16406)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@238834 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-01-08 23:28:37 +00:00
Tilghman Lesher 2418c3fe1e Add a flag to disable the Background behavior, for AGI users.
This is in a section of code that relates to two other issues, namely
issue #14011 and issue #14940), one of which was the behavior of
Background when called with a context argument that matched the current
context.  This fix broke FreePBX, however, in a post-Dial situation.
Needless to say, this is an extremely difficult collision of several
different issues.  While the use of an exception flag is ugly, fixing all
of the issues linked is rather difficult (although if someone would like
to propose a better solution, we're happy to entertain that suggestion).
(closes issue #16434)
 Reported by: rickead2000
 Patches: 
       20091217__issue16434.diff.txt uploaded by tilghman (license 14)
       20091222__issue16434__1.6.1.diff.txt uploaded by tilghman (license 14)
 Tested by: rickead2000


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@237405 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-01-04 18:19:00 +00:00
Tilghman Lesher b317f3ce7f If EXEC only gets a single argument, don't crash when the second is used.
(closes issue #16504)
 Reported by: bklang


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@236184 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-12-23 02:55:24 +00:00
Jeff Peeler 7c1c1ffa82 Change Monitor to not assume file to write to does not contain pathing.
227944 changed the fname_base argument to always append the configured monitor
path. This change was necessary to properly compare files for uniqueness. 
If a full path is given though, nothing needs to be appended and that is
handled correctly now.

(closes issue #16377)
(closes issue #16376)
Reported by: bcnit
Patches:
      res_monitor.c-issue16376-1.patch uploaded by dant (license 670)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@235940 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-12-21 19:43:41 +00:00
Tilghman Lesher 66b2f4192a Send parking lot announcement to the channel which parked the call, not the park-ee.
(closes issue #16234)
 Reported by: yeshuawatso
 Patches: 
       20091210__issue16234.diff.txt uploaded by tilghman (license 14)
       20091221__issue16234__1.4.diff.txt uploaded by tilghman (license 14)
 Tested by: yeshuawatso


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@235821 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-12-21 16:45:03 +00:00
Tilghman Lesher d7d29ea864 Mandatory argument checking
(closes issue #16446)
 Reported by: nicchap


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@235052 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-12-15 15:29:24 +00:00
Matthew Nicholson f32239bff8 Copy the peer CDR's userfield to the bridge CDR if it exists. This is necessary for the recordagentcalls option in chan_agent to store the recorded file name in the bridge CDR.
(closes issue #14590)
Reported by: msetim
Patches:
      queue_agent_userfield.patch uploaded by Laureano (license 265)
Tested by: Laureano, mnicholson


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@230627 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-11-20 20:53:06 +00:00
Jeff Peeler cd447927e4 Fix incorrect filename comparsion after monitor file change
The logic to detect if a requested file is indeed a different file from the
current file was incorrect. The main issue being confusion of the use of
filename_base which was previously set without pathing information and then
compared to another full path. Robust file comparison logic has been added
to properly check if two files are the same even if symlinks are used.

(closes issue #15313)
Reported by: caspy
Patches: 
      20091103__issue15313__1.4.diff.txt uploaded by jpeeler (license 325)
      but mostly tilghman's work


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@227944 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-11-04 23:47:08 +00:00
Joshua Colp 7de8f53607 Add support for relaying early media in the features attended transfer option.
(closes issue #14828)
Reported by: licedey


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@224773 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-10-20 17:46:37 +00:00
Kevin P. Fleming 2ad7cb7e87 Fix ao2_iterator API to hold references to containers being iterated.
See Mantis issue for details of what prompted this change.

Additional notes:

This patch changes the ao2_iterator API in two ways: F_AO2I_DONTLOCK
has become an enum instead of a macro, with a name that fits our
naming policy; also, it is now necessary to call
ao2_iterator_destroy() on any iterator that has been
created. Currently this only releases the reference to the container
being iterated, but in the future this could also release other
resources used by the iterator, if the iterator implementation changes
to use additional resources.

(closes issue #15987)
Reported by: kpfleming

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@222152 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-10-06 01:16:36 +00:00
Matthew Nicholson 4fa5fa014f Fix a crash by checking the proper pointer for validity before deferencing it.
(closes issue #15751)
Reported by: atis
Patches:
      ast_bridge_call_peer_cdr.patch uploaded by atis (license 242)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@213339 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-08-20 20:33:07 +00:00
Tilghman Lesher 63cc189747 AST-2009-005
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@211528 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-08-10 19:15:57 +00:00
Michiel van Baak 0f05b9b9de backport rev 205532 from trunk:
pthread_self returns a pthread_t which is not an unsigned int on all
pthread implementations. Casting it to an unsigned int fixes compiler warnings.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@208990 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-07-27 09:56:13 +00:00
Kevin P. Fleming 75f1eaf2a1 Ensure that user-provided CFLAGS and LDFLAGS are honored.
This commit changes the build system so that user-provided flags (in ASTCFLAGS
and ASTLDFLAGS) are supplied to the compiler/linker *after* all flags provided
by the build system itself, so that the user can effectively override the
build system's flags if desired. In addition, ASTCFLAGS and ASTLDFLAGS can now
be provided *either* in the environment before running 'make', or as variable
assignments on the 'make' command line. As a result, the use of COPTS and LDOPTS
is no longer necessary, so they are no longer documented, but are still supported
so as not to break existing build systems that supply them when building Asterisk.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@207647 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-07-21 13:04:44 +00:00
Russell Bryant 33f54353ba Make OpenSSL usage thread-safe.
OpenSSL is not thread-safe by default.  However, making it thread safe is
very easy.  We just have to provide a couple of callbacks.  One callback
returns a thread ID.  The other handles locking.  For more information,
start with the "Is OpenSSL thread-safe?" question on the FAQ page of
openssl.org.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@205149 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-07-08 15:54:21 +00:00
Russell Bryant 090c2f1e4e Fix a case where CDR answer time could be before the start time involving parking.
(closes issue #13794)
Reported by: davidw
Patches:
      13794.patch uploaded by murf (license 17)
      13794.patch.160 uploaded by murf (license 17)
Tested by: murf, dbrooks


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@203375 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-25 21:02:18 +00:00
Tilghman Lesher 5757b115b3 If the "h" extension fails, give it another chance in main/pbx.c.
If the "h" extension fails, give it another chance in main/pbx.c, when it
returns from the bridge code.  Fixes an issue where the "h" extension may
occasionally not fire, when a Dial is executed from a Macro.
Debugged in #asterisk with user tompaw.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@201828 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-19 00:40:41 +00:00
Russell Bryant fce4a98f7c 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/branches/1.4@201600 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-18 15:24:31 +00:00
Eliel C. Sardanons a42ff13c97 Show the interface name on error, if it is not found.
If the smdiport specified is not found, show the interface name
instead of '(null)'.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@200875 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-16 13:25:51 +00:00
David Vossel ddb4e3f2e7 Generic call forward api, ast_call_forward()
The function ast_call_forward() forwards a call to an extension specified in an ast_channel's call_forward string.  After an ast_channel is called, if the channel's call_forward string is set this function can be used to forward the call to a new channel and terminate the original one.  I have included this api call in both channel.c's ast_request_and_dial() and res_feature.c's feature_request_and_dial().  App_dial and app_queue already contain call forward logic specific for their application and options.

(closes issue #13630)
Reported by: festr

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



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@198891 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-03 15:49:46 +00:00
Tilghman Lesher af31809bcf If using the old deprecated format, a reload would cause the class to disappear.
(closes issue #14759)
 Reported by: lidocaineus
 Patches: 
       20090518__issue14759.diff.txt uploaded by tilghman (license 14)
 Tested by: lmadsen


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@198665 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-01 20:07:04 +00:00
Sean Bright 8fc78eae7a Properly terminate AMI JabberSend response messages.
The response message (either Error or Success) needs an extra trailing \r\n
after the fields to inform the client that the message is complete.

(closes issue #14876)
Reported by: srt
Patches:
      05302009_1.4_res_jabber.c.diff uploaded by seanbright (license 71)
      asterisk_14876.patch uploaded by srt (license 378)
      trunk-14876-2.diff uploaded by phsultan (license 73)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@198370 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-05-30 19:36:20 +00:00
Russell Bryant e86b26f1a8 Fix a crash that occurred when MWI SMDI messages expired.
(closes issue #14561)
Reported by: cmoss28


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@198311 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-05-30 03:42:46 +00:00