Przeglądaj źródła

permissions: fixed reload trusted rpc command

- reported by Emmanuel Schmidbauer, GH#138
Daniel-Constantin Mierla 10 lat temu
rodzic
commit
48663e4239

+ 1 - 5
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;
 	}

+ 21 - 0
modules/permissions/trusted.c

@@ -555,3 +555,24 @@ error:
     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;
+}

+ 2 - 0
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 */