summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-05-29 04:09:51 +0000
committerBenny Prijono <bennylp@teluu.com>2007-05-29 04:09:51 +0000
commit2618733248d984c629eeb313c80e084dd26531c6 (patch)
treec4a828d6fb9fbd20f0e3d746da2ffd589ff2c901
parent612fce9c649b58250e7f240558095b15f7295f6b (diff)
Fixed ticket #307: Fail to parse fully qualified PIDF document (thanks Cool_Zer0)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1313 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/src/pjsip-simple/pidf.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/pjsip/src/pjsip-simple/pidf.c b/pjsip/src/pjsip-simple/pidf.c
index 730194c2..922549d9 100644
--- a/pjsip/src/pjsip-simple/pidf.c
+++ b/pjsip/src/pjsip-simple/pidf.c
@@ -343,11 +343,16 @@ PJ_DEF(pjpidf_pres*) pjpidf_create(pj_pool_t *pool, const pj_str_t *entity)
PJ_DEF(pjpidf_pres*) pjpidf_parse(pj_pool_t *pool, char *text, int len)
{
pjpidf_pres *pres = pj_xml_parse(pool, text, len);
- if (pres) {
- if (pj_stricmp(&pres->name, &PRESENCE) != 0)
- return NULL;
+ if (pres && pres->name.slen >= 8) {
+ pj_str_t name;
+
+ name.ptr = pres->name.ptr + (pres->name.slen - 8);
+ name.slen = 8;
+
+ if (pj_stricmp(&name, &PRESENCE) == 0)
+ return pres;
}
- return pres;
+ return NULL;
}
PJ_DEF(int) pjpidf_print(const pjpidf_pres* pres, char *buf, int len)