Commit Graph

423 Commits

Author SHA1 Message Date
Mark Michelson
75ff692542 Prevent potentially passing a NULL pointer to strcasecmp()
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8-digiumphones@360188 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-21 15:44:55 +00:00
Mark Michelson
a2e1dd220e Fix one more "(null)" string.
If a hint with no presence portion were added, it would
result in another "(null)" string warning.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8-digiumphones@360071 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-20 21:29:00 +00:00
Mark Michelson
8c19a4eeb1 Fix another "Possible programming error" bug.
Similar to the previous commit, don't pass
a printf-generated string to ast_strlen_zero.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8-digiumphones@360035 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-20 20:40:46 +00:00
Mark Michelson
7c612e030a Get rid of an annoying "Possible programming error" message.
If an extension's 'app' field is NULL, then a "(null)" string
would be written into an ast_str due to the way that snprintf
works. When this is passed to ast_strlen_zero(), it fires up
a big warning indicating something is probably wrong.

There indeed was a problem, but luckily it wasn't a very big
problem. After the failed ast_strlen_zero() check and big
warning message, the very next if statement, checking to
see if the "(null)" matched a presence provider, would fail,
so no harm was done.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8-digiumphones@360031 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-20 19:30:07 +00:00
Jason Parker
f9834fd128 Add support for Digium Phones.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8-digiumphones@357459 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-28 21:52:48 +00:00
Richard Mudgett
a55030f4fa Audit of ao2_iterator_init() usage for v1.8.
Fixes numerous reference leaks and missing ao2_iterator_destroy() calls as
a result.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352955 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-27 18:22:39 +00:00
Jonathan Rose
fc698edaad Fix documentation for SayNumber to reflect the fact that language is changed in CHANNEL()
(closes issue ASTERISK-18962)
reported by: Nir Simionovich


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@349450 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-04 18:30:24 +00:00
Richard Mudgett
9698383360 Fix extension state callback references in chan_sip.
Chan_sip gives a dialog reference to the extension state callback and
assumes that when ast_extension_state_del() returns, the callback cannot
happen anymore.  Chan_sip then reduces the dialog reference count
associated with the callback.  Recent changes (ASTERISK-17760) have
resulted in the potential for the callback to happen after
ast_extension_state_del() has returned.  For chan_sip, this could be very
bad because the dialog pointer could have already been destroyed.

* Added ast_extension_state_add_destroy() so chan_sip can account for the
sip_pvt reference given to the extension state callback when the extension
state callback is deleted.

* Fix pbx.c awkward statecbs handling in ast_extension_state_add_destroy()
and handle_statechange() now that the struct ast_state_cb has a destructor
to call.

* Ensure that ast_extension_state_add_destroy() will never return -1 or 0
for a successful registration.

* Fixed pbx.c statecbs_cmp() to compare the correct information.  The
passed in value to compare is a change_cb function pointer not an object
pointer.

* Make pbx.c ast_merge_contexts_and_delete() not perform callbacks with
AST_EXTENSION_REMOVED with locks held.  Chan_sip is notorious for
deadlocking when those locks are held during the callback.

* Removed unused lock declaration for the pbx.c store_hints list.

(closes issue ASTERISK-18844)
Reported by: rmudgett

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@348940 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-23 02:09:16 +00:00
Richard Mudgett
74da7648bb Fix crash during CDR update.
The ast_cdr_setcid() and ast_cdr_update() were shown in ASTERISK-18836 to
be called by different threads for the same channel.  The channel driver
thread and the PBX thread running dialplan.

* Add lock protection around CDR API calls that access an ast_channel
pointer.

(closes issue ASTERISK-18836)
Reported by: gpluser

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@348362 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-16 20:55:17 +00:00
Richard Mudgett
47783a00a9 Fix some parsing issues in add_exten_to_pattern_tree().
* Simplify compare_char() and avoid potential sign extension issue.

* Fix infinite loop in add_exten_to_pattern_tree() handling of character
set escape handling.

