Willy, I was hoping reduce the number of unmerged patches, but somehow you merged three of seven and now I'm back at seven. I've also added remarks to some of the other individual patches.
This whole series has been tested to compile and pass the reg-tests, but no in-depth testing happened. Best regards Tim Düsterhus Apply with `git am --scissors` to automatically cut the commit message. -- >8 -- `IST_NULL` is equivalent to an `struct ist` with `.ptr = NULL` and `.len = 0`. --- include/common/ist.h | 5 ++++- src/hpack-dec.c | 4 ++-- src/http.c | 4 ++-- src/http_htx.c | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/common/ist.h b/include/common/ist.h index 0d8b45721..a1d82182b 100644 --- a/include/common/ist.h +++ b/include/common/ist.h @@ -133,6 +133,9 @@ struct ist { /* makes a constant ist from a constant string, for use in array declarations */ #define IST(str) { .ptr = str "", .len = (sizeof str "") - 1 } +/* IST_NULL is equivalent to an `ist` with `.ptr = NULL` and `.len = 0` */ +#define IST_NULL ((const struct ist){ .ptr = 0, .len = 0 }) + /* makes an ist from a regular zero terminated string. Null has length 0. * Constants are detected and replaced with constant initializers. Other values * are measured by hand without strlen() as it's much cheaper and inlinable on @@ -705,7 +708,7 @@ static inline struct ist istist(const struct ist ist, const struct ist pat) } return ist2(ret.ptr - 1, ret.len + 1); } - return ist2(NULL, 0); + return IST_NULL; } /* diff --git a/src/hpack-dec.c b/src/hpack-dec.c index a721fadc4..b4d8f0d39 100644 --- a/src/hpack-dec.c +++ b/src/hpack-dec.c @@ -406,7 +406,7 @@ int hpack_decode_frame(struct hpack_dht *dht, const uint8_t *raw, uint32_t len, value = ist2(vtrash, vlen); } - name = ist2(NULL, 0); + name = IST_NULL; if (!must_index) name.len = hpack_idx_to_phdr(idx); @@ -458,7 +458,7 @@ int hpack_decode_frame(struct hpack_dht *dht, const uint8_t *raw, uint32_t len, } /* put an end marker */ - list[ret].n = list[ret].v = ist2(NULL, 0); + list[ret].n = list[ret].v = IST_NULL; ret++; leave: diff --git a/src/http.c b/src/http.c index 75251992a..ec6b4a282 100644 --- a/src/http.c +++ b/src/http.c @@ -551,7 +551,7 @@ struct ist http_get_authority(const struct ist uri, int no_userinfo) return ist2(start, end - start); not_found: - return ist2(NULL, 0); + return IST_NULL; } /* Parse the URI from the given transaction (which is assumed to be in request @@ -601,7 +601,7 @@ struct ist http_get_path(const struct ist uri) return ist2(ptr, end - ptr); not_found: - return ist2(NULL, 0); + return IST_NULL; } /* diff --git a/src/http_htx.c b/src/http_htx.c index 35bb05625..8157eb560 100644 --- a/src/http_htx.c +++ b/src/http_htx.c @@ -533,7 +533,7 @@ int http_remove_header(struct htx *htx, struct http_hdr_ctx *ctx) blk = htx_remove_blk(htx, blk); if (blk || htx_is_empty(htx)) { ctx->blk = blk; - ctx->value = ist2(NULL, 0); + ctx->value = IST_NULL; ctx->lws_before = ctx->lws_after = 0; } else { -- 2.25.1