Bug 1176186

Summary: headers with different cases are not merged
Product: Red Hat Enterprise Linux 7 Reporter: Ian Colle <icolle>
Component: python-requestsAssignee: Endi Sukma Dewata <edewata>
Status: CLOSED CURRENTRELEASE QA Contact: Prasanth Anbalagan <panbalag>
Severity: urgent Docs Contact:
Priority: high    
Version: 7.2CC: apevec, dmaley, dpal, ebarrera, edewata, hguemar, jdurgin, jgalvez, jherrman, jkurik, jwaterwo, kdreyer, lhh, nkinder, nlevine, nlevinki, scohen, yeylon
Target Milestone: rcKeywords: Rebase, ZStream
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-requests-1.1.0-9.el7 Doc Type: Rebase: Bug Fixes and Enhancements
Doc Text:
When the python-swiftclient utility sent a request with a HHTP header containing upper-case characters, Apache previously rejected the request with a "bad request" error. With this update, the python-requests implementation of case-insensitive dictionary has been fixed, and python-swiftclient now merges headers with different cases correctly. As a result, the described HTTP error no longer occurs.
Story Points: ---
Clone Of: 1169530
: 1206465 1232881 (view as bug list) Environment:
Last Closed: 2015-11-20 10:27:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1169530, 1202548    
Bug Blocks: 1133060, 1135135, 1154205, 1176181, 1183150, 1199249, 1206465, 1232881    

Description Ian Colle 2014-12-19 16:10:09 UTC
+++ This bug was initially created as a clone of Bug #1169530 +++

Description of problem:

The high-level problem is https://bugzilla.redhat.com/show_bug.cgi?id=1135135

The root cause is python-requests having a buggy implementation of a case
insensitive mapping. When swiftclient adds a 'Content-Length' header and requests implicitly adds a 'content-length' header, requests sends both as separate headers. This causes apache to reject the request with a 400 error.

Version-Release number of selected component (if applicable):

python-requests-1.1.0-8.1.el7ost

How reproducible:

always

Steps to Reproduce:

Run this testcase:
https://github.com/kennethreitz/requests/blob/f7596c75dce4e87ab83bdf74e8f120a4b1a5ff03/test_requests.py#L514

Additional info:

This was fixed upstream in https://github.com/kennethreitz/requests/issues/649
The fix as a patch against the current package is attached.

--- Additional comment from Lon Hohberger on 2014-12-19 10:32:31 EST ---

python-requests-2.3.0-3.el7ost is in RHEL OSP 6 beta.

--- Additional comment from Lon Hohberger on 2014-12-19 10:39:25 EST ---

It's probable that rebasing to python-requests 2.3.0 is how we should fix this; this was addressed in commit f7596c75 of upstream master.

Comment 11 Endi Sukma Dewata 2015-03-27 03:44:08 UTC
Fixed in 7.2 branch: 65cfc56343087f64dd0153f4ec8c3615f0c23d7c

Comment 15 Jan Kurik 2015-11-20 10:27:21 UTC
This bug has been closed as CURRENTRELEASE due to delivery of the fix in a z-stream. As the component is not on ACL, the fix is currently included in y-stream as well.

For more information please see the zstream process documentation:
* https://engineering.redhat.com/trac/ZStream/attachment/wiki/WikiStart/Z-Stream_process_update_4.odp .