Skip to content

Commit

Permalink
Skip URI parameters when serving a directory (http_server)
Browse files Browse the repository at this point in the history
  • Loading branch information
robiwano committed Aug 10, 2023
1 parent c5e9d8a commit c907b75
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/supplemental/http/http_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ nni_http_handler_set_method(nni_http_handler *h, const char *method)

static nni_list http_servers =
NNI_LIST_INITIALIZER(http_servers, nni_http_server, node);
static nni_mtx http_servers_lk = NNI_MTX_INITIALIZER;
static nni_mtx http_servers_lk = NNI_MTX_INITIALIZER;

static void
http_sc_reap(void *arg)
Expand Down Expand Up @@ -1156,7 +1156,7 @@ nni_http_server_res_error(nni_http_server *s, nni_http_res *res)
http_error *epage;
char * body = NULL;
char * html = NULL;
size_t len = 0;
size_t len = 0;
uint16_t code = nni_http_res_get_status(res);
int rv;

Expand Down Expand Up @@ -1550,7 +1550,10 @@ http_handle_dir(nni_aio *aio)
}

for (uri = uri + len; *uri != '\0'; uri++) {
if (*uri == '/') {
if (*uri == '?') {
// Skip URI parameters
break;
} else if (*uri == '/') {
strcpy(dst, NNG_PLATFORM_DIR_SEP);
dst += sizeof(NNG_PLATFORM_DIR_SEP) - 1;
} else {
Expand Down
22 changes: 22 additions & 0 deletions tests/httpserver.c
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,24 @@ TestMain("HTTP Server", {
nng_free(data, size);
});

Convey("Named file with URI parameters works", {
char fullurl[256];
void * data;
size_t size;
uint16_t stat;
char * ctype;

snprintf(
fullurl, sizeof(fullurl), "%s/file.txt?param=123456", urlstr);
So(httpget(fullurl, &data, &size, &stat, &ctype) == 0);
So(stat == NNG_HTTP_STATUS_OK);
So(size == strlen(doc2));
So(memcmp(data, doc2, size) == 0);
So(strcmp(ctype, "text/plain") == 0);
nni_strfree(ctype);
nng_free(data, size);
});

Convey("Missing index gives 404", {
char fullurl[256];
void * data;
Expand Down Expand Up @@ -440,6 +458,7 @@ TestMain("HTTP Server", {
nng_url_free(curl);
nng_free(data, size);
});

Convey("Version 0.9 gives 505", {
char fullurl[256];
void * data;
Expand All @@ -462,6 +481,7 @@ TestMain("HTTP Server", {
nng_url_free(curl);
nng_free(data, size);
});

Convey("Missing Host gives 400", {
char fullurl[256];
void * data;
Expand Down Expand Up @@ -643,6 +663,7 @@ TestMain("HTTP Server", {
nng_url_free(curl);
nng_free(data, size);
});

Convey("Version 0.9 gives 505", {
char fullurl[256];
void * data;
Expand All @@ -665,6 +686,7 @@ TestMain("HTTP Server", {
nng_url_free(curl);
nng_free(data, size);
});

Convey("Missing Host gives 400", {
char fullurl[256];
void * data;
Expand Down

0 comments on commit c907b75

Please sign in to comment.