mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 20:46:11 +02:00
MINOR: http: Add enum etag_type http_get_etag_type(const struct ist)
http_get_etag_type returns whether a given `etag` is a strong, weak, or invalid ETag.
This commit is contained in:
parent
1e690bb6c4
commit
2493ee81d4
@ -124,6 +124,12 @@ struct http_method_desc {
|
||||
const struct ist text;
|
||||
};
|
||||
|
||||
enum http_etag_type {
|
||||
ETAG_INVALID = 0,
|
||||
ETAG_STRONG,
|
||||
ETAG_WEAK
|
||||
};
|
||||
|
||||
#endif /* _HAPROXY_HTTP_T_H */
|
||||
|
||||
/*
|
||||
|
||||
@ -104,6 +104,27 @@ static inline int http_language_range_match(const char *range, int range_len,
|
||||
return tag == tend;
|
||||
}
|
||||
|
||||
static inline enum http_etag_type http_get_etag_type(const struct ist etag)
|
||||
{
|
||||
/* An ETag must be at least 2 characters. */
|
||||
if (etag.len < 2)
|
||||
return ETAG_INVALID;
|
||||
|
||||
/* The last character must be a `"`. */
|
||||
if (etag.ptr[etag.len - 1] != '"')
|
||||
return ETAG_INVALID;
|
||||
|
||||
/* If the ETag starts with a `"` then it is a strong ETag. */
|
||||
if (etag.ptr[0] == '"')
|
||||
return ETAG_STRONG;
|
||||
|
||||
/* If the ETag starts with `W/"` then it is a weak ETag. */
|
||||
if (istnmatch(etag, ist("W/\""), 3))
|
||||
return ETAG_WEAK;
|
||||
|
||||
return ETAG_INVALID;
|
||||
}
|
||||
|
||||
|
||||
#endif /* _HAPROXY_HTTP_H */
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user