Module: sip-router
Branch: sr_3.0
Commit: e5dfdb012649cc766ca62fa27c6b3c4850fb9566
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=e5dfdb0…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Sat Oct 9 10:56:38 2010 +0200
permissions(k): fixed misleading out of shm
- out of shm memory was printed even when db load failed
- some identations to reveal the inner blocks
(cherry picked from commit 80928443fcd9548bd2e4599e76f1c96498aed4a7)
---
modules_k/permissions/address.c | 161 ++++++++++++++++++++-------------------
1 files changed, 81 insertions(+), 80 deletions(-)
diff --git a/modules_k/permissions/address.c b/modules_k/permissions/address.c
index 126c8d8..93e5f5c 100644
--- a/modules_k/permissions/address.c
+++ b/modules_k/permissions/address.c
@@ -90,20 +90,20 @@ int reload_address_table(void)
/* Choose new hash table and free its old contents */
if (*addr_hash_table == addr_hash_table_1) {
- empty_addr_hash_table(addr_hash_table_2);
- new_hash_table = addr_hash_table_2;
+ empty_addr_hash_table(addr_hash_table_2);
+ new_hash_table = addr_hash_table_2;
} else {
- empty_addr_hash_table(addr_hash_table_1);
- new_hash_table = addr_hash_table_1;
+ empty_addr_hash_table(addr_hash_table_1);
+ new_hash_table = addr_hash_table_1;
}
/* Choose new subnet table */
if (*subnet_table == subnet_table_1) {
- empty_subnet_table(subnet_table_2);
- new_subnet_table = subnet_table_2;
+ empty_subnet_table(subnet_table_2);
+ new_subnet_table = subnet_table_2;
} else {
- empty_subnet_table(subnet_table_1);
- new_subnet_table = subnet_table_1;
+ empty_subnet_table(subnet_table_1);
+ new_subnet_table = subnet_table_1;
}
row = RES_ROWS(res);
@@ -111,52 +111,52 @@ int reload_address_table(void)
LM_DBG("Number of rows in address table: %d\n", RES_ROW_N(res));
for (i = 0; i < RES_ROW_N(res); i++) {
- val = ROW_VALUES(row + i);
- if ((ROW_N(row + i) == 4) &&
- (VAL_TYPE(val) == DB1_INT) && !VAL_NULL(val) &&
- (VAL_INT(val) > 0) &&
- (VAL_TYPE(val + 1) == DB1_STRING) && !VAL_NULL(val + 1) &&
- inet_aton((char *)VAL_STRING(val + 1), &ip_addr) != 0 &&
- (VAL_TYPE(val + 2) == DB1_INT) && !VAL_NULL(val + 2) &&
- ((unsigned int)VAL_INT(val + 2) > 0) &&
- ((unsigned int)VAL_INT(val + 2) <= 32) &&
- (VAL_TYPE(val + 3) == DB1_INT) && !VAL_NULL(val + 3)) {
- if ((unsigned int)VAL_INT(val + 2) == 32) {
- if (addr_hash_table_insert(new_hash_table,
+ val = ROW_VALUES(row + i);
+ if ((ROW_N(row + i) == 4) &&
+ (VAL_TYPE(val) == DB1_INT) && !VAL_NULL(val) &&
+ (VAL_INT(val) > 0) &&
+ (VAL_TYPE(val + 1) == DB1_STRING) && !VAL_NULL(val + 1) &&
+ inet_aton((char *)VAL_STRING(val + 1), &ip_addr) != 0 &&
+ (VAL_TYPE(val + 2) == DB1_INT) && !VAL_NULL(val + 2) &&
+ ((unsigned int)VAL_INT(val + 2) > 0) &&
+ ((unsigned int)VAL_INT(val + 2) <= 32) &&
+ (VAL_TYPE(val + 3) == DB1_INT) && !VAL_NULL(val + 3)) {
+ if ((unsigned int)VAL_INT(val + 2) == 32) {
+ if (addr_hash_table_insert(new_hash_table,
(unsigned int)VAL_INT(val),
(unsigned int)ip_addr.s_addr,
(unsigned int)VAL_INT(val + 3))
- == -1) {
- LM_ERR("hash table problem\n");
- perm_dbf.free_result(db_handle, res);
- return -1;
- }
- LM_DBG("Tuple <%u, %s, %u> inserted into address hash "
- "table\n", (unsigned int)VAL_INT(val),
- (char *)VAL_STRING(val + 1),
- (unsigned int)VAL_INT(val + 2));
- } else {
- if (subnet_table_insert(new_subnet_table,
- (unsigned int)VAL_INT(val),
- (unsigned int)ip_addr.s_addr,
- (unsigned int)VAL_INT(val + 2),
- (unsigned int)VAL_INT(val + 3))
- == -1) {
- LM_ERR("subnet table problem\n");
- perm_dbf.free_result(db_handle, res);
- return -1;
+ == -1) {
+ LM_ERR("hash table problem\n");
+ perm_dbf.free_result(db_handle, res);
+ return -1;
+ }
+ LM_DBG("Tuple <%u, %s, %u> inserted into address hash "
+ "table\n", (unsigned int)VAL_INT(val),
+ (char *)VAL_STRING(val + 1),
+ (unsigned int)VAL_INT(val + 2));
+ } else {
+ if (subnet_table_insert(new_subnet_table,
+ (unsigned int)VAL_INT(val),
+ (unsigned int)ip_addr.s_addr,
+ (unsigned int)VAL_INT(val + 2),
+ (unsigned int)VAL_INT(val + 3))
+ == -1) {
+ LM_ERR("subnet table problem\n");
+ perm_dbf.free_result(db_handle, res);
+ return -1;
+ }
+ LM_DBG("Tuple <%u, %s, %u, %u> inserted into subnet "
+ "table\n", (unsigned int)VAL_INT(val),
+ (char *)VAL_STRING(val + 1),
+ (unsigned int)VAL_INT(val + 2),
+ (unsigned int)VAL_INT(val + 3));
+ }
+ } else {
+ LM_ERR("database problem\n");
+ perm_dbf.free_result(db_handle, res);
+ return -1;
}
- LM_DBG("Tuple <%u, %s, %u, %u> inserted into subnet "
- "table\n", (unsigned int)VAL_INT(val),
- (char *)VAL_STRING(val + 1),
- (unsigned int)VAL_INT(val + 2),
- (unsigned int)VAL_INT(val + 3));
- }
- } else {
- LM_ERR("database problem\n");
- perm_dbf.free_result(db_handle, res);
- return -1;
- }
}
perm_dbf.free_result(db_handle, res);
@@ -176,19 +176,19 @@ int reload_address_table(void)
int init_addresses(void)
{
if (!db_url.s) {
- LM_INFO("db_url parameter of permissions module not set, "
- "disabling allow_address\n");
- return 0;
+ LM_INFO("db_url parameter of permissions module not set, "
+ "disabling allow_address\n");
+ return 0;
} else {
- if (db_bind_mod(&db_url, &perm_dbf) < 0) {
- LM_ERR("load a database support module\n");
- return -1;
- }
+ if (db_bind_mod(&db_url, &perm_dbf) < 0) {
+ LM_ERR("load a database support module\n");
+ return -1;
+ }
- if (!DB_CAPABILITY(perm_dbf, DB_CAP_QUERY)) {
- LM_ERR("database module does not implement 'query' function\n");
- return -1;
- }
+ if (!DB_CAPABILITY(perm_dbf, DB_CAP_QUERY)) {
+ LM_ERR("database module does not implement 'query' function\n");
+ return -1;
+ }
}
addr_hash_table_1 = addr_hash_table_2 = 0;
@@ -212,9 +212,11 @@ int init_addresses(void)
addr_hash_table_2 = new_addr_hash_table();
if (!addr_hash_table_2) goto error;
- addr_hash_table = (struct addr_list ***)shm_malloc
- (sizeof(struct addr_list **));
- if (!addr_hash_table) goto error;
+ addr_hash_table = (struct addr_list ***)shm_malloc(sizeof(struct addr_list **));
+ if (!addr_hash_table) {
+ LM_ERR("no more shared memory\n");
+ goto error;
+ }
*addr_hash_table = addr_hash_table_1;
@@ -230,8 +232,8 @@ int init_addresses(void)
*subnet_table = subnet_table_1;
if (reload_address_table() == -1) {
- LM_CRIT("reload of address table failed\n");
- goto error;
+ LM_CRIT("reload of address table failed\n");
+ goto error;
}
perm_dbf.close(db_handle);
@@ -240,30 +242,29 @@ int init_addresses(void)
return 0;
error:
- LM_ERR("no more shm memory\n");
if (addr_hash_table_1) {
- free_addr_hash_table(addr_hash_table_1);
- addr_hash_table_1 = 0;
+ free_addr_hash_table(addr_hash_table_1);
+ addr_hash_table_1 = 0;
}
if (addr_hash_table_2) {
- free_addr_hash_table(addr_hash_table_2);
- addr_hash_table_2 = 0;
+ free_addr_hash_table(addr_hash_table_2);
+ addr_hash_table_2 = 0;
}
if (addr_hash_table) {
- shm_free(addr_hash_table);
- addr_hash_table = 0;
+ shm_free(addr_hash_table);
+ addr_hash_table = 0;
}
if (subnet_table_1) {
- free_subnet_table(subnet_table_1);
- subnet_table_1 = 0;
+ free_subnet_table(subnet_table_1);
+ subnet_table_1 = 0;
}
if (subnet_table_2) {
- free_subnet_table(subnet_table_2);
- subnet_table_2 = 0;
+ free_subnet_table(subnet_table_2);
+ subnet_table_2 = 0;
}
- if (subnet_table) {
- shm_free(subnet_table);
- subnet_table = 0;
+ if (subnet_table) {
+ shm_free(subnet_table);
+ subnet_table = 0;
}
perm_dbf.close(db_handle);
db_handle = 0;