diff options
author | Přemysl Janouch <p@janouch.name> | 2018-10-18 06:34:16 +0200 |
---|---|---|
committer | Přemysl Janouch <p@janouch.name> | 2018-10-18 06:34:16 +0200 |
commit | bca7167d037d857448cb18243425d7c61de3bdd5 (patch) | |
tree | 1e93b857b0b9a996211245b434a80ebb01f9125d /liberty-proto.c | |
parent | 3e4e4e5103b10e0cfada77489370e5a938a60f70 (diff) | |
download | liberty-bca7167d037d857448cb18243425d7c61de3bdd5.tar.gz liberty-bca7167d037d857448cb18243425d7c61de3bdd5.tar.xz liberty-bca7167d037d857448cb18243425d7c61de3bdd5.zip |
Fix the SCGI parser and tests
Diffstat (limited to 'liberty-proto.c')
-rw-r--r-- | liberty-proto.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/liberty-proto.c b/liberty-proto.c index fa6ab76..018523f 100644 --- a/liberty-proto.c +++ b/liberty-proto.c @@ -664,10 +664,11 @@ scgi_parser_push (struct scgi_parser *self, if (digit == ':') { self->state = SCGI_READING_NAME; + str_remove_slice (&self->input, 0, 1); break; } - if (digit < '0' || digit >= '9') + if (digit < '0' || digit > '9') return error_set (e, "invalid header netstring"); size_t new_len = self->headers_len * 10 + (digit - '0'); @@ -700,6 +701,7 @@ scgi_parser_push (struct scgi_parser *self, self->state = SCGI_READING_VALUE; str_remove_slice (&self->input, 0, 1); + self->headers_len--; break; } case SCGI_READING_VALUE: @@ -728,6 +730,7 @@ scgi_parser_push (struct scgi_parser *self, } str_remove_slice (&self->input, 0, 1); + self->headers_len--; break; } case SCGI_READING_CONTENT: |