* Added buffer overflow checks in add_exten_to_pattern_tree() character
set collection.

* Made ignore empty character sets.

* Added escape character handling to end-of-range character in character
sets.  This has a slight change in behavior if the end-of-range character
is an escape character.  You must now escape it.

* Fix potential sign extension issue when expanding character set ranges.

* Made remove duplicated characters from character sets.  The duplicate
characters lower extension matching priority and prevent duplicate
extension detection.

* Fix escape character handling when the escape character is trying to
escape the end-of-string.  We could have continued processing characters
after the end of the exten string.  We could have added the previous
character to the pattern matching tree incorrectly.

(closes issue ASTERISK-18909)
Reported by: Luke-Jr


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@347811 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-09 01:19:23 +00:00
Jonathan Rose
36e73e9b7c Documents CHANNEL(musicclass) taking priority over m([x]) in waitExten
If waitExten specifies a music class to use with its music on hold option, it will use
CHANNEL(musicclass) instead if that channel variable has been set on the initiating
channel.  This documents that behavior in the waitExten app so that this can be known
without checking the documentation of the code in function local_ast_moh_start.

(closes issue ASTERISK-18804)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@347239 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-06 21:44:26 +00:00
Jonathan Rose
699c3dd217 Resolve duplicate label used in multiple priorities for the same extension.
Prior to this patch, if labels with the same name were used for different priorities in
the same extension, the new label would be accepted, but it would be unusable since
attempts to reach that label would just go to the first one. Now pbx.c detects this,
generates a warning in logs, and culls the label before adding it to the dialplan.

(closes issue ASTERISK-18807)
Reported by: Kenneth Shumard
Patches:
	pbx.c.patch uploaded by Kenneth Shumard (License 5077)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@346954 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-05 14:56:41 +00:00
