diff --git a/include/lnm/http/router.h b/include/lnm/http/router.h index 04956e4..f2ed321 100644 --- a/include/lnm/http/router.h +++ b/include/lnm/http/router.h @@ -49,7 +49,7 @@ lnm_http_route_err lnm_http_router_route(lnm_http_route_match *out, lnm_http_method method, const char *path); -lnm_err lnm_http_route_match_get(lnm_http_route_match_segment **out, - lnm_http_route_match *match, const char *key); +const lnm_http_route_match_segment * +lnm_http_route_match_get(lnm_http_route_match *match, const char *key); #endif diff --git a/src/http/lnm_http_router.c b/src/http/lnm_http_router.c index 6f99431..3dcc857 100644 --- a/src/http/lnm_http_router.c +++ b/src/http/lnm_http_router.c @@ -56,9 +56,7 @@ void lnm_http_route_segment_trie_free(lnm_http_route_segment_trie *trie) { } for (size_t i = 0; i < 128; i++) { - if (trie->children[i] != NULL) { - lnm_http_route_segment_trie_free(trie->children[i]); - } + lnm_http_route_segment_trie_free(trie->children[i]); } free(trie); @@ -94,8 +92,8 @@ lnm_err lnm_http_route_key_segment_insert(lnm_http_route *route, } static bool is_ascii(const char *s) { - while (*s != '0') { - if (*s > 127) { + while (*s != '\0') { + if (*s < 0) { return false; } @@ -269,10 +267,10 @@ lnm_http_route_err lnm_http_router_route(lnm_http_route_match *out, return __lnm_http_router_route(out, router, method, path, 0, 0); } -lnm_err lnm_http_route_match_get(lnm_http_route_match_segment **out, - lnm_http_route_match *match, const char *key) { +const lnm_http_route_match_segment * +lnm_http_route_match_get(lnm_http_route_match *match, const char *key) { if (match->route->key_segments == NULL) { - return lnm_err_not_found; + return NULL; } lnm_http_route_segment_trie *trie = match->route->key_segments; @@ -281,17 +279,15 @@ lnm_err lnm_http_route_match_get(lnm_http_route_match_segment **out, trie = trie->children[(unsigned char)*key]; if (trie == NULL) { - return lnm_err_not_found; + return NULL; } key++; } if (!trie->represents_segment) { - return lnm_err_not_found; + return NULL; } - *out = &match->key_segments[trie->index]; - - return lnm_err_ok; + return &match->key_segments[trie->index]; } diff --git a/test/routing.c b/test/routing.c index 7cc7aea..788caaa 100644 --- a/test/routing.c +++ b/test/routing.c @@ -29,12 +29,12 @@ void test_routing_simple() { TEST_CHECK(match.key_segments[1].start == 15); TEST_CHECK(match.key_segments[1].len == 9); - lnm_http_route_match_segment *segment; - TEST_CHECK(lnm_http_route_match_get(&segment, &match, "second") == lnm_err_ok); + const lnm_http_route_match_segment *segment; + TEST_CHECK((segment = lnm_http_route_match_get(&match, "second")) != NULL); TEST_CHECK(segment->start == 15); TEST_CHECK(segment->len == 9); - TEST_CHECK(lnm_http_route_match_get(&segment, &match, "yuhh") == lnm_err_not_found); - TEST_CHECK(lnm_http_route_match_get(&segment, &match, "hello") == lnm_err_ok); + TEST_CHECK((segment = lnm_http_route_match_get(&match, "yuhh")) == NULL); + TEST_CHECK((segment = lnm_http_route_match_get(&match, "hello")) != NULL); TEST_CHECK(segment->start == 6); TEST_CHECK(segment->len == 8); }