[sr-dev] git:master:48663e42: permissions: fixed reload trusted rpc command

Daniel-Constantin Mierla miconda at gmail.com
Thu Apr 23 16:37:07 CEST 2015


Module: kamailio
Branch: master
Commit: 48663e4239f819b42e7035d9f4023c161eb71d05
URL: https://github.com/kamailio/kamailio/commit/48663e4239f819b42e7035d9f4023c161eb71d05

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2015-04-23T16:34:35+02:00

permissions: fixed reload trusted rpc command

- reported by Emmanuel Schmidbauer, GH#138

---

Modified: modules/permissions/mi.c
Modified: modules/permissions/trusted.c
Modified: modules/permissions/trusted.h

---

Diff:  https://github.com/kamailio/kamailio/commit/48663e4239f819b42e7035d9f4023c161eb71d05.diff
Patch: https://github.com/kamailio/kamailio/commit/48663e4239f819b42e7035d9f4023c161eb71d05.patch

---

diff --git a/modules/permissions/mi.c b/modules/permissions/mi.c
index 9f66683..35f2cca 100644
--- a/modules/permissions/mi.c
+++ b/modules/permissions/mi.c
@@ -54,11 +54,7 @@ struct mi_root* mi_trusted_reload(struct mi_root *cmd_tree, void *param)
  * RPC function to reload trusted table
  */
 void rpc_trusted_reload(rpc_t* rpc, void* c) {
-	if (hash_table==NULL) {
-		rpc->fault(c, 500, "Reload failed. No hash table");
-		return;
-	}
-	if (reload_trusted_table () != 1) {
+	if (reload_trusted_table_cmd () != 1) {
 		rpc->fault(c, 500, "Reload failed.");
 		return;
 	}
diff --git a/modules/permissions/trusted.c b/modules/permissions/trusted.c
index 920f307..db20e8f 100644
--- a/modules/permissions/trusted.c
+++ b/modules/permissions/trusted.c
@@ -555,3 +555,24 @@ int allow_trusted_2(struct sip_msg* _msg, char* _src_ip_sp, char* _proto_sp)
     return -1;
 }
 
+
+int reload_trusted_table_cmd(void)
+{
+	if (!db_handle) {
+		db_handle = perm_dbf.init(&db_url);
+		if (!db_handle) {
+			LM_ERR("unable to connect database\n");
+			return -1;
+		}
+	}
+	if (reload_trusted_table () != 1) {
+		perm_dbf.close(db_handle);
+		db_handle = 0;
+		return -1;
+	}
+
+	perm_dbf.close(db_handle);
+	db_handle = 0;
+
+	return 1;
+}
diff --git a/modules/permissions/trusted.h b/modules/permissions/trusted.h
index cbb3655..f487f6a 100644
--- a/modules/permissions/trusted.h
+++ b/modules/permissions/trusted.h
@@ -84,4 +84,6 @@ int allow_trusted_0(struct sip_msg* _msg, char* str1, char* str2);
 int allow_trusted_2(struct sip_msg* _msg, char* _src_ip_sp, char* _proto_sp);
 
 
+int reload_trusted_table_cmd(void);
+
 #endif /* TRUSTED_H */




More information about the sr-dev mailing list