summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2013-02-27 10:11:59 +0000
committerNanang Izzuddin <nanang@teluu.com>2013-02-27 10:11:59 +0000
commit0989c73839be15a18033ef0573f775dc86d39e06 (patch)
tree1c6b9e6c38eb5eb8fe73d3fad55811d4ffb1c2af
parent9134f8d06dacc0f72475c70259bee5570319984f (diff)
Re #1556: backported to 1.x
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@4385 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjlib/include/pj/guid.h19
-rw-r--r--pjlib/include/pj/hash.h38
-rw-r--r--pjlib/src/pj/guid.c21
-rw-r--r--pjlib/src/pj/hash.c93
-rw-r--r--pjsip/src/pjsip-ua/sip_100rel.c4
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c2
-rw-r--r--pjsip/src/pjsip/sip_dialog.c14
-rw-r--r--pjsip/src/pjsip/sip_transaction.c41
-rw-r--r--pjsip/src/pjsip/sip_ua_layer.c48
-rw-r--r--pjsip/src/pjsip/sip_util_proxy.c2
-rw-r--r--pjsip/src/test/tsx_uac_test.c32
-rw-r--r--pjsip/src/test/tsx_uas_test.c74
12 files changed, 248 insertions, 140 deletions
diff --git a/pjlib/include/pj/guid.h b/pjlib/include/pj/guid.h
index 96a5849e..7b24dd51 100644
--- a/pjlib/include/pj/guid.h
+++ b/pjlib/include/pj/guid.h
@@ -83,6 +83,17 @@ PJ_DECL(unsigned) pj_GUID_STRING_LENGTH(void);
PJ_DECL(pj_str_t*) pj_generate_unique_string(pj_str_t *str);
/**
+ * Create a globally unique string in lowercase, which length is
+ * PJ_GUID_STRING_LENGTH characters. Caller is responsible for preallocating
+ * the storage used in the string.
+ *
+ * @param str The string to store the result.
+ *
+ * @return The string.
+ */
+PJ_DECL(pj_str_t*) pj_generate_unique_string_lower(pj_str_t *str);
+
+/**
* Generate a unique string.
*
* @param pool Pool to allocate memory from.
@@ -90,6 +101,14 @@ PJ_DECL(pj_str_t*) pj_generate_unique_string(pj_str_t *str);
*/
PJ_DECL(void) pj_create_unique_string(pj_pool_t *pool, pj_str_t *str);
+/**
+ * Generate a unique string in lowercase.
+ *
+ * @param pool Pool to allocate memory from.
+ * @param str The string.
+ */
+PJ_DECL(void) pj_create_unique_string_lower(pj_pool_t *pool, pj_str_t *str);
+
/**
* @}
diff --git a/pjlib/include/pj/hash.h b/pjlib/include/pj/hash.h
index 7b9f6df3..35c34137 100644
--- a/pjlib/include/pj/hash.h
+++ b/pjlib/include/pj/hash.h
@@ -75,8 +75,8 @@ PJ_DECL(pj_uint32_t) pj_hash_calc(pj_uint32_t hval,
* string is stored in \c result.
*
* @param hval The initial hash value, normally zero.
- * @param result Buffer to store the result, which must be enough to hold
- * the string.
+ * @param result Optional. Buffer to store the result, which must be enough
+ * to hold the string.
* @param key The input key to be converted and calculated.
*
* @return The hash value.
@@ -116,6 +116,17 @@ PJ_DECL(void *) pj_hash_get( pj_hash_table_t *ht,
/**
+ * Variant of #pj_hash_get() with the key being converted to lowercase when
+ * calculating the hash value.
+ *
+ * @see pj_hash_get()
+ */
+PJ_DECL(void *) pj_hash_get_lower( pj_hash_table_t *ht,
+ const void *key, unsigned keylen,
+ pj_uint32_t *hval );
+
+
+/**
* Associate/disassociate a value with the specified key. If value is not
* NULL and entry already exists, the entry's value will be overwritten.
* If value is not NULL and entry does not exist, a new one will be created
@@ -142,6 +153,17 @@ PJ_DECL(void) pj_hash_set( pj_pool_t *pool, pj_hash_table_t *ht,
/**
+ * Variant of #pj_hash_set() with the key being converted to lowercase when
+ * calculating the hash value.
+ *
+ * @see pj_hash_set()
+ */
+PJ_DECL(void) pj_hash_set_lower( pj_pool_t *pool, pj_hash_table_t *ht,
+ const void *key, unsigned keylen,
+ pj_uint32_t hval, void *value );
+
+
+/**
* Associate/disassociate a value with the specified key. This function works
* like #pj_hash_set(), except that it doesn't use pool (hence the np -- no
* pool suffix). If new entry needs to be allocated, it will use the entry_buf.
@@ -165,6 +187,18 @@ PJ_DECL(void) pj_hash_set_np(pj_hash_table_t *ht,
void *value);
/**
+ * Variant of #pj_hash_set_np() with the key being converted to lowercase
+ * when calculating the hash value.
+ *
+ * @see pj_hash_set_np()
+ */
+PJ_DECL(void) pj_hash_set_np_lower(pj_hash_table_t *ht,
+ const void *key, unsigned keylen,
+ pj_uint32_t hval,
+ pj_hash_entry_buf entry_buf,
+ void *value);
+
+/**
* Get the total number of entries in the hash table.
*
* @param ht the hash table.
diff --git a/pjlib/src/pj/guid.c b/pjlib/src/pj/guid.c
index 1ed9515c..c16a7ce0 100644
--- a/pjlib/src/pj/guid.c
+++ b/pjlib/src/pj/guid.c
@@ -17,11 +17,32 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <pj/ctype.h>
#include <pj/guid.h>
#include <pj/pool.h>
+PJ_DEF(pj_str_t*) pj_generate_unique_string_lower(pj_str_t *str)
+{
+ int i;
+
+ pj_generate_unique_string(str);
+ for (i = 0; i < str->slen; i++)
+ str->ptr[i] = (char)pj_tolower(str->ptr[i]);
+
+ return str;
+}
+
PJ_DEF(void) pj_create_unique_string(pj_pool_t *pool, pj_str_t *str)
{
str->ptr = (char*)pj_pool_alloc(pool, PJ_GUID_STRING_LENGTH);
pj_generate_unique_string(str);
}
+
+PJ_DEF(void) pj_create_unique_string_lower(pj_pool_t *pool, pj_str_t *str)
+{
+ int i;
+
+ pj_create_unique_string(pool, str);
+ for (i = 0; i < str->slen; i++)
+ str->ptr[i] = (char)pj_tolower(str->ptr[i]);
+}
diff --git a/pjlib/src/pj/hash.c b/pjlib/src/pj/hash.c
index d22bf421..7bce8b6e 100644
--- a/pjlib/src/pj/hash.c
+++ b/pjlib/src/pj/hash.c
@@ -79,16 +79,21 @@ PJ_DEF(pj_uint32_t) pj_hash_calc_tolower( pj_uint32_t hval,
#if defined(PJ_HASH_USE_OWN_TOLOWER) && PJ_HASH_USE_OWN_TOLOWER != 0
for (i=0; i<key->slen; ++i) {
pj_uint8_t c = key->ptr[i];
+ char lower;
if (c & 64)
- result[i] = (char)(c | 32);
+ lower = (char)(c | 32);
else
- result[i] = (char)c;
- hval = hval * PJ_HASH_MULTIPLIER + result[i];
+ lower = (char)c;
+ if (result)
+ result[i] = lower;
+ hval = hval * PJ_HASH_MULTIPLIER + lower;
}
#else
for (i=0; i<key->slen; ++i) {
- result[i] = (char)pj_tolower(key->ptr[i]);
- hval = hval * PJ_HASH_MULTIPLIER + result[i];
+ char lower = (char)pj_tolower(key->ptr[i]);
+ if (result)
+ result[i] = lower;
+ hval = hval * PJ_HASH_MULTIPLIER + lower;
}
#endif
@@ -128,7 +133,7 @@ PJ_DEF(pj_hash_table_t*) pj_hash_create(pj_pool_t *pool, unsigned size)
static pj_hash_entry **find_entry( pj_pool_t *pool, pj_hash_table_t *ht,
const void *key, unsigned keylen,
void *val, pj_uint32_t *hval,
- void *entry_buf)
+ void *entry_buf, pj_bool_t lower)
{
pj_uint32_t hash;
pj_hash_entry **p_entry, *entry;
@@ -146,14 +151,20 @@ static pj_hash_entry **find_entry( pj_pool_t *pool, pj_hash_table_t *ht,
if (keylen==PJ_HASH_KEY_STRING) {
const pj_uint8_t *p = (const pj_uint8_t*)key;
for ( ; *p; ++p ) {
- hash = hash * PJ_HASH_MULTIPLIER + *p;
+ if (lower)
+ hash = hash * PJ_HASH_MULTIPLIER + pj_tolower(*p);
+ else
+ hash = hash * PJ_HASH_MULTIPLIER + *p;
}
keylen = p - (const unsigned char*)key;
} else {
const pj_uint8_t *p = (const pj_uint8_t*)key,
*end = p + keylen;
for ( ; p!=end; ++p) {
- hash = hash * PJ_HASH_MULTIPLIER + *p;
+ if (lower)
+ hash = hash * PJ_HASH_MULTIPLIER + pj_tolower(*p);
+ else
+ hash = hash * PJ_HASH_MULTIPLIER + *p;
}
}
@@ -168,9 +179,11 @@ static pj_hash_entry **find_entry( pj_pool_t *pool, pj_hash_table_t *ht,
p_entry = &entry->next, entry = *p_entry)
{
if (entry->hash==hash && entry->keylen==keylen &&
- pj_memcmp(entry->key, key, keylen)==0)
+ ((lower && pj_ansi_strnicmp((const char*)entry->key,
+ (const char*)key, keylen)==0) ||
+ (!lower && pj_memcmp(entry->key, key, keylen)==0)))
{
- break;
+ break;
}
}
@@ -214,17 +227,27 @@ PJ_DEF(void *) pj_hash_get( pj_hash_table_t *ht,
pj_uint32_t *hval)
{
pj_hash_entry *entry;
- entry = *find_entry( NULL, ht, key, keylen, NULL, hval, NULL);
+ entry = *find_entry( NULL, ht, key, keylen, NULL, hval, NULL, PJ_FALSE);
return entry ? entry->value : NULL;
}
-PJ_DEF(void) pj_hash_set( pj_pool_t *pool, pj_hash_table_t *ht,
- const void *key, unsigned keylen, pj_uint32_t hval,
- void *value )
+PJ_DEF(void *) pj_hash_get_lower( pj_hash_table_t *ht,
+ const void *key, unsigned keylen,
+ pj_uint32_t *hval)
+{
+ pj_hash_entry *entry;
+ entry = *find_entry( NULL, ht, key, keylen, NULL, hval, NULL, PJ_TRUE);
+ return entry ? entry->value : NULL;
+}
+
+static void hash_set( pj_pool_t *pool, pj_hash_table_t *ht,
+ const void *key, unsigned keylen, pj_uint32_t hval,
+ void *value, void *entry_buf, pj_bool_t lower )
{
pj_hash_entry **p_entry;
- p_entry = find_entry( pool, ht, key, keylen, value, &hval, NULL);
+ p_entry = find_entry( pool, ht, key, keylen, value, &hval, entry_buf,
+ lower);
if (*p_entry) {
if (value == NULL) {
/* delete entry */
@@ -241,29 +264,35 @@ PJ_DEF(void) pj_hash_set( pj_pool_t *pool, pj_hash_table_t *ht,
}
}
+PJ_DEF(void) pj_hash_set( pj_pool_t *pool, pj_hash_table_t *ht,
+ const void *key, unsigned keylen, pj_uint32_t hval,
+ void *value )
+{
+ hash_set(pool, ht, key, keylen, hval, value, NULL, PJ_FALSE);
+}
+
+PJ_DEF(void) pj_hash_set_lower( pj_pool_t *pool, pj_hash_table_t *ht,
+ const void *key, unsigned keylen,
+ pj_uint32_t hval, void *value )
+{
+ hash_set(pool, ht, key, keylen, hval, value, NULL, PJ_TRUE);
+}
+
PJ_DEF(void) pj_hash_set_np( pj_hash_table_t *ht,
const void *key, unsigned keylen,
pj_uint32_t hval, pj_hash_entry_buf entry_buf,
void *value)
{
- pj_hash_entry **p_entry;
+ hash_set(NULL, ht, key, keylen, hval, value, (void *)entry_buf, PJ_FALSE);
+}
- p_entry = find_entry( NULL, ht, key, keylen, value, &hval,
- (void*)entry_buf );
- if (*p_entry) {
- if (value == NULL) {
- /* delete entry */
- PJ_LOG(6, ("hashtbl", "%p: p_entry %p deleted", ht, *p_entry));
- *p_entry = (*p_entry)->next;
- --ht->count;
-
- } else {
- /* overwrite */
- (*p_entry)->value = value;
- PJ_LOG(6, ("hashtbl", "%p: p_entry %p value set to %p", ht,
- *p_entry, value));
- }
- }
+PJ_DEF(void) pj_hash_set_np_lower( pj_hash_table_t *ht,
+ const void *key, unsigned keylen,
+ pj_uint32_t hval,
+ pj_hash_entry_buf entry_buf,
+ void *value)
+{
+ hash_set(NULL, ht, key, keylen, hval, value, (void *)entry_buf, PJ_TRUE);
}
PJ_DEF(unsigned) pj_hash_count( pj_hash_table_t *ht )
diff --git a/pjsip/src/pjsip-ua/sip_100rel.c b/pjsip/src/pjsip-ua/sip_100rel.c
index 68134dde..13e3919a 100644
--- a/pjsip/src/pjsip-ua/sip_100rel.c
+++ b/pjsip/src/pjsip-ua/sip_100rel.c
@@ -272,7 +272,7 @@ PJ_DEF(pj_status_t) pjsip_100rel_create_prack( pjsip_inv_session *inv,
/* Find UAC state for the specified call leg */
uac_state = dd->uac_state_list;
while (uac_state) {
- if (pj_strcmp(&uac_state->tag, to_tag)==0)
+ if (pj_stricmp(&uac_state->tag, to_tag)==0)
break;
uac_state = uac_state->next;
}
@@ -319,7 +319,7 @@ PJ_DEF(pj_status_t) pjsip_100rel_create_prack( pjsip_inv_session *inv,
/* If this response is a forked response from a different call-leg,
* update the req URI (https://trac.pjsip.org/repos/ticket/1364)
*/
- if (pj_strcmp(&uac_state->tag, &dd->inv->dlg->remote.info->tag)) {
+ if (pj_stricmp(&uac_state->tag, &dd->inv->dlg->remote.info->tag)) {
const pjsip_contact_hdr *mhdr;
mhdr = (const pjsip_contact_hdr*)
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index ca2e65b2..6f71fa1c 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -1711,7 +1711,7 @@ static pj_status_t inv_check_sdp_in_incoming_msg( pjsip_inv_session *inv,
if (tsx->role == PJSIP_ROLE_UAC &&
rdata->msg_info.msg->line.status.code/100 == 2 &&
tsx_inv_data->done_early &&
- pj_strcmp(&tsx_inv_data->done_tag, &res_tag))
+ pj_stricmp(&tsx_inv_data->done_tag, &res_tag))
{
const pjmedia_sdp_session *reoffer_sdp = NULL;
diff --git a/pjsip/src/pjsip/sip_dialog.c b/pjsip/src/pjsip/sip_dialog.c
index b76a0f9e..dc51df5f 100644
--- a/pjsip/src/pjsip/sip_dialog.c
+++ b/pjsip/src/pjsip/sip_dialog.c
@@ -206,8 +206,8 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uac( pjsip_user_agent *ua,
pj_create_unique_string(dlg->pool, &dlg->local.info->tag);
/* Calculate hash value of local tag. */
- dlg->local.tag_hval = pj_hash_calc(0, dlg->local.info->tag.ptr,
- dlg->local.info->tag.slen);
+ dlg->local.tag_hval = pj_hash_calc_tolower(0, NULL,
+ &dlg->local.info->tag);
/* Randomize local CSeq. */
dlg->local.first_cseq = pj_rand() & 0x7FFF;
@@ -374,8 +374,7 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua,
pj_strdup(dlg->pool, &dlg->local.info_str, &tmp);
/* Calculate hash value of local tag. */
- dlg->local.tag_hval = pj_hash_calc(0, dlg->local.info->tag.ptr,
- dlg->local.info->tag.slen);
+ dlg->local.tag_hval = pj_hash_calc_tolower(0, NULL, &dlg->local.info->tag);
/* Randomize local cseq */
@@ -522,8 +521,7 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua,
++dlg->tsx_count;
/* Calculate hash value of remote tag. */
- dlg->remote.tag_hval = pj_hash_calc(0, dlg->remote.info->tag.ptr,
- dlg->remote.info->tag.slen);
+ dlg->remote.tag_hval = pj_hash_calc_tolower(0, NULL, &dlg->remote.info->tag);
/* Update remote capabilities info */
pjsip_dlg_update_remote_cap(dlg, rdata->msg_info.msg, PJ_TRUE);
@@ -1776,7 +1774,7 @@ void pjsip_dlg_on_rx_response( pjsip_dialog *dlg, pjsip_rx_data *rdata )
res_code > 100 &&
res_code/100 <= 2 &&
pjsip_method_creates_dialog(&rdata->msg_info.cseq->method) &&
- pj_strcmp(&dlg->remote.info->tag, &rdata->msg_info.to->tag)))
+ pj_stricmp(&dlg->remote.info->tag, &rdata->msg_info.to->tag)))
{
pjsip_contact_hdr *contact;
@@ -1785,7 +1783,7 @@ void pjsip_dlg_on_rx_response( pjsip_dialog *dlg, pjsip_rx_data *rdata )
* with To-tag or forking, apply strict update.
*/
pjsip_dlg_update_remote_cap(dlg, rdata->msg_info.msg,
- pj_strcmp(&dlg->remote.info->tag,
+ pj_stricmp(&dlg->remote.info->tag,
&rdata->msg_info.to->tag));
/* Update To tag. */
diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c
index 5cbcc321..a58fc3f9 100644
--- a/pjsip/src/pjsip/sip_transaction.c
+++ b/pjsip/src/pjsip/sip_transaction.c
@@ -403,7 +403,7 @@ PJ_DEF(pj_status_t) pjsip_tsx_create_key( pj_pool_t *pool, pj_str_t *key,
*/
const pj_str_t *branch = &rdata->msg_info.via->branch_param;
- if (pj_strncmp(branch,&rfc3261_branch,PJSIP_RFC3261_BRANCH_LEN)==0) {
+ if (pj_strnicmp(branch,&rfc3261_branch,PJSIP_RFC3261_BRANCH_LEN)==0) {
/* Create transaction key. */
return create_tsx_key_3261(pool, key, role, method, branch);
@@ -548,10 +548,10 @@ static pj_status_t mod_tsx_layer_register_tsx( pjsip_transaction *tsx)
* Do not use PJ_ASSERT_RETURN since it evaluates the expression
* twice!
*/
- if(pj_hash_get(mod_tsx_layer.htable,
- tsx->transaction_key.ptr,
- tsx->transaction_key.slen,
- NULL))
+ if(pj_hash_get_lower(mod_tsx_layer.htable,
+ tsx->transaction_key.ptr,
+ tsx->transaction_key.slen,
+ NULL))
{
pj_mutex_unlock(mod_tsx_layer.mutex);
PJ_LOG(2,(THIS_FILE,
@@ -568,11 +568,13 @@ static pj_status_t mod_tsx_layer_register_tsx( pjsip_transaction *tsx)
/* Register the transaction to the hash table. */
#ifdef PRECALC_HASH
- pj_hash_set( tsx->pool, mod_tsx_layer.htable, tsx->transaction_key.ptr,
- tsx->transaction_key.slen, tsx->hashed_key, tsx);
+ pj_hash_set_lower( tsx->pool, mod_tsx_layer.htable,
+ tsx->transaction_key.ptr,
+ tsx->transaction_key.slen, tsx->hashed_key, tsx);
#else
- pj_hash_set( tsx->pool, mod_tsx_layer.htable, tsx->transaction_key.ptr,
- tsx->transaction_key.slen, 0, tsx);
+ pj_hash_set_lower( tsx->pool, mod_tsx_layer.htable,
+ tsx->transaction_key.ptr,
+ tsx->transaction_key.slen, 0, tsx);
#endif
/* Unlock mutex. */
@@ -604,11 +606,11 @@ static void mod_tsx_layer_unregister_tsx( pjsip_transaction *tsx)
/* Register the transaction to the hash table. */
#ifdef PRECALC_HASH
- pj_hash_set( NULL, mod_tsx_layer.htable, tsx->transaction_key.ptr,
- tsx->transaction_key.slen, tsx->hashed_key, NULL);
+ pj_hash_set_lower( NULL, mod_tsx_layer.htable, tsx->transaction_key.ptr,
+ tsx->transaction_key.slen, tsx->hashed_key, NULL);
#else
- pj_hash_set( NULL, mod_tsx_layer.htable, tsx->transaction_key.ptr,
- tsx->transaction_key.slen, 0, NULL);
+ pj_hash_set_lower( NULL, mod_tsx_layer.htable, tsx->transaction_key.ptr,
+ tsx->transaction_key.slen, 0, NULL);
#endif
TSX_TRACE_((THIS_FILE,
@@ -651,7 +653,8 @@ PJ_DEF(pjsip_transaction*) pjsip_tsx_layer_find_tsx( const pj_str_t *key,
pj_mutex_lock(mod_tsx_layer.mutex);
tsx = (pjsip_transaction*)
- pj_hash_get( mod_tsx_layer.htable, key->ptr, key->slen, &hval );
+ pj_hash_get_lower( mod_tsx_layer.htable, key->ptr, key->slen,
+ &hval );
pj_mutex_unlock(mod_tsx_layer.mutex);
TSX_TRACE_((THIS_FILE,
@@ -785,7 +788,7 @@ static pj_bool_t mod_tsx_layer_on_rx_request(pjsip_rx_data *rdata)
pj_mutex_lock( mod_tsx_layer.mutex );
tsx = (pjsip_transaction*)
- pj_hash_get( mod_tsx_layer.htable, key.ptr, key.slen, &hval );
+ pj_hash_get_lower( mod_tsx_layer.htable, key.ptr, key.slen, &hval );
TSX_TRACE_((THIS_FILE,
@@ -834,7 +837,7 @@ static pj_bool_t mod_tsx_layer_on_rx_response(pjsip_rx_data *rdata)
pj_mutex_lock( mod_tsx_layer.mutex );
tsx = (pjsip_transaction*)
- pj_hash_get( mod_tsx_layer.htable, key.ptr, key.slen, &hval );
+ pj_hash_get_lower( mod_tsx_layer.htable, key.ptr, key.slen, &hval );
TSX_TRACE_((THIS_FILE,
@@ -1293,8 +1296,7 @@ PJ_DEF(pj_status_t) pjsip_tsx_create_uac( pjsip_module *tsx_user,
/* Calculate hashed key value. */
#ifdef PRECALC_HASH
- tsx->hashed_key = pj_hash_calc(0, tsx->transaction_key.ptr,
- tsx->transaction_key.slen);
+ tsx->hashed_key = pj_hash_calc_tolower(0, NULL, &tsx->transaction_key);
#endif
PJ_LOG(6, (tsx->obj_name, "tsx_key=%.*s", tsx->transaction_key.slen,
@@ -1424,8 +1426,7 @@ PJ_DEF(pj_status_t) pjsip_tsx_create_uas( pjsip_module *tsx_user,
/* Calculate hashed key value. */
#ifdef PRECALC_HASH
- tsx->hashed_key = pj_hash_calc(0, tsx->transaction_key.ptr,
- tsx->transaction_key.slen);
+ tsx->hashed_key = pj_hash_calc_tolower(0, NULL, &tsx->transaction_key);
#endif
/* Duplicate branch parameter for transaction. */
diff --git a/pjsip/src/pjsip/sip_ua_layer.c b/pjsip/src/pjsip/sip_ua_layer.c
index 4f296b41..50695b5b 100644
--- a/pjsip/src/pjsip/sip_ua_layer.c
+++ b/pjsip/src/pjsip/sip_ua_layer.c
@@ -302,9 +302,10 @@ PJ_DEF(pj_status_t) pjsip_ua_register_dlg( pjsip_user_agent *ua,
struct dlg_set *dlg_set;
dlg_set = (struct dlg_set*)
- pj_hash_get( mod_ua.dlg_table, dlg->local.info->tag.ptr,
- dlg->local.info->tag.slen,
- &dlg->local.tag_hval);
+ pj_hash_get_lower( mod_ua.dlg_table,
+ dlg->local.info->tag.ptr,
+ dlg->local.info->tag.slen,
+ &dlg->local.tag_hval);
if (dlg_set) {
/* This is NOT the first dialog in the dialog set.
@@ -326,9 +327,11 @@ PJ_DEF(pj_status_t) pjsip_ua_register_dlg( pjsip_user_agent *ua,
dlg->dlg_set = dlg_set;
/* Register the dialog set in the hash table. */
- pj_hash_set_np(mod_ua.dlg_table,
- dlg->local.info->tag.ptr, dlg->local.info->tag.slen,
- dlg->local.tag_hval, dlg_set->ht_entry, dlg_set);
+ pj_hash_set_np_lower(mod_ua.dlg_table,
+ dlg->local.info->tag.ptr,
+ dlg->local.info->tag.slen,
+ dlg->local.tag_hval, dlg_set->ht_entry,
+ dlg_set);
}
} else {
@@ -341,9 +344,10 @@ PJ_DEF(pj_status_t) pjsip_ua_register_dlg( pjsip_user_agent *ua,
dlg->dlg_set = dlg_set;
- pj_hash_set_np(mod_ua.dlg_table,
- dlg->local.info->tag.ptr, dlg->local.info->tag.slen,
- dlg->local.tag_hval, dlg_set->ht_entry, dlg_set);
+ pj_hash_set_np_lower(mod_ua.dlg_table,
+ dlg->local.info->tag.ptr,
+ dlg->local.info->tag.slen,
+ dlg->local.tag_hval, dlg_set->ht_entry, dlg_set);
}
/* Unlock user agent. */
@@ -387,8 +391,9 @@ PJ_DEF(pj_status_t) pjsip_ua_unregister_dlg( pjsip_user_agent *ua,
/* If dialog list is empty, remove the dialog set from the hash table. */
if (pj_list_empty(&dlg_set->dlg_list)) {
- pj_hash_set(NULL, mod_ua.dlg_table, dlg->local.info->tag.ptr,
- dlg->local.info->tag.slen, dlg->local.tag_hval, NULL);
+ pj_hash_set_lower(NULL, mod_ua.dlg_table, dlg->local.info->tag.ptr,
+ dlg->local.info->tag.slen, dlg->local.tag_hval,
+ NULL);
/* Return dlg_set to free nodes. */
pj_list_push_back(&mod_ua.free_dlgset_nodes, dlg_set);
@@ -449,8 +454,8 @@ PJ_DEF(pjsip_dialog*) pjsip_ua_find_dialog(const pj_str_t *call_id,
/* Lookup the dialog set. */
dlg_set = (struct dlg_set*)
- pj_hash_get(mod_ua.dlg_table, local_tag->ptr, local_tag->slen,
- NULL);
+ pj_hash_get_lower(mod_ua.dlg_table, local_tag->ptr,
+ local_tag->slen, NULL);
if (dlg_set == NULL) {
/* Not found */
pj_mutex_unlock(mod_ua.mutex);
@@ -462,7 +467,7 @@ PJ_DEF(pjsip_dialog*) pjsip_ua_find_dialog(const pj_str_t *call_id,
*/
dlg = dlg_set->dlg_list.next;
while (dlg != (pjsip_dialog*)&dlg_set->dlg_list) {
- if (pj_strcmp(&dlg->remote.info->tag, remote_tag) == 0)
+ if (pj_stricmp(&dlg->remote.info->tag, remote_tag) == 0)
break;
dlg = dlg->next;
}
@@ -563,7 +568,8 @@ static struct dlg_set *find_dlg_set_for_msg( pjsip_rx_data *rdata )
/* Lookup the dialog set. */
dlg_set = (struct dlg_set*)
- pj_hash_get(mod_ua.dlg_table, tag->ptr, tag->slen, NULL);
+ pj_hash_get_lower(mod_ua.dlg_table, tag->ptr, tag->slen,
+ NULL);
return dlg_set;
}
}
@@ -620,7 +626,7 @@ retry_on_deadlock:
dlg = dlg_set->dlg_list.next;
while (dlg != (pjsip_dialog*)&dlg_set->dlg_list) {
- if (pj_strcmp(&dlg->remote.info->tag, from_tag) == 0)
+ if (pj_stricmp(&dlg->remote.info->tag, from_tag) == 0)
break;
dlg = dlg->next;
@@ -757,10 +763,10 @@ retry_on_deadlock:
/* Get the dialog set. */
dlg_set = (struct dlg_set*)
- pj_hash_get(mod_ua.dlg_table,
- rdata->msg_info.from->tag.ptr,
- rdata->msg_info.from->tag.slen,
- NULL);
+ pj_hash_get_lower(mod_ua.dlg_table,
+ rdata->msg_info.from->tag.ptr,
+ rdata->msg_info.from->tag.slen,
+ NULL);
if (!dlg_set) {
/* Unlock dialog hash table. */
@@ -808,7 +814,7 @@ retry_on_deadlock:
break;
/* Otherwise find the one with matching To tag. */
- if (pj_strcmp(to_tag, &dlg->remote.info->tag) == 0)
+ if (pj_stricmp(to_tag, &dlg->remote.info->tag) == 0)
break;
dlg = dlg->next;
diff --git a/pjsip/src/pjsip/sip_util_proxy.c b/pjsip/src/pjsip/sip_util_proxy.c
index 7666118f..240cf18b 100644
--- a/pjsip/src/pjsip/sip_util_proxy.c
+++ b/pjsip/src/pjsip/sip_util_proxy.c
@@ -345,7 +345,7 @@ PJ_DEF(pj_str_t) pjsip_calculate_branch_id( pjsip_rx_data *rdata )
/* If incoming request does not have RFC 3261 branch value, create
* a branch value from GUID .
*/
- if (pj_strncmp(&rdata->msg_info.via->branch_param,
+ if (pj_strnicmp(&rdata->msg_info.via->branch_param,
&rfc3261_branch, PJSIP_RFC3261_BRANCH_LEN) != 0 )
{
pj_str_t tmp;
diff --git a/pjsip/src/test/tsx_uac_test.c b/pjsip/src/test/tsx_uac_test.c
index 1d67dea5..0677da18 100644
--- a/pjsip/src/test/tsx_uac_test.c
+++ b/pjsip/src/test/tsx_uac_test.c
@@ -159,7 +159,7 @@ static struct my_timer
*/
static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
{
- if (pj_strcmp2(&tsx->branch, TEST1_BRANCH_ID)==0) {
+ if (pj_stricmp2(&tsx->branch, TEST1_BRANCH_ID)==0) {
/*
* Transaction with TEST1_BRANCH_ID should terminate with transaction
* timeout status.
@@ -213,7 +213,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
}
- } else if (pj_strcmp2(&tsx->branch, TEST2_BRANCH_ID)==0) {
+ } else if (pj_stricmp2(&tsx->branch, TEST2_BRANCH_ID)==0) {
/*
* Transaction with TEST2_BRANCH_ID should terminate with transport error.
*/
@@ -231,7 +231,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
test_complete = 1;
}
- } else if (pj_strcmp2(&tsx->branch, TEST3_BRANCH_ID)==0) {
+ } else if (pj_stricmp2(&tsx->branch, TEST3_BRANCH_ID)==0) {
/*
* This test terminates the transaction while resolver is still
* running.
@@ -256,7 +256,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
- } else if (pj_strcmp2(&tsx->branch, TEST4_BRANCH_ID)==0) {
+ } else if (pj_stricmp2(&tsx->branch, TEST4_BRANCH_ID)==0) {
/*
* This test simulates transport failure after several
* retransmissions.
@@ -284,7 +284,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
- } else if (pj_strcmp2(&tsx->branch, TEST5_BRANCH_ID)==0) {
+ } else if (pj_stricmp2(&tsx->branch, TEST5_BRANCH_ID)==0) {
/*
* This test simulates transport failure after several
* retransmissions.
@@ -312,7 +312,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
- } else if (pj_strcmp2(&tsx->branch, TEST6_BRANCH_ID)==0) {
+ } else if (pj_stricmp2(&tsx->branch, TEST6_BRANCH_ID)==0) {
/*
* Successfull non-INVITE transaction.
*/
@@ -355,7 +355,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
- } else if (pj_strcmp2(&tsx->branch, TEST7_BRANCH_ID)==0) {
+ } else if (pj_stricmp2(&tsx->branch, TEST7_BRANCH_ID)==0) {
/*
* Successfull non-INVITE transaction.
*/
@@ -408,7 +408,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
- } else if (pj_strcmp2(&tsx->branch, TEST8_BRANCH_ID)==0) {
+ } else if (pj_stricmp2(&tsx->branch, TEST8_BRANCH_ID)==0) {
/*
* Failed INVITE transaction.
*/
@@ -468,7 +468,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
- } else if (pj_strcmp2(&tsx->branch, TEST9_BRANCH_ID)==0) {
+ } else if (pj_stricmp2(&tsx->branch, TEST9_BRANCH_ID)==0) {
/*
* Failed INVITE transaction with provisional response.
*/
@@ -583,7 +583,7 @@ static void terminate_tsx_callback( pj_timer_heap_t *timer_heap,
*/
static pj_bool_t msg_receiver_on_rx_request(pjsip_rx_data *rdata)
{
- if (pj_strcmp2(&rdata->msg_info.via->branch_param, TEST1_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&rdata->msg_info.via->branch_param, TEST1_BRANCH_ID) == 0) {
/*
* The TEST1_BRANCH_ID test performs the verifications for transaction
* retransmission mechanism. It will not answer the incoming request
@@ -651,7 +651,7 @@ static pj_bool_t msg_receiver_on_rx_request(pjsip_rx_data *rdata)
return PJ_TRUE;
} else
- if (pj_strcmp2(&rdata->msg_info.via->branch_param, TEST4_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&rdata->msg_info.via->branch_param, TEST4_BRANCH_ID) == 0) {
/*
* The TEST4_BRANCH_ID test simulates transport failure after several
* retransmissions.
@@ -672,7 +672,7 @@ static pj_bool_t msg_receiver_on_rx_request(pjsip_rx_data *rdata)
} else
- if (pj_strcmp2(&rdata->msg_info.via->branch_param, TEST5_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&rdata->msg_info.via->branch_param, TEST5_BRANCH_ID) == 0) {
/*
* The TEST5_BRANCH_ID test simulates user terminating the transaction
* after several retransmissions.
@@ -703,7 +703,7 @@ static pj_bool_t msg_receiver_on_rx_request(pjsip_rx_data *rdata)
return PJ_TRUE;
} else
- if (pj_strcmp2(&rdata->msg_info.via->branch_param, TEST6_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&rdata->msg_info.via->branch_param, TEST6_BRANCH_ID) == 0) {
/*
* The TEST6_BRANCH_ID test successfull non-INVITE transaction.
*/
@@ -728,7 +728,7 @@ static pj_bool_t msg_receiver_on_rx_request(pjsip_rx_data *rdata)
} else
- if (pj_strcmp2(&rdata->msg_info.via->branch_param, TEST7_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&rdata->msg_info.via->branch_param, TEST7_BRANCH_ID) == 0) {
/*
* The TEST7_BRANCH_ID test successfull non-INVITE transaction
* with provisional response.
@@ -778,7 +778,7 @@ static pj_bool_t msg_receiver_on_rx_request(pjsip_rx_data *rdata)
} else
- if (pj_strcmp2(&rdata->msg_info.via->branch_param, TEST8_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&rdata->msg_info.via->branch_param, TEST8_BRANCH_ID) == 0) {
/*
* The TEST8_BRANCH_ID test failed INVITE transaction.
*/
@@ -841,7 +841,7 @@ static pj_bool_t msg_receiver_on_rx_request(pjsip_rx_data *rdata)
} else
- if (pj_strcmp2(&rdata->msg_info.via->branch_param, TEST9_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&rdata->msg_info.via->branch_param, TEST9_BRANCH_ID) == 0) {
/*
* The TEST9_BRANCH_ID test failed INVITE transaction with
* provisional response.
diff --git a/pjsip/src/test/tsx_uas_test.c b/pjsip/src/test/tsx_uas_test.c
index f39a1a28..973f3315 100644
--- a/pjsip/src/test/tsx_uas_test.c
+++ b/pjsip/src/test/tsx_uas_test.c
@@ -352,8 +352,8 @@ static void schedule_terminate_tsx( pjsip_transaction *tsx,
*/
static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
{
- if (pj_strcmp2(&tsx->branch, TEST1_BRANCH_ID)==0 ||
- pj_strcmp2(&tsx->branch, TEST2_BRANCH_ID)==0)
+ if (pj_stricmp2(&tsx->branch, TEST1_BRANCH_ID)==0 ||
+ pj_stricmp2(&tsx->branch, TEST2_BRANCH_ID)==0)
{
/*
* TEST1_BRANCH_ID tests that non-INVITE transaction transmits final
@@ -362,7 +362,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
*
* TEST2_BRANCH_ID does similar test for non-2xx final response.
*/
- int status_code = (pj_strcmp2(&tsx->branch, TEST1_BRANCH_ID)==0) ?
+ int status_code = (pj_stricmp2(&tsx->branch, TEST1_BRANCH_ID)==0) ?
TEST1_STATUS_CODE : TEST2_STATUS_CODE;
if (tsx->state == PJSIP_TSX_STATE_TERMINATED) {
@@ -392,7 +392,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
else
- if (pj_strcmp2(&tsx->branch, TEST3_BRANCH_ID)==0) {
+ if (pj_stricmp2(&tsx->branch, TEST3_BRANCH_ID)==0) {
/*
* TEST3_BRANCH_ID tests sending provisional response.
*/
@@ -455,7 +455,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
} else
- if (pj_strcmp2(&tsx->branch, TEST4_BRANCH_ID)==0) {
+ if (pj_stricmp2(&tsx->branch, TEST4_BRANCH_ID)==0) {
/*
* TEST4_BRANCH_ID tests receiving retransmissions in TRYING state.
*/
@@ -488,7 +488,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
} else
- if (pj_strcmp2(&tsx->branch, TEST5_BRANCH_ID)==0) {
+ if (pj_stricmp2(&tsx->branch, TEST5_BRANCH_ID)==0) {
/*
* TEST5_BRANCH_ID tests receiving retransmissions in PROCEEDING state
*/
@@ -525,7 +525,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
}
} else
- if (pj_strcmp2(&tsx->branch, TEST6_BRANCH_ID)==0) {
+ if (pj_stricmp2(&tsx->branch, TEST6_BRANCH_ID)==0) {
/*
* TEST6_BRANCH_ID tests receiving retransmissions in COMPLETED state
*/
@@ -560,8 +560,8 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
} else
- if (pj_strcmp2(&tsx->branch, TEST7_BRANCH_ID)==0 ||
- pj_strcmp2(&tsx->branch, TEST8_BRANCH_ID)==0)
+ if (pj_stricmp2(&tsx->branch, TEST7_BRANCH_ID)==0 ||
+ pj_stricmp2(&tsx->branch, TEST8_BRANCH_ID)==0)
{
/*
* TEST7_BRANCH_ID and TEST8_BRANCH_ID test retransmission of
@@ -569,7 +569,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
*/
int code;
- if (pj_strcmp2(&tsx->branch, TEST7_BRANCH_ID) == 0)
+ if (pj_stricmp2(&tsx->branch, TEST7_BRANCH_ID) == 0)
code = TEST7_STATUS_CODE;
else
code = TEST8_STATUS_CODE;
@@ -637,7 +637,7 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
} else
- if (pj_strcmp2(&tsx->branch, TEST9_BRANCH_ID)==0) {
+ if (pj_stricmp2(&tsx->branch, TEST9_BRANCH_ID)==0) {
/*
* TEST9_BRANCH_ID tests that retransmission of INVITE final response
* must cease when ACK is received.
@@ -701,9 +701,9 @@ static void tsx_user_on_tsx_state(pjsip_transaction *tsx, pjsip_event *e)
} else
- if (pj_strcmp2(&tsx->branch, TEST10_BRANCH_ID)==0 ||
- pj_strcmp2(&tsx->branch, TEST11_BRANCH_ID)==0 ||
- pj_strcmp2(&tsx->branch, TEST12_BRANCH_ID)==0)
+ if (pj_stricmp2(&tsx->branch, TEST10_BRANCH_ID)==0 ||
+ pj_stricmp2(&tsx->branch, TEST11_BRANCH_ID)==0 ||
+ pj_stricmp2(&tsx->branch, TEST12_BRANCH_ID)==0)
{
if (tsx->state == PJSIP_TSX_STATE_TERMINATED) {
@@ -739,8 +739,8 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
pj_str_t branch_param = rdata->msg_info.via->branch_param;
pj_status_t status;
- if (pj_strcmp2(&branch_param, TEST1_BRANCH_ID) == 0 ||
- pj_strcmp2(&branch_param, TEST2_BRANCH_ID) == 0)
+ if (pj_stricmp2(&branch_param, TEST1_BRANCH_ID) == 0 ||
+ pj_stricmp2(&branch_param, TEST2_BRANCH_ID) == 0)
{
/*
* TEST1_BRANCH_ID tests that non-INVITE transaction transmits 2xx
@@ -749,7 +749,7 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
*
* TEST2_BRANCH_ID performs similar test for non-2xx final response.
*/
- int status_code = (pj_strcmp2(&branch_param, TEST1_BRANCH_ID) == 0) ?
+ int status_code = (pj_stricmp2(&branch_param, TEST1_BRANCH_ID) == 0) ?
TEST1_STATUS_CODE : TEST2_STATUS_CODE;
if (msg->type == PJSIP_REQUEST_MSG) {
@@ -789,7 +789,7 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
}
return PJ_TRUE;
- } else if (pj_strcmp2(&branch_param, TEST3_BRANCH_ID) == 0) {
+ } else if (pj_stricmp2(&branch_param, TEST3_BRANCH_ID) == 0) {
/* TEST3_BRANCH_ID tests provisional response. */
@@ -838,9 +838,9 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
}
return PJ_TRUE;
- } else if (pj_strcmp2(&branch_param, TEST4_BRANCH_ID) == 0 ||
- pj_strcmp2(&branch_param, TEST5_BRANCH_ID) == 0 ||
- pj_strcmp2(&branch_param, TEST6_BRANCH_ID) == 0)
+ } else if (pj_stricmp2(&branch_param, TEST4_BRANCH_ID) == 0 ||
+ pj_stricmp2(&branch_param, TEST5_BRANCH_ID) == 0 ||
+ pj_stricmp2(&branch_param, TEST6_BRANCH_ID) == 0)
{
/* TEST4_BRANCH_ID: absorbs retransmissions in TRYING state. */
@@ -863,12 +863,12 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
pjsip_tsx_recv_msg(tsx, rdata);
save_key(tsx);
- if (pj_strcmp2(&branch_param, TEST4_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&branch_param, TEST4_BRANCH_ID) == 0) {
- } else if (pj_strcmp2(&branch_param, TEST5_BRANCH_ID) == 0) {
+ } else if (pj_stricmp2(&branch_param, TEST5_BRANCH_ID) == 0) {
send_response(rdata, tsx, TEST5_PROVISIONAL_CODE);
- } else if (pj_strcmp2(&branch_param, TEST6_BRANCH_ID) == 0) {
+ } else if (pj_stricmp2(&branch_param, TEST6_BRANCH_ID) == 0) {
PJ_LOG(4,(THIS_FILE, " sending provisional response"));
send_response(rdata, tsx, TEST6_PROVISIONAL_CODE);
PJ_LOG(4,(THIS_FILE, " sending final response"));
@@ -882,11 +882,11 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
++recv_count;
- if (pj_strcmp2(&branch_param, TEST4_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&branch_param, TEST4_BRANCH_ID) == 0) {
PJ_LOG(3,(THIS_FILE, " error: not expecting response!"));
test_complete = -132;
- } else if (pj_strcmp2(&branch_param, TEST5_BRANCH_ID) == 0) {
+ } else if (pj_stricmp2(&branch_param, TEST5_BRANCH_ID) == 0) {
if (rdata->msg_info.msg->line.status.code!=TEST5_PROVISIONAL_CODE) {
PJ_LOG(3,(THIS_FILE, " error: incorrect status code!"));
@@ -898,7 +898,7 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
test_complete = -134;
}
- } else if (pj_strcmp2(&branch_param, TEST6_BRANCH_ID) == 0) {
+ } else if (pj_stricmp2(&branch_param, TEST6_BRANCH_ID) == 0) {
int code = rdata->msg_info.msg->line.status.code;
@@ -927,8 +927,8 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
return PJ_TRUE;
- } else if (pj_strcmp2(&branch_param, TEST7_BRANCH_ID) == 0 ||
- pj_strcmp2(&branch_param, TEST8_BRANCH_ID) == 0)
+ } else if (pj_stricmp2(&branch_param, TEST7_BRANCH_ID) == 0 ||
+ pj_stricmp2(&branch_param, TEST8_BRANCH_ID) == 0)
{
/*
@@ -950,7 +950,7 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
pjsip_tsx_recv_msg(tsx, rdata);
save_key(tsx);
- if (pj_strcmp2(&branch_param, TEST7_BRANCH_ID) == 0) {
+ if (pj_stricmp2(&branch_param, TEST7_BRANCH_ID) == 0) {
send_response(rdata, tsx, TEST7_STATUS_CODE);
@@ -965,7 +965,7 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
++recv_count;
- if (pj_strcmp2(&branch_param, TEST7_BRANCH_ID) == 0)
+ if (pj_stricmp2(&branch_param, TEST7_BRANCH_ID) == 0)
code = TEST7_STATUS_CODE;
else
code = TEST8_STATUS_CODE;
@@ -1013,7 +1013,7 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
}
return PJ_TRUE;
- } else if (pj_strcmp2(&branch_param, TEST9_BRANCH_ID) == 0) {
+ } else if (pj_stricmp2(&branch_param, TEST9_BRANCH_ID) == 0) {
/*
* TEST9_BRANCH_ID tests that the retransmission of INVITE final
@@ -1118,15 +1118,15 @@ static pj_bool_t on_rx_message(pjsip_rx_data *rdata)
}
return PJ_TRUE;
- } else if (pj_strcmp2(&branch_param, TEST10_BRANCH_ID) == 0 ||
- pj_strcmp2(&branch_param, TEST11_BRANCH_ID) == 0 ||
- pj_strcmp2(&branch_param, TEST12_BRANCH_ID) == 0)
+ } else if (pj_stricmp2(&branch_param, TEST10_BRANCH_ID) == 0 ||
+ pj_stricmp2(&branch_param, TEST11_BRANCH_ID) == 0 ||
+ pj_stricmp2(&branch_param, TEST12_BRANCH_ID) == 0)
{
int test_num, code1, code2;
- if (pj_strcmp2(&branch_param, TEST10_BRANCH_ID) == 0)
+ if (pj_stricmp2(&branch_param, TEST10_BRANCH_ID) == 0)
test_num=10, code1 = 100, code2 = 0;
- else if (pj_strcmp2(&branch_param, TEST11_BRANCH_ID) == 0)
+ else if (pj_stricmp2(&branch_param, TEST11_BRANCH_ID) == 0)
test_num=11, code1 = 100, code2 = 200;
else
test_num=12, code1 = 200, code2 = 0;