Diff for /mqtt/src/mqttd.c between versions 1.1.1.1.2.10 and 1.1.1.1.2.13

version 1.1.1.1.2.10, 2011/12/09 09:53:54 version 1.1.1.1.2.13, 2011/12/14 15:09:31
Line 5 Line 5
 #include "daemon.h"  #include "daemon.h"
   
   
   io_enableDEBUG;
   
 sl_config cfg;  sl_config cfg;
 sessions_t Sessions;  sessions_t Sessions;
 sched_root_task_t *root;  sched_root_task_t *root;
   sqlite3 *acc, *pub;
   pthread_mutex_t mtx_sess;
   FILE *logg;
 extern char compiled[], compiledby[], compilehost[];  extern char compiled[], compiledby[], compilehost[];
 static char szCfgName[MAXPATHLEN];  static char szCfgName[MAXPATHLEN];
int Verbose, Kill;intptr_t Kill;
   
   
 static void  static void
Line 34  sigHand(int sig) Line 39  sigHand(int sig)
                 case SIGHUP:                  case SIGHUP:
                         UnloadConfig(&cfg);                          UnloadConfig(&cfg);
                         if (!LoadConfig(szCfgName, &cfg)) {                          if (!LoadConfig(szCfgName, &cfg)) {
                                VERB(1) syslog(LOG_DEBUG, "Config reload OK!");                                ioDEBUG(1, "Config reload OK!");
                                 break;                                  break;
                         }                          }
   
                         syslog(LOG_ERR, "Error:: can't reload #%d - %s", cfg_GetErrno(), cfg_GetError());                          syslog(LOG_ERR, "Error:: can't reload #%d - %s", cfg_GetErrno(), cfg_GetError());
                 case SIGTERM:                  case SIGTERM:
                        VERB(1) syslog(LOG_DEBUG, "Terminate MQTT service in progress");                        ioDEBUG(1, "Terminate MQTT service in progress");
                         Kill++;                          Kill++;
                         break;                          break;
                 case SIGCHLD:                  case SIGCHLD:
Line 55  main(int argc, char **argv) Line 60  main(int argc, char **argv)
 {  {
         char ch, batch = 0, szStr[STRSIZ];          char ch, batch = 0, szStr[STRSIZ];
         register int i;          register int i;
         sqlite3 *acc = NULL, *pub = NULL;  
         FILE *logg = NULL;  
         int sock = -1, ret = 0;          int sock = -1, ret = 0;
         struct passwd *pass;          struct passwd *pass;
         struct sigaction sa;          struct sigaction sa;
Line 73  main(int argc, char **argv) Line 76  main(int argc, char **argv)
                                 batch++;                                  batch++;
                                 break;                                  break;
                         case 'v':                          case 'v':
                                Verbose++;                                io_incDebug;
                                 break;                                  break;
                         case 'h':                          case 'h':
                         default:                          default:
Line 87  main(int argc, char **argv) Line 90  main(int argc, char **argv)
                 printf("Error:: can't load #%d - %s\n", cfg_GetErrno(), cfg_GetError());                  printf("Error:: can't load #%d - %s\n", cfg_GetErrno(), cfg_GetError());
                 return 1;                  return 1;
         }          }
           pthread_mutex_init(&mtx_sess, NULL);
         openlog("mqttd", LOG_PID | LOG_CONS, LOG_DAEMON);          openlog("mqttd", LOG_PID | LOG_CONS, LOG_DAEMON);
         for (i = 0; i < 3; i++)          for (i = 0; i < 3; i++)
                 if (!mqttLoadRTLM(&cfg, i)) {                  if (!mqttLoadRTLM(&cfg, i)) {
Line 95  main(int argc, char **argv) Line 99  main(int argc, char **argv)
                                 mqttUnloadRTLM(i);                                  mqttUnloadRTLM(i);
                         UnloadConfig(&cfg);                          UnloadConfig(&cfg);
                         closelog();                          closelog();
                           pthread_mutex_destroy(&mtx_sess);
                         return 2;                          return 2;
                 }                  }
         acc = call.OpenACC(&cfg);          acc = call.OpenACC(&cfg);
Line 119  main(int argc, char **argv) Line 124  main(int argc, char **argv)
                 goto end;                  goto end;
         }          }
   
         memset(&sa, 0, sizeof sa);  
         sigemptyset(&sa.sa_mask);  
         sa.sa_handler = sigHand;  
         sigaction(SIGHUP, &sa, NULL);  
         sigaction(SIGTERM, &sa, NULL);  
         sigaction(SIGCHLD, &sa, NULL);  
   
         if (!batch)          if (!batch)
                 switch (fork()) {                  switch (fork()) {
                         case -1:                          case -1:
Line 142  main(int argc, char **argv) Line 140  main(int argc, char **argv)
                                         dup2(ret, STDERR_FILENO);                                          dup2(ret, STDERR_FILENO);
                                         close(ret);                                          close(ret);
                                 }                                  }
                                VERB(2) syslog(LOG_DEBUG, "Welcome MQTT service into shadow land!");                                ioDEBUG(2, "Welcome MQTT service into shadow land!");
                                 break;                                  break;
                         default:                          default:
                                VERB(2) syslog(LOG_DEBUG, "MQTT service go to shadow land ...");                                ioDEBUG(2, "MQTT service go to shadow land ...");
                                 sleep(1);                                  sleep(1);
                                 ret = 0;                                  ret = 0;
                                 goto end;                                  goto end;
                 }                  }
         else          else
                VERB(1) printf("Start service in batch mode ...\n");                ioVERBOSE(1) printf("Start service in batch mode ...\n");
   
        VERB(2) syslog(LOG_DEBUG, "Service is ready for start engine ...");        memset(&sa, 0, sizeof sa);
         sigemptyset(&sa.sa_mask);
         sa.sa_handler = sigHand;
         sigaction(SIGHUP, &sa, NULL);
         sigaction(SIGTERM, &sa, NULL);
         sigaction(SIGCHLD, &sa, NULL);
         ioDEBUG(2, "Service is ready for start engine ...");
   
         if ((sock = srv_Socket(&cfg)) == -1) {          if ((sock = srv_Socket(&cfg)) == -1) {
                 ret = 4;                  ret = 4;
Line 165  main(int argc, char **argv) Line 169  main(int argc, char **argv)
         if (pass) {          if (pass) {
                 setgid(pass->pw_gid);                  setgid(pass->pw_gid);
                 setuid(pass->pw_uid);                  setuid(pass->pw_uid);
                VERB(1) syslog(LOG_WARNING, "Try to change group #%d and user #%d", pass->pw_gid, pass->pw_uid);                ioDEBUG(2, "Try to change group #%d and user #%d", pass->pw_gid, pass->pw_uid);
         }          }
   
         if (!(root = schedBegin())) {          if (!(root = schedBegin())) {
Line 178  main(int argc, char **argv) Line 182  main(int argc, char **argv)
   
         schedEnd(&root);          schedEnd(&root);
 end:  end:
        if (sock > STDERR_FILENO)        srv_Close(sock);
                srv_Close(sock); 
         call.CloseLOG(logg);          call.CloseLOG(logg);
         call.ClosePUB(pub);          call.ClosePUB(pub);
         call.CloseACC(acc);          call.CloseACC(acc);
Line 187  end: Line 190  end:
                 mqttUnloadRTLM(i);                  mqttUnloadRTLM(i);
         closelog();          closelog();
         UnloadConfig(&cfg);          UnloadConfig(&cfg);
           pthread_mutex_destroy(&mtx_sess);
         return ret;          return ret;
 }  }

Removed from v.1.1.1.1.2.10  
changed lines
  Added in v.1.1.1.1.2.13


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>