Module: sip-router Branch: master Commit: 0a1b1890dbeea316e55ccef66f96d17e29843d76 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=0a1b1890...
Author: Jason Penton jason.penton@gmail.com Committer: Jason Penton jason.penton@gmail.com Date: Thu Mar 13 10:47:55 2014 +0200
modules/ims_usrloc_pcscf: preload of pcscf contacts was omitting rx_port and proto
---
modules/ims_usrloc_pcscf/udomain.c | 46 +++++++++++++++++++---------------- modules/ims_usrloc_pcscf/ul_mod.c | 1 - 2 files changed, 25 insertions(+), 22 deletions(-)
diff --git a/modules/ims_usrloc_pcscf/udomain.c b/modules/ims_usrloc_pcscf/udomain.c index 31a051b..d453c38 100644 --- a/modules/ims_usrloc_pcscf/udomain.c +++ b/modules/ims_usrloc_pcscf/udomain.c @@ -660,7 +660,7 @@ int delete_pcontact(udomain_t* _d, str* _aor, struct pcontact* _c) * \brief Convert database values into pcontact_info * * Convert database values into pcontact_info, - * expects 10 rows (aor, contact, received, rx_session_id_col + * expects 12 rows (aor, contact, received, received_port, received_proto, rx_session_id_col * reg_state, expires, socket, service_routes_col, public_ids, path * \param vals database values * \param contact contact @@ -684,9 +684,11 @@ static inline pcontact_info_t* dbrow2info( db_val_t *vals, str *contact) received.len = strlen(received.s); } ci.received_host = received; + ci.received_port = VAL_INT(vals + 3); + ci.received_proto = VAL_INT(vals + 4);
- rx_session_id.s = (char*) VAL_STRING(vals + 3); - if (VAL_NULL(vals+3) || !rx_session_id.s || !rx_session_id.s[0]) { + rx_session_id.s = (char*) VAL_STRING(vals + 5); + if (VAL_NULL(vals+5) || !rx_session_id.s || !rx_session_id.s[0]) { rx_session_id.len = 0; rx_session_id.s = 0; LM_DBG("2\n"); @@ -694,18 +696,18 @@ static inline pcontact_info_t* dbrow2info( db_val_t *vals, str *contact) rx_session_id.len = strlen(rx_session_id.s); } ci.rx_regsession_id = &rx_session_id; - if (VAL_NULL(vals + 4)) { + if (VAL_NULL(vals + 6)) { LM_CRIT("empty registration state in DB\n"); return 0; } - ci.reg_state = VAL_INT(vals + 4); - if (VAL_NULL(vals + 5)) { + ci.reg_state = VAL_INT(vals + 6); + if (VAL_NULL(vals + 7)) { LM_CRIT("empty expire\n"); return 0; } - ci.expires = VAL_TIME(vals + 5); - path.s = (char*)VAL_STRING(vals+9); - if (VAL_NULL(vals+9) || !path.s || !path.s[0]) { + ci.expires = VAL_TIME(vals + 7); + path.s = (char*)VAL_STRING(vals+11); + if (VAL_NULL(vals+11) || !path.s || !path.s[0]) { path.len = 0; path.s = 0; } else { @@ -714,7 +716,7 @@ static inline pcontact_info_t* dbrow2info( db_val_t *vals, str *contact) ci.path = &path;
//public IDs - implicit set - implicit_impus.s = (char*) VAL_STRING(vals + 8); + implicit_impus.s = (char*) VAL_STRING(vals + 10); if (!VAL_NULL(vals + 8) && implicit_impus.s && implicit_impus.s[0]) { //how many n=0; @@ -749,8 +751,8 @@ static inline pcontact_info_t* dbrow2info( db_val_t *vals, str *contact) }
//service routes - service_routes.s = (char*) VAL_STRING(vals + 7); - if (!VAL_NULL(vals + 7) && service_routes.s && service_routes.s[0]) { + service_routes.s = (char*) VAL_STRING(vals + 9); + if (!VAL_NULL(vals + 9) && service_routes.s && service_routes.s[0]) { //how many n = 0; p = service_routes.s; @@ -812,13 +814,15 @@ int preload_udomain(db1_con_t* _c, udomain_t* _d) columns[1] = &aor_col; columns[2] = &contact_col; columns[3] = &received_col; - columns[4] = &rx_session_id_col; - columns[5] = ®_state_col; - columns[6] = &expires_col; - columns[7] = &socket_col; - columns[8] = &service_routes_col; - columns[9] = &public_ids_col; - columns[10] = &path_col; + columns[4] = &received_port_col; + columns[5] = &received_proto_col; + columns[6] = &rx_session_id_col; + columns[7] = ®_state_col; + columns[8] = &expires_col; + columns[9] = &socket_col; + columns[10] = &service_routes_col; + columns[11] = &public_ids_col; + columns[12] = &path_col;
if (ul_dbf.use_table(_c, _d->name) < 0) { LM_ERR("sql use_table failed\n"); @@ -830,7 +834,7 @@ int preload_udomain(db1_con_t* _c, udomain_t* _d) #endif
if (DB_CAPABILITY(ul_dbf, DB_CAP_FETCH)) { - if (ul_dbf.query(_c, 0, 0, 0, columns, 0, 11, 0, 0) < 0) { + if (ul_dbf.query(_c, 0, 0, 0, columns, 0, 13, 0, 0) < 0) { LM_ERR("db_query (1) failed\n"); return -1; } @@ -839,7 +843,7 @@ int preload_udomain(db1_con_t* _c, udomain_t* _d) return -1; } } else { - if (ul_dbf.query(_c, 0, 0, 0, columns, 0, 11, 0, &res) < 0) { + if (ul_dbf.query(_c, 0, 0, 0, columns, 0, 13, 0, &res) < 0) { LM_ERR("db_query failed\n"); return -1; } diff --git a/modules/ims_usrloc_pcscf/ul_mod.c b/modules/ims_usrloc_pcscf/ul_mod.c index 989e512..998d4bc 100644 --- a/modules/ims_usrloc_pcscf/ul_mod.c +++ b/modules/ims_usrloc_pcscf/ul_mod.c @@ -173,7 +173,6 @@ static int mod_init(void) { return -1; }
- db_url.len = strlen(db_url.s);
/* Regsiter RPC */