|
@@ -238,6 +238,13 @@ int xcap_parse_uri(str *huri, str *xroot, xcap_uri_t *xuri)
|
|
s.len -= xuri->xuid.len + 1;
|
|
s.len -= xuri->xuid.len + 1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* xuiddomain */
|
|
|
|
+ if (xuri->xuid.len > 0) {
|
|
|
|
+ p = strchr(xuri->xuid.s, '@');
|
|
|
|
+ xuri->xuiddomain.s = p + 1;
|
|
|
|
+ xuri->xuiddomain.len = xuri->xuid.len - (p - xuri->xuid.s) - 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
/* file */
|
|
/* file */
|
|
xuri->file.s = s.s;
|
|
xuri->file.s = s.s;
|
|
if(xuri->nss==NULL) {
|
|
if(xuri->nss==NULL) {
|
|
@@ -747,6 +754,8 @@ int pv_parse_xcap_uri_name(pv_spec_p sp, str *in)
|
|
pxs->ktype = 9;
|
|
pxs->ktype = 9;
|
|
} else if(pxs->key.len==6 && strncmp(pxs->key.s, "domain", 6)==0) {
|
|
} else if(pxs->key.len==6 && strncmp(pxs->key.s, "domain", 6)==0) {
|
|
pxs->ktype = 10;
|
|
pxs->ktype = 10;
|
|
|
|
+ } else if(pxs->key.len==10 && strncmp(pxs->key.s, "xuiddomain", 10)==0) {
|
|
|
|
+ pxs->ktype = 11;
|
|
} else {
|
|
} else {
|
|
LM_ERR("unknown key type [%.*s]\n", in->len, in->s);
|
|
LM_ERR("unknown key type [%.*s]\n", in->len, in->s);
|
|
goto error;
|
|
goto error;
|
|
@@ -850,6 +859,10 @@ int pv_get_xcap_uri(struct sip_msg *msg, pv_param_t *param,
|
|
/* get domain */
|
|
/* get domain */
|
|
if(pxs->xus->xuri.domain.len>0)
|
|
if(pxs->xus->xuri.domain.len>0)
|
|
return pv_get_strval(msg, param, res, &pxs->xus->xuri.domain);
|
|
return pv_get_strval(msg, param, res, &pxs->xus->xuri.domain);
|
|
|
|
+ case 11:
|
|
|
|
+ /* get xuiddomain */
|
|
|
|
+ if(pxs->xus->xuri.xuiddomain.len>0)
|
|
|
|
+ return pv_get_strval(msg, param, res, &pxs->xus->xuri.xuiddomain);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
return pv_get_null(msg, param, res);
|
|
return pv_get_null(msg, param, res);
|