]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5555 improvement --resolve
authorBrian West <brian@freeswitch.org>
Fri, 12 Jul 2013 16:50:03 +0000 (11:50 -0500)
committerBrian West <brian@freeswitch.org>
Fri, 12 Jul 2013 16:50:10 +0000 (11:50 -0500)
src/include/switch_utils.h

index 755ac91d2755ca710b954a76fbe52431c2aa8a16..daceb854a6299e6cb317f9dd88fc8c70c41228de 100644 (file)
@@ -598,31 +598,39 @@ switch_mutex_unlock(obj->flag_mutex);
 
 #define switch_set_string(_dst, _src) switch_copy_string(_dst, _src, sizeof(_dst))
 
+SWITCH_DECLARE(char *) switch_url_encode(const char *url, char *buf, size_t len);
+SWITCH_DECLARE(char *) switch_url_decode(char *s);
 
 static inline char *switch_sanitize_number(char *number)
 {
-       char *p = number, *q;
+       char *p, *q;
        char warp[] = "/:";
        int i;
+       char *val;
 
        switch_assert(number);
 
-       if (!(strchr(p, '/') || strchr(p, ':') || strchr(p, '@') || strchr(p, '%'))) {
+       p = strdup(number);
+       val = p;
+       switch_url_decode(val);
+
+       if (!(strchr(val, '/') || strchr(val, ':') || strchr(val, '@') || strchr(val, '%'))) {
                return number;
        }
 
-       while ((q = strrchr(p, '@')))
+       while ((q = strrchr(val, '@')))
                *q = '\0';
        
-       while ((q = strrchr(p, '%')))
+       while ((q = strrchr(val, '%')))
                        *q = '\0';
 
        for (i = 0; i < (int) strlen(warp); i++) {
-               while (p && (q = strchr(p, warp[i])))
-                       p = q + 1;
+               while (val && (q = strchr(val, warp[i])))
+                       val = q + 1;
        }
+       free(p);
 
-       return p;
+       return val;
 }
 
 static inline switch_bool_t switch_string_var_check(char *s, switch_bool_t disable)
@@ -930,8 +938,6 @@ SWITCH_DECLARE(char *) switch_util_quote_shell_arg_pool(const char *string, swit
 
 
 #define SWITCH_READ_ACCEPTABLE(status) (status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK)
-SWITCH_DECLARE(char *) switch_url_encode(const char *url, char *buf, size_t len);
-SWITCH_DECLARE(char *) switch_url_decode(char *s);
 SWITCH_DECLARE(switch_bool_t) switch_simple_email(const char *to,
                                                                                                  const char *from,
                                                                                                  const char *headers,