Richard Mudgett
c2f946d5b8 Fix Progress spelling error in main/pbx.c.
(closes issue ASTERISK-18857)
Reported by: David M
Patches:
      mainpbx-trivial.patch (License #6326) patch uploaded by David M


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@345219 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-14 20:45:49 +00:00
Jonathan Rose
55e8d5b380 Fix a segmentation fault when using an extension with CID matching and no CID.
Attempting to call an extension which used Caller ID matching with a channel that
has an empty caller id string would result in a segmentation fault.

(closes issue ASTERISK-18392
Reported By: Ales Zelenik


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@344608 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-11 15:21:50 +00:00
Matthew Jordan
8765a80355 Fixed invalid memory access when adding extension to pattern match tree
When an extension is removed from a context, its entry in the pattern match
tree is not deleted.  Instead, the extension is marked as deleted.  When an
extension is removed and re-added, if that extension is also a prefix of
another extension, several log messages would report an error and did not
check whether or not the extension was deleted before accessing the memory.
Additionally, if the extension was already in the tree but previously
deleted, and the pattern was at the end of a match, the findonly flag was
not honored and the extension would be erroneously undeleted.  

Additionaly, it was discovered that an IAX2 peer could be unregistered
via the CLI, while at the same time it could be scheduled for unregistration
by Asterisk.  The unregistration method now checks to see if the peer
was already unregistered before continuing with an unregistration.

(closes issue ASTERISK-18135)
Reported by: Jaco Kroon, Henry Fernandes, Kristijan Vrban
Tested by: Matt Jordan

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




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@342769 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-10-31 15:58:06 +00:00
Matthew Nicholson
de9e8e501e Load the proper XML documentation when multiple modules document the same application.
This patch adds an optional "module" attribute to the XML documentation spec
that allows the documentation processor to match apps with identical names from
different modules to their documentation. This patch also fixes a number of
bugs with the documentation processor and should make it a little more
efficient. Support for multiple languages has also been properly implemented.

ASTERISK-18130
Review: https://reviewboard.asterisk.org/r/1485/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@340108 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-10-10 14:14:48 +00:00
Richard Mudgett
f2e1640435 Fix deadlock when using dummy channels.
Dummy channels created by ast_dummy_channel_alloc() should be destoyed by
ast_channel_unref().  Using ast_channel_release() needlessly grabs the
channel container lock and can cause a deadlock as a result.

* Analyzed use of ast_dummy_channel_alloc() and made use
ast_channel_unref() when done with the dummy channel.  (Primary reason for
the reported deadlock.)

* Made app_dial.c:dial_exec_full() not call ast_call() holding any channel
locks.  Chan_local could not perform deadlock avoidance correctly.
(Potential deadlock exposed by this issue.  Secondary reason for the
reported deadlock since the held lock was part of the deadlock chain.)

* Fixed some uses of ast_dummy_channel_alloc() not checking the returned
channel pointer for failure.

* Fixed some potential chan=NULL pointer usage in func_odbc.c.  Protected
by testing the bogus_chan value.

* Fixed needlessly clearing a 1024 char auto array when setting the first
char to zero is enough in manager.c:action_getvar().

(closes issue ASTERISK-18613)
Reported by: Thomas Arimont
Patches:
      jira_asterisk_18613_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: Thomas Arimont


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@337973 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-26 19:30:39 +00:00
Kinsey Moore
8a0b9d39e5 Make CANMATCH with the new pattern match engine behave more like the old one
When checking an extension for E_CANMATCH using the new extension matching
algorithm, an exact match was not returned as a possible match resulting in the
queue failing to allow a caller to exit on DTMF.  This removes the requirement
that an extension be longer than acquired digits for an E_CANMATCH operation
to succeed.

(closes issue ASTERISK-18044)
Review: https://reviewboard.asterisk.org/r/1367/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@337061 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-20 21:04:11 +00:00
Matthew Nicholson
ebb6110a13 Don't limit the size of appdata for manager originate actions.
ASTERISK-17709
Patch by: tilghman (with modifications)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@335618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-13 18:20:52 +00:00
Matthew Jordan
7dc49195d8 Updated SIP 484 handling; added Incomplete control frame
When a SIP phone uses the dial application and receives a 484 Address 
Incomplete response, if overlapped dialing is enabled for SIP, then
the 484 Address Incomplete is forwarded back to the SIP phone and the
HANGUPCAUSE channel variable is set to 28.  Previously, the Incomplete
application dialplan logic was automatically triggered; now, explicit
dialplan usage of the application is required.

Additionally, this patch adds a new AST_CONTOL_FRAME type called
AST_CONTROL_INCOMPLETE.  If a channel driver receives this control frame,
it is an indication that the dialplan expects more digits back from the
device.  If the device supports overlap dialing it should attempt to 
notify the device that the dialplan is waiting for more digits; otherwise,
it can handle the frame in a manner appropriate to the channel driver.

(closes issue ASTERISK-17288)
Reported by: Mikael Carlsson
Tested by: Matthew Jordan

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



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@335064 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-09 16:09:09 +00:00
Alec L Davis
71f3dc01da Prevent segfault if call arrives before Asterisk is fully booted.
Prevent ast_pbx_start and ast_run_start from starting a new thread unless asterisk
is fully booted.
 
alecdavis (license 585)
Tested by: alecdavis
 
Review: https://reviewboard.asterisk.org/r/1407/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@334616 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-07 07:33:39 +00:00
Tilghman Lesher
b178214e07 Remove 1.6 compatibility documentation from 1.8, as it no longer applies.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@334234 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-01 17:38:33 +00:00
Richard Mudgett
42b5040b71 Misc minor items found in code.
* Add some reentrancy protection in pbx.c when creating the contexts_table
hash table.

* Fix inverted test in chan_sip.c conditional code.

* Fix uninitialized variable and use of the wrong variable in chan_iax2.c.

* Fix test of return value in app_parkandannounce.c.  Explicitly testing
for -1 is bad if the function does not actually return that value when it
fails.

* Fixup some comments and add some curly braces in features.c.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@331248 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-08-09 22:12:59 +00:00
Richard Mudgett
a55804ffda Fix memory leak in an allocation error path of handle_statechange().
* Make use buffer accessor function in handle_statechange() rather than
directly accessing the struct member.

* Make use less redundant loop construct for iterating over hints.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@329333 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-22 21:10:40 +00:00
Richard Mudgett
a97d03e34a Deadlocks dealing with dialplan hints during reload.
There are two remaining different deadlocks reported dealing with dialplan
hints.

The deadlock in ASTERISK-17666 is caused by invalid locking order in
ast_remove_hint().  The hints container must be locked before the hint
object.

The deadlock in ASTERISK-17760 is caused by a catch-22 situation in
handle_statechange().  The deadlock is caused by not having the conlock
before calling the watcher callbacks.  Unfortunately, having that lock
causes a different deadlock as reported in ASTERISK-16961.

* Fixed ast_remove_hint() locking order.

* Made handle_statechange() no longer call the watcher callbacks holding
any locks that matter.

* Made hint ao2 destructor do the watcher callbacks for extension
deactivation to guarantee that they get called.

* Fixed hint reference leak in ast_add_hint() if the callback container
constructor failed.

* Fixed hint reference leak in complete_core_show_hint() for every hint it
found for CLI tab completion.

* Adjusted locking in ast_merge_contexts_and_delete() for safety.

* Added context_merge_lock to prevent ast_merge_contexts_and_delete() and
handle_statechange() from interfering with each other.

* Fixed ast_change_hint() not taking into account that the extension is
used for the hash key.

(closes issue ASTERISK-17666)
Reported by: irroot
Tested by: irroot
JIRA SWP-3318

(closes issue ASTERISK-17760)
Reported by: Byron Clark
Tested by: irroot
JIRA SWP-3393

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@329299 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-22 15:44:58 +00:00
Matthew Nicholson
0bc1f651c7 reset our buffer each iteration when doing variable substitution
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@327512 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-11 13:53:59 +00:00
Matthew Nicholson
1fcdb0f58b Reset our ast_str before passing it on to dialplan function backends.
It is possible for a dialplan backend to not modify the given buffer or ast_str
and still return success. This causes any previous value stored in the buffer
to be used as if the new function call provided it. Some functions also append
to the given buffer assuming it is empty.

The test_substitution unit test has also been modified to detect this problem.

(closes issue ASTERISK-17878)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@327106 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-08 19:52:51 +00:00
Richard Mudgett
d3bcf224b0 Some code cleanup in pbx.c
* Mostly comment and format changes.

* ast_context_remove_extension_callerid() and ast_add_extension_nolock()
will write lock the found specific context.

* ast_context_find() will now tolerate a NULL name.

* Eliminated some inlined versions of find_context() and
find_context_locked().


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@326985 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-08 01:08:05 +00:00
David Vossel
87908a3f5d Fixes locking inversion issue in ast_async_goto()
During this function we can not hold the "chan" lock while
doing the masquerade, the explicit goto on the tmp chan, or
the channel alloc.  Instead we need to get the channel lock,
store off information about the channel that we need, and
then let the channel lock go for the remainder of the function.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@324364 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-06-21 20:11:52 +00:00
Leif Madsen
cfec9cdf0d Fix grammar in documentation for Goto() and GotoIf()
(closes issue ASTERISK-18023)
Reported by: Tim Osman

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@324115 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-06-17 15:14:54 +00:00
Russell Bryant
df0cc7f905 Fix calculation of free RAM to make minmemfree option work.
(closes issue #17124)
Reported by: loic
Patches:
      pbx_c.diff uploaded by loic (license 1020)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@317917 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-05-06 21:06:33 +00:00
Russell Bryant
a82f1bb995 Fix a bunch of compiler warnings generated by gcc 4.6.0.
Most of these are -Wunused-but-set-variable, but there were a few others
mixed in here, as well.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@316265 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-05-03 19:55:49 +00:00
Richard Mudgett
c409776003 The 'e' special extension fails to trigger in at least two cases.
The 'e' extension is a fall back for the 'i', 't', or 'T' extensions if
any of them do not exist.  Many of the places the 'e' extension was
supposed to be invoked fail because the priority was set wrong.  There
were two places where the 'e' extension was not even checked for fall
back.

* Made invoke the 'e' extension similarly to the previous 'i', 't', or 'T'
extension check and added the 'e' extension as a fall back to the two
missing locations.

* Prioritized and optimized some hangup tests associated with the 'e'
extension.

(closes issue #19136)
Reported by: kshumard
Tested by: rmudgett

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@315645 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-26 22:14:31 +00:00
Russell Bryant
cfc893a5bc Merged revisions 303548 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r303548 | russell | 2011-01-24 14:49:53 -0600 (Mon, 24 Jan 2011) | 38 lines
  
  Merged revisions 303546 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r303546 | russell | 2011-01-24 14:32:21 -0600 (Mon, 24 Jan 2011) | 31 lines
    
    Fix channel redirect out of MeetMe() and other issues with channel softhangup.
    
    Mantis issue #18585 reports that a channel redirect out of MeetMe() stopped
    working properly.  This issue includes a patch that resolves the issue by
    removing a call to ast_check_hangup() from app_meetme.c.  I left that in my
    patch, as it doesn't need to be there.  However, the rest of the patch fixes
    this problem with or without the change to app_meetme.
    
    The key difference between what happens before and after this patch is the
    effect of the END_OF_Q control frame.  After END_OF_Q is hit in ast_read(),
    ast_read() will return NULL.  With the ast_check_hangup() removed, app_meetme
    sees this which causes it to exit as intended.  Checking ast_check_hangup()
    caused app_meetme to exit earlier in the process, and the target of the
    redirect saw the condition where ast_read() returned NULL.
    
    Removing ast_check_hangup() works around the issue in app_meetme, but doesn't
    solve the issue if another application did the same thing.  There are also
    other edge cases where if an application finishes at the same time that a
    redirect happens, the target of the redirect will think that the channel hung
    up.  So, I made some changes in pbx.c to resolve it at a deeper level.  There
    are already places that unset the SOFTHANGUP_ASYNCGOTO flag in an attempt to
    abort the hangup process.  My patch extends this to remove the END_OF_Q frame
    from the channel's read queue, making the "abort hangup" more complete.  This
    same technique was used in every place where a softhangup flag was cleared.
    
    (closes issue #18585)
    Reported by: oej
    Tested by: oej, wedhorn, russell
    
    Review: https://reviewboard.asterisk.org/r/1082/
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@303549 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-01-24 20:51:37 +00:00
Jeff Peeler
8e1e37c43e Merged revisions 302265 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r302265 | jpeeler | 2011-01-18 14:13:52 -0600 (Tue, 18 Jan 2011) | 27 lines
  
  Convert device state callbacks to ao2 objects to fix a deadlock in chan_sip.
  
  Lock scenario presented here:
  Thread 1
   holds ast_rdlock_contexts &conlock
   holds handle_statechange hints
   holds handle_statechange hint
    waiting for cb_extensionstate
     Locked Here: chan_sip.c line 7428 (find_call)
  Thread 2
   holds handle_request_do &netlock
   holds find_call sip_pvt_ptr
    waiting for ast_rdlock_contexts &conlock
     Locked Here: pbx.c line 9911 (ast_rdlock_contexts)
  
  Chan_sip has an established locking order of locking the sip_pvt and then
  getting the context lock. So the as stated by the summary, the operations in
  thread 2 have been modified to no longer require the context lock.
  
  (closes issue #18310)
  Reported by: one47
  Patches: 
        statecbs_ao2.mk2.patch uploaded by one47 (license 23),
        modified by me
  
  Review: https://reviewboard.asterisk.org/r/1072/
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@302266 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-01-18 20:19:57 +00:00
Richard Mudgett
c08103f033 Merged revisions 295843 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r295843 | rmudgett | 2010-11-22 13:28:23 -0600 (Mon, 22 Nov 2010) | 53 lines
  
  Merged revisions 295790 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r295790 | rmudgett | 2010-11-22 12:46:26 -0600 (Mon, 22 Nov 2010) | 46 lines
    
    The channel redirect function (CLI or AMI) hangs up the call instead of redirecting the call.
    
    To recreate the problem:
    1) Party A calls Party B
    2) Invoke CLI "channel redirect" command to redirect channel call leg
    associated with A.
    3) All associated channels are hung up.
    
    Note that if the CLI command were done on the channel call leg associated
    with B it works.
    
    This regression was a result of the fix for issue #16946
    (https://reviewboard.asterisk.org/r/740/).
    
    The regression affects all features that use an async goto to execute the
    dialplan because of an external event: Channel redirect, AMI redirect, SIP
    REFER, and FAX detection.
    
    The struct ast_channel._softhangup code is a mess.  The variable is used
    for several purposes that do not necessarily result in the call being hung
    up.  I have added doxygen comments to describe how the various _softhangup
    bits are used.  I have corrected all the places where the variable was
    tested in a non-bit oriented manner.
    
    The primary fix is the new AST_CONTROL_END_OF_Q frame.  It acts as a weak
    hangup request so the soft hangup requests that do not normally result in
    a hangup do not hangup.
    
    JIRA SWP-2470
    JIRA SWP-2489
    
    (closes issue #18171)
    Reported by: SantaFox
    (closes issue #18185)
    Reported by: kwemheuer
    (closes issue #18211)
    Reported by: zahir_koradia
    (closes issue #18230)
    Reported by: vmarrone
    (closes issue #18299)
    Reported by: mbrevda
    (closes issue #18322)
    Reported by: nerbos
    
    Review:	https://reviewboard.asterisk.org/r/1013/
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@295866 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-11-22 19:36:10 +00:00
Jeff Peeler
aafc5f4e99 Merged revisions 294639 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r294639 | jpeeler | 2010-11-11 13:31:00 -0600 (Thu, 11 Nov 2010) | 53 lines
  
  Merged revisions 294384 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r294384 | jpeeler | 2010-11-09 11:37:59 -0600 (Tue, 09 Nov 2010) | 47 lines
    
    Fix a deadlock in device state change processing.
    
    Copied from some notes from the original author (Russell):
    
    Deadlock scenario:
    Thread 1: device state change thread
      Holds - rdlock on contexts
      Holds - hints lock
      Waiting on channels container lock
    
    Thread 2: SIP monitor thread
      Holds the "iflock"
      Holds a sip_pvt lock
      Holds channel container lock
      Waiting for a channel lock
    
    Thread 3: A channel thread (chan_local in this case)
      Holds 2 channel locks acquired within app_dial
      Holds a 3rd channel lock it got inside of chan_local
      Holds a local_pvt lock
      Waiting on a rdlock of the contexts lock
    
    A bunch of other threads waiting on a wrlock of the contexts lock
    
    
    To address this deadlock, some locking order rules must be put in place and
    enforced. Existing relevant rules:
    
    1) channel lock before a pvt lock
    2) contexts lock before hints lock
    3) channels container before a channel
    
    What's missing is some enforcement of the order when you involve more than any
    two. To fix this problem, I put in some code that ensures that (at least in the
    code paths involved in this bug) the locks in (3) come before the locks in (2).
    To change the operation of thread 1 to comply, I converted the storage of hints
    to an astobj2 container. This allows processing of hints without holding the
    hints container lock. So, in the code path that led to thread 1's state, it no
    longer holds either the contexts or hints lock while it attempts to lock the
    channels container.
    
    (closes issue #18165)
    Reported by: antonio
    
    ABE-2583
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@294640 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-11-11 19:42:06 +00:00
Russell Bryant
b61babaf58 Merged revisions 290712 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r290712 | russell | 2010-10-07 12:53:56 +0200 (Thu, 07 Oct 2010) | 4 lines
  
  Don't crash when Set() is called without a value.
  
  Review: https://reviewboard.asterisk.org/r/949/
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@290713 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-10-07 11:00:52 +00:00
Tilghman Lesher
bbc7614ac9 Merged revisions 290254 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r290254 | tilghman | 2010-10-04 18:14:59 -0500 (Mon, 04 Oct 2010) | 11 lines
  
  Change new pattern matcher to regard dashes the same as the old pattern matcher -- as visual candy to be ignored.
  
  Also change the AEL parser to not generate dashes within extensions, as those
  dashes would be ignored.  Update the AEL tests to match this behavior.
  
  (closes issue #17366)
   Reported by: murf
   Patches: 
         20100727__issue17366.diff.txt uploaded by tilghman (license 14)
   Tested by: tilghman
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@290255 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-10-04 23:23:11 +00:00
Matthew Nicholson
ff146c0f78 Merged revisions 287558 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r287558 | mnicholson | 2010-09-20 10:56:21 -0500 (Mon, 20 Sep 2010) | 14 lines
  
  Use ast_str when processing hint state changes
  
  Merged revisions 287555 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r287555 | mnicholson | 2010-09-20 10:48:14 -0500 (Mon, 20 Sep 2010) | 5 lines
    
    Use ast_dynamic_str when processing hint state changes
    
    (related to issue #17928)
    Reported by: mdu113
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@287559 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-20 15:57:14 +00:00
Matthew Nicholson
c293fa192f Merged revisions 287308 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r287308 | mnicholson | 2010-09-17 08:36:07 -0500 (Fri, 17 Sep 2010) | 12 lines
  
  Merged revisions 287307 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r287307 | mnicholson | 2010-09-17 08:34:34 -0500 (Fri, 17 Sep 2010) | 5 lines
    
    Use ast_strdup() instead of ast_strdupa() while processing in ast_hint_state_changed().
    
    (related to issue #17928)
    Reported by: mdu113
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@287309 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-17 13:37:10 +00:00
Matthew Nicholson
f5bc72d34f Merged revisions 287119 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r287119 | mnicholson | 2010-09-16 15:06:16 -0500 (Thu, 16 Sep 2010) | 15 lines
  
  Merged revisions 287118 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r287118 | mnicholson | 2010-09-16 15:04:46 -0500 (Thu, 16 Sep 2010) | 8 lines
    
    Don't limit hint processing in ast_hint_state_changed() to AST_MAX_EXTENSION length strings.
    
    (closes issue #17928)
    Reported by: mdu113
    Patches:
          20100831__issue17928.diff.txt uploaded by tilghman (license 14)
    Tested by: mdu113
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@287120 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-16 20:07:38 +00:00
Brett Bryant
c8f5e73601 Merged revisions 285710 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r285710 | bbryant | 2010-09-09 14:50:13 -0400 (Thu, 09 Sep 2010) | 8 lines
  
  Fixes an issue with dialplan pattern matching where the specificity for pattern ranges and pattern special characters was inconsistent.
  
  (closes issue #16903)
  Reported by: Nick_Lewis
  Patches: 
        pbx.c-specificity.patch uploaded by Nick Lewis (license 657)
  Tested by: Nick_Lewis
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@285711 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-09 18:51:52 +00:00
Russell Bryant
b61de7561f Put back pointer value output for ast_debug(), such that it is only removed for verbose output.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@282015 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-08-12 18:03:56 +00:00
Russell Bryant
7ea5e3e62e Remove debugging output from verbose messages.
Pointer values to internal objects is not terribly useful to users in the
verbose messages about adding extensions and contexts.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@281982 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-08-12 16:33:30 +00:00
Tilghman Lesher
20582d0a6d Merged revisions 280983 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r280983 | tilghman | 2010-08-05 02:40:47 -0500 (Thu, 05 Aug 2010) | 15 lines
  
  Merged revisions 280982 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r280982 | tilghman | 2010-08-05 02:28:33 -0500 (Thu, 05 Aug 2010) | 8 lines
    
    Change context lock back to a mutex, because functionality depends upon the lock being recursive.
    
    (closes issue #17643)
     Reported by: zerohalo
     Patches: 
           20100726__issue17643.diff.txt uploaded by tilghman (license 14)
     Tested by: zerohalo
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@280984 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-08-05 07:46:36 +00:00
Matthew Nicholson
1c848835aa Merged revisions 277327 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r277327 | mnicholson | 2010-07-16 13:30:22 -0500 (Fri, 16 Jul 2010) | 8 lines
  
  Interpret device state AST_DEVICE_UNKNOWN as extension state AST_EXTENSION_NOT_INUSE.
  
  (closes issue #16035)
  Reported by: francesco_r
  Patches:
        pbx.c.patch uploaded by viniciusfontes (license 978)
  Tested by: francesco_r, agx, lawbar
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@277331 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-16 18:31:08 +00:00
Richard Mudgett
ec37ffbdaf ast_callerid restructuring
The purpose of this patch is to eliminate struct ast_callerid since it has
turned into a miscellaneous collection of various party information.

Eliminate struct ast_callerid and replace it with the following struct
organization:

struct ast_party_name {
	char *str;
	int char_set;
	int presentation;
	unsigned char valid;
};
struct ast_party_number {
	char *str;
	int plan;
	int presentation;
	unsigned char valid;
};
struct ast_party_subaddress {
	char *str;
	int type;
	unsigned char odd_even_indicator;
	unsigned char valid;
};
struct ast_party_id {
	struct ast_party_name name;
	struct ast_party_number number;
	struct ast_party_subaddress subaddress;
	char *tag;
};
struct ast_party_dialed {
	struct {
		char *str;
		int plan;
	} number;
	struct ast_party_subaddress subaddress;
	int transit_network_select;
};
struct ast_party_caller {
	struct ast_party_id id;
	char *ani;
	int ani2;
};

The new organization adds some new information as well.

* The party name and number now have their own presentation value that can
be manipulated independently.  ISDN supplies the presentation value for
the name and number at different times with the possibility that they
could be different.

* The party name and number now have a valid flag.  Before this change the
name or number string could be empty if the presentation were restricted.
Most channel drivers assume that the name or number is then simply not
available instead of indicating that the name or number was restricted.

* The party name now has a character set value.  SIP and Q.SIG have the
ability to indicate what character set a name string is using so it could
be presented properly.

* The dialed party now has a numbering plan value that could be useful to
have available.

The various channel drivers will need to be updated to support the new
core features as needed.  They have simply been converted to supply
current functionality at this time.


The following items of note were either corrected or enhanced:

* The CONNECTEDLINE() and REDIRECTING() dialplan functions were
consolidated into func_callerid.c to share party id handling code.

* CALLERPRES() is now deprecated because the name and number have their
own presentation values.

* Fixed app_alarmreceiver.c write_metadata().  The workstring[] could
contain garbage.  It also can only contain the caller id number so using
ast_callerid_parse() on it is silly.  There was also a typo in the
CALLERNAME if test.

* Fixed app_rpt.c using ast_callerid_parse() on the channel's caller id
number string.  ast_callerid_parse() alters the given buffer which in this
case is the channel's caller id number string.  Then using
ast_shrink_phone_number() could alter it even more.

* Fixed caller ID name and number memory leak in chan_usbradio.c.

* Fixed uninitialized char arrays cid_num[] and cid_name[] in
sig_analog.c.

* Protected access to a caller channel with lock in chan_sip.c.

* Clarified intent of code in app_meetme.c sla_ring_station() and
dial_trunk().  Also made save all caller ID data instead of just the name
and number strings.

* Simplified cdr.c set_one_cid().  It hand coded the ast_callerid_merge()
function.

* Corrected some weirdness with app_privacy.c's use of caller
presentation.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@276347 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-14 15:48:36 +00:00
Eliel C. Sardanons
a1b89a6a50 Implement AstData API data providers as part of the GSOC 2010 project,
midterm evaluation.

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



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@274727 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-08 14:48:42 +00:00
Tilghman Lesher
8fe8d98dba Uh, yeah.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@274053 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-06 06:01:37 +00:00