[squid-dev] [PATCH] suffix parsing and skipping
Amos Jeffries
squid3 at treenet.co.nz
Thu Jul 23 15:27:22 UTC 2015
On 23/07/2015 10:41 a.m., Alex Rousskov wrote:
> Hello,
>
> The attached patch adds SBuf and Tokenizer methods to simplify
> suffix parsing and skipping (and to make suffix/reverse APIs more
> similar to prefix/forward ones). The new methods are used in another
> patch (to be posted shortly) that makes the request line parser simpler
> and more robust, but they are useful in other contexts as well IMO.
>
> For consistency sake, I tried to mimic the existing Tokenizer/SBuf
> documentation, debugging, and code duplication styles.
>
>
> One old problem was detected and documented during this project: The
> Tokenizer::parsedSize() method does not account for the successfully
> parsed and removed suffix/trailing characters in most cases. That method
> should be revised or removed. Solving this problem is outside this
> project scope.
>
>
> This and the following patch are based on trunk r14083. I will update to
> the current trunk if the patches are approved. Please let me know if you
> want to review the updated versions as well.
in SBuf.h:
* SBuf::findLastNotOf() documentation looks wrong.
- s/occurrences before/occurrences after/
- it scans from buf[endPos] to buf[0]. And the other 'findLast' method
had before/after change in the comments.
* not sure why the "TODO: rename to camelCase" still existed.
- probably should not be copied to the new method(s) anyhow.
* consumeTrailling() does not account for bytes in parsed_ like consume().
- parsed_ is about *total pared bytes*. direction is irrelevant.
- the paths where consumeTrailing() is called with n==length() *will*
account for parsed_, the others do not. This is a new bug.
- 3 of 4 uses are new code added in this patch, hitting that new bug.
- the 4th case is suffix() where you already fixed the old bug of
suffix not using a consumeTrailing() helper method to do its buffer consume.
Still at -0. Please do fix the above.
Amos
More information about the squid-dev
mailing list