[sr-dev] presence pua crash when using db_cluster
Daniel-Constantin Mierla
miconda at gmail.com
Thu Sep 27 18:12:07 CEST 2012
I am not that familiar with 'diff -c' format, but I guess it is ok.
Ultimately can be reverted.
Many modules were updated to use use_table() before db ops along the
time, but there might still be some that have to be updated. Perhaps is
good to check the sources when using a module with db cluster.
Not sure everyone knows, but if you work on a source tree taken from
git, then you can do:
git diff >/path/to/save/the/patch
an you get the diff in unified format (git friendly).
If wanted, you can reset all the changes that were not committed with:
git reset --hard HEAD
Cheers,
Daniel
On 9/27/12 5:58 PM, Juha Heinanen wrote:
> i applied the patch below to pua module and the crash disappeared. can
> i commit it to master? i wonder if there are other places where
> use_table should be added in some other modules.
>
> -- juha
>
> diff -c /usr/src/orig/sip-router/modules_k/pua/pua.c ./pua.c
> *** /usr/src/orig/sip-router/modules_k/pua/pua.c 2012-09-16 17:24:34.515266527 +0300
> --- ./pua.c 2012-09-27 18:39:24.938581317 +0300
> ***************
> *** 63,69 ****
> int min_expires= 0;
> int default_expires=3600;
> static str db_url = str_init(DEFAULT_DB_URL);
> ! static str db_table= str_init("pua");
> int update_period= 100;
> str outbound_proxy = {0, 0};
> int check_remote_contact = 1;
> --- 63,69 ----
> int min_expires= 0;
> int default_expires=3600;
> static str db_url = str_init(DEFAULT_DB_URL);
> ! str db_table= str_init("pua");
> int update_period= 100;
> str outbound_proxy = {0, 0};
> int check_remote_contact = 1;
> diff -c /usr/src/orig/sip-router/modules_k/pua/pua_db.c ./pua_db.c
> *** /usr/src/orig/sip-router/modules_k/pua/pua_db.c 2012-09-16 17:34:22.367646853 +0300
> --- ./pua_db.c 2012-09-27 18:50:47.275474397 +0300
> ***************
> *** 168,173 ****
> --- 168,178 ----
> q_vals[0].val.int_val = now+update_period;
> q_ops[0] = OP_LT;
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0) {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
> +
> if(db_fetch_query(&pua_dbf, pua_fetch_rows, pua_db, q_cols, q_ops,
> q_vals, NULL, 1, 0, 0, &res) < 0)
> {
> ***************
> *** 279,284 ****
> --- 284,294 ----
> return(-1);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
>
> if(pua_dbf.query(pua_db, q_cols, 0, q_vals,
> res_cols,n_query_cols,n_res_cols,0,&res) < 0)
> ***************
> *** 367,372 ****
> --- 377,388 ----
> return(-1);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
> +
> if(pua_dbf.query(pua_db, q_cols, 0, q_vals,
> res_cols,n_query_cols,n_res_cols,0,&res) < 0)
> {
> ***************
> *** 614,620 ****
> query_vals[n_query_cols].val.str_val.len = 0;
> n_query_cols++;
>
> !
>
> if (pua_dbf.replace != NULL)
> {
> --- 630,640 ----
> query_vals[n_query_cols].val.str_val.len = 0;
> n_query_cols++;
>
> ! if (pua_dbf.use_table(pua_db, &db_table) < 0)
> ! {
> ! LM_ERR("error in use_table pua\n");
> ! return(-1);
> ! }
>
> if (pua_dbf.replace != NULL)
> {
> ***************
> *** 843,848 ****
> --- 863,874 ----
> return(NULL);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(NULL);
> + }
> +
> if(query_fn(pua_db, q_cols, 0, q_vals,
> NULL,n_query_cols,0,0,&res) < 0)
> {
> ***************
> *** 919,924 ****
> --- 945,956 ----
> return(-1);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
> +
> if (pua_dbf.delete(pua_db, q_cols, 0, q_vals, n_query_cols) < 0)
> {
> LM_ERR("deleting record\n");
> ***************
> *** 985,990 ****
> --- 1017,1028 ----
> return(-1);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
> +
> if (pua_dbf.update(pua_db, q_cols, 0, q_vals, u_cols, u_vals,
> n_query_cols, n_update_cols) < 0)
> {
> ***************
> *** 1192,1197 ****
> --- 1230,1241 ----
> return(NULL);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(NULL);
> + }
> +
> if(query_fn(pua_db, q_cols, 0, q_vals,
> NULL,n_query_cols,0,0,&res) < 0)
> {
> ***************
> *** 1278,1283 ****
> --- 1322,1333 ----
> return(-1);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
> +
> if (pua_dbf.delete(pua_db, q_cols, 0, q_vals, n_query_cols) < 0)
> {
> LM_ERR("deleting record\n");
> ***************
> *** 1350,1355 ****
> --- 1400,1411 ----
> return(-1);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
> +
> if (pua_dbf.update(pua_db, q_cols, 0, q_vals, u_cols, u_vals,
> n_query_cols, n_update_cols) < 0)
> {
> ***************
> *** 1409,1414 ****
> --- 1465,1476 ----
> return(-1);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
> +
> if(pua_dbf.update(pua_db, q_cols, 0, q_vals,
> db_cols,db_vals,n_query_cols,n_update_cols) < 0)
> {
> ***************
> *** 1467,1472 ****
> --- 1529,1540 ----
> return(-1);
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(-1);
> + }
> +
> if(pua_dbf.update(pua_db, q_cols, 0, q_vals,
> db_cols,db_vals,n_query_cols,n_update_cols) < 0)
>
> ***************
> *** 1505,1510 ****
> --- 1573,1584 ----
> return list;
> }
>
> + if (pua_dbf.use_table(pua_db, &db_table) < 0)
> + {
> + LM_ERR("error in use_table pua\n");
> + return(list);
> + }
> +
> if(db_fetch_query(&pua_dbf, pua_fetch_rows, pua_db, q_cols, 0,
> q_vals, res_cols, n_query_cols, n_res_cols, 0, &res) < 0)
> {
> diff -c /usr/src/orig/sip-router/modules_k/pua/pua.h ./pua.h
> *** /usr/src/orig/sip-router/modules_k/pua/pua.h 2012-09-02 15:14:34.426055998 +0300
> --- ./pua.h 2012-09-27 18:48:22.298428856 +0300
> ***************
> *** 59,63 ****
> --- 59,64 ----
> extern db1_con_t *pua_db;
> extern int pua_fetch_rows;
>
> + extern str db_table;
>
> #endif
--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Berlin, Nov 5-8, 2012 - http://asipto.com/u/kat
Kamailio Advanced Training, Miami, USA, Nov 12-14, 2012 - http://asipto.com/u/katu
More information about the sr-dev
mailing list