diff options
author | Valentin Bartenev <vbart@nginx.com> | 2017-12-27 15:45:23 +0300 |
---|---|---|
committer | Valentin Bartenev <vbart@nginx.com> | 2017-12-27 15:45:23 +0300 |
commit | 45d08d5145c63fd788f85d9e789314dcf093c99e (patch) | |
tree | c12e02adfd36abe638b1434fa4956c4f887ff6e2 /src | |
parent | be36cf52c8b092ebb688784a1c10626cac2138d7 (diff) | |
download | unit-45d08d5145c63fd788f85d9e789314dcf093c99e.tar.gz unit-45d08d5145c63fd788f85d9e789314dcf093c99e.tar.bz2 |
HTTP parser: introduced nxt_http_parse_fields().
Diffstat (limited to '')
-rw-r--r-- | src/nxt_http_parse.c | 17 | ||||
-rw-r--r-- | src/nxt_http_parse.h | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/nxt_http_parse.c b/src/nxt_http_parse.c index 34d88839..17bd0657 100644 --- a/src/nxt_http_parse.c +++ b/src/nxt_http_parse.c @@ -146,6 +146,23 @@ nxt_http_parse_request(nxt_http_request_parse_t *rp, nxt_buf_mem_t *b) } +nxt_int_t +nxt_http_parse_fields(nxt_http_request_parse_t *rp, nxt_buf_mem_t *b) +{ + nxt_int_t rc; + + if (rp->handler == NULL) { + rp->handler = &nxt_http_parse_field_name; + } + + do { + rc = rp->handler(rp, &b->pos, b->free); + } while (rc == NXT_OK); + + return rc; +} + + static nxt_int_t nxt_http_parse_request_line(nxt_http_request_parse_t *rp, u_char **pos, u_char *end) diff --git a/src/nxt_http_parse.h b/src/nxt_http_parse.h index da664ce9..293c4d0e 100644 --- a/src/nxt_http_parse.h +++ b/src/nxt_http_parse.h @@ -83,6 +83,8 @@ nxt_int_t nxt_http_parse_request_init(nxt_http_request_parse_t *rp, nxt_mp_t *mp); nxt_int_t nxt_http_parse_request(nxt_http_request_parse_t *rp, nxt_buf_mem_t *b); +nxt_int_t nxt_http_parse_fields(nxt_http_request_parse_t *rp, + nxt_buf_mem_t *b); nxt_int_t nxt_http_fields_hash(nxt_lvlhsh_t *hash, nxt_mp_t *mp, nxt_http_field_proc_t items[], nxt_uint_t count); |