Merge the rest of the FullyBooted patch
authorTerry Wilson <twilson@digium.com>
Mon, 24 May 2010 22:21:58 +0000 (22:21 +0000)
committerTerry Wilson <twilson@digium.com>
Mon, 24 May 2010 22:21:58 +0000 (22:21 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@265467 65c4cc65-6c06-0410-ace0-fbb531ad65f3

doc/manager_1_1.txt
main/asterisk.c
main/manager.c

index a9b47de..30ba876 100644 (file)
@@ -314,6 +314,22 @@ Changes to manager version 1.1:
 * NEW EVENTS
 ------------
 
 * NEW EVENTS
 ------------
 
+- Event: FullyBooted
+       Modules: loader.c
+       Purpose:
+               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
+
 - Event: Transfer
        Modules: res_features, chan_sip
        Purpose:
 - Event: Transfer
        Modules: res_features, chan_sip
        Purpose:
index fd29a6f..a9844de 100644 (file)
@@ -3723,6 +3723,7 @@ int main(int argc, char *argv[])
                sig_alert_pipe[0] = sig_alert_pipe[1] = -1;
 
        ast_set_flag(&ast_options, AST_OPT_FLAG_FULLY_BOOTED);
                sig_alert_pipe[0] = sig_alert_pipe[1] = -1;
 
        ast_set_flag(&ast_options, AST_OPT_FLAG_FULLY_BOOTED);
+       manager_event(EVENT_FLAG_SYSTEM, "FullyBooted", "Status: Fully Booted\r\n");
 
        ast_process_pending_reloads();
 
 
        ast_process_pending_reloads();
 
index 297e94f..f23cec8 100644 (file)
@@ -2740,6 +2740,9 @@ static int action_login(struct mansession *s, const struct message *m)
                ast_verb(2, "%sManager '%s' logged on from %s\n", (s->session->managerid ? "HTTP " : ""), s->session->username, ast_inet_ntoa(s->session->sin.sin_addr));
        }
        astman_send_ack(s, m, "Authentication accepted");
                ast_verb(2, "%sManager '%s' logged on from %s\n", (s->session->managerid ? "HTTP " : ""), s->session->username, ast_inet_ntoa(s->session->sin.sin_addr));
        }
        astman_send_ack(s, m, "Authentication accepted");
+       if (ast_test_flag(&ast_options, AST_OPT_FLAG_FULLY_BOOTED)) {
+               manager_event(EVENT_FLAG_SYSTEM, "FullyBooted", "Status: Fully Booted\r\n");
+       }
        return 0;
 }
 
        return 0;
 }