[Asterisk-cvs] asterisk asterisk.c,1.97,1.98
markster at lists.digium.com
markster at lists.digium.com
Fri Jun 25 10:53:44 CDT 2004
Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv10341
Modified Files:
asterisk.c
Log Message:
Add Tilghman's -R option to allow reconnecting when disconnected (bug #1916)
Index: asterisk.c
===================================================================
RCS file: /usr/cvsroot/asterisk/asterisk.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -d -r1.97 -r1.98
--- asterisk.c 25 Jun 2004 04:07:52 -0000 1.97
+++ asterisk.c 25 Jun 2004 14:39:38 -0000 1.98
@@ -70,6 +70,7 @@
int option_nocolor;
int option_dumpcore = 0;
int option_overrideconfig = 0;
+int option_reconnect = 0;
int fully_booted = 0;
static int ast_socket = -1; /* UNIX Socket for allowing remote control */
@@ -871,7 +872,29 @@
/* if the remote side disappears exit */
if (res < 1) {
fprintf(stderr, "\nDisconnected from Asterisk server\n");
- quit_handler(0, 0, 0, 0);
+ if (!option_reconnect) {
+ quit_handler(0, 0, 0, 0);
+ } else {
+ int tries;
+ int reconnects_per_second = 10;
+ fprintf(stderr, "\nAttempting to reconnect for 30 seconds\n");
+ for (tries=0;tries<30 * reconnects_per_second;tries++) {
+ if (ast_tryconnect()) {
+ printf(term_quit());
+ ast_register_verbose(console_verboser);
+ ast_verbose( "Asterisk " ASTERISK_VERSION ", Copyright (C) 1999-2004 Digium.\n");
+ ast_verbose( "Written by Mark Spencer <markster at digium.com>\n");
+ ast_verbose( "=========================================================================\n");
+ break;
+ } else {
+ usleep(1000000 / reconnects_per_second);
+ }
+ }
+ if (tries >= 30) {
+ fprintf(stderr, "Failed to reconnect for 30 seconds. Quitting.\n");
+ quit_handler(0, 0, 0, 0);
+ }
+ }
}
buf[res] = '\0';
@@ -1394,6 +1417,7 @@
printf(" -p Run as pseudo-realtime thread\n");
printf(" -q Quiet mode (supress output)\n");
printf(" -r Connect to Asterisk on this machine\n");
+ printf(" -R Connect to Asterisk, and attempt to reconnect if disconnected\n");
printf(" -v Increase verbosity (multiple v's = more verbose)\n");
printf(" -x <cmd> Execute command <cmd> (only valid with -r)\n");
printf("\n");
@@ -1498,7 +1522,7 @@
}
*/
/* Check for options */
- while((c=getopt(argc, argv, "hfdvqprgcinx:C:")) != -1) {
+ while((c=getopt(argc, argv, "hfdvqprRgcinx:C:")) != -1) {
switch(c) {
case 'd':
option_debug++;
@@ -1518,6 +1542,11 @@
option_remote++;
option_nofork++;
break;
+ case 'R':
+ option_remote++;
+ option_nofork++;
+ option_reconnect++;
+ break;
case 'p':
option_highpriority++;
break;
More information about the svn-commits
mailing list