Просмотр исходного кода

modules_k/rls: Fixed some DB handling stuff

- Removed the (unnecessary) rls_db2 connection
- Close the XCAP database connection in destroy()
pd 13 лет назад
Родитель
Сommit
f968ac71db
2 измененных файлов с 64 добавлено и 101 удалено
  1. 15 52
      modules_k/rls/rls.c
  2. 49 49
      modules_k/rls/rls_db.c

+ 15 - 52
modules_k/rls/rls.c

@@ -67,8 +67,6 @@ db1_con_t *rls_db = NULL;
 db_func_t rls_dbf;
 db1_con_t *rls_xcap_db = NULL;
 db_func_t rls_xcap_dbf;
-db1_con_t *rls2_db = NULL;
-db_func_t rls2_dbf;
 
 /** modules variables */
 str rls_server_address = {0, 0};
@@ -224,7 +222,7 @@ static param_export_t params[]={
 	{ "rls_event",              STR_PARAM|USE_FUNC_PARAM,(void*)add_rls_event},
 	{ "outbound_proxy",         STR_PARAM,   &rls_outbound_proxy.s           },
 	{ "reload_db_subs",         INT_PARAM,   &rls_reload_db_subs             },
-	{ "max_notify_body_length", INT_PARAM,	 &rls_max_notify_body_len	     },
+	{ "max_notify_body_length", INT_PARAM,	 &rls_max_notify_body_len	 },
 	{ "db_mode",                INT_PARAM,	 &dbmode                         },
 	{ "expires_offset",         INT_PARAM,	 &rls_expires_offset             },
 	{ "fetch_rows",             INT_PARAM,   &rls_fetch_rows                 },
@@ -400,15 +398,6 @@ static int mod_init(void)
 	
 	/* binding to mysql module  */
 
-	/* rls2_db handle is to ensure that there are no unwanted interactions
-	   between the original database reads and the DB_ONLY mode stuff */
-
-	if (db_bind_mod(&db_url, &rls2_dbf))
-	{
-		LM_ERR("Database module not found\n");
-		return -1;
-	}
-
 	if (db_bind_mod(&db_url, &rls_dbf))
 	{
 		LM_ERR("Database module not found\n");
@@ -492,7 +481,6 @@ static int mod_init(void)
 		rls_xcap_dbf.close(rls_xcap_db);
 	rls_xcap_db = NULL;
 
-
 	if(waitn_time<= 0)
 		waitn_time= 5;
 
@@ -511,7 +499,7 @@ static int mod_init(void)
 	XMLNodeGetAttrContentByName= libxml_api.xmlNodeGetAttrContentByName;
 	XMLDocGetNodeByName= libxml_api.xmlDocGetNodeByName;
 	XMLNodeGetNodeByName= libxml_api.xmlNodeGetNodeByName;
-    XMLNodeGetNodeContentByName= libxml_api.xmlNodeGetNodeContentByName;
+	XMLNodeGetNodeContentByName= libxml_api.xmlNodeGetNodeContentByName;
 
 	if(XMLNodeGetAttrContentByName== NULL || XMLDocGetNodeByName== NULL ||
 			XMLNodeGetNodeByName== NULL || XMLNodeGetNodeContentByName== NULL)
@@ -602,69 +590,45 @@ static int child_init(int rank)
 
 	LM_DBG("child [%d]  pid [%d]\n", rank, getpid());
 
-	if (rls2_dbf.init==0)
+	if (rls_dbf.init==0)
 	{
 		LM_CRIT("database not bound\n");
 		return -1;
 	}
-	rls2_db = rls2_dbf.init(&db_url);
-	if (!rls2_db)
+	rls_db = rls_dbf.init(&db_url);
+	if (!rls_db)
 	{
 		LM_ERR("child %d: Error while connecting database\n",
 				rank);
 		return -1;
 	}
-	if (rls2_dbf.use_table(rls2_db, &rlsubs_table) < 0)  
-	{
-		LM_ERR("child %d: Error in use_table rlsubs_table\n", rank);
-		return -1;
-	}
-
-	if (rls_xcap_dbf.init==0)
-	{
-		LM_CRIT("database not bound\n");
-		return -1;
-	}
-
-	rls_xcap_db = rls_xcap_dbf.init(&xcap_db_url);
-	if (!rls_xcap_db)
-	{
-		LM_ERR("child %d: Error while connecting database\n", rank);
-		return -1;
-	}
 	else
 	{
-		if (rls_xcap_dbf.use_table(rls_xcap_db, &rls_xcap_table) < 0)  
+		if (rls_dbf.use_table(rls_db, &rlsubs_table) < 0)  
 		{
-			LM_ERR("child %d: Error in use_table rls_xcap_table\n", rank);
+			LM_ERR("child %d: Error in use_table rlsubs_table\n", rank);
 			return -1;
 		}
 
 		LM_DBG("child %d: Database connection opened successfully\n", rank);
 	}
 
-	if (rls_dbf.init==0)
+	if (rls_xcap_dbf.init==0)
 	{
 		LM_CRIT("database not bound\n");
 		return -1;
 	}
-	rls_db = rls_dbf.init(&db_url);
-	if (!rls_db)
+	rls_xcap_db = rls_xcap_dbf.init(&xcap_db_url);
+	if (!rls_xcap_db)
 	{
-		LM_ERR("child %d: Error while connecting database\n",
-				rank);
+		LM_ERR("child %d: Error while connecting database\n", rank);
 		return -1;
 	}
 	else
 	{
-		if (rls_dbf.use_table(rls_db, &rlsubs_table) < 0)  
-		{
-			LM_ERR("child %d: Error in use_table rlsubs_table\n", rank);
-			return -1;
-		}
-		if (rls_dbf.use_table(rls_db, &rlpres_table) < 0)  
+		if (rls_xcap_dbf.use_table(rls_xcap_db, &rls_xcap_table) < 0)  
 		{
-			LM_ERR("child %d: Error in use_table rlpres_table\n", rank);
+			LM_ERR("child %d: Error in use_table rls_xcap_table\n", rank);
 			return -1;
 		}
 
@@ -690,9 +654,8 @@ static void destroy(void)
 	}
 	if(rls_db && rls_dbf.close)
 		rls_dbf.close(rls_db);
-
-	if(rls2_db && rls2_dbf.close)
-		rls2_dbf.close(rls2_db);
+	if(rls_xcap_db && rls_xcap_dbf.close)
+		rls_xcap_dbf.close(rls_xcap_db);
 
 	if (rls_update_subs_lock != NULL)
 	{

+ 49 - 49
modules_k/rls/rls_db.c

@@ -45,8 +45,8 @@
 	} while(0);
 
 /* database connection */
-extern db1_con_t *rls2_db;
-extern db_func_t rls2_dbf;
+extern db1_con_t *rls_db;
+extern db_func_t rls_dbf;
 
 extern void update_a_sub(subs_t *subs_copy );
 
@@ -123,13 +123,13 @@ int delete_expired_subs_rlsdb( void )
 
 	if (rlsdb_debug) LM_ERR( "delete_expired_subs_rlsdb\n" );
 
-	if(rls2_db == NULL)
+	if(rls_db == NULL)
 	{
 		LM_ERR("null database connection\n");
 		return(-1);
 	}
 
-	if(rls2_dbf.use_table(rls2_db, &rlsubs_table)< 0)
+	if(rls_dbf.use_table(rls_db, &rlsubs_table)< 0)
 	{
 		LM_ERR("use table failed\n");
 		return(-1);
@@ -141,7 +141,7 @@ int delete_expired_subs_rlsdb( void )
 	query_ops[expires_col]= OP_LT;
 	n_query_cols++;
 
-	rval=rls2_dbf.delete(rls2_db, query_cols, query_ops, query_vals, n_query_cols);
+	rval=rls_dbf.delete(rls_db, query_cols, query_ops, query_vals, n_query_cols);
 
 	if (rval < 0)
 	{
@@ -172,13 +172,13 @@ int delete_rlsdb( str *callid, str *to_tag, str *from_tag )
 		to_tag?to_tag->len:0, to_tag?to_tag->s:"",
 		from_tag?from_tag->len:0, from_tag?from_tag->s:"" ); 
 
-	if(rls2_db == NULL)
+	if(rls_db == NULL)
 	{
 		LM_ERR("null database connection\n");
 		return(-1);
 	}
 
-	if(rls2_dbf.use_table(rls2_db, &rlsubs_table)< 0)
+	if(rls_dbf.use_table(rls_db, &rlsubs_table)< 0)
 	{
 		LM_ERR("use table failed\n");
 		return(-1);
@@ -211,7 +211,7 @@ int delete_rlsdb( str *callid, str *to_tag, str *from_tag )
 		n_query_cols++;
 	}
 
-	rval = rls2_dbf.delete(rls2_db, query_cols, 0, query_vals, n_query_cols);
+	rval = rls_dbf.delete(rls_db, query_cols, 0, query_vals, n_query_cols);
 
 	if (rval < 0)
 	{
@@ -247,13 +247,13 @@ int update_rlsdb( subs_t *subs, int type)
 
 	if (subs==NULL) return(-1);
 
-	if(rls2_db == NULL)
+	if(rls_db == NULL)
 	{
 		LM_ERR("null database connection\n");
 		return(-1);
 	}
 
-	if(rls2_dbf.use_table(rls2_db, &rlsubs_table)< 0)
+	if(rls_dbf.use_table(rls_db, &rlsubs_table)< 0)
 	{
 		LM_ERR("use table failed\n");
 		return(-1);
@@ -301,11 +301,11 @@ int update_rlsdb( subs_t *subs, int type)
 		int nr_rows;
 
 	
-		if(rls2_dbf.query(rls2_db, query_cols, 0, query_vals, result_cols, 
+		if(rls_dbf.query(rls_db, query_cols, 0, query_vals, result_cols, 
 				n_query_cols, 1, 0, &result )< 0)
 		{
 			LM_ERR("Can't query db\n");
-			if(result) rls2_dbf.free_result(rls2_db, result);
+			if(result) rls_dbf.free_result(rls_db, result);
 			return(-1);
 		}
 
@@ -317,14 +317,14 @@ int update_rlsdb( subs_t *subs, int type)
 		{
 			/* no match */ 
 			LM_ERR( "update_rlsdb: NO MATCH\n" );
-			rls2_dbf.free_result(rls2_db, result);
+			rls_dbf.free_result(rls_db, result);
 			return(-1);
 		}
 
 		if (nr_rows != 1)
 		{
 			LM_ERR( "update_rlsdb: TOO MANY MATCHES=%d\n", nr_rows);
-			rls2_dbf.free_result(rls2_db, result);
+			rls_dbf.free_result(rls_db, result);
 			return(-1);
 		}
 
@@ -334,7 +334,7 @@ int update_rlsdb( subs_t *subs, int type)
 		values = ROW_VALUES(rows);
 
 		retrieved_local_cseq = VAL_INT(values);
-		rls2_dbf.free_result(rls2_db, result);
+		rls_dbf.free_result(rls_db, result);
 
 		subs->local_cseq = ++retrieved_local_cseq;
 		data_cols[local_cseq_col= n_data_cols]=&str_local_cseq_col;
@@ -379,7 +379,7 @@ int update_rlsdb( subs_t *subs, int type)
 	data_vals[db_flag_col].val.int_val= subs->db_flag;
 	n_data_cols++;*/
 
-	if(rls2_dbf.update(rls2_db, query_cols, 0, query_vals,
+	if(rls_dbf.update(rls_db, query_cols, 0, query_vals,
                     data_cols,data_vals,n_query_cols,n_data_cols) < 0)
 	{
 		LM_ERR("Failed update db\n");
@@ -423,13 +423,13 @@ int update_all_subs_rlsdb( str *from_user, str *from_domain, str *evt )
 		from_domain?from_domain->len:0, from_domain?from_domain->s:"",
 		evt?evt->len:0, evt?evt->s:"" );
 
-	if(rls2_db == NULL)
+	if(rls_db == NULL)
 	{
 		LM_ERR("null database connection\n");
 		return(-1);
 	}
 
-	if(rls2_dbf.use_table(rls2_db, &rlsubs_table)< 0)
+	if(rls_dbf.use_table(rls_db, &rlsubs_table)< 0)
 	{
 		LM_ERR("use table failed\n");
 		return(-1);
@@ -476,11 +476,11 @@ int update_all_subs_rlsdb( str *from_user, str *from_domain, str *evt )
 	result_cols[r_expires_col=n_result_cols++] = &str_expires_col;
 
 
-	if(rls2_dbf.query(rls2_db, query_cols, 0, query_vals, result_cols, 
+	if(rls_dbf.query(rls_db, query_cols, 0, query_vals, result_cols, 
 				n_query_cols, n_result_cols, 0, &result )< 0)
 	{
 		LM_ERR("Can't query db\n");
-		if(result) rls2_dbf.free_result(rls2_db, result);
+		if(result) rls_dbf.free_result(rls_db, result);
 		return(-1);
 	}
 
@@ -516,7 +516,7 @@ int update_all_subs_rlsdb( str *from_user, str *from_domain, str *evt )
 		{
 			LM_ERR( "Can't allocate memory\n" );
 			/* tidy up and return >>>>>>>>>>>>>>>>>>>> */
-			rls2_dbf.free_result(rls2_db, result);
+			rls_dbf.free_result(rls_db, result);
 			return(-1);
 		}
 		memset(dest, 0, size);
@@ -564,7 +564,7 @@ int update_all_subs_rlsdb( str *from_user, str *from_domain, str *evt )
 		update_a_sub(dest);
 	}
 
-	rls2_dbf.free_result(rls2_db, result);
+	rls_dbf.free_result(rls_db, result);
 	if (rlsdb_debug) LM_ERR( "Done\n" );
 	return(1);	
 }
@@ -593,13 +593,13 @@ int update_subs_rlsdb( subs_t *subs )
 
 	if (subs==NULL) return(-1);
 
-	if(rls2_db == NULL)
+	if(rls_db == NULL)
 	{
 		LM_ERR("null database connection\n");
 		return(-1);
 	}
 
-	if(rls2_dbf.use_table(rls2_db, &rlsubs_table)< 0)
+	if(rls_dbf.use_table(rls_db, &rlsubs_table)< 0)
 	{
 		LM_ERR("use table failed\n");
 		return(-1);
@@ -629,11 +629,11 @@ int update_subs_rlsdb( subs_t *subs )
 	result_cols[n_result_cols++] = &str_presentity_uri_col;
 	result_cols[n_result_cols++] = &str_record_route_col;
 
-	if(rls2_dbf.query(rls2_db, query_cols, 0, query_vals, result_cols, 
+	if(rls_dbf.query(rls_db, query_cols, 0, query_vals, result_cols, 
 				n_query_cols, n_result_cols, 0, &result )< 0)
 	{
 		LM_ERR("Can't query db\n");
-		if(result) rls2_dbf.free_result(rls2_db, result);
+		if(result) rls_dbf.free_result(rls_db, result);
 		return(-1);
 	}
 
@@ -645,14 +645,14 @@ int update_subs_rlsdb( subs_t *subs )
 	{
 		/* no match */ 
 		LM_ERR( "update_subs_rlsdb: NO MATCH\n" );
-		rls2_dbf.free_result(rls2_db, result);
+		rls_dbf.free_result(rls_db, result);
 		return(-1);
 	}
 
 	if (nr_rows != 1)
 	{
 		LM_ERR( "update_subs_rlsdb: TOO MANY MATCHES=%d\n", nr_rows);
-		rls2_dbf.free_result(rls2_db, result);
+		rls_dbf.free_result(rls_db, result);
 		return(-1);
 	}
 
@@ -675,7 +675,7 @@ int update_subs_rlsdb( subs_t *subs )
 	if ( r_remote_cseq >= subs->remote_cseq)
 	{
 		LM_DBG("stored cseq= %d\n", r_remote_cseq);
-		rls2_dbf.free_result(rls2_db, result);
+		rls_dbf.free_result(rls_db, result);
 		return(401); /*stale cseq code */
 	}
 
@@ -689,7 +689,7 @@ int update_subs_rlsdb( subs_t *subs )
 	if(subs->pres_uri.s== NULL)
 	{
 		LM_ERR( "Out of Memory\n" );
-		rls2_dbf.free_result(rls2_db, result);
+		rls_dbf.free_result(rls_db, result);
 		return(-1);
 	}
 
@@ -704,7 +704,7 @@ int update_subs_rlsdb( subs_t *subs )
 		{
 			LM_ERR( "Out of Memory\n" );
  			pkg_free(subs->pres_uri.s);
-			rls2_dbf.free_result(rls2_db, result);
+			rls_dbf.free_result(rls_db, result);
 			return(-1);
 		}
 		memcpy(subs->record_route.s, 
@@ -715,7 +715,7 @@ int update_subs_rlsdb( subs_t *subs )
 	subs->local_cseq= r_local_cseq;
 	subs->version= r_version;
 
-	rls2_dbf.free_result(rls2_db, result);
+	rls_dbf.free_result(rls_db, result);
 
 
 	/*if(s->db_flag & NO_UPDATEDB_FLAG)
@@ -727,7 +727,7 @@ int update_subs_rlsdb( subs_t *subs )
 	data_vals[db_flag_col].val.int_val= s->db_flag;
 	n_data_cols++;*/
 
-	if(rls2_dbf.update(rls2_db, query_cols, 0, query_vals,
+	if(rls_dbf.update(rls_db, query_cols, 0, query_vals,
                     data_cols,data_vals,n_query_cols,n_data_cols) < 0)
 	{
 		LM_ERR("Failed update db\n");
@@ -759,13 +759,13 @@ int insert_rlsdb( subs_t *s )
 
 	if (s==NULL) return(-1);
 
-	if(rls2_db == NULL)
+	if(rls_db == NULL)
 	{
 		LM_ERR("null database connection\n");
 		return(-1);
 	}
 
-	if(rls2_dbf.use_table(rls2_db, &rlsubs_table)< 0)
+	if(rls_dbf.use_table(rls_db, &rlsubs_table)< 0)
 	{
 		LM_ERR("use table failed\n");
 		return(-1);
@@ -903,7 +903,7 @@ int insert_rlsdb( subs_t *s )
 	data_vals[db_flag_col].val.int_val= s->db_flag;
 	n_data_cols++;*/
 
-	if(rls2_dbf.insert(rls2_db, data_cols, data_vals, n_data_cols) < 0)
+	if(rls_dbf.insert(rls_db, data_cols, data_vals, n_data_cols) < 0)
 	{
 		LM_ERR("db insert failed\n");
 		return(-1);
@@ -932,13 +932,13 @@ int matches_in_rlsdb( str callid, str to_tag, str from_tag )
 		to_tag.len, to_tag.s,
 		from_tag.len, from_tag.s );
 
-	if(rls2_db == NULL)
+	if(rls_db == NULL)
 	{
 		LM_ERR("null database connection\n");
 		return(-1);
 	}
 
-	if(rls2_dbf.use_table(rls2_db, &rlsubs_table)< 0)
+	if(rls_dbf.use_table(rls_db, &rlsubs_table)< 0)
 	{
 		LM_ERR("use table failed\n");
 		return(-1);
@@ -964,18 +964,18 @@ int matches_in_rlsdb( str callid, str to_tag, str from_tag )
 	
 	result_cols[0]= &str_callid_col; /* should use id column instead here */
 	
-	if(rls2_dbf.query(rls2_db, query_cols, 0, query_vals, result_cols, 
+	if(rls_dbf.query(rls_db, query_cols, 0, query_vals, result_cols, 
 			n_query_cols, 1, 0, &result )< 0)
 	{
 		LM_ERR("Can't query db\n");
-		if(result) rls2_dbf.free_result(rls2_db, result);
+		if(result) rls_dbf.free_result(rls_db, result);
 		return(-1);
 	}
 
 	if(result == NULL) return(-1);
 
 	rval = result->n;
-	rls2_dbf.free_result(rls2_db, result);
+	rls_dbf.free_result(rls_db, result);
 	if (rlsdb_debug) LM_ERR( "Done matches=%d\n", rval );
 	return(rval);
 }
@@ -1012,13 +1012,13 @@ subs_t *get_dialog_rlsdb( str callid, str to_tag, str from_tag )
 		to_tag.len, to_tag.s,
 		from_tag.len, from_tag.s );
 
-	if(rls2_db == NULL)
+	if(rls_db == NULL)
 	{
 		LM_ERR("null database connection\n");
 		return(NULL);
 	}
 
-	if(rls2_dbf.use_table(rls2_db, &rlsubs_table)< 0)
+	if(rls_dbf.use_table(rls_db, &rlsubs_table)< 0)
 	{
 		LM_ERR("use table failed\n");
 		return(NULL);
@@ -1065,11 +1065,11 @@ subs_t *get_dialog_rlsdb( str callid, str to_tag, str from_tag )
 	result_cols[r_expires_col=n_result_cols++] = &str_expires_col;
 
 
-	if(rls2_dbf.query(rls2_db, query_cols, 0, query_vals, result_cols, 
+	if(rls_dbf.query(rls_db, query_cols, 0, query_vals, result_cols, 
 				n_query_cols, n_result_cols, 0, &result )< 0)
 	{
 		LM_ERR("Can't query db\n");
-		if(result) rls2_dbf.free_result(rls2_db, result);
+		if(result) rls_dbf.free_result(rls_db, result);
 		return(NULL);
 	}
 
@@ -1081,14 +1081,14 @@ subs_t *get_dialog_rlsdb( str callid, str to_tag, str from_tag )
 	{
 		/* no match */ 
 		LM_INFO( "get_dialog_rlsdb No matching records\n" );
-		rls2_dbf.free_result(rls2_db, result);
+		rls_dbf.free_result(rls_db, result);
 		return(NULL);
 	}
 
 	if (nr_rows != 1)
 	{
 		LM_ERR( "get_dialog_rlsdb multiple matching records\n" );
-		rls2_dbf.free_result(rls2_db, result);
+		rls_dbf.free_result(rls_db, result);
 		return(NULL);
 	}
 
@@ -1120,7 +1120,7 @@ subs_t *get_dialog_rlsdb( str callid, str to_tag, str from_tag )
 		{
 			LM_ERR( "Can't allocate memory\n" );
 			/* tidy up and return >>>>>>>>>>>>>>>>>>>> */
-			rls2_dbf.free_result(rls2_db, result);
+			rls_dbf.free_result(rls_db, result);
 			return(NULL);
 		}
 		memset(dest, 0, size);
@@ -1166,7 +1166,7 @@ subs_t *get_dialog_rlsdb( str callid, str to_tag, str from_tag )
 		/*dest->db_flag= VAL_INT(values+r_db_flag_col);*/
 	}
 
-	rls2_dbf.free_result(rls2_db, result);
+	rls_dbf.free_result(rls_db, result);
 
 	if (rlsdb_debug) LM_ERR( "Done\n" );
 	return(dest);