diff --git a/include/haproxy/http.h b/include/haproxy/http.h index fb47abdd4..582a66647 100644 --- a/include/haproxy/http.h +++ b/include/haproxy/http.h @@ -59,6 +59,9 @@ int http_parse_status_val(const struct ist value, struct ist *status, struct ist int http_compare_etags(struct ist etag1, struct ist etag2); +struct ist http_trim_leading_spht(struct ist value); +struct ist http_trim_trailing_spht(struct ist value); + /* * Given a path string and its length, find the position of beginning of the * query string. Returns NULL if no query string is found in the path. diff --git a/src/http.c b/src/http.c index 22a5a1418..d33169956 100644 --- a/src/http.c +++ b/src/http.c @@ -1074,3 +1074,34 @@ int http_compare_etags(struct ist etag1, struct ist etag2) return isteq(etag1, etag2); } + + +/* + * Trim leading space or horizontal tab characters from string. + * Returns the trimmed string. + */ +struct ist http_trim_leading_spht(struct ist value) +{ + struct ist ret = value; + + while (ret.len && HTTP_IS_SPHT(ret.ptr[0])) { + ++ret.ptr; + --ret.len; + } + + return ret; +} + +/* + * Trim trailing space or horizontal tab characters from string. + * Returns the trimmed string. + */ +struct ist http_trim_trailing_spht(struct ist value) +{ + struct ist ret = value; + + while (ret.len && HTTP_IS_SPHT(ret.ptr[-1])) + --ret.len; + + return ret; +}