فهرست منبع

modules_k/presence, modules_k/pua, modules_k/rls: Fixed issues discovered while testing with PostgreSQL 9.0

- Some of the fields in the DB have not null constraints that result
  in errors when using PostgreSQL but not MySQL.
pd 14 سال پیش
والد
کامیت
d2ca9a17ad
4فایلهای تغییر یافته به همراه35 افزوده شده و 22 حذف شده
  1. 10 7
      modules_k/presence/subscribe.c
  2. 7 10
      modules_k/pua/pua.c
  3. 9 0
      modules_k/pua/pua_db.c
  4. 9 5
      modules_k/rls/resource_notify.c

+ 10 - 7
modules_k/presence/subscribe.c

@@ -2211,15 +2211,18 @@ int insert_db_subs_auth(subs_t* subs)
 	db_vals[n_query_cols].nul = 0;
 	db_vals[n_query_cols].val.int_val= (int)time(NULL);
 	n_query_cols++;
-	
+
+	db_keys[n_query_cols] =&str_reason_col;
+	db_vals[n_query_cols].type = DB1_STR;
+	db_vals[n_query_cols].nul = 0;
 	if(subs->reason.s && subs->reason.len)
-	{
-		db_keys[n_query_cols] =&str_reason_col;
-		db_vals[n_query_cols].type = DB1_STR;
-		db_vals[n_query_cols].nul = 0;
 		db_vals[n_query_cols].val.str_val = subs->reason;
-		n_query_cols++;	
-	}	
+	else
+	{
+		db_vals[n_query_cols].val.str_val.s = ""; 
+		db_vals[n_query_cols].val.str_val.len = 0; 
+	}
+	n_query_cols++;	
 	
 	if (pa_dbf.use_table(pa_db, &watchers_table) < 0) 
 	{

+ 7 - 10
modules_k/pua/pua.c

@@ -171,9 +171,6 @@ static int mod_init(void)
 	LM_DBG("db_url=%s/%d/%p\n", ZSW(db_url.s), db_url.len, db_url.s);
 	db_table.len = db_table.s ? strlen(db_table.s) : 0;
 	
-	if (dbmode==PUA_DB_ONLY) 
-		LM_ERR( "DB ONLY MODE ACTIVE\n" );
-
 	/* binding to database module  */
 	if (db_bind_mod(&db_url, &pua_dbf))
 	{
@@ -780,7 +777,7 @@ static void db_update(unsigned int ticks,void *param)
 	db_key_t db_cols[5];
 	db_val_t q_vals[20], db_vals[5];
 	db_op_t  db_ops[1] ;
-	int n_query_cols= 0, n_query_update= 0, n_actual_query_cols= 0;
+	int n_query_cols= 0, n_query_update= 0;
 	int n_update_cols= 0;
 	int i;
 	int puri_col,pid_col,expires_col,flag_col,etag_col,tuple_col,event_col;
@@ -1101,14 +1098,14 @@ static void db_update(unsigned int ticks,void *param)
 					}
 
 					if(p->extra_headers)
-					{
-						n_actual_query_cols = n_query_cols;
 						q_vals[extra_headers_col].val.str_val = *(p->extra_headers);
-					}
 					else
-						n_actual_query_cols = n_query_cols - 1;
-						
-					if(pua_dbf.insert(pua_db, q_cols, q_vals,n_actual_query_cols )<0)
+					{
+						q_vals[extra_headers_col].val.str_val.s = "";
+						q_vals[extra_headers_col].val.str_val.len = 0;
+					}
+					
+					if(pua_dbf.insert(pua_db, q_cols, q_vals,n_query_cols )<0)
 					{
 						LM_ERR("while inserting in db table pua\n");
 						if(!no_lock)

+ 9 - 0
modules_k/pua/pua_db.c

@@ -1634,6 +1634,15 @@ void insert_puadb(ua_pres_t* pres)
     db_vals[n_cols].val.str_val.len = pres->extra_headers->len;
     n_cols++;
   }
+  else
+  {
+    db_cols[n_cols] = &str_extra_headers_col;
+    db_vals[n_cols].type = DB1_STR;
+    db_vals[n_cols].nul = 0; 
+    db_vals[n_cols].val.str_val.s = "";
+    db_vals[n_cols].val.str_val.len = 0;
+    n_cols++;
+  }
 
 
   if(pua_db == NULL)

+ 9 - 5
modules_k/rls/resource_notify.c

@@ -730,14 +730,18 @@ int rls_handle_notify(struct sip_msg* msg, char* c1, char* c2)
 	query_vals[n_query_cols].val.int_val= auth_flag; 
 	n_query_cols++;
 
+	query_cols[n_query_cols]= &str_reason_col;
+	query_vals[n_query_cols].type = DB1_STR;
+	query_vals[n_query_cols].nul = 0;
 	if(reason)
-	{
-		query_cols[n_query_cols]= &str_reason_col;
-		query_vals[n_query_cols].type = DB1_STR;
-		query_vals[n_query_cols].nul = 0;
 		query_vals[n_query_cols].val.str_val= *reason;
-		n_query_cols++;
+	else
+	{
+		query_vals[n_query_cols].val.str_val.s = "";
+		query_vals[n_query_cols].val.str_val.len = 0;
 	}
+	n_query_cols++;
+
 	query_cols[n_query_cols]= &str_content_type_col;
 	query_vals[n_query_cols].type = DB1_STR;
 	query_vals[n_query_cols].nul = 0;