static int mod_init(void) { int i, ver; DBG("domain - initializing\n"); db_url.len = strlen(db_url.s); domain_table.len = strlen(domain_table.s); domain_col.len = strlen(domain_col.s); /* Check if database module has been loaded */ if (domain_db_bind(db_url.s)<0) return -1; /* Check if cache needs to be loaded from domain table */ if (db_mode != 0) { if (domain_db_init(db_url.s)<0) return -1; /* Check table version */ ver = domain_db_ver(&domain_table); if (ver < 0) { LOG(L_ERR, "ERROR: domain:mod_init(): " "error while querying table version\n"); domain_db_close(); return -1; } else if (ver < TABLE_VERSION) { LOG(L_ERR, "ERROR: domain:mod_init(): invalid table" " version (use ser_mysql.sh reinstall)\n"); domain_db_close(); return -1; } /* Initialize fifo interface */ (void)init_domain_fifo(); if (init_domain_unixsock() < 0) { LOG(L_ERR, "ERROR: domain:mod_init(): error while initializing" " unix socket interface\n"); domain_db_close(); return -1; } /* Initializing hash tables and hash table variable */ hash_table_1 = (struct domain_list **)shm_malloc(sizeof(struct domain_list *) * HASH_SIZE); if (hash_table_1 == 0) { LOG(L_ERR, "ERROR: domain: mod_init(): " "No memory for hash table\n"); } hash_table_2 = (struct domain_list **)shm_malloc(sizeof(struct domain_list *) * HASH_SIZE); if (hash_table_2 == 0) { LOG(L_ERR, "ERROR: domain: mod_init():" " No memory for hash table\n"); } for (i = 0; i < HASH_SIZE; i++) { hash_table_1[i] = hash_table_2[i] = (struct domain_list *)0; } hash_table = (struct domain_list ***)shm_malloc(sizeof(struct domain_list *)); *hash_table = hash_table_1; if (reload_domain_table() == -1) { LOG(L_CRIT, "ERROR: domain:mod_init():" " Domain table reload failed\n"); return -1; } domain_db_close(); } return 0; }
static int mod_init(void) { LM_DBG("initializing\n"); if (register_mi_mod(exports.name, mi_cmds) != 0) { LM_ERR("failed to register MI commands\n"); return -1; } if (domain_init_rpc() != 0) { LM_ERR("failed to register RPC commands\n"); return -1; } if (domain_reg_myself !=0 ) { if (register_check_self_func(domain_check_self) <0 ) { LM_ERR("failed to register check self function\n"); return -1; } } /* Bind database */ if (domain_db_bind(&db_url)) { LM_DBG("Usign db_url [%.*s]\n", db_url.len, db_url.s); LM_ERR("no database module found. Have you configure thed \"db_url\" modparam properly?\n"); return -1; } /* Check table versions */ if (domain_db_init(&db_url) < 0) { LM_ERR("unable to open database connection\n"); return -1; } if (domain_db_ver(&domain_table, DOMAIN_TABLE_VERSION) < 0) { LM_ERR("error during check of domain table version\n"); domain_db_close(); goto error; } if (domain_db_ver(&domain_attrs_table, DOMAIN_ATTRS_TABLE_VERSION) < 0) { LM_ERR("error during check of domain_attrs table version\n"); domain_db_close(); goto error; } domain_db_close(); /* Initializing hash tables and hash table variable */ hash_table = (struct domain_list ***)shm_malloc (sizeof(struct domain_list *)); hash_table_1 = (struct domain_list **)shm_malloc (sizeof(struct domain_list *) * (DOM_HASH_SIZE + 1)); hash_table_2 = (struct domain_list **)shm_malloc (sizeof(struct domain_list *) * (DOM_HASH_SIZE + 1)); if ((hash_table == 0) || (hash_table_1 == 0) || (hash_table_2 == 0)) { LM_ERR("no memory for hash table\n"); goto error; } memset(hash_table_1, 0, sizeof(struct domain_list *) * (DOM_HASH_SIZE + 1)); memset(hash_table_2, 0, sizeof(struct domain_list *) * (DOM_HASH_SIZE + 1)); *hash_table = hash_table_1; /* Allocate and initialize locks */ reload_lock = lock_alloc(); if (reload_lock == NULL) { LM_ERR("cannot allocate reload_lock\n"); goto error; } if (lock_init(reload_lock) == NULL) { LM_ERR("cannot init reload_lock\n"); goto error; } /* First reload */ lock_get(reload_lock); if (reload_tables() == -1) { lock_release(reload_lock); LM_CRIT("domain reload failed\n"); goto error; } lock_release(reload_lock); return 0; error: destroy(); return -1; }
static int mod_init(void) { int i; LM_DBG("Initializing\n"); init_db_url( db_url , 0 /*cannot be null*/); domain_table.len = strlen(domain_table.s); domain_col.len = strlen(domain_col.s); domain_attrs_col.len = strlen(domain_attrs_col.s); /* Check if database module has been loaded */ if (domain_db_bind(&db_url) < 0) return -1; /* Check if cache needs to be loaded from domain table */ if (db_mode != 0) { if (domain_db_init(&db_url)<0) return -1; /* Check table version */ if (domain_db_ver(&domain_table, TABLE_VERSION) < 0) { LM_ERR("error during check of domain table version\n"); goto error; } /* Initializing hash tables and hash table variable */ hash_table_1 = (struct domain_list **)shm_malloc (sizeof(struct domain_list *) * DOM_HASH_SIZE); if (hash_table_1 == 0) { LM_ERR("No memory for hash table\n"); goto error; } hash_table_2 = (struct domain_list **)shm_malloc (sizeof(struct domain_list *) * DOM_HASH_SIZE); if (hash_table_2 == 0) { LM_ERR("No memory for hash table\n"); goto error; } for (i = 0; i < DOM_HASH_SIZE; i++) { hash_table_1[i] = hash_table_2[i] = (struct domain_list *)0; } hash_table = (struct domain_list ***)shm_malloc (sizeof(struct domain_list *)); *hash_table = hash_table_1; if (reload_domain_table() == -1) { LM_ERR("Domain table reload failed\n"); goto error; } domain_db_close(); } /* register the alias check function to core */ if (register_alias_fct(is_domain_alias)!=0) { LM_ERR("failed to register the alias check function\n"); goto error; } return 0; error: domain_db_close(); return -1; }