add a Zaptel timer check to verify the timer is responding when Zaptel support is...
authorDwayne M. Hubbard <dwayne.hubbard@gmail.com>
Thu, 3 Apr 2008 22:13:11 +0000 (22:13 +0000)
committerDwayne M. Hubbard <dwayne.hubbard@gmail.com>
Thu, 3 Apr 2008 22:13:11 +0000 (22:13 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@112653 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/asterisk.c

index ce62850..764d9b0 100644 (file)
@@ -122,6 +122,7 @@ int daemon(int, int);  /* defined in libresolv of all places */
 #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 @@ int main(int argc, char *argv[])
                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();