[asterisk-dev] [asterisk-commits] mmichelson: branch certified-1.8.15 r372884 - in /certified/branches/1.8.15: ...
Richard Mudgett
rmudgett at digium.com
Wed Sep 12 15:50:21 CDT 2012
> Doesn't this apply to 1.8 as well.
>
> I didn't see a 1.8 commit?
No. It does not apply to v1.8. The out of call messaging feature
was backported from v10 to the certified v1.8 branches for phone
support.
Richard
> > -----Original Message-----
> > From: asterisk-commits-bounces at lists.digium.com
> > [mailto:asterisk-commits-bounces at lists.digium.com] On Behalf
> > Of SVN commits to the Asterisk project
> > Sent: Wednesday, 12 September 2012 9:03 a.m.
> > To: asterisk-commits at lists.digium.com; svn-commits at lists.digium.com
> > Subject: [asterisk-commits] mmichelson: branch
> > certified-1.8.15 r372884 - in /certified/branches/1.8.15: ...
> >
> > Author: mmichelson
> > Date: Tue Sep 11 16:02:33 2012
> > New Revision: 372884
> >
> > URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=372884
> > Log:
> > Fix inability to shutdown gracefully due to an unending
> > channel reference.
> >
> > message.c makes use of a special message queue channel that
> > exists in thread storage. This channel never goes away due to
> > the fact that the taskprocessor used by message.c does not
> > get shut down, meaning that it never ends the thread that
> > stores the channel.
> >
> > This patch fixes the problem by shutting down the
> > taskprocessor when Asterisk is shut down. In addition, the
> > thread storage has a destructor that will release the channel
> > reference when the taskprocessor is destroyed.
> >
> > (closes issue AST-937)
> > Reported by Jason Parker
> > Patches:
> > AST-937.patch uploaded by Mark Michelson (License
> > #5049) Tested by Jason Parker
> >
> >
> > Modified:
> > certified/branches/1.8.15/include/asterisk/_private.h
> > certified/branches/1.8.15/main/asterisk.c
> > certified/branches/1.8.15/main/message.c
> >
> > Modified: certified/branches/1.8.15/include/asterisk/_private.h
> > URL:
> > http://svnview.digium.com/svn/asterisk/certified/branches/1.8.
> > 15/include/asterisk/_private.h?view=diff&rev=372884&r1=372883&
> r2=372884
> > ==============================================================
> > ================
> > --- certified/branches/1.8.15/include/asterisk/_private.h
> > (original)
> > +++ certified/branches/1.8.15/include/asterisk/_private.h Tue Sep
> > 11
> > +++ 16:02:33 2012
> > @@ -48,6 +48,7 @@
> > int ast_ssl_init(void); /*!< Provided by ssl.c */
> > int ast_test_init(void); /*!< Provided by test.c */
> > int ast_msg_init(void); /*!< Provided by message.c */
> > +void ast_msg_shutdown(void); /*!< Provided by message.c */
> >
> > /*!
> > * \brief Reload asterisk modules.
> >
> > Modified: certified/branches/1.8.15/main/asterisk.c
> > URL:
> > http://svnview.digium.com/svn/asterisk/certified/branches/1.8.
> > 15/main/asterisk.c?view=diff&rev=372884&r1=372883&r2=372884
> > ==============================================================
> > ================
> > --- certified/branches/1.8.15/main/asterisk.c (original)
> > +++ certified/branches/1.8.15/main/asterisk.c Tue Sep 11 16:02:33
> > 2012
> > @@ -1687,6 +1687,7 @@
> > * (if in batch mode). really_quit happens to call it
> > again when running
> > * the atexit handlers, otherwise this would be a bit early. */
> > ast_cdr_engine_term();
> > + ast_msg_shutdown();
> >
> > if (niceness == SHUTDOWN_NORMAL) {
> > time_t s, e;
> >
> > Modified: certified/branches/1.8.15/main/message.c
> > URL:
> > http://svnview.digium.com/svn/asterisk/certified/branches/1.8.
> > 15/main/message.c?view=diff&rev=372884&r1=372883&r2=372884
> > ==============================================================
> > ================
> > --- certified/branches/1.8.15/main/message.c (original)
> > +++ certified/branches/1.8.15/main/message.c Tue Sep 11 16:02:33
> > 2012
> > @@ -743,7 +743,18 @@
> > ast_channel_unlock(chan);
> > }
> >
> > -AST_THREADSTORAGE(msg_q_chan);
> > +static void destroy_msg_q_chan(void *data) {
> > + struct ast_channel **chan = data;
> > +
> > + if (!*chan) {
> > + return;
> > + }
> > +
> > + ast_channel_release(*chan);
> > +}
> > +
> > +AST_THREADSTORAGE_CUSTOM(msg_q_chan, NULL, destroy_msg_q_chan);
> >
> > /*!
> > * \internal
> > @@ -1305,3 +1316,8 @@
> >
> > return res;
> > }
> > +
> > +void ast_msg_shutdown(void)
> > +{
> > + msg_q_tp = ast_taskprocessor_unreference(msg_q_tp);
> > +}
More information about the asterisk-dev
mailing list