Module: kamailio
Branch: master
Commit: 8e037f623ae6daf58e092d8a41430fd13d1d38ec
URL: https://github.com/kamailio/kamailio/commit/8e037f623ae6daf58e092d8a41430fd…
Author: Juha Heinanen <jh(a)tutpro.com>
Committer: Juha Heinanen <jh(a)tutpro.com>
Date: 2017-04-08T10:31:23+03:00
modules/siputils: made tel2sip to return 2 if no conversion was needed
---
Modified: src/modules/siputils/README
Modified: src/modules/siputils/checks.c
Modified: src/modules/siputils/doc/siputils_admin.xml
---
Diff: https://github.com/kamailio/kamailio/commit/8e037f623ae6daf58e092d8a41430fd…
Patch: https://github.com/kamailio/kamailio/commit/8e037f623ae6daf58e092d8a41430fd…
---
diff --git a/src/modules/siputils/README b/src/modules/siputils/README
index e7e5b79..8815baa 100644
--- a/src/modules/siputils/README
+++ b/src/modules/siputils/README
@@ -561,8 +561,8 @@ get_uri_param("nat", "$var(nat)");
Converts URI in first param (pseudo variable or string) to SIP URI, if
it is a tel URI. If conversion was done, writes resulting SIP URI to
- third param (pseudo variable). Returns 1 if conversion succeeded or if
- no conversion was needed.
+ third param (pseudo variable). Returns 1 if conversion succeeded, 2 if
+ no conversion was needed, and -1 in case of error.
The conversion follows the rules in RFC 3261 section 19.1.6:
* Visual separators ( "-", ".", "(", ")" ) are removed from tel URI
diff --git a/src/modules/siputils/checks.c b/src/modules/siputils/checks.c
index ca6991f..0a33bdd 100644
--- a/src/modules/siputils/checks.c
+++ b/src/modules/siputils/checks.c
@@ -349,7 +349,7 @@ int add_uri_param(struct sip_msg* _msg, char* _param, char* _s2)
/*
* Converts URI, if it is tel URI, to SIP URI. Returns 1, if
- * conversion succeeded or if no conversion was needed, i.e., URI was not
+ * conversion succeeded and 2 if no conversion was needed, i.e., URI was not
* tel URI. Returns -1, if conversion failed. Takes SIP URI hostpart from
* second parameter and (if needed) writes the result to third paramater.
*/
@@ -364,15 +364,17 @@ int tel2sip(struct sip_msg* _msg, char* _uri, char* _hostpart, char* _res)
/* get parameters */
if (get_str_fparam(&uri, _msg, (fparam_t*)_uri) < 0) {
LM_ERR("failed to get uri value\n");
+ return -1;
}
if (get_str_fparam(&hostpart, _msg, (fparam_t*)_hostpart) < 0) {
LM_ERR("failed to get hostpart value\n");
+ return -1;
}
res = (pv_spec_t *)_res;
/* check if anything needs to be done */
- if (uri.len < 4) return 1;
- if (strncasecmp(uri.s, "tel:", 4) != 0) return 1;
+ if (uri.len < 4) return 2;
+ if (strncasecmp(uri.s, "tel:", 4) != 0) return 2;
/* reserve memory for clean tel uri */
tel_uri.s = pkg_malloc(uri.len+1);
diff --git a/src/modules/siputils/doc/siputils_admin.xml b/src/modules/siputils/doc/siputils_admin.xml
index e28f7a2..2031ad2 100644
--- a/src/modules/siputils/doc/siputils_admin.xml
+++ b/src/modules/siputils/doc/siputils_admin.xml
@@ -513,8 +513,8 @@ get_uri_param("nat", "$var(nat)");
Converts URI in first param (pseudo variable or string) to
SIP URI, if it is a tel URI. If conversion was done,
writes resulting SIP URI to third param (pseudo variable).
- Returns 1 if conversion succeeded or if no conversion
- was needed.
+ Returns 1 if conversion succeeded, 2 if no conversion
+ was needed, and -1 in case of error.
</para>
<para>
The conversion follows the rules in RFC 3261 section 19.1.6:
if registrar method_filtering param is set, lookup produces -2 and $du
is not set if method is not listed in allow header of register request.
this is fine with initial requests, but in case of an invite dialog,
initial invite may list another set of methods that the ua supports in
in-dialog requests.
if request uri of in-dialog request is gruu, lookup on it would thus
fail and $du is not set if method of the request was not in allow header
of register request, but was in allow header of initial invite.
in order to solve the problem, my suggestion is that lookup would set
$du also when it returns -2. comments?
-- juha