|
@@ -13,8 +13,8 @@
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
* GNU General Public License for more details.
|
|
*
|
|
*
|
|
- * You should have received a copy of the GNU General Public License
|
|
|
|
- * along with this program; if not, write to the Free Software
|
|
|
|
|
|
+ * You should have received a copy of the GNU General Public License
|
|
|
|
+ * along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
@@ -39,26 +39,26 @@ static str _sr_uri_empty = { _sr_uri_empty_buf, 0 };
|
|
|
|
|
|
/* buf= pointer to begining of uri (sip:[email protected]:5060;a=b?h=i)
|
|
/* buf= pointer to begining of uri (sip:[email protected]:5060;a=b?h=i)
|
|
* len= len of uri
|
|
* len= len of uri
|
|
- * returns: fills uri & returns <0 on error or 0 if ok
|
|
|
|
|
|
+ * returns: fills uri & returns <0 on error or 0 if ok
|
|
*/
|
|
*/
|
|
int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
{
|
|
{
|
|
enum states { URI_INIT, URI_USER, URI_PASSWORD, URI_PASSWORD_ALPHA,
|
|
enum states { URI_INIT, URI_USER, URI_PASSWORD, URI_PASSWORD_ALPHA,
|
|
URI_HOST, URI_HOST_P,
|
|
URI_HOST, URI_HOST_P,
|
|
- URI_HOST6_P, URI_HOST6_END, URI_PORT,
|
|
|
|
|
|
+ URI_HOST6_P, URI_HOST6_END, URI_PORT,
|
|
URI_PARAM, URI_PARAM_P, URI_VAL_P, URI_HEADERS,
|
|
URI_PARAM, URI_PARAM_P, URI_VAL_P, URI_HEADERS,
|
|
/* param states */
|
|
/* param states */
|
|
/* transport */
|
|
/* transport */
|
|
PT_T, PT_R, PT_A, PT_N, PT_S, PT_P, PT_O, PT_R2, PT_T2,
|
|
PT_T, PT_R, PT_A, PT_N, PT_S, PT_P, PT_O, PT_R2, PT_T2,
|
|
PT_eq,
|
|
PT_eq,
|
|
/* ttl */
|
|
/* ttl */
|
|
- PTTL_T2, PTTL_L, PTTL_eq,
|
|
|
|
|
|
+ PTTL_T2, PTTL_L, PTTL_eq,
|
|
/* user */
|
|
/* user */
|
|
PU_U, PU_S, PU_E, PU_R, PU_eq,
|
|
PU_U, PU_S, PU_E, PU_R, PU_eq,
|
|
/* method */
|
|
/* method */
|
|
PM_M, PM_E, PM_T, PM_H, PM_O, PM_D, PM_eq,
|
|
PM_M, PM_E, PM_T, PM_H, PM_O, PM_D, PM_eq,
|
|
/* maddr */
|
|
/* maddr */
|
|
- PMA_A, PMA_D, PMA_D2, PMA_R, PMA_eq,
|
|
|
|
|
|
+ PMA_A, PMA_D, PMA_D2, PMA_R, PMA_eq,
|
|
/* lr */
|
|
/* lr */
|
|
PLR_L, PLR_R_FIN, PLR_eq,
|
|
PLR_L, PLR_R_FIN, PLR_eq,
|
|
/* r2 */
|
|
/* r2 */
|
|
@@ -68,7 +68,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
#ifdef USE_COMP
|
|
#ifdef USE_COMP
|
|
/* comp */
|
|
/* comp */
|
|
PCOMP_C, PCOMP_O, PCOMP_M, PCOMP_P, PCOMP_eq,
|
|
PCOMP_C, PCOMP_O, PCOMP_M, PCOMP_P, PCOMP_eq,
|
|
-
|
|
|
|
|
|
+
|
|
/* comp values */
|
|
/* comp values */
|
|
/* sigcomp */
|
|
/* sigcomp */
|
|
VCOMP_S, VCOMP_SIGC_I, VCOMP_SIGC_G,
|
|
VCOMP_S, VCOMP_SIGC_I, VCOMP_SIGC_G,
|
|
@@ -78,14 +78,14 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
VCOMP_SGZ_E, VCOMP_SGZ_R, VCOMP_SGZ_G,
|
|
VCOMP_SGZ_E, VCOMP_SGZ_R, VCOMP_SGZ_G,
|
|
VCOMP_SGZ_Z_FIN,
|
|
VCOMP_SGZ_Z_FIN,
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+
|
|
/* transport values */
|
|
/* transport values */
|
|
/* udp */
|
|
/* udp */
|
|
VU_U, VU_D, VU_P_FIN,
|
|
VU_U, VU_D, VU_P_FIN,
|
|
/* tcp */
|
|
/* tcp */
|
|
VT_T, VT_C, VT_P_FIN,
|
|
VT_T, VT_C, VT_P_FIN,
|
|
/* tls */
|
|
/* tls */
|
|
- VTLS_L, VTLS_S_FIN,
|
|
|
|
|
|
+ VTLS_L, VTLS_S_FIN,
|
|
/* sctp */
|
|
/* sctp */
|
|
VS_S, VS_C, VS_T, VS_P_FIN,
|
|
VS_S, VS_C, VS_T, VS_P_FIN,
|
|
/* ws */
|
|
/* ws */
|
|
@@ -113,17 +113,17 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
str comp_str; /* not returned for now */
|
|
str comp_str; /* not returned for now */
|
|
str comp_val; /* not returned for now */
|
|
str comp_val; /* not returned for now */
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+
|
|
#define SIP_SCH 0x3a706973
|
|
#define SIP_SCH 0x3a706973
|
|
#define SIPS_SCH 0x73706973
|
|
#define SIPS_SCH 0x73706973
|
|
#define TEL_SCH 0x3a6c6574
|
|
#define TEL_SCH 0x3a6c6574
|
|
#define URN_SCH 0x3a6e7275
|
|
#define URN_SCH 0x3a6e7275
|
|
-
|
|
|
|
|
|
+
|
|
#define case_port( ch, var) \
|
|
#define case_port( ch, var) \
|
|
case ch: \
|
|
case ch: \
|
|
- (var)=(var)*10+ch-'0'; \
|
|
|
|
- break
|
|
|
|
-
|
|
|
|
|
|
+ (var)=(var)*10+ch-'0'; \
|
|
|
|
+ break
|
|
|
|
+
|
|
#define still_at_user \
|
|
#define still_at_user \
|
|
if (found_user==0){ \
|
|
if (found_user==0){ \
|
|
user.s=uri->host.s; \
|
|
user.s=uri->host.s; \
|
|
@@ -148,7 +148,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
found_user=1;\
|
|
found_user=1;\
|
|
error_headers=0; \
|
|
error_headers=0; \
|
|
state=URI_HOST; \
|
|
state=URI_HOST; \
|
|
- }else goto error_bad_char
|
|
|
|
|
|
+ }else goto error_bad_char
|
|
|
|
|
|
#define check_host_end \
|
|
#define check_host_end \
|
|
case ':': \
|
|
case ':': \
|
|
@@ -172,14 +172,14 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
break; \
|
|
break; \
|
|
case '&': \
|
|
case '&': \
|
|
case '@': \
|
|
case '@': \
|
|
- goto error_bad_char
|
|
|
|
|
|
+ goto error_bad_char
|
|
|
|
|
|
|
|
|
|
#define param_set(t_start, v_start) \
|
|
#define param_set(t_start, v_start) \
|
|
param->s=(t_start);\
|
|
param->s=(t_start);\
|
|
param->len=(p-(t_start));\
|
|
param->len=(p-(t_start));\
|
|
param_val->s=(v_start); \
|
|
param_val->s=(v_start); \
|
|
- param_val->len=(p-(v_start))
|
|
|
|
|
|
+ param_val->len=(p-(v_start))
|
|
|
|
|
|
#define semicolon_case \
|
|
#define semicolon_case \
|
|
case';': \
|
|
case';': \
|
|
@@ -187,7 +187,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
found_user=1;/* no user, pass cannot contain ';'*/ \
|
|
found_user=1;/* no user, pass cannot contain ';'*/ \
|
|
pass=0; \
|
|
pass=0; \
|
|
} \
|
|
} \
|
|
- state=URI_PARAM /* new param */
|
|
|
|
|
|
+ state=URI_PARAM /* new param */
|
|
|
|
|
|
#define question_case \
|
|
#define question_case \
|
|
case '?': \
|
|
case '?': \
|
|
@@ -328,7 +328,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
break; \
|
|
break; \
|
|
} \
|
|
} \
|
|
break
|
|
break
|
|
-
|
|
|
|
|
|
+
|
|
|
|
|
|
#ifdef USE_COMP
|
|
#ifdef USE_COMP
|
|
#define comp_fin(c_state, comp_no) \
|
|
#define comp_fin(c_state, comp_no) \
|
|
@@ -351,7 +351,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
break; \
|
|
break; \
|
|
} \
|
|
} \
|
|
break
|
|
break
|
|
-
|
|
|
|
|
|
+
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* init */
|
|
/* init */
|
|
@@ -381,7 +381,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
}else if (scheme==URN_SCH){
|
|
}else if (scheme==URN_SCH){
|
|
uri->type=URN_URI_T;
|
|
uri->type=URN_URI_T;
|
|
}else goto error_bad_uri;
|
|
}else goto error_bad_uri;
|
|
-
|
|
|
|
|
|
+
|
|
s=p;
|
|
s=p;
|
|
for(;p<end; p++){
|
|
for(;p<end; p++){
|
|
switch((unsigned char)state){
|
|
switch((unsigned char)state){
|
|
@@ -398,11 +398,11 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
/* the same as above for ':' */
|
|
/* the same as above for ':' */
|
|
goto error_bad_char;
|
|
goto error_bad_char;
|
|
case '@': /* error no user part, or
|
|
case '@': /* error no user part, or
|
|
- be forgiving and accept it ? */
|
|
|
|
|
|
+ * be forgiving and accept it ? */
|
|
default:
|
|
default:
|
|
state=URI_USER;
|
|
state=URI_USER;
|
|
}
|
|
}
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
case URI_USER:
|
|
case URI_USER:
|
|
switch(*p){
|
|
switch(*p){
|
|
case '@':
|
|
case '@':
|
|
@@ -532,7 +532,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
case '[':
|
|
case '[':
|
|
state=URI_HOST6_P;
|
|
state=URI_HOST6_P;
|
|
break;
|
|
break;
|
|
- case ':':
|
|
|
|
|
|
+ case ':':
|
|
case ';':
|
|
case ';':
|
|
case '?': /* null host name ->invalid */
|
|
case '?': /* null host name ->invalid */
|
|
case '&':
|
|
case '&':
|
|
@@ -719,7 +719,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
/* ws */
|
|
/* ws */
|
|
value_switch(VW_W, 's', 'S', VW_S_FIN);
|
|
value_switch(VW_W, 's', 'S', VW_S_FIN);
|
|
transport_fin(VW_S_FIN, PROTO_WS);
|
|
transport_fin(VW_S_FIN, PROTO_WS);
|
|
-
|
|
|
|
|
|
+
|
|
/* ttl */
|
|
/* ttl */
|
|
param_switch(PTTL_T2, 'l', 'L', PTTL_L);
|
|
param_switch(PTTL_T2, 'l', 'L', PTTL_L);
|
|
param_switch1(PTTL_L, '=', PTTL_eq);
|
|
param_switch1(PTTL_L, '=', PTTL_eq);
|
|
@@ -733,7 +733,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
state=URI_VAL_P;
|
|
state=URI_VAL_P;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
-
|
|
|
|
|
|
+
|
|
/* user param */
|
|
/* user param */
|
|
param_switch(PU_U, 's', 'S', PU_S);
|
|
param_switch(PU_U, 's', 'S', PU_S);
|
|
param_switch(PU_S, 'e', 'E', PU_E);
|
|
param_switch(PU_S, 'e', 'E', PU_E);
|
|
@@ -749,7 +749,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
state=URI_VAL_P;
|
|
state=URI_VAL_P;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
-
|
|
|
|
|
|
+
|
|
/* method*/
|
|
/* method*/
|
|
param_switch_big(PM_M, 'e', 'E', 'a', 'A', PM_E, PMA_A);
|
|
param_switch_big(PM_M, 'e', 'E', 'a', 'A', PM_E, PMA_A);
|
|
param_switch(PM_E, 't', 'T', PM_T);
|
|
param_switch(PM_E, 't', 'T', PM_T);
|
|
@@ -783,22 +783,22 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
state=URI_VAL_P;
|
|
state=URI_VAL_P;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
-
|
|
|
|
|
|
+
|
|
/* lr */
|
|
/* lr */
|
|
param_switch(PLR_L, 'r', 'R', PLR_R_FIN);
|
|
param_switch(PLR_L, 'r', 'R', PLR_R_FIN);
|
|
case PLR_R_FIN:
|
|
case PLR_R_FIN:
|
|
switch(*p){
|
|
switch(*p){
|
|
case '@':
|
|
case '@':
|
|
- still_at_user;
|
|
|
|
|
|
+ still_at_user;
|
|
break;
|
|
break;
|
|
case '=':
|
|
case '=':
|
|
state=PLR_eq;
|
|
state=PLR_eq;
|
|
break;
|
|
break;
|
|
- semicolon_case;
|
|
|
|
|
|
+ semicolon_case;
|
|
uri->lr.s=b;
|
|
uri->lr.s=b;
|
|
uri->lr.len=(p-b);
|
|
uri->lr.len=(p-b);
|
|
break;
|
|
break;
|
|
- question_case;
|
|
|
|
|
|
+ question_case;
|
|
uri->lr.s=b;
|
|
uri->lr.s=b;
|
|
uri->lr.len=(p-b);
|
|
uri->lr.len=(p-b);
|
|
break;
|
|
break;
|
|
@@ -824,16 +824,16 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
case PR2_2_FIN:
|
|
case PR2_2_FIN:
|
|
switch(*p){
|
|
switch(*p){
|
|
case '@':
|
|
case '@':
|
|
- still_at_user;
|
|
|
|
|
|
+ still_at_user;
|
|
break;
|
|
break;
|
|
case '=':
|
|
case '=':
|
|
state=PR2_eq;
|
|
state=PR2_eq;
|
|
break;
|
|
break;
|
|
- semicolon_case;
|
|
|
|
|
|
+ semicolon_case;
|
|
uri->r2.s=b;
|
|
uri->r2.s=b;
|
|
uri->r2.len=(p-b);
|
|
uri->r2.len=(p-b);
|
|
break;
|
|
break;
|
|
- question_case;
|
|
|
|
|
|
+ question_case;
|
|
uri->r2.s=b;
|
|
uri->r2.s=b;
|
|
uri->r2.len=(p-b);
|
|
uri->r2.len=(p-b);
|
|
break;
|
|
break;
|
|
@@ -920,18 +920,17 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
value_switch(VCOMP_SIGC_O, 'm', 'M', VCOMP_SIGC_M);
|
|
value_switch(VCOMP_SIGC_O, 'm', 'M', VCOMP_SIGC_M);
|
|
value_switch(VCOMP_SIGC_M, 'p', 'P', VCOMP_SIGC_P_FIN);
|
|
value_switch(VCOMP_SIGC_M, 'p', 'P', VCOMP_SIGC_P_FIN);
|
|
comp_fin(VCOMP_SIGC_P_FIN, COMP_SIGCOMP);
|
|
comp_fin(VCOMP_SIGC_P_FIN, COMP_SIGCOMP);
|
|
-
|
|
|
|
|
|
+
|
|
/* sergz*/
|
|
/* sergz*/
|
|
value_switch(VCOMP_SGZ_E, 'r', 'R', VCOMP_SGZ_R);
|
|
value_switch(VCOMP_SGZ_E, 'r', 'R', VCOMP_SGZ_R);
|
|
value_switch(VCOMP_SGZ_R, 'g', 'G', VCOMP_SGZ_G);
|
|
value_switch(VCOMP_SGZ_R, 'g', 'G', VCOMP_SGZ_G);
|
|
value_switch(VCOMP_SGZ_G, 'z', 'Z', VCOMP_SGZ_Z_FIN);
|
|
value_switch(VCOMP_SGZ_G, 'z', 'Z', VCOMP_SGZ_Z_FIN);
|
|
comp_fin(VCOMP_SGZ_Z_FIN, COMP_SERGZ);
|
|
comp_fin(VCOMP_SGZ_Z_FIN, COMP_SERGZ);
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
case URI_HEADERS:
|
|
case URI_HEADERS:
|
|
- /* for now nobody needs them so we completely ignore the
|
|
|
|
|
|
+ /* for now nobody needs them so we completely ignore the
|
|
* headers (they are not allowed in request uri) --andrei */
|
|
* headers (they are not allowed in request uri) --andrei */
|
|
switch(*p){
|
|
switch(*p){
|
|
case '@':
|
|
case '@':
|
|
@@ -996,7 +995,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
if (scheme==URN_SCH){
|
|
if (scheme==URN_SCH){
|
|
uri->host.s=s;
|
|
uri->host.s=s;
|
|
uri->host.len=p-s;
|
|
uri->host.len=p-s;
|
|
- DBG("parsed urn scheme with host: %.*s\n",
|
|
|
|
|
|
+ LM_DBG("parsed urn scheme with host: %.*s\n",
|
|
uri->host.len, uri->host.s);
|
|
uri->host.len, uri->host.s);
|
|
/* this is the port, it can't be the passwd */
|
|
/* this is the port, it can't be the passwd */
|
|
}else goto error_bad_port;
|
|
}else goto error_bad_port;
|
|
@@ -1168,15 +1167,15 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
/* save the original sip: URI parameters in sip_params */
|
|
/* save the original sip: URI parameters in sip_params */
|
|
uri->sip_params=uri->params;
|
|
uri->sip_params=uri->params;
|
|
if ((phone2tel) &&
|
|
if ((phone2tel) &&
|
|
- (uri->user_param_val.len == 5) &&
|
|
|
|
- (strncmp(uri->user_param_val.s, "phone", 5) == 0)
|
|
|
|
|
|
+ (uri->user_param_val.len == 5) &&
|
|
|
|
+ (strncmp(uri->user_param_val.s, "phone", 5) == 0)
|
|
) {
|
|
) {
|
|
uri->type = TEL_URI_T;
|
|
uri->type = TEL_URI_T;
|
|
uri->flags |= URI_SIP_USER_PHONE;
|
|
uri->flags |= URI_SIP_USER_PHONE;
|
|
/* move params from user into uri->params */
|
|
/* move params from user into uri->params */
|
|
p=q_memchr(uri->user.s, ';', uri->user.len);
|
|
p=q_memchr(uri->user.s, ';', uri->user.len);
|
|
if (p){
|
|
if (p){
|
|
- /* NOTE:
|
|
|
|
|
|
+ /* NOTE:
|
|
* specialized uri params (user, maddr, etc.) still hold
|
|
* specialized uri params (user, maddr, etc.) still hold
|
|
* the values from the sip-uri envelope
|
|
* the values from the sip-uri envelope
|
|
* while uri->params point to the params in the embedded tel uri
|
|
* while uri->params point to the params in the embedded tel uri
|
|
@@ -1202,7 +1201,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
case URN_URI_T:
|
|
case URN_URI_T:
|
|
break;
|
|
break;
|
|
case ERROR_URI_T:
|
|
case ERROR_URI_T:
|
|
- LOG(L_ERR, "ERROR: parse_uri unexpected error (BUG?)\n");
|
|
|
|
|
|
+ LM_ERR("parse uri unexpected error (BUG?)\n");
|
|
goto error_bad_uri;
|
|
goto error_bad_uri;
|
|
break; /* do nothing, avoids a compilation warning */
|
|
break; /* do nothing, avoids a compilation warning */
|
|
}
|
|
}
|
|
@@ -1212,7 +1211,7 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
|
|
|
|
#ifdef EXTRA_DEBUG
|
|
#ifdef EXTRA_DEBUG
|
|
/* do stuff */
|
|
/* do stuff */
|
|
- DBG("parsed uri:\n type=%d user=<%.*s>(%d)\n passwd=<%.*s>(%d)\n"
|
|
|
|
|
|
+ LM_DBG("parsed uri:\n type=%d user=<%.*s>(%d)\n passwd=<%.*s>(%d)\n"
|
|
" host=<%.*s>(%d)\n port=<%.*s>(%d): %d\n params=<%.*s>(%d)\n"
|
|
" host=<%.*s>(%d)\n port=<%.*s>(%d): %d\n params=<%.*s>(%d)\n"
|
|
" headers=<%.*s>(%d)\n",
|
|
" headers=<%.*s>(%d)\n",
|
|
uri->type,
|
|
uri->type,
|
|
@@ -1223,76 +1222,73 @@ int parse_uri(char* buf, int len, struct sip_uri* uri)
|
|
uri->params.len, ZSW(uri->params.s), uri->params.len,
|
|
uri->params.len, ZSW(uri->params.s), uri->params.len,
|
|
uri->headers.len, ZSW(uri->headers.s), uri->headers.len
|
|
uri->headers.len, ZSW(uri->headers.s), uri->headers.len
|
|
);
|
|
);
|
|
- DBG(" uri flags : ");
|
|
|
|
- if (uri->flags & URI_USER_NORMALIZE) DBG("user_need_norm ");
|
|
|
|
- if (uri->flags & URI_SIP_USER_PHONE) DBG("sip_user_phone ");
|
|
|
|
- DBG(" value=%d\n",uri->flags);
|
|
|
|
- DBG(" uri params:\n transport=<%.*s>, val=<%.*s>, proto=%d\n",
|
|
|
|
|
|
+ LM_DBG(" uri flags : ");
|
|
|
|
+ if (uri->flags & URI_USER_NORMALIZE) LM_DBG("user_need_norm ");
|
|
|
|
+ if (uri->flags & URI_SIP_USER_PHONE) LM_DBG("sip_user_phone ");
|
|
|
|
+ LM_DBG(" value=%d\n",uri->flags);
|
|
|
|
+ LM_DBG(" uri params:\n transport=<%.*s>, val=<%.*s>, proto=%d\n",
|
|
uri->transport.len, ZSW(uri->transport.s), uri->transport_val.len,
|
|
uri->transport.len, ZSW(uri->transport.s), uri->transport_val.len,
|
|
ZSW(uri->transport_val.s), uri->proto);
|
|
ZSW(uri->transport_val.s), uri->proto);
|
|
- DBG(" user-param=<%.*s>, val=<%.*s>\n",
|
|
|
|
- uri->user_param.len, ZSW(uri->user_param.s),
|
|
|
|
|
|
+ LM_DBG(" user-param=<%.*s>, val=<%.*s>\n",
|
|
|
|
+ uri->user_param.len, ZSW(uri->user_param.s),
|
|
uri->user_param_val.len, ZSW(uri->user_param_val.s));
|
|
uri->user_param_val.len, ZSW(uri->user_param_val.s));
|
|
- DBG(" method=<%.*s>, val=<%.*s>\n",
|
|
|
|
- uri->method.len, ZSW(uri->method.s),
|
|
|
|
|
|
+ LM_DBG(" method=<%.*s>, val=<%.*s>\n",
|
|
|
|
+ uri->method.len, ZSW(uri->method.s),
|
|
uri->method_val.len, ZSW(uri->method_val.s));
|
|
uri->method_val.len, ZSW(uri->method_val.s));
|
|
- DBG(" ttl=<%.*s>, val=<%.*s>\n",
|
|
|
|
- uri->ttl.len, ZSW(uri->ttl.s),
|
|
|
|
|
|
+ LM_DBG(" ttl=<%.*s>, val=<%.*s>\n",
|
|
|
|
+ uri->ttl.len, ZSW(uri->ttl.s),
|
|
uri->ttl_val.len, ZSW(uri->ttl_val.s));
|
|
uri->ttl_val.len, ZSW(uri->ttl_val.s));
|
|
- DBG(" maddr=<%.*s>, val=<%.*s>\n",
|
|
|
|
- uri->maddr.len, ZSW(uri->maddr.s),
|
|
|
|
|
|
+ LM_DBG(" maddr=<%.*s>, val=<%.*s>\n",
|
|
|
|
+ uri->maddr.len, ZSW(uri->maddr.s),
|
|
uri->maddr_val.len, ZSW(uri->maddr_val.s));
|
|
uri->maddr_val.len, ZSW(uri->maddr_val.s));
|
|
- DBG(" lr=<%.*s>\n", uri->lr.len, ZSW(uri->lr.s));
|
|
|
|
- DBG(" r2=<%.*s>\n", uri->r2.len, ZSW(uri->r2.s));
|
|
|
|
|
|
+ LM_DBG(" lr=<%.*s>\n", uri->lr.len, ZSW(uri->lr.s));
|
|
|
|
+ LM_DBG(" r2=<%.*s>\n", uri->r2.len, ZSW(uri->r2.s));
|
|
#ifdef USE_COMP
|
|
#ifdef USE_COMP
|
|
- DBG(" comp=%d\n", uri->comp);
|
|
|
|
|
|
+ LM_DBG(" comp=%d\n", uri->comp);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#endif
|
|
#endif
|
|
return 0;
|
|
return 0;
|
|
-
|
|
|
|
|
|
+
|
|
error_too_short:
|
|
error_too_short:
|
|
- DBG("parse_uri: uri too short: <%.*s> (%d)\n",
|
|
|
|
|
|
+ LM_DBG("uri too short: <%.*s> (%d)\n",
|
|
len, ZSW(buf), len);
|
|
len, ZSW(buf), len);
|
|
goto error_exit;
|
|
goto error_exit;
|
|
error_bad_char:
|
|
error_bad_char:
|
|
- DBG("parse_uri: bad char '%c' in state %d"
|
|
|
|
|
|
+ LM_DBG("bad char '%c' in state %d"
|
|
" parsed: <%.*s> (%d) / <%.*s> (%d)\n",
|
|
" parsed: <%.*s> (%d) / <%.*s> (%d)\n",
|
|
*p, state, (int)(p-buf), ZSW(buf), (int)(p-buf),
|
|
*p, state, (int)(p-buf), ZSW(buf), (int)(p-buf),
|
|
len, ZSW(buf), len);
|
|
len, ZSW(buf), len);
|
|
goto error_exit;
|
|
goto error_exit;
|
|
error_bad_host:
|
|
error_bad_host:
|
|
- DBG("parse_uri: bad host in uri (error at char %c in"
|
|
|
|
|
|
+ LM_DBG("bad host in uri (error at char %c in"
|
|
" state %d) parsed: <%.*s>(%d) /<%.*s> (%d)\n",
|
|
" state %d) parsed: <%.*s>(%d) /<%.*s> (%d)\n",
|
|
*p, state, (int)(p-buf), ZSW(buf), (int)(p-buf),
|
|
*p, state, (int)(p-buf), ZSW(buf), (int)(p-buf),
|
|
len, ZSW(buf), len);
|
|
len, ZSW(buf), len);
|
|
goto error_exit;
|
|
goto error_exit;
|
|
error_bad_port:
|
|
error_bad_port:
|
|
- DBG("parse_uri: bad port in uri (error at char %c in"
|
|
|
|
|
|
+ LM_DBG("bad port in uri (error at char %c in"
|
|
" state %d) parsed: <%.*s>(%d) /<%.*s> (%d)\n",
|
|
" state %d) parsed: <%.*s>(%d) /<%.*s> (%d)\n",
|
|
*p, state, (int)(p-buf), ZSW(buf), (int)(p-buf),
|
|
*p, state, (int)(p-buf), ZSW(buf), (int)(p-buf),
|
|
len, ZSW(buf), len);
|
|
len, ZSW(buf), len);
|
|
goto error_exit;
|
|
goto error_exit;
|
|
error_invalid_port:
|
|
error_invalid_port:
|
|
- DBG("parse_uri: bad port in uri: [%.*s] in <%.*s>\n",
|
|
|
|
|
|
+ LM_DBG("bad port in uri: [%.*s] in <%.*s>\n",
|
|
uri->port.len, uri->port.s, len, ZSW(buf));
|
|
uri->port.len, uri->port.s, len, ZSW(buf));
|
|
goto error_exit;
|
|
goto error_exit;
|
|
error_bad_uri:
|
|
error_bad_uri:
|
|
- DBG("parse_uri: bad uri, state %d"
|
|
|
|
- " parsed: <%.*s> (%d) / <%.*s> (%d)\n",
|
|
|
|
|
|
+ LM_DBG("bad uri, state %d parsed: <%.*s> (%d) / <%.*s> (%d)\n",
|
|
state, (int)(p-buf), ZSW(buf), (int)(p-buf), len,
|
|
state, (int)(p-buf), ZSW(buf), (int)(p-buf), len,
|
|
ZSW(buf), len);
|
|
ZSW(buf), len);
|
|
goto error_exit;
|
|
goto error_exit;
|
|
error_headers:
|
|
error_headers:
|
|
- DBG("parse_uri: bad uri headers: <%.*s>(%d)"
|
|
|
|
- " / <%.*s>(%d)\n",
|
|
|
|
|
|
+ LM_DBG("bad uri headers: <%.*s>(%d) / <%.*s>(%d)\n",
|
|
uri->headers.len, ZSW(uri->headers.s), uri->headers.len,
|
|
uri->headers.len, ZSW(uri->headers.s), uri->headers.len,
|
|
len, ZSW(buf), len);
|
|
len, ZSW(buf), len);
|
|
goto error_exit;
|
|
goto error_exit;
|
|
error_bug:
|
|
error_bug:
|
|
- LOG(L_CRIT, "BUG: parse_uri: bad state %d"
|
|
|
|
- " parsed: <%.*s> (%d) / <%.*s> (%d)\n",
|
|
|
|
- state, (int)(p-buf), ZSW(buf), (int)(p-buf), len, ZSW(buf), len);
|
|
|
|
|
|
+ LM_CRIT("BUG: bad state %d parsed: <%.*s> (%d) / <%.*s> (%d)\n",
|
|
|
|
+ state, (int)(p-buf), ZSW(buf), (int)(p-buf), len, ZSW(buf), len);
|
|
error_exit:
|
|
error_exit:
|
|
ser_error=E_BAD_URI;
|
|
ser_error=E_BAD_URI;
|
|
uri->type=ERROR_URI_T;
|
|
uri->type=ERROR_URI_T;
|
|
@@ -1307,8 +1303,7 @@ static inline int _parse_ruri(str *uri,
|
|
if (*status) return 1;
|
|
if (*status) return 1;
|
|
|
|
|
|
if (parse_uri(uri->s, uri->len, parsed_uri)<0) {
|
|
if (parse_uri(uri->s, uri->len, parsed_uri)<0) {
|
|
- LOG(L_ERR, "ERROR: _parse_ruri: bad uri <%.*s>\n",
|
|
|
|
- uri->len, ZSW(uri->s));
|
|
|
|
|
|
+ LM_ERR("bad uri <%.*s>\n", uri->len, ZSW(uri->s));
|
|
*status=0;
|
|
*status=0;
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
@@ -1330,8 +1325,7 @@ int parse_sip_msg_uri(struct sip_msg* msg)
|
|
tmp_len=msg->first_line.u.request.uri.len;
|
|
tmp_len=msg->first_line.u.request.uri.len;
|
|
}
|
|
}
|
|
if (parse_uri(tmp, tmp_len, &msg->parsed_uri)<0){
|
|
if (parse_uri(tmp, tmp_len, &msg->parsed_uri)<0){
|
|
- DBG("ERROR: parse_sip_msg_uri: bad uri <%.*s>\n",
|
|
|
|
- tmp_len, tmp);
|
|
|
|
|
|
+ LM_DBG("bad uri <%.*s>\n", tmp_len, tmp);
|
|
msg->parsed_uri_ok=0;
|
|
msg->parsed_uri_ok=0;
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
@@ -1345,7 +1339,7 @@ int parse_orig_ruri(struct sip_msg* msg)
|
|
|
|
|
|
ret=_parse_ruri(&REQ_LINE(msg).uri,
|
|
ret=_parse_ruri(&REQ_LINE(msg).uri,
|
|
&msg->parsed_orig_ruri_ok, &msg->parsed_orig_ruri);
|
|
&msg->parsed_orig_ruri_ok, &msg->parsed_orig_ruri);
|
|
- if (ret<0) LOG(L_ERR, "ERROR: parse_orig_ruri failed\n");
|
|
|
|
|
|
+ if (ret<0) LM_ERR("parse orig ruri failed\n");
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|