asterisk/apps
David M. Lee b97c71bb11 Fix shutdown assertions in stasis-core
In r388005, macros were introduced to consistently define message
types. This added an assert if a message type was used either before
it was initialized or after it had been cleaned up. It turns out that
this assertion fires during shutdown.

This actually exposed a hidden shutdown ordering problem. Since
unsubscribing is asynchronous, it's possible that the message types
used by the subscription could be freed before the final message of
the subscription was processed.

This patch adds stasis_subscription_join(), which blocks until the
last message has been processed by the subscription. Since joining was
most commonly done right after an unsubscribe, a
stasis_unsubscribe_and_join() convenience function was also added.

Similar functions were also added to the stasis_caching_topic and
stasis_message_router, since they wrap subscriptions and have similar
problems.

Other code in trunk was refactored to join() where appropriate, or at
least verify that the subscription was complete before being
destroyed.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@389011 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-05-17 21:10:32 +00:00
..
confbridge confbridge: Make search the conference bridges container using OBJ_KEY. 2013-04-23 20:18:44 +00:00
app_adsiprog.c Doxygen Updates - Title update 2012-10-14 21:45:16 +00:00
app_alarmreceiver.c Fix XML Document Validation Failure 2012-10-18 20:31:05 +00:00
app_amd.c Doxygen Updates - Title update 2012-10-14 21:45:16 +00:00
app_authenticate.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_cdr.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_celgenuserevent.c Remove unnecessary channel module references. 2012-11-27 20:39:51 +00:00
app_chanisavail.c app_chanisavail: Fix use of uninitialized variable. 2012-03-14 23:29:32 +00:00
app_channelredirect.c Finalize ast_channel opaquification 2012-03-13 18:20:34 +00:00
app_chanspy.c Fix Not Unreferencing A Spied Channel 2012-08-08 22:45:15 +00:00
app_confbridge.c confbridge: Make search the conference bridges container using OBJ_KEY. 2013-04-23 20:18:44 +00:00
app_controlplayback.c Add ControlPlayback manager action 2013-01-22 15:16:20 +00:00
app_dahdibarge.c Opaquify ast_channel typedefs, fd arrays, and softhangup flag 2012-03-01 22:09:18 +00:00
app_dahdiras.c Opaquify ast_channel typedefs, fd arrays, and softhangup flag 2012-03-01 22:09:18 +00:00
app_db.c Don't throw a spurious error when using DBdeltree 2013-02-14 03:49:52 +00:00
app_dial.c Publish the outbound channel's application/data when dialing 2013-05-17 17:43:58 +00:00
app_dictate.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
app_directed_pickup.c Named call pickup groups. Fixes, missing functionality, and improvements. 2012-09-20 17:22:41 +00:00
app_directory.c Don't perform a realtime lookup with a NULL keyword 2013-05-08 18:36:21 +00:00
app_disa.c Coverity Report: Fix issues for error type UNINIT in Core supported modules 2012-05-10 15:57:26 +00:00
app_dumpchan.c Finalize ast_channel opaquification 2012-03-13 18:20:34 +00:00
app_echo.c Prevent Echo() from relaying control, null, and modem frames 2012-03-20 20:42:34 +00:00
app_exec.c Merged revisions 328247 via svnmerge from 2011-07-14 20:28:54 +00:00
app_externalivr.c Remove declaration of eivr_connect_socket because it no longer exists. 2012-06-20 11:47:12 +00:00
app_fax.c Doxygen Updates - Title update 2012-10-14 21:45:16 +00:00
app_festival.c Doxygen Updates - Title update 2012-10-14 21:45:16 +00:00
app_flash.c Opaquify ast_channel typedefs, fd arrays, and softhangup flag 2012-03-01 22:09:18 +00:00
app_followme.c Doxygen Updates - Title update 2012-10-14 21:45:16 +00:00
app_forkcdr.c Make ForkCDR e option not set end time of the newly forked CDR log 2012-04-13 16:12:17 +00:00
app_getcpeid.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
app_ices.c Doxygen Updates - janitor work 2012-09-21 17:14:59 +00:00
app_image.c Merged revisions 328247 via svnmerge from 2011-07-14 20:28:54 +00:00
app_ivrdemo.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_jack.c Multiple revisions 375993-375994 2012-11-07 19:15:26 +00:00
app_macro.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
app_meetme.c Make SLA reload more paranoid. 2013-05-06 15:58:32 +00:00
app_milliwatt.c Replace GNU old-style field designator extensions to fix clang warnings 2012-04-04 18:08:28 +00:00
app_minivm.c Transition MWI to Stasis-core 2013-03-16 15:45:58 +00:00
app_mixmonitor.c Fix StopMixMonitor Hanging Up When Unable To Stop MixMonitor On A Channel 2013-03-22 20:43:24 +00:00
app_morsecode.c Merged revisions 336717 via svnmerge from 2011-09-19 20:23:29 +00:00
app_mp3.c Opaquification for ast_format structs in struct ast_channel 2012-02-24 00:32:20 +00:00
app_nbscat.c Opaquification for ast_format structs in struct ast_channel 2012-02-24 00:32:20 +00:00
app_originate.c Allow support for early media on AMI originates and call files. 2012-08-08 22:39:40 +00:00
app_osplookup.c Make evaluation of channel variables consistently case-sensitive. 2012-10-29 21:27:09 +00:00
app_page.c app_page and app_confbridge: Fix custom announcement on entering conference. 2013-02-05 19:11:33 +00:00
app_parkandannounce.c Make ParkAndAnnounce return to priority + 1 when return context is not defined 2013-02-24 15:45:29 +00:00
app_playback.c Properly load say.conf upon reload of module app_playback. 2013-02-11 21:17:04 +00:00
app_playtones.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_privacy.c Opaquify ast_channel structs and lists 2012-02-29 16:52:47 +00:00
app_queue.c Fix shutdown assertions in stasis-core 2013-05-17 21:10:32 +00:00
app_read.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_readexten.c Opaquify ast_channel structs and lists 2012-02-29 16:52:47 +00:00
app_readfile.c Merged revisions 328247 via svnmerge from 2011-07-14 20:28:54 +00:00
app_record.c Multiple revisions 375993-375994 2012-11-07 19:15:26 +00:00
app_saycounted.c Merged revisions 336717 via svnmerge from 2011-09-19 20:23:29 +00:00
app_sayunixtime.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_senddtmf.c Add pause one second W dial modifier. 2012-09-28 18:27:02 +00:00
app_sendtext.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_setcallerid.c Opaquify ast_channel structs and lists 2012-02-29 16:52:47 +00:00
app_skel.c Add CLI configuration documentation 2013-02-15 13:38:12 +00:00
app_sms.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
app_softhangup.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_speech_utils.c Add support for retrieving engine specific settings using the speech API and from dialplan. 2012-10-01 12:29:04 +00:00
app_stack.c Migrate AMI VarSet events raised by GoSub local variables 2013-05-02 20:59:20 +00:00
app_stasis.c Break res_stasis into smaller files. 2013-05-14 21:45:08 +00:00
app_system.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
app_talkdetect.c Finalize ast_channel opaquification 2012-03-13 18:20:34 +00:00
app_test.c Opaquification for ast_format structs in struct ast_channel 2012-02-24 00:32:20 +00:00
app_transfer.c Fix the display of documentation for Transfer 2012-04-03 20:14:01 +00:00
app_url.c Merged revisions 339777 via svnmerge from 2011-10-07 19:37:33 +00:00
app_userevent.c Add channel events for res_stasis apps 2013-05-10 13:13:06 +00:00
app_verbose.c ast_channel opaquification of pointers and integral types 2012-02-20 23:43:27 +00:00
app_voicemail.c Fix shutdown assertions in stasis-core 2013-05-17 21:10:32 +00:00
app_voicemail.exports.in Remove some symbol exports that got missed in the removal of global symbols. 2012-06-15 15:33:41 +00:00
app_waitforring.c Multiple revisions 375993-375994 2012-11-07 19:15:26 +00:00
app_waitforsilence.c Opaquification for ast_format structs in struct ast_channel 2012-02-24 00:32:20 +00:00
app_waituntil.c Merged revisions 328247 via svnmerge from 2011-07-14 20:28:54 +00:00
app_while.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
app_zapateller.c Opaquify ast_channel structs and lists 2012-02-29 16:52:47 +00:00
enter.h remove extraneous svn:executable properties 2005-11-29 18:24:39 +00:00
leave.h remove extraneous svn:executable properties 2005-11-29 18:24:39 +00:00
Makefile Moved core logic from app_stasis to res_stasis 2013-04-15 16:43:47 +00:00