From c269854b4f908fe8fb03590cb1dc217d4d518db4 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Wed, 1 Dec 2010 08:53:52 +0000 Subject: Misc (re #1151): fixed pjsua_acc_config_dup(), some fields, i.e: contact_params, contact_uri_params, and auth_pref, were not duplicated properly (thanks Roman Grachev for the report and the patch). git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3377 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/include/pjsip/sip_auth.h | 12 ++++++++++++ pjsip/src/pjsip/sip_auth_client.c | 8 ++++++++ pjsip/src/pjsua-lib/pjsua_acc.c | 8 +++++++- 3 files changed, 27 insertions(+), 1 deletion(-) (limited to 'pjsip') diff --git a/pjsip/include/pjsip/sip_auth.h b/pjsip/include/pjsip/sip_auth.h index eb835d27..c24f6ff0 100644 --- a/pjsip/include/pjsip/sip_auth.h +++ b/pjsip/include/pjsip/sip_auth.h @@ -205,6 +205,18 @@ typedef struct pjsip_auth_clt_pref } pjsip_auth_clt_pref; +/** + * Duplicate a client authentication preference setting. + * + * @param pool The memory pool. + * @param dst Destination client authentication preference. + * @param src Source client authentication preference. + */ +PJ_DECL(void) pjsip_auth_clt_pref_dup(pj_pool_t *pool, + pjsip_auth_clt_pref *dst, + const pjsip_auth_clt_pref *src); + + /** * This structure describes client authentication sessions. It keeps * all the information needed to authorize the client against all downstream diff --git a/pjsip/src/pjsip/sip_auth_client.c b/pjsip/src/pjsip/sip_auth_client.c index df904e4f..546c5ab0 100644 --- a/pjsip/src/pjsip/sip_auth_client.c +++ b/pjsip/src/pjsip/sip_auth_client.c @@ -110,6 +110,14 @@ on_return: return result; } +PJ_DEF(void) pjsip_auth_clt_pref_dup( pj_pool_t *pool, + pjsip_auth_clt_pref *dst, + const pjsip_auth_clt_pref *src) +{ + pj_memcpy(dst, src, sizeof(pjsip_auth_clt_pref)); + pj_strdup_with_null(pool, &dst->algorithm, &src->algorithm); +} + /* Transform digest to string. * output must be at least PJSIP_MD5STRLEN+1 bytes. diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index 6ebd3bd9..1cf273f3 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -86,8 +86,12 @@ PJ_DEF(void) pjsua_acc_config_dup( pj_pool_t *pool, pj_strdup_with_null(pool, &dst->id, &src->id); pj_strdup_with_null(pool, &dst->reg_uri, &src->reg_uri); pj_strdup_with_null(pool, &dst->force_contact, &src->force_contact); + pj_strdup_with_null(pool, &dst->contact_params, &src->contact_params); + pj_strdup_with_null(pool, &dst->contact_uri_params, + &src->contact_uri_params); pj_strdup_with_null(pool, &dst->pidf_tuple_id, &src->pidf_tuple_id); - pj_strdup_with_null(pool, &dst->rfc5626_instance_id, &src->rfc5626_instance_id); + pj_strdup_with_null(pool, &dst->rfc5626_instance_id, + &src->rfc5626_instance_id); pj_strdup_with_null(pool, &dst->rfc5626_reg_id, &src->rfc5626_reg_id); dst->proxy_cnt = src->proxy_cnt; @@ -112,6 +116,8 @@ PJ_DEF(void) pjsua_acc_config_dup( pj_pool_t *pool, } } + pjsip_auth_clt_pref_dup(pool, &dst->auth_pref, &src->auth_pref); + dst->ka_interval = src->ka_interval; pj_strdup(pool, &dst->ka_data, &src->ka_data); } -- cgit v1.2.3