diff --git a/src/switch_xml.c b/src/switch_xml.c
index 4efc62eb7d..651fba5408 100644
--- a/src/switch_xml.c
+++ b/src/switch_xml.c
@@ -956,9 +956,12 @@ static int preprocess_glob(const char *pattern, int write_fd, int rlevel)
 			*p = '\0';
 		}
 	} else {
-		dir_path = SWITCH_GLOBAL_dirs.conf_dir;
 		p = switch_core_sprintf(pool, "%s%s%s", SWITCH_GLOBAL_dirs.conf_dir, SWITCH_PATH_SEPARATOR, pattern);
 		pattern = p;
+		dir_path = switch_core_strdup(pool, pattern);
+		if ((p = strrchr(dir_path, *SWITCH_PATH_SEPARATOR))) {
+			*p = '\0';
+		}
 	}
 
 	switch_match_glob(pattern, &result, pool);
@@ -967,7 +970,6 @@ static int preprocess_glob(const char *pattern, int write_fd, int rlevel)
 
     for (i = 0; i < result->nelts; i++) {
 		char *path = list[i];
-
 		if (strcmp(path, ".") && strcmp(path, "..")) {
 			p = switch_core_sprintf(pool, "%s%s%s", dir_path, SWITCH_PATH_SEPARATOR, path);
 			if (preprocess(p, write_fd, rlevel) < 0) {