[asterisk-commits] dhubbard: trunk r112653 - /trunk/main/asterisk.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Apr 3 17:13:12 CDT 2008


Author: dhubbard
Date: Thu Apr  3 17:13:11 2008
New Revision: 112653

URL: http://svn.digium.com/view/asterisk?view=rev&rev=112653
Log:
add a Zaptel timer check to verify the timer is responding when Zaptel support is compiled into Asterisk and Zaptel drivers are loaded.  This will help people not waste their valuable time debugging side effects.

Modified:
    trunk/main/asterisk.c

Modified: trunk/main/asterisk.c
URL: http://svn.digium.com/view/asterisk/trunk/main/asterisk.c?view=diff&rev=112653&r1=112652&r2=112653
==============================================================================
--- trunk/main/asterisk.c (original)
+++ trunk/main/asterisk.c Thu Apr  3 17:13:11 2008
@@ -122,6 +122,7 @@
 #include "asterisk/devicestate.h"
 #include "asterisk/module.h"
 #include "asterisk/dsp.h"
+#include "asterisk/zapata.h"
 
 #include "asterisk/doxyref.h"		/* Doxygen documentation */
 
@@ -3184,7 +3185,34 @@
 		printf("%s", term_quit());
 		exit(1);
 	}
-
+#ifdef HAVE_ZAPTEL
+	{
+		int fd;
+		int x = 160;
+		fd = open("/dev/zap/timer", O_RDWR);
+		if (fd >= 0) {
+			if (ioctl(fd, ZT_TIMERCONFIG, &x)) {
+				ast_log(LOG_ERROR, "You have Zaptel built and drivers loaded, but the Zaptel timer test failed to set ZT_TIMERCONFIG to \'%d\'.\n", x);
+				exit(1);
+			}
+			if ((x = ast_wait_for_input(fd, 300)) < 0) {
+				ast_log(LOG_ERROR, "You have Zaptel built and drivers loaded, but the Zaptel timer could not be polled during the Zaptel timer test.\n");
+				exit(1);
+			}
+			if (!x) {
+				const char zaptel_timer_error[] = {
+					"Asterisk has detected a problem with your Zaptel configuration and will shutdown for your protection.  You have options:"
+					"\n\t1. You only have to compile Zaptel support into Asterisk if you need it.  One option is to recompile without Zaptel support."
+					"\n\t2. You only have to load Zaptel drivers if you want to take advantage of Zaptel services.  One option is to unload zaptel modules if you don't need them."
+					"\n\t3. If you need Zaptel services, you must correctly configure Zaptel."
+				};
+				ast_log(LOG_ERROR, "%s\n", zaptel_timer_error);
+				exit(1);
+			}
+			close(fd);
+		}
+	}
+#endif
 	threadstorage_init();
 
 	astobj2_init();




More information about the asterisk-commits mailing list