Skip to content
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

Parse boundary from headers while making POST #5575

Merged
merged 6 commits into from
Oct 27, 2021

Conversation

weastur
Copy link
Contributor

@weastur weastur commented Mar 31, 2021

What do these changes do?

Now, while making POST request with formdata and explicitly set header Content-Type the boundary will be used from header param if present. Without these changes, HTTP servers will fail to parse formdata because they will be waiting for boundary from Content-Type header, but aiohttp will generate random.

Are there changes in behavior for the user?

Only fixes behavior when boundary explicitly set. Another cases works as earlier.

Related issue number

#5558

Checklist

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes
  • If you provide code modification, please add yourself to CONTRIBUTORS.txt
    • The format is <Name> <Surname>.
    • Please keep alphabetical order, the file is sorted by names.
  • Add a new news fragment into the CHANGES folder
    • name it <issue_id>.<type> for example (588.bugfix)
    • if you don't have an issue_id change it to the pr id after creating the pr
    • ensure type is one of the following:
      • .feature: Signifying a new feature.
      • .bugfix: Signifying a bug fix.
      • .doc: Signifying a documentation improvement.
      • .removal: Signifying a deprecation or removal of public API.
      • .misc: A ticket has been closed, but it is not of interest to users.
    • Make sure to use full sentences with correct case and punctuation, for example: "Fix issue with non-ascii contents in doctest text files."

@psf-chronographer psf-chronographer bot added the bot:chronographer:provided There is a change note present in this PR label Mar 31, 2021
@codecov
Copy link

codecov bot commented Mar 31, 2021

Codecov Report

Merging #5575 (9c213dc) into master (2dfc801) will increase coverage by 0.00%.
The diff coverage is 100.00%.

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #5575   +/-   ##
=======================================
  Coverage   93.32%   93.33%           
=======================================
  Files         102      102           
  Lines       30140    30160   +20     
  Branches     2696     2700    +4     
=======================================
+ Hits        28129    28149   +20     
  Misses       1837     1837           
  Partials      174      174           
Flag Coverage Δ
unit 93.26% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
aiohttp/client_reqrep.py 98.03% <100.00%> (+0.01%) ⬆️
aiohttp/formdata.py 98.93% <100.00%> (+0.01%) ⬆️
aiohttp/multipart.py 96.12% <100.00%> (+0.01%) ⬆️
tests/test_client_request.py 99.57% <100.00%> (+<0.01%) ⬆️
tests/test_formdata.py 100.00% <100.00%> (ø)
tests/test_multipart.py 100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2dfc801...9c213dc. Read the comment docs.

Copy link
Member

@asvetlov asvetlov left a comment

Choose a reason for hiding this comment

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

LGTM, thanks!

@asvetlov asvetlov merged commit dccf502 into aio-libs:master Oct 27, 2021
@patchback
Copy link
Contributor

patchback bot commented Oct 27, 2021

Backport to 3.8: 💔 cherry-picking failed — conflicts found

❌ Failed to cleanly apply dccf502 on top of patchback/backports/3.8/dccf502fbcb4bd0f5ab1c7dd5ae1fe69541f4f39/pr-5575

Backporting merged PR #5575 into master

  1. Ensure you have a local repo clone of your fork. Unless you cloned it
    from the upstream, this would be your origin remote.
  2. Make sure you have an upstream repo added as a remote too. In these
    instructions you'll refer to it by the name upstream. If you don't
    have it, here's how you can add it:
    $ git remote add upstream https://github.com/aio-libs/aiohttp.git
  3. Ensure you have the latest copy of upstream and prepare a branch
    that will hold the backported code:
    $ git fetch upstream
    $ git checkout -b patchback/backports/3.8/dccf502fbcb4bd0f5ab1c7dd5ae1fe69541f4f39/pr-5575 upstream/3.8
  4. Now, cherry-pick PR Parse boundary from headers while making POST #5575 contents into that branch:
    $ git cherry-pick -x dccf502fbcb4bd0f5ab1c7dd5ae1fe69541f4f39
    If it'll yell at you with something like fatal: Commit dccf502fbcb4bd0f5ab1c7dd5ae1fe69541f4f39 is a merge but no -m option was given., add -m 1 as follows intead:
    $ git cherry-pick -m1 -x dccf502fbcb4bd0f5ab1c7dd5ae1fe69541f4f39
  5. At this point, you'll probably encounter some merge conflicts. You must
    resolve them in to preserve the patch from PR Parse boundary from headers while making POST #5575 as close to the
    original as possible.
  6. Push this branch to your fork on GitHub:
    $ git push origin patchback/backports/3.8/dccf502fbcb4bd0f5ab1c7dd5ae1fe69541f4f39/pr-5575
  7. Create a PR, ensure that the CI is green. If it's not — update it so that
    the tests and any other checks pass. This is it!
    Now relax and wait for the maintainers to process your pull request
    when they have some cycles to do reviews. Don't worry — they'll tell you if
    any improvements are necessary when the time comes!

🤖 @patchback
I'm built with octomachinery and
my source is open — https://github.com/sanitizers/patchback-github-app.

@aio-libs-github-bot
Copy link
Contributor

💔 Backport was not successful

The PR was attempted backported to the following branches:

  • ❌ 3.8: Commit could not be cherrypicked due to conflicts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bot:chronographer:provided There is a change note present in this PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants