Explorar el Código

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 hace 14 años
padre
commit
d2ca9a17ad
Se han modificado 4 ficheros con 35 adiciones y 22 borrados
  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].nul = 0;
 	db_vals[n_query_cols].val.int_val= (int)time(NULL);
 	db_vals[n_query_cols].val.int_val= (int)time(NULL);
 	n_query_cols++;
 	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)
 	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;
 		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) 
 	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);
 	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;
 	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  */
 	/* binding to database module  */
 	if (db_bind_mod(&db_url, &pua_dbf))
 	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_key_t db_cols[5];
 	db_val_t q_vals[20], db_vals[5];
 	db_val_t q_vals[20], db_vals[5];
 	db_op_t  db_ops[1] ;
 	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 n_update_cols= 0;
 	int i;
 	int i;
 	int puri_col,pid_col,expires_col,flag_col,etag_col,tuple_col,event_col;
 	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)
 					if(p->extra_headers)
-					{
-						n_actual_query_cols = n_query_cols;
 						q_vals[extra_headers_col].val.str_val = *(p->extra_headers);
 						q_vals[extra_headers_col].val.str_val = *(p->extra_headers);
-					}
 					else
 					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");
 						LM_ERR("while inserting in db table pua\n");
 						if(!no_lock)
 						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;
     db_vals[n_cols].val.str_val.len = pres->extra_headers->len;
     n_cols++;
     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)
   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; 
 	query_vals[n_query_cols].val.int_val= auth_flag; 
 	n_query_cols++;
 	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)
 	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;
 		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_cols[n_query_cols]= &str_content_type_col;
 	query_vals[n_query_cols].type = DB1_STR;
 	query_vals[n_query_cols].type = DB1_STR;
 	query_vals[n_query_cols].nul = 0;
 	query_vals[n_query_cols].nul = 0;