diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/irmd/main.c | 28 | ||||
| -rw-r--r-- | src/lib/logs.c | 6 | 
2 files changed, 23 insertions, 11 deletions
| diff --git a/src/irmd/main.c b/src/irmd/main.c index 26251858..62673251 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -1696,6 +1696,8 @@ static struct irm * irm_create()          if (instance == NULL)                  return NULL; +        instance->state = IRMD_NULL; +          if (access("/dev/shm/" SHM_DU_MAP_FILENAME, F_OK) != -1) {                  struct shm_du_map * dum = shm_du_map_open(); @@ -1716,6 +1718,8 @@ static struct irm * irm_create()                          free(instance);                          exit(EXIT_SUCCESS);                  } + +                shm_du_map_close(dum);          }          if (pthread_rwlock_init(&instance->state_lock, NULL)) { @@ -1736,17 +1740,6 @@ static struct irm * irm_create()                  return NULL;          } -        instance->threadpool = malloc(sizeof(pthread_t) * IRMD_THREADPOOL_SIZE); -        if (instance->threadpool == NULL) { -                irm_destroy(); -                return NULL; -        } - -        if ((instance->dum = shm_du_map_create()) == NULL) { -                irm_destroy(); -                return NULL; -        } -          INIT_LIST_HEAD(&instance->ipcps);          INIT_LIST_HEAD(&instance->spawned_apis);          INIT_LIST_HEAD(&instance->registry); @@ -1758,6 +1751,12 @@ static struct irm * irm_create()                  return NULL;          } +        instance->threadpool = malloc(sizeof(pthread_t) * IRMD_THREADPOOL_SIZE); +        if (instance->threadpool == NULL) { +                irm_destroy(); +                return NULL; +        } +          if (stat(SOCK_PATH, &st) == -1) {                  if (mkdir(SOCK_PATH, 0777)) {                          LOG_ERR("Failed to create sockets directory."); @@ -1778,6 +1777,11 @@ static struct irm * irm_create()                  return NULL;          } +        if ((instance->dum = shm_du_map_create()) == NULL) { +                irm_destroy(); +                return NULL; +        } +          instance->state = IRMD_RUNNING;          return instance; @@ -1894,5 +1898,7 @@ int main(int argc, char ** argv)          irm_destroy(); +        close_logfile(); +          exit(EXIT_SUCCESS);  } diff --git a/src/lib/logs.c b/src/lib/logs.c index d86073e4..eed1ee10 100644 --- a/src/lib/logs.c +++ b/src/lib/logs.c @@ -34,3 +34,9 @@ int set_logfile(char * filename)          return 0;  } + +void close_logfile() +{ +        if (logfile != NULL) +                fclose(logfile); +} | 
