diff options
Diffstat (limited to 'pjlib-util')
-rw-r--r-- | pjlib-util/include/pjlib-util/scanner.h | 2 | ||||
-rw-r--r-- | pjlib-util/src/pjlib-util/scanner.c | 20 |
2 files changed, 18 insertions, 4 deletions
diff --git a/pjlib-util/include/pjlib-util/scanner.h b/pjlib-util/include/pjlib-util/scanner.h index ce9c625c..eb9135fe 100644 --- a/pjlib-util/include/pjlib-util/scanner.h +++ b/pjlib-util/include/pjlib-util/scanner.h @@ -156,7 +156,7 @@ PJ_DECL(void) pj_cis_invert( pj_cis_t *cis ); * * @return Non-zero if match (not necessarily one). */ -PJ_INLINE(int) pj_cis_match( const pj_cis_t *cis, int c ) +PJ_INLINE(int) pj_cis_match( const pj_cis_t *cis, pj_uint8_t c ) { return PJ_CIS_ISSET(cis, c); } diff --git a/pjlib-util/src/pjlib-util/scanner.c b/pjlib-util/src/pjlib-util/scanner.c index df07a278..676fd026 100644 --- a/pjlib-util/src/pjlib-util/scanner.c +++ b/pjlib-util/src/pjlib-util/scanner.c @@ -401,9 +401,23 @@ PJ_DEF(void) pj_scan_get_newline( pj_scanner *scanner ) ++scanner->line; scanner->start_line = scanner->curptr; - if (PJ_SCAN_IS_PROBABLY_SPACE(*scanner->curptr) && scanner->skip_ws) { - pj_scan_skip_whitespace(scanner); - } + /** + * This probably is a bug, see PROTOS test #2480. + * This would cause scanner to incorrectly eat two new lines, e.g. + * when parsing: + * + * Content-Length: 120\r\n + * \r\n + * <space><space><space>... + * + * When pj_scan_get_newline() is called to parse the first newline + * in the Content-Length header, it will eat the second newline + * too because it thinks that it's a header continuation. + * + * if (PJ_SCAN_IS_PROBABLY_SPACE(*scanner->curptr) && scanner->skip_ws) { + * pj_scan_skip_whitespace(scanner); + * } + */ } |