Skip to content

Fix form pipe parser #12749

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 1, 2019
Merged

Fix form pipe parser #12749

merged 2 commits into from
Aug 1, 2019

Conversation

Tratcher
Copy link
Member

@Tratcher Tratcher commented Jul 30, 2019

Description

#12381
Issue 1) Keys without values were being merged "key1&key2=value2"
Issue 2) Keys without values at the end of a form being dropped (2.2) or throwing (3.0) "key1=value1&key2".

Customer Impact

Externally posted forms were being mis-parsed in some situations.

Regression?

Yes, in 2.2 un-parsed trailing data would be discarded, but in 3.0 it throws.

Risk

Low, we have good unit test coverage here.

Old algorithm: Look for "=", then "&".
New algorithm: Look for "&", then see if it has an optional "="

@Tratcher Tratcher added this to the 3.0.0-preview9 milestone Jul 30, 2019
@Tratcher Tratcher requested review from davidfowl and jkotalik July 30, 2019 22:58
@Tratcher Tratcher requested a review from analogrelay as a code owner July 30, 2019 22:58
@Tratcher Tratcher self-assigned this Jul 30, 2019
@davidfowl
Copy link
Member

Perf numbers?

@Tratcher
Copy link
Member Author

Before:

Method Mean Error StdDev Op/s Gen 0 Allocated
ReadUtf8Data 2.481 us 0.0496 us 0.0712 us 403,029.6 0.0114 712 B
ReadUtf8MultipleBlockData 5.767 us 0.1147 us 0.1885 us 173,402.3 0.0153 968 B

After:

Method Mean Error StdDev Op/s Gen 0 Allocated
ReadUtf8Data 2.456 us 0.0483 us 0.0517 us 407,244.3 0.0114 712 B
ReadUtf8MultipleBlockData 5.016 us 0.0986 us 0.2037 us 199,379.4 0.0153 968 B

LGTM

Copy link
Contributor

@jkotalik jkotalik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good job!

Copy link
Member

@halter73 halter73 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I'd wait on @jkotalik's approval though

@jkotalik
Copy link
Contributor

image

@analogrelay
Copy link
Contributor

If we're taking this for Ask-Mode, needs the template and label. Otherwise it needs to be on master.

@Tratcher Tratcher added the ask-mode This issue / PR is a patch candidate which we will bar-check internally before patching it. label Jul 31, 2019
@Tratcher
Copy link
Member Author

@anurse added the template. Suggested for preview9 because we've had direct customer reports of the regression impacting their apps.

@analogrelay
Copy link
Contributor

Sounds good. Meets the bar IMO, we'll confirm tomorrow.

@analogrelay analogrelay self-assigned this Aug 1, 2019
@leecow
Copy link
Member

leecow commented Aug 1, 2019

Tactics approved

@amcasey amcasey added area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions and removed area-runtime labels Jun 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions ask-mode This issue / PR is a patch candidate which we will bar-check internally before patching it. feature-http-abstractions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants