Commit Graph

23500 Commits

Author SHA1 Message Date
Automerge script
b2df2488b6 Merged revisions 376867,376871 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376867 | rmudgett | 2012-11-29 16:34:24 -0600 (Thu, 29 Nov 2012) | 13 lines
  
  Fix compile error.
  
  (issue ASTERISK-20724)
  ........
  
  Merged revisions 376864 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376865 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376866 from http://svn.asterisk.org/svn/asterisk/branches/11
................
  r376871 | rmudgett | 2012-11-29 17:01:16 -0600 (Thu, 29 Nov 2012) | 13 lines
  
  chan_local: Fix local_pvt ref leak in local_devicestate().
  
  Regression introduced by ASTERISK-20390 fix.
  ........
  
  Merged revisions 376868 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376869 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376870 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376878 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 23:19:44 +00:00
Richard Mudgett
9a8ce96aff chan_local: Fix local_pvt ref leak in local_devicestate().
Regression introduced by ASTERISK-20390 fix.

(closes issue ASTERISK-20769)
Reported by: rmudgett
Tested by: rmudgett
........

Merged revisions 376868 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376869 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376870 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376871 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 23:01:16 +00:00
Richard Mudgett
53e97bc9ee Fix compile error.
(issue ASTERISK-20724)
........

Merged revisions 376864 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376865 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376866 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376867 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 22:34:24 +00:00
Automerge script
f052e88b49 Merged revisions 376837 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376837 | elguero | 2012-11-29 15:58:41 -0600 (Thu, 29 Nov 2012) | 25 lines
  
  Improve Code Readability And Fix Setting natdetected Flag
  
  For 1.8, 10, 11 and trunk we are are improving the code readability.
  
  For 11 and trunk, auto nat detection was added.  The natdetected flag was being
  set to 1 when the host address in the VIA header did not specifiy a port.  This
  patch fixes this by setting the port on the temporary sock address used to
  SIP_STANDARD_PORT in order for the sock address comparison to work properly.
  
  (closes issue ASTERISK-20724)
  Reported by: Michael L. Young
  Patches:
      asterisk-20724-set-port-v2.diff uploaded by Michael L. Young (license 5026)
  
  Review: https://reviewboard.asterisk.org/r/2206/
  ........
  
  Merged revisions 376834 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376835 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376836 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376844 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 22:20:25 +00:00
Michael L. Young
587906cb6c Improve Code Readability And Fix Setting natdetected Flag
For 1.8, 10, 11 and trunk we are are improving the code readability.

For 11 and trunk, auto nat detection was added.  The natdetected flag was being
set to 1 when the host address in the VIA header did not specifiy a port.  This
patch fixes this by setting the port on the temporary sock address used to
SIP_STANDARD_PORT in order for the sock address comparison to work properly.

(closes issue ASTERISK-20724)
Reported by: Michael L. Young
Patches:
    asterisk-20724-set-port-v2.diff uploaded by Michael L. Young (license 5026)

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

Merged revisions 376834 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376835 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376836 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376837 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 21:58:41 +00:00
Mark Michelson
ddde765c59 Commit some progress towards threadpools.
Does this compile? Not even close.
But I figure I don't want to lose this all in the case
of some catastrophe.



git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376833 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 18:54:51 +00:00
Automerge script
93ec26e40a Merged revisions 376820-376821 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

........
  r376820 | pkiefer | 2012-11-29 10:44:42 -0600 (Thu, 29 Nov 2012) | 14 lines
  
  Fix chan_sip websocket payload handling
  
  Websocket by default doesn't return an ast_str for the payload received. When 
  converting it to an ast_str on chan_sip the last character was being omitted, 
  because ast_str functions expects that the given length includes the trailing 
  0x00. payload_len only has the actual string length without counting the 
  trailing zero.
  
  For most cases this passed unnoticed as most of SIP messages ends with \r\n.
  
  (closes issue ASTERISK-20745)
  Reported by: I?\195?\177aki Baz Castillo
  Review: https://reviewboard.asterisk.org/r/2219/
........
  r376821 | dlee | 2012-11-29 11:16:50 -0600 (Thu, 29 Nov 2012) | 5 lines
  
  Fixed ast_random's comment about locking.
  
  The original comment was separated from the code at some point, and didn't
  reflect the use of libc's other than glibc for Linux.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376827 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 17:19:50 +00:00
David M. Lee
23c53c18c0 Fixed ast_random's comment about locking.
The original comment was separated from the code at some point, and didn't
reflect the use of libc's other than glibc for Linux.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376821 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 17:16:50 +00:00
Pedro Kiefer
e46ea1fe65 Fix chan_sip websocket payload handling
Websocket by default doesn't return an ast_str for the payload received. When 
converting it to an ast_str on chan_sip the last character was being omitted, 
because ast_str functions expects that the given length includes the trailing 
0x00. payload_len only has the actual string length without counting the 
trailing zero.

For most cases this passed unnoticed as most of SIP messages ends with \r\n.

(closes issue ASTERISK-20745)
Reported by: Iñaki Baz Castillo
Review: https://reviewboard.asterisk.org/r/2219/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376820 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 16:44:42 +00:00
Automerge script
9b9da2938b Merged revisions 376791 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376791 | rmudgett | 2012-11-28 18:48:12 -0600 (Wed, 28 Nov 2012) | 32 lines
  
  Add MALLOC_DEBUG atexit unreleased malloc memory summary.
  
  * Adds the following CLI commands to control MALLOC_DEBUG reporting of
  unreleased malloc memory when Asterisk is shut down.
  memory atexit list on
  memory atexit list off
  memory atexit summary byline
  memory atexit summary byfunc
  memory atexit summary byfile
  memory atexit summary off
  
  * Made check all remaining allocated region blocks atexit for fence
  violations.
  
  * Increased the allocated region hash table size by about three times.  It
  still isn't large enough considering the number of malloced blocks
  Asterisk uses.
  
  * Made CLI "memory show allocations anomalies" use
  regions_check_all_fences().
  
  Review: https://reviewboard.asterisk.org/r/2196/
  ........
  
  Merged revisions 376788 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376789 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376790 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376798 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 01:20:42 +00:00
Richard Mudgett
2686dde98b Add MALLOC_DEBUG atexit unreleased malloc memory summary.
* Adds the following CLI commands to control MALLOC_DEBUG reporting of
unreleased malloc memory when Asterisk is shut down.
memory atexit list on
memory atexit list off
memory atexit summary byline
memory atexit summary byfunc
memory atexit summary byfile
memory atexit summary off

* Made check all remaining allocated region blocks atexit for fence
violations.

* Increased the allocated region hash table size by about three times.  It
still isn't large enough considering the number of malloced blocks
Asterisk uses.

* Made CLI "memory show allocations anomalies" use
regions_check_all_fences().

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

Merged revisions 376788 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376789 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376790 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376791 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 00:48:12 +00:00
Automerge script
1e1f6c7867 Merged revisions 376761 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376761 | rmudgett | 2012-11-28 18:07:55 -0600 (Wed, 28 Nov 2012) | 25 lines
  
  Enhance MALLOC_DEBUG CLI commands.
  
  * Fixed CLI "memory show allocations" misspelling of anomalies option.
  The command will still accept the original misspelling.
  
  * Miscellaneous tweaks to CLI "memory show allocations" command output
  format.
  
  * Made CLI "memory show summary" summarize by line number instead of by
  function if a filename is given.
  
  * Made CLI "memory show summary" sort its output by filename or
  function-name/line-number depending upon request.
  
  * Miscellaneous tweaks to CLI "memory show summary" command output format.
  ........
  
  Merged revisions 376758 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376759 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376760 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376768 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 00:21:13 +00:00
Richard Mudgett
e3a487d492 Enhance MALLOC_DEBUG CLI commands.
* Fixed CLI "memory show allocations" misspelling of anomalies option.
The command will still accept the original misspelling.

* Miscellaneous tweaks to CLI "memory show allocations" command output
format.

* Made CLI "memory show summary" summarize by line number instead of by
function if a filename is given.

* Made CLI "memory show summary" sort its output by filename or
function-name/line-number depending upon request.

* Miscellaneous tweaks to CLI "memory show summary" command output format.
........

Merged revisions 376758 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376759 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376760 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376761 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-29 00:07:55 +00:00
Automerge script
b6ace287f0 Merged revisions 376728 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376728 | jrose | 2012-11-28 10:47:44 -0600 (Wed, 28 Nov 2012) | 22 lines
  
  manager: Make challenge work with allowmultiplelogin=no
  
  Prior to this patch, challenge would yield a multiple logins error if used
  without providing the username (which isn't really supposed to be an argument
  to challenge) if allowmultiplelogin was set to no because allowmultiplelogin
  finds a user with a zero length login name. This check is simply disabled for
  the challenge action when the username is empty by this patch.
  
  (closes issue ASTERISK-20677)
  Reported by: Vladimir
  Patches:
      challenge_action_nomultiplelogin.diff uploaded by Jonathan Rose (license 6182)
  ........
  
  Merged revisions 376725 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376726 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376727 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376735 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-28 17:20:23 +00:00
Jonathan Rose
89e84ff75d manager: Make challenge work with allowmultiplelogin=no
Prior to this patch, challenge would yield a multiple logins error if used
without providing the username (which isn't really supposed to be an argument
to challenge) if allowmultiplelogin was set to no because allowmultiplelogin
finds a user with a zero length login name. This check is simply disabled for
the challenge action when the username is empty by this patch.

(closes issue ASTERISK-20677)
Reported by: Vladimir
Patches:
    challenge_action_nomultiplelogin.diff uploaded by Jonathan Rose (license 6182)
........

Merged revisions 376725 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376726 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376727 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376728 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-28 16:47:44 +00:00
Automerge script
8e7dd42f67 Merged revisions 376691 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376691 | rmudgett | 2012-11-27 18:13:10 -0600 (Tue, 27 Nov 2012) | 39 lines
  
  Fix extension matching with the '-' char.
  
  The '-' char is supposed to be ignored by the dialplan extension matching.
  Unfortunately, it's treatment is not handled consistently throughout the
  extension matching code.
  
  * Made the old exten matching code consistently ignore '-' chars.
  
  * Made the old exten matching code consistently handle case in the
  matching.
  
  * Made ignore empty character sets.
  
  * Fixed ast_extension_cmp() to return -1, 0, or 1 as documented.  The only
  user of it in pbx_lua.c was testing for -1.  It was originally returning
  the strcmp() value for less than which is not usually going to be -1.
  
  * Fix character set sorting if the sets have the same number of characters
  and start with the same character.  Character set [0-9] now sorts before
  [02-9a] as originally intended.
  
  * Updated some extension label and priority already in use warnings to
  also indicate if the extension is aliased.
  
  (closes issue ASTERISK-19205)
  Reported by: Philippe Lindheimer, Birger "WIMPy" Harzenetter
  Tested by: rmudgett
  
  Review: https://reviewboard.asterisk.org/r/2201/
  ........
  
  Merged revisions 376688 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376689 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376690 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376698 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-28 00:19:59 +00:00
Richard Mudgett
95a4a82702 Fix extension matching with the '-' char.
The '-' char is supposed to be ignored by the dialplan extension matching.
Unfortunately, it's treatment is not handled consistently throughout the
extension matching code.

* Made the old exten matching code consistently ignore '-' chars.

* Made the old exten matching code consistently handle case in the
matching.

* Made ignore empty character sets.

* Fixed ast_extension_cmp() to return -1, 0, or 1 as documented.  The only
user of it in pbx_lua.c was testing for -1.  It was originally returning
the strcmp() value for less than which is not usually going to be -1.

* Fix character set sorting if the sets have the same number of characters
and start with the same character.  Character set [0-9] now sorts before
[02-9a] as originally intended.

* Updated some extension label and priority already in use warnings to
also indicate if the extension is aliased.

(closes issue ASTERISK-19205)
Reported by: Philippe Lindheimer, Birger "WIMPy" Harzenetter
Tested by: rmudgett

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

Merged revisions 376688 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376689 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376690 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376691 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-28 00:13:10 +00:00
Automerge script
a825576277 Merged revisions 376660 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376660 | rmudgett | 2012-11-27 14:39:51 -0600 (Tue, 27 Nov 2012) | 27 lines
  
  Remove unnecessary channel module references.
  
  * Removed call to ast_module_user_hangup_all() in res_config_mysql.c since
  it is effectively a noop.  No channels can attach a reference to that
  module.
  
  * Removed call to ast_module_user_hangup_all() in app_celgenuserevent.c.
  The caller of unload_module() has already called it.
  
  * Removed redundant channel module references in pbx_dundi.c.  The
  registered dialplan function callback dispatchers for the read/read2/write
  callbacks already reference the module before calling.
  
  * pbx_dundi: Moved unregistering CLI commands, DUNDi switch, and dialplan
  functions to the first thing the unload_module() does.  This will reduce
  the chance of new channels using DUNDi services while the module is being
  torn down.
  ........
  
  Merged revisions 376657 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376658 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376659 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376667 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-27 21:19:40 +00:00
Richard Mudgett
ebcc4e3da1 Remove unnecessary channel module references.
* Removed call to ast_module_user_hangup_all() in res_config_mysql.c since
it is effectively a noop.  No channels can attach a reference to that
module.

* Removed call to ast_module_user_hangup_all() in app_celgenuserevent.c.
The caller of unload_module() has already called it.

* Removed redundant channel module references in pbx_dundi.c.  The
registered dialplan function callback dispatchers for the read/read2/write
callbacks already reference the module before calling.

* pbx_dundi: Moved unregistering CLI commands, DUNDi switch, and dialplan
functions to the first thing the unload_module() does.  This will reduce
the chance of new channels using DUNDi services while the module is being
torn down.
........

Merged revisions 376657 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376658 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376659 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376660 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-27 20:39:51 +00:00
Automerge script
8c84eb128f Merged revisions 376630 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376630 | rmudgett | 2012-11-27 11:54:25 -0600 (Tue, 27 Nov 2012) | 13 lines
  
  Made AST_LIST_REMOVE() simpler and use better names.
  
  * Update doxygen of AST_LIST_REMOVE().
  ........
  
  Merged revisions 376627 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376628 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376629 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-27 18:20:18 +00:00
Richard Mudgett
dc653e09bb Made AST_LIST_REMOVE() simpler and use better names.
* Update doxygen of AST_LIST_REMOVE().
........

Merged revisions 376627 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376628 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376629 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376630 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-27 17:54:25 +00:00
Automerge script
37ae4ad43f Merged revisions 376589 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376589 | mjordan | 2012-11-22 18:02:23 -0600 (Thu, 22 Nov 2012) | 29 lines
  
  Re-initialize logmsgs mutex upon logger initialization to prevent lock errors
  
  Similar to the patch that moved the fork earlier in the startup sequence to
  prevent mutex errors in the recursive mutex surrounding the read/write thread
  registration lock, this patch re-initializes the logmsgs mutex.  Part of the
  start up sequence before forking the process into the background includes
  reading asterisk.conf; this has to occur prior to the call to daemon in order
  to read startup parameters.  When reading in a conf file, log statements can
  be generated.  Since this can't be avoided, the mutex instead is
  re-initialized to ensure a reset of any thread tracking information.
  
  This patch also includes some additional debugging to catch errors when
  locking or unlocking the recursive mutex that surrounds locks when the
  DEBUG_THREADS build option is enabled.  DO_CRASH or THREAD_CRASH will
  cause an abort() if a mutex error is detected.
  
  (issue ASTERISK-19463)
  Reported by: mjordan
  Tesetd by: mjordan
  ........
  
  Merged revisions 376586 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376587 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376588 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-23 00:20:55 +00:00
Matthew Jordan
588e90a4d9 Re-initialize logmsgs mutex upon logger initialization to prevent lock errors
Similar to the patch that moved the fork earlier in the startup sequence to
prevent mutex errors in the recursive mutex surrounding the read/write thread
registration lock, this patch re-initializes the logmsgs mutex.  Part of the
start up sequence before forking the process into the background includes
reading asterisk.conf; this has to occur prior to the call to daemon in order
to read startup parameters.  When reading in a conf file, log statements can
be generated.  Since this can't be avoided, the mutex instead is
re-initialized to ensure a reset of any thread tracking information.

This patch also includes some additional debugging to catch errors when
locking or unlocking the recursive mutex that surrounds locks when the
DEBUG_THREADS build option is enabled.  DO_CRASH or THREAD_CRASH will
cause an abort() if a mutex error is detected.

(issue ASTERISK-19463)
Reported by: mjordan
Tesetd by: mjordan
........

Merged revisions 376586 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376587 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376588 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376589 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-23 00:02:23 +00:00
Automerge script
d16d0200d2 Merged revisions 376575 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

........
  r376575 | rmudgett | 2012-11-21 12:33:16 -0600 (Wed, 21 Nov 2012) | 20 lines
  
  Add red-black tree container type to astobj2.
  
  * Add red-black tree container type.
  
  * Add CLI command "astobj2 container dump <name>"
  
  * Added ao2_container_dump() so the container could be dumped by other
  modules for debugging purposes.
  
  * Changed ao2_container_stats() so it can be used by other modules like
  ao2_container_check() for debugging purposes.
  
  * Updated the unit tests to check red-black tree containers.
  
  (closes issue ASTERISK-19970)
  Reported by: rmudgett
  Tested by: rmudgett
  
  Review: https://reviewboard.asterisk.org/r/2110/
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376580 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-21 19:20:22 +00:00
Richard Mudgett
4ccf2c7aa5 Add red-black tree container type to astobj2.
* Add red-black tree container type.

* Add CLI command "astobj2 container dump <name>"

* Added ao2_container_dump() so the container could be dumped by other
modules for debugging purposes.

* Changed ao2_container_stats() so it can be used by other modules like
ao2_container_check() for debugging purposes.

* Updated the unit tests to check red-black tree containers.

(closes issue ASTERISK-19970)
Reported by: rmudgett
Tested by: rmudgett

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376575 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-21 18:33:16 +00:00
Automerge script
b362853a32 Merged revisions 376562 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376562 | dlee | 2012-11-20 16:06:05 -0600 (Tue, 20 Nov 2012) | 8 lines
  
  Added missing newlines to websocket ast_logs.
  
  Without these newlines, log messages just continue tacking onto the same
  line, and do not flush immediately.
  ........
  
  Merged revisions 376561 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376567 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-20 22:19:11 +00:00
David M. Lee
cc01a79463 Added missing newlines to websocket ast_logs.
Without these newlines, log messages just continue tacking onto the same
line, and do not flush immediately.
........

Merged revisions 376561 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376562 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-20 22:06:05 +00:00
Mark Michelson
86f1378ea0 Remove extra ast_backtrace() call I had in while debugging.
git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376560 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-20 19:23:55 +00:00
Automerge script
898f9f853c Merged revisions 376551 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376551 | mmichelson | 2012-11-20 13:09:37 -0600 (Tue, 20 Nov 2012) | 20 lines
  
  Add "Require: timer" to 200 OK responses when appropriate.
  
  The method by which the Require header is added to 200 responses is
  inspired by the method that Olle Johansson uses in his darjeeling-prack
  branch.
  
  (closes issue ASTERISK-20570)
  Reported by Matt Jordan, at the behest of Olle Johansson
  
  Review: https://reviewboard.asterisk.org/r/2172
  ........
  
  Merged revisions 376521 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376522 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376550 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376556 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-20 19:19:31 +00:00
Mark Michelson
b37ab7e673 Add "Require: timer" to 200 OK responses when appropriate.
The method by which the Require header is added to 200 responses is
inspired by the method that Olle Johansson uses in his darjeeling-prack
branch.

(closes issue ASTERISK-20570)
Reported by Matt Jordan, at the behest of Olle Johansson

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

Merged revisions 376521 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376522 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376550 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376551 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-20 19:09:37 +00:00
Automerge script
ec170b1b9d Merged revisions 376541 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376541 | alecdavis | 2012-11-20 11:39:11 -0600 (Tue, 20 Nov 2012) | 19 lines
  
  Reduce CLI spam of "Extension Changed" device state messages.
  
  Asterisk 11 follows RFC3265 that states that after every subscribe or resubscribe a notify should be sent.
  Thus the console if filled continuously with the following after every subscribe;
    == Extension Changed 8512[phones] new state IDLE for Notify User cisco1
   
  In Asterisk 1.8 only changes would be sent. Thus only when a device state changed was anything emitted to the console.
  
  fix:
  Only print to console when device state isn't forced.
  
  (closes ASTERISK-20706)
  Reported by: alecdavis
  Tested by: alecdavis
  alecdavis (license 585)
  ........
  
  Merged revisions 376540 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376546 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-20 18:19:37 +00:00
Alec L Davis
316fbb083c Reduce CLI spam of "Extension Changed" device state messages.
Asterisk 11 follows RFC3265 that states that after every subscribe or resubscribe a notify should be sent.
Thus the console if filled continuously with the following after every subscribe;
  == Extension Changed 8512[phones] new state IDLE for Notify User cisco1
 
In Asterisk 1.8 only changes would be sent. Thus only when a device state changed was anything emitted to the console.

fix:
Only print to console when device state isn't forced.

(closes issue ASTERISK-20706)
Reported by: alecdavis
Tested by: alecdavis
alecdavis (license 585)
........

Merged revisions 376540 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376541 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-20 17:39:11 +00:00
Mark Michelson
e2196d7981 Get rid of trailing whitespace.
git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376500 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-19 22:34:27 +00:00
Mark Michelson
f4328e109d Reorganize code and change behavior of ast_taskprocessor_execute() when taskprocessor is shutting down.
Moved code around to be easier to follow.

ast_taskprocessor_execute() will now return 0 if the taskprocessor is being shut down.



git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376499 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-19 21:31:32 +00:00
Mark Michelson
ff06346ea2 Add doxygen to taskprocessor tests.
git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376498 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-19 20:35:39 +00:00
Automerge script
abdfdf1cae Merged revisions 376472 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376472 | wdoekes | 2012-11-19 14:03:56 -0600 (Mon, 19 Nov 2012) | 17 lines
  
  Fix most leftover non-opaque ast_str uses.
  
  Instead of calling str->str, one should use ast_str_buffer(str). Same
  goes for str->used as ast_str_strlen(str) and str->len as
  ast_str_size(str).
  
  Review: https://reviewboard.asterisk.org/r/2198
  ........
  
  Merged revisions 376469 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376470 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376471 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376479 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-19 20:20:36 +00:00
Walter Doekes
907050d41b Fix most leftover non-opaque ast_str uses.
Instead of calling str->str, one should use ast_str_buffer(str). Same
goes for str->used as ast_str_strlen(str) and str->len as
ast_str_size(str).

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

Merged revisions 376469 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376470 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376471 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376472 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-19 20:03:56 +00:00
Automerge script
558c108b92 Merged revisions 376457 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

........
  r376457 | mjordan | 2012-11-18 20:14:54 -0600 (Sun, 18 Nov 2012) | 7 lines
  
  Fix uninitialized in this function error
  
  With some versions of gcc, n_buckets will be flagged as being uninitialized
  before use.  While its technically impossible (since the switch statement,
  even without a default, accounts for all possibilities), we'll initialize the
  variable to 0 anyway.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376462 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-19 02:19:08 +00:00
Matthew Jordan
7cf42e90b6 Fix uninitialized in this function error
With some versions of gcc, n_buckets will be flagged as being uninitialized
before use.  While its technically impossible (since the switch statement,
even without a default, accounts for all possibilities), we'll initialize the
variable to 0 anyway.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376457 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-19 02:14:54 +00:00
Automerge script
0f95c6b380 Merged revisions 376447 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376447 | mjordan | 2012-11-18 14:27:45 -0600 (Sun, 18 Nov 2012) | 55 lines
  
  Reorder startup sequence to prevent lockups when process is sent to background
  
  Although it is very rare and timing dependent, the potential exists for the
  call to 'daemon' to cause what appears to be a deadlock in Asterisk during
  startup.  This can occur when a recursive mutex is obtained prior to the
  daemon call executing.  Since daemon uses fork to send the process into the
  background, any threading primitives are unsafe to re-use after the call.
  Implementations of pthread recursive mutexes are highly likely to store the
  thread identifier of the thread that previously obtained the mutex.  If
  the mutex was locked prior to the fork, a subsequent unlock operation will
  potentially fail as the thread identifier is no longer valid.  Since the
  mutex is still locked, all subsequent attempts to grab the mutex by other
  threads will block.
  
  This behavior exhibited itself most often when DEBUG_THREADS was enabled, as
  this compile time option surrounds the mutexes in Asterisk with another
  recursive mutex that protects the storage of thread related information.  This
  made it much more likely that a recursive mutex would be obtained prior to
  daemon and unlocked after the call.
  
  This patch does the following:
  a) It backports a patch from Asterisk 11 that prevents the spawning of the
     localtime monitoring thread.  This thread is now spawned after Asterisk has
     fully booted.
  b) It re-orders the startup sequence to call daemon earlier during Asterisk
     startup.  This limits the potential of threading primitives being accessed
     by initialization calls before daemon is called.
  c) It removes calls to ast_verbose/ast_log/etc. prior to daemon being called.
     Developers should send error messages directly to stderr prior to daemon,
     as calls to ast_log may access recursive mutexes that store thread related
     information.
  d) It reorganizes when thread local storage is created for storing lock
     information during the creation of threads.  Prior to this patch, the
     read/write lock protecting the list of threads in ast_register_thread would
     utilize the lock in the thread local storage prior to it being initialized;
     this patch prevents that.
  
  On a very related note, this patch will *greatly* improve the stability of the
  Asterisk Test Suite.
  
  Review: https://reviewboard.asterisk.org/r/2197
  
  (closes issue ASTERISK-19463)
  Reported by: mjordan
  Tested by: mjordan
  ........
  
  Merged revisions 376428 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376431 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376441 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376453 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-18 21:19:45 +00:00
Matthew Jordan
530ce21b5d Reorder startup sequence to prevent lockups when process is sent to background
Although it is very rare and timing dependent, the potential exists for the
call to 'daemon' to cause what appears to be a deadlock in Asterisk during
startup.  This can occur when a recursive mutex is obtained prior to the
daemon call executing.  Since daemon uses fork to send the process into the
background, any threading primitives are unsafe to re-use after the call.
Implementations of pthread recursive mutexes are highly likely to store the
thread identifier of the thread that previously obtained the mutex.  If
the mutex was locked prior to the fork, a subsequent unlock operation will
potentially fail as the thread identifier is no longer valid.  Since the
mutex is still locked, all subsequent attempts to grab the mutex by other
threads will block.

This behavior exhibited itself most often when DEBUG_THREADS was enabled, as
this compile time option surrounds the mutexes in Asterisk with another
recursive mutex that protects the storage of thread related information.  This
made it much more likely that a recursive mutex would be obtained prior to
daemon and unlocked after the call.

This patch does the following:
a) It backports a patch from Asterisk 11 that prevents the spawning of the
   localtime monitoring thread.  This thread is now spawned after Asterisk has
   fully booted.
b) It re-orders the startup sequence to call daemon earlier during Asterisk
   startup.  This limits the potential of threading primitives being accessed
   by initialization calls before daemon is called.
c) It removes calls to ast_verbose/ast_log/etc. prior to daemon being called.
   Developers should send error messages directly to stderr prior to daemon,
   as calls to ast_log may access recursive mutexes that store thread related
   information.
d) It reorganizes when thread local storage is created for storing lock
   information during the creation of threads.  Prior to this patch, the
   read/write lock protecting the list of threads in ast_register_thread would
   utilize the lock in the thread local storage prior to it being initialized;
   this patch prevents that.

On a very related note, this patch will *greatly* improve the stability of the
Asterisk Test Suite.

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

(closes issue ASTERISK-19463)
Reported by: mjordan
Tested by: mjordan
........

Merged revisions 376428 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 376431 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376441 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376447 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-18 20:27:45 +00:00
Automerge script
dd85c232f0 Merged revisions 376416 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376416 | mjordan | 2012-11-18 08:31:32 -0600 (Sun, 18 Nov 2012) | 13 lines
  
  Add a test event that reports changes in ConfBridge state
  
  This patch adds a test event to ConfBridge that reports transitions between
  states in ConfBridge.  This is used by tests in the Asterisk Test Suite
  that verify state changes based on the entering/leaving of conference
  participants.
  ........
  
  Merged revisions 376414 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376415 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376422 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-18 15:20:26 +00:00
Matthew Jordan
99af7789dd Add a test event that reports changes in ConfBridge state
This patch adds a test event to ConfBridge that reports transitions between
states in ConfBridge.  This is used by tests in the Asterisk Test Suite
that verify state changes based on the entering/leaving of conference
participants.
........

Merged revisions 376414 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 376415 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376416 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-18 14:31:32 +00:00
Mark Michelson
623d741ba1 Restructure taskprocessor load test to test integrity of task execution.
This throws a random number to each task and stores a copy locally. After
all tasks have executed, the data is checked to be sure tasks executed
in the correct order.



git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376413 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-17 22:27:39 +00:00
Mark Michelson
da0e2169de Add a second default taskprocessor test that executes 20000 tasks.
git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376412 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-17 21:55:42 +00:00
Mark Michelson
f209bc6f9d Change the default taskprocessor test so it will never hang forever.
Changes the ast_cond_wait() to an ast_cond_timedwait() so that
if there is an issue, we'll never wait forever for the task to
finish execution.



git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376411 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-17 21:48:59 +00:00
Mark Michelson
ec68a15619 Test that shutdown callback is called when expected.
git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376383 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-16 05:00:42 +00:00
Mark Michelson
2b36cbe2d5 Change the write-up on taskprocessors to reflect the new design.
git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376382 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-16 04:44:12 +00:00
Mark Michelson
12de4198b8 Add a shutdown callback to taskprocessor listeners.
This helps account for the fact that it is unknown just
how many references may exist for a given taskprocessor
listener, so simply unreffing it from the taskprocessor
shutdown function is not enough to convey the gravity
of the situation.

By putting in a shutdown callback, it now becomes clear
to the listener not to try to do any further operations
on the taskprocessor.



git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376381 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-16 04:33:53 +00:00
Automerge script
e8898ec8ba Merged revisions 376341,376344-376345 via svnmerge from
file:///srv/subversion/repos/asterisk/trunk

................
  r376341 | dlee | 2012-11-15 18:08:00 -0600 (Thu, 15 Nov 2012) | 34 lines
  
  Migrate hashtest/hashtest2 to be unit tests.
  
  Both hashtest and hashtest2 are manual testing apps that thrash hash
  tables (hashtab and ao2 containers, respectively), by spinning up
  several threads that randomly insert, delete, lookup and iterate over
  the hash table. If the app doesn't crash, the hash table probably passes
  the test. Those utils are not a part of the typical Asterisk build, so
  they do not usually get compiled. This all makes them less that useful.
  
  This patch removes those manual test programs and replaces them with
  Asterisk unit test modules (test_{hashtab,astobj2}_thrash.so). It also
  attempts to make the tests more deterministic.
  
  * Rather than spinning up some number of threads that operate on the
    hash table randomly, spin up four threads that concurrenly add,
    remove, lookup and iterate over the hash table.
  * Each thread checks the state of the hash table both during and after
    execution, and indicates a test failure if things are not as expected.
  * Each thread times out after 60 seconds to prevent deadlocking the unit
    test run.
  
  (closes issue ASTERISK-20505)
  Reported by: Matt Jordan
  Review: https://reviewboard.asterisk.org/r/2189/
  ........
  
  Merged revisions 376306 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376315 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376339 from http://svn.asterisk.org/svn/asterisk/branches/11
................
  r376344 | dlee | 2012-11-15 18:14:00 -0600 (Thu, 15 Nov 2012) | 1 line
  
  Somehow I put in svn-1.6 merge information. Oops.
................
  r376345 | dlee | 2012-11-15 18:15:30 -0600 (Thu, 15 Nov 2012) | 15 lines
  
  Fixed extconf.c breakage introduced in r376306.
  
  To quote wdoekes:
  > Note that I'm not confirming legitimacy of having that file in tree at
  > all. Is anyone using aelparse/conf2ael?
  ........
  
  Merged revisions 376340 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........
  
  Merged revisions 376342 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........
  
  Merged revisions 376343 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376352 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-16 00:19:48 +00:00