[asterisk-commits] tilghman: branch 1.6.0 r195371 - in /branches/1.6.0: ./ apps/ include/asteris...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon May 18 15:53:41 CDT 2009


Author: tilghman
Date: Mon May 18 15:53:37 2009
New Revision: 195371

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=195371
Log:
Recorded merge of revisions 195370 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
  r195370 | tilghman | 2009-05-18 15:52:33 -0500 (Mon, 18 May 2009) | 15 lines
  
  Recorded merge of revisions 195366 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r195366 | tilghman | 2009-05-18 15:24:13 -0500 (Mon, 18 May 2009) | 8 lines
    
    Add a similar dependency on SMDI for voicemail as already exists for ADSI.
    (closes issue #14846)
     Reported by: pj
     Patches: 
           20090413__bug14846__1.4.diff.txt uploaded by tilghman (license 14)
           20090507__issue14846__1.6.0.diff.txt uploaded by tilghman (license 14)
           20090507__issue14846__1.6.1.diff.txt uploaded by tilghman (license 14)
  ........
................

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/apps/app_queue.c
    branches/1.6.0/apps/app_voicemail.c
    branches/1.6.0/include/asterisk/monitor.h
    branches/1.6.0/include/asterisk/smdi.h
    branches/1.6.0/res/res_smdi.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/apps/app_queue.c
URL: http://svn.asterisk.org/svn-view/asterisk/branches/1.6.0/apps/app_queue.c?view=diff&rev=195371&r1=195370&r2=195371
==============================================================================
--- branches/1.6.0/apps/app_queue.c (original)
+++ branches/1.6.0/apps/app_queue.c Mon May 18 15:53:37 2009
@@ -3699,16 +3699,18 @@
 				else
 					which = peer;
 				ast_channel_unlock(qe->chan);
-				if (monitorfilename)
-					ast_monitor_start(which, qe->parent->monfmt, monitorfilename, 1, X_REC_IN | X_REC_OUT);
-				else if (qe->chan->cdr)
-					ast_monitor_start(which, qe->parent->monfmt, qe->chan->cdr->uniqueid, 1, X_REC_IN | X_REC_OUT);
-				else {
-					/* Last ditch effort -- no CDR, make up something */
-					snprintf(tmpid, sizeof(tmpid), "chan-%lx", ast_random());
-					ast_monitor_start(which, qe->parent->monfmt, tmpid, 1, X_REC_IN | X_REC_OUT);
+				if (ast_monitor_start) {
+					if (monitorfilename) {
+						ast_monitor_start(which, qe->parent->monfmt, monitorfilename, 1, X_REC_IN | X_REC_OUT);
+					} else if (qe->chan->cdr && ast_monitor_start) {
+						ast_monitor_start(which, qe->parent->monfmt, qe->chan->cdr->uniqueid, 1, X_REC_IN | X_REC_OUT);
+					} else if (ast_monitor_start) {
+						/* Last ditch effort -- no CDR, make up something */
+						snprintf(tmpid, sizeof(tmpid), "chan-%lx", ast_random());
+						ast_monitor_start(which, qe->parent->monfmt, tmpid, 1, X_REC_IN | X_REC_OUT);
+					}
 				}
-				if (!ast_strlen_zero(monexec)) {
+				if (!ast_strlen_zero(monexec) && ast_monitor_setjoinfiles) {
 					ast_monitor_setjoinfiles(which, 1);
 				}
 			} else {
@@ -6589,6 +6591,7 @@
 	struct ao2_iterator q_iter;
 	struct call_queue *q = NULL;
 
+
 	if (device_state.thread != AST_PTHREADT_NULL) {
 		device_state.stop = 1;
 		ast_mutex_lock(&device_state.lock);

Modified: branches/1.6.0/apps/app_voicemail.c
URL: http://svn.asterisk.org/svn-view/asterisk/branches/1.6.0/apps/app_voicemail.c?view=diff&rev=195371&r1=195370&r2=195371
==============================================================================
--- branches/1.6.0/apps/app_voicemail.c (original)
+++ branches/1.6.0/apps/app_voicemail.c Mon May 18 15:53:37 2009
@@ -9327,10 +9327,10 @@
 		if ((val = ast_variable_retrieve(cfg, "general", "smdienable")) && ast_true(val)) {
 			ast_debug(1, "Enabled SMDI voicemail notification\n");
 			if ((val = ast_variable_retrieve(cfg, "general", "smdiport"))) {
-				smdi_iface = ast_smdi_interface_find(val);
+				smdi_iface = ast_smdi_interface_find ? ast_smdi_interface_find(val) : NULL;
 			} else {
 				ast_debug(1, "No SMDI interface set, trying default (/dev/ttyS0)\n");
-				smdi_iface = ast_smdi_interface_find("/dev/ttyS0");
+				smdi_iface = ast_smdi_interface_find ? ast_smdi_interface_find("/dev/ttyS0") : NULL;
 			}
 			if (!smdi_iface) {
 				ast_log(LOG_ERROR, "No valid SMDI interface specfied, disabling SMDI voicemail notification\n");

Modified: branches/1.6.0/include/asterisk/monitor.h
URL: http://svn.asterisk.org/svn-view/asterisk/branches/1.6.0/include/asterisk/monitor.h?view=diff&rev=195371&r1=195370&r2=195371
==============================================================================
--- branches/1.6.0/include/asterisk/monitor.h (original)
+++ branches/1.6.0/include/asterisk/monitor.h Mon May 18 15:53:37 2009
@@ -51,21 +51,21 @@
 
 /* Start monitoring a channel */
 int ast_monitor_start(struct ast_channel *chan, const char *format_spec,
-		      const char *fname_base, int need_lock, int stream_action);
+		      const char *fname_base, int need_lock, int stream_action) attribute_weak;
 
 /* Stop monitoring a channel */
-int ast_monitor_stop(struct ast_channel *chan, int need_lock);
+int ast_monitor_stop(struct ast_channel *chan, int need_lock) attribute_weak;
 
 /* Change monitoring filename of a channel */
 int ast_monitor_change_fname(struct ast_channel *chan,
-			     const char *fname_base, int need_lock);
+			     const char *fname_base, int need_lock) attribute_weak;
 
-void ast_monitor_setjoinfiles(struct ast_channel *chan, int turnon);
+void ast_monitor_setjoinfiles(struct ast_channel *chan, int turnon) attribute_weak;
 
 /* Pause monitoring of a channel */
-int ast_monitor_pause(struct ast_channel *chan);
+int ast_monitor_pause(struct ast_channel *chan) attribute_weak;
 
 /* Unpause monitoring of a channel */
-int ast_monitor_unpause(struct ast_channel *chan);
+int ast_monitor_unpause(struct ast_channel *chan) attribute_weak;
 
 #endif /* _ASTERISK_MONITOR_H */

Modified: branches/1.6.0/include/asterisk/smdi.h
URL: http://svn.asterisk.org/svn-view/asterisk/branches/1.6.0/include/asterisk/smdi.h?view=diff&rev=195371&r1=195370&r2=195371
==============================================================================
--- branches/1.6.0/include/asterisk/smdi.h (original)
+++ branches/1.6.0/include/asterisk/smdi.h Mon May 18 15:53:37 2009
@@ -84,7 +84,7 @@
  */
 struct ast_smdi_interface;
 
-void ast_smdi_interface_unref(struct ast_smdi_interface *iface);
+void ast_smdi_interface_unref(struct ast_smdi_interface *iface) attribute_weak;
 
 /*! 
  * \brief Get the next SMDI message from the queue.
@@ -96,7 +96,7 @@
  *
  * \return the next SMDI message, or NULL if there were no pending messages.
  */
-struct ast_smdi_md_message *ast_smdi_md_message_pop(struct ast_smdi_interface *iface);
+struct ast_smdi_md_message *ast_smdi_md_message_pop(struct ast_smdi_interface *iface) attribute_weak;
 
 /*!
  * \brief Get the next SMDI message from the queue.
@@ -110,7 +110,7 @@
  * \return the next SMDI message, or NULL if there were no pending messages and
  * the timeout has expired.
  */
-struct ast_smdi_md_message *ast_smdi_md_message_wait(struct ast_smdi_interface *iface, int timeout);
+struct ast_smdi_md_message *ast_smdi_md_message_wait(struct ast_smdi_interface *iface, int timeout) attribute_weak;
 
 /*!
  * \brief Put an SMDI message back in the front of the queue.
@@ -121,7 +121,7 @@
  * should be used if a message was popped but is not going to be processed for
  * some reason, and the message needs to be returned to the queue.
  */
-void ast_smdi_md_message_putback(struct ast_smdi_interface *iface, struct ast_smdi_md_message *msg);
+void ast_smdi_md_message_putback(struct ast_smdi_interface *iface, struct ast_smdi_md_message *msg) attribute_weak;
 
 /*!
  * \brief Get the next SMDI message from the queue.
@@ -133,7 +133,7 @@
  *
  * \return the next SMDI message, or NULL if there were no pending messages.
  */
-struct ast_smdi_mwi_message *ast_smdi_mwi_message_pop(struct ast_smdi_interface *iface);
+struct ast_smdi_mwi_message *ast_smdi_mwi_message_pop(struct ast_smdi_interface *iface) attribute_weak;
 
 /*!
  * \brief Get the next SMDI message from the queue.
@@ -147,9 +147,9 @@
  * \return the next SMDI message, or NULL if there were no pending messages and
  * the timeout has expired.
  */
-struct ast_smdi_mwi_message *ast_smdi_mwi_message_wait(struct ast_smdi_interface *iface, int timeout);
+struct ast_smdi_mwi_message *ast_smdi_mwi_message_wait(struct ast_smdi_interface *iface, int timeout) attribute_weak;
 struct ast_smdi_mwi_message *ast_smdi_mwi_message_wait_station(struct ast_smdi_interface *iface, 
-	int timeout, const char *station);
+	int timeout, const char *station) attribute_weak;
 
 /*!
  * \brief Put an SMDI message back in the front of the queue.
@@ -160,7 +160,7 @@
  * should be used if a message was popped but is not going to be processed for
  * some reason, and the message needs to be returned to the queue.
  */
-void ast_smdi_mwi_message_putback(struct ast_smdi_interface *iface, struct ast_smdi_mwi_message *msg);
+void ast_smdi_mwi_message_putback(struct ast_smdi_interface *iface, struct ast_smdi_mwi_message *msg) attribute_weak;
 
 /*!
  * \brief Find an SMDI interface with the specified name.
@@ -170,26 +170,26 @@
  * actually returns an ASTOBJ reference and should be released using
  * #ASTOBJ_UNREF(iface, ast_smdi_interface_destroy).
  */
-struct ast_smdi_interface *ast_smdi_interface_find(const char *iface_name);
+struct ast_smdi_interface *ast_smdi_interface_find(const char *iface_name) attribute_weak;
 
 /*!
  * \brief Set the MWI indicator for a mailbox.
  * \param iface the interface to use.
  * \param mailbox the mailbox to use.
  */
-int ast_smdi_mwi_set(struct ast_smdi_interface *iface, const char *mailbox);
+int ast_smdi_mwi_set(struct ast_smdi_interface *iface, const char *mailbox) attribute_weak;
 
 /*! 
  * \brief Unset the MWI indicator for a mailbox.
  * \param iface the interface to use.
  * \param mailbox the mailbox to use.
  */
-int ast_smdi_mwi_unset(struct ast_smdi_interface *iface, const char *mailbox);
+int ast_smdi_mwi_unset(struct ast_smdi_interface *iface, const char *mailbox) attribute_weak;
 
 /*! \brief ast_smdi_md_message destructor. */
-void ast_smdi_md_message_destroy(struct ast_smdi_md_message *msg);
+void ast_smdi_md_message_destroy(struct ast_smdi_md_message *msg) attribute_weak;
 
 /*! \brief ast_smdi_mwi_message destructor. */
-void ast_smdi_mwi_message_destroy(struct ast_smdi_mwi_message *msg);
+void ast_smdi_mwi_message_destroy(struct ast_smdi_mwi_message *msg) attribute_weak;
 
 #endif /* !ASTERISK_SMDI_H */

Modified: branches/1.6.0/res/res_smdi.c
URL: http://svn.asterisk.org/svn-view/asterisk/branches/1.6.0/res/res_smdi.c?view=diff&rev=195371&r1=195370&r2=195371
==============================================================================
--- branches/1.6.0/res/res_smdi.c (original)
+++ branches/1.6.0/res/res_smdi.c Mon May 18 15:53:37 2009
@@ -1250,6 +1250,8 @@
 	.read = smdi_msg_read,
 };
 
+static int unload_module(void);
+
 static int load_module(void)
 {
 	int res;
@@ -1267,8 +1269,10 @@
 	/* load the config and start the listener threads*/
 	res = smdi_load(0);
 	if (res < 0) {
+		unload_module();
 		return res;
 	} else if (res == 1) {
+		unload_module();
 		ast_log(LOG_NOTICE, "No SMDI interfaces are available to listen on, not starting SMDI listener.\n");
 		return AST_MODULE_LOAD_DECLINE;
 	}




More information about the asterisk-commits mailing list