[asterisk-commits] twilson: branch 1.4 r265570 - in /branches/1.4: ./ doc/ include/asterisk/ main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue May 25 08:33:24 CDT 2010


Author: twilson
Date: Tue May 25 08:33:21 2010
New Revision: 265570

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=265570
Log:
Merged revisions 265320,265467 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
  r265320 | twilson | 2010-05-24 14:06:40 -0500 (Mon, 24 May 2010) | 14 lines
  
  Add the FullyBooted AMI event
  
  It is possible to connect to the manager interface before all Asterisk modules
  are loaded. To ensure that an application does not send AMI actions that might
  require a module that has not yet loaded, the application can listen for the
  FullyBooted manager event. It will be sent upon connection if all modules have
  been loaded, or as soon as loading is complete. The event:
  
     Event: FullyBooted
     Privilege: system,all
     Status: Fully Booted
  
  Review: https://reviewboard.asterisk.org/r/639/
........
  r265467 | twilson | 2010-05-24 17:21:58 -0500 (Mon, 24 May 2010) | 1 line
  
  Merge the rest of the FullyBooted patch
........

Modified:
    branches/1.4/Makefile
    branches/1.4/doc/manager.txt
    branches/1.4/include/asterisk/options.h
    branches/1.4/main/asterisk.c
    branches/1.4/main/manager.c

Modified: branches/1.4/Makefile
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/Makefile?view=diff&rev=265570&r1=265569&r2=265570
==============================================================================
--- branches/1.4/Makefile (original)
+++ branches/1.4/Makefile Tue May 25 08:33:21 2010
@@ -624,6 +624,7 @@
 		echo "                        ; to the device.  It is for this reason that this is optional, as it may result in requiring a" ; \
 		echo "                        ; temporary codec translation path for a channel that may not otherwise require one." ; \
 		echo ";transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of directly" ; \
+		echo ";sendfullybooted = yes  ; Send the FullyBooted AMI event on AMI login and when all modules are finished loading" ; \
 		echo ";runuser = asterisk ; The user to run as" ; \
 		echo ";rungroup = asterisk ; The group to run as" ; \
 		echo ";dahdichanname = yes ; Channels created by chan_dahdi will be called 'DAHDI', otherwise 'Zap'" ; \

Modified: branches/1.4/doc/manager.txt
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/doc/manager.txt?view=diff&rev=265570&r1=265569&r2=265570
==============================================================================
--- branches/1.4/doc/manager.txt (original)
+++ branches/1.4/doc/manager.txt Tue May 25 08:33:21 2010
@@ -121,6 +121,23 @@
 
 You can always get more information about a manager command
 with the "show manager command <command>" CLI command in Asterisk.
+
+Determining when all modules have finished loading
+--------------------------------------------------
+It is handy to have a single event notification for when all Asterisk
+modules have been loaded--especially for situations like running
+automated tests. This event will fire 1) immediately upon all modules
+loading or 2) upon connection to the AMI interface if the modules have
+already finished loading before the connection was made. This ensures
+that a user will never miss getting a FullyBooted event. In vary rare
+circumstances, it might be possible to get two copies of the message
+if the AMI connection is made right as the modules finish loading.
+
+Example:
+	Event: FullyBooted
+	Privilege: system,all
+	Status: Fully Booted
+
 
 Examples
 --------

Modified: branches/1.4/include/asterisk/options.h
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/include/asterisk/options.h?view=diff&rev=265570&r1=265569&r2=265570
==============================================================================
--- branches/1.4/include/asterisk/options.h (original)
+++ branches/1.4/include/asterisk/options.h Tue May 25 08:33:21 2010
@@ -83,6 +83,8 @@
 	AST_OPT_FLAG_MUTE = (1 << 22),
 	/*! Generic PLC */
 	AST_OPT_FLAG_GENERIC_PLC = (1 << 23),
+	/*! Send the FullyBooted AMI event when all modules are loaded */
+	AST_OPT_FLAG_SEND_FULLYBOOTED = (1 << 24),
 };
 
 /*! These are the options that set by default when Asterisk starts */
@@ -116,6 +118,7 @@
 #define ast_opt_always_fork		ast_test_flag(&ast_options, AST_OPT_FLAG_ALWAYS_FORK)
 #define ast_opt_mute			ast_test_flag(&ast_options, AST_OPT_FLAG_MUTE)
 #define ast_opt_generic_plc         ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC)
+#define ast_opt_send_fullybooted	ast_test_flag(&ast_options, AST_OPT_FLAG_SEND_FULLYBOOTED)
 
 extern struct ast_flags ast_options;
 

Modified: branches/1.4/main/asterisk.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/main/asterisk.c?view=diff&rev=265570&r1=265569&r2=265570
==============================================================================
--- branches/1.4/main/asterisk.c (original)
+++ branches/1.4/main/asterisk.c Tue May 25 08:33:21 2010
@@ -2666,6 +2666,8 @@
 				_dahdi_chan_mode = CHAN_ZAP_MODE;
 			}
 #endif
+		} else if (!strcasecmp(v->name, "sendfullybooted")) {
+			ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_SEND_FULLYBOOTED);
 		}
 	}
 	ast_config_destroy(cfg);
@@ -3192,6 +3194,9 @@
 		sig_alert_pipe[0] = sig_alert_pipe[1] = -1;
 
 	ast_set_flag(&ast_options, AST_OPT_FLAG_FULLY_BOOTED);
+	if (ast_opt_send_fullybooted) {
+		manager_event(EVENT_FLAG_SYSTEM, "FullyBooted", "Status: Fully Booted\r\n");
+	}
 
 	ast_process_pending_reloads();
 

Modified: branches/1.4/main/manager.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/main/manager.c?view=diff&rev=265570&r1=265569&r2=265570
==============================================================================
--- branches/1.4/main/manager.c (original)
+++ branches/1.4/main/manager.c Tue May 25 08:33:21 2010
@@ -2300,6 +2300,9 @@
 				ast_log(LOG_EVENT, "%sManager '%s' logged on from %s\n", 
 					(s->session->sessiontimeout ? "HTTP " : ""), s->session->username, ast_inet_ntoa(s->session->sin.sin_addr));
 				astman_send_ack(s, m, "Authentication accepted");
+				if (ast_opt_send_fullybooted && ast_test_flag(&ast_options, AST_OPT_FLAG_FULLY_BOOTED)) {
+					manager_event(EVENT_FLAG_SYSTEM, "FullyBooted", "Status: Fully Booted\r\n");
+				}
 			}
 		} else if (!strcasecmp(action, "Logoff")) {
 			astman_send_ack(s, m, "See ya");




More information about the asterisk-commits mailing list