summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/uri.c2
-rw-r--r--src/tests/uri_test.c14
2 files changed, 15 insertions, 1 deletions
diff --git a/src/core/uri.c b/src/core/uri.c
index a8fdb70a..aa6eedb9 100644
--- a/src/core/uri.c
+++ b/src/core/uri.c
@@ -419,11 +419,11 @@ struct uri * parse_uri ( const char *uri_string ) {
uri->port = tmp;
}
+ done:
/* Decode fields in-place */
for ( field = 0 ; field < URI_FIELDS ; field++ )
uri_decode_inplace ( uri, field );
- done:
DBGC ( uri, "URI parsed \"%s\" to", uri_string );
uri_dump ( uri );
DBGC ( uri, "\n" );
diff --git a/src/tests/uri_test.c b/src/tests/uri_test.c
index a068ab33..57f211aa 100644
--- a/src/tests/uri_test.c
+++ b/src/tests/uri_test.c
@@ -499,6 +499,18 @@ static struct uri_test uri_mailto = {
{ .scheme = "mailto", .opaque = "ipxe-devel@lists.ipxe.org" }
};
+/** Basic path-only URI */
+static struct uri_test uri_path = {
+ "/var/lib/tftpboot/pxelinux.0",
+ { .path = "/var/lib/tftpboot/pxelinux.0" },
+};
+
+/** Path-only URI with escaped characters */
+static struct uri_test uri_path_escaped = {
+ "/hello%20world%3F",
+ { .path = "/hello world?" },
+};
+
/** HTTP URI with all the trimmings */
static struct uri_test uri_http_all = {
"http://anon:password@example.com:3001/~foo/cgi-bin/foo.pl?a=b&c=d#bit",
@@ -877,6 +889,8 @@ static void uri_test_exec ( void ) {
uri_parse_format_dup_ok ( &uri_empty );
uri_parse_format_dup_ok ( &uri_boot_ipxe_org );
uri_parse_format_dup_ok ( &uri_mailto );
+ uri_parse_format_dup_ok ( &uri_path );
+ uri_parse_format_dup_ok ( &uri_path_escaped );
uri_parse_format_dup_ok ( &uri_http_all );
uri_parse_format_dup_ok ( &uri_http_escaped );
uri_parse_ok ( &uri_http_escaped_improper ); /* Parse only */