<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Sep 19, 2014, at 12:42 PM, Mark Washenberger <<a href="mailto:mark.washenberger@markwash.net" class="">mark.washenberger@markwash.net</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_extra"><br class="Apple-interchange-newline"><br class=""><div class="gmail_quote">On Fri, Sep 19, 2014 at 8:59 AM, Donald Stufft<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:donald@stufft.io" target="_blank" class="">donald@stufft.io</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><span class=""><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="">On Sep 19, 2014, at 11:54 AM, Brant Knudson <<a href="mailto:blk@acm.org" target="_blank" class="">blk@acm.org</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">I don't think anyone would be complaining if glanceclient didn't have the need to reach into and monkeypatch requests's connection pool manager[1]. Is there a way to tell requests to build the https connections differently without monkeypatching urllib3.poolmanager?<br class=""><br class="">glanceclient's monkeypatching of the global variable here is dangerous since it will mess with the application and every other library if the application or another library uses glanceclient.<br class=""></div><div class=""><br class="">[1]<span class="Apple-converted-space"> </span><a href="http://git.openstack.org/cgit/openstack/python-glanceclient/tree/glanceclient/common/https.py#n75" target="_blank" class="">http://git.openstack.org/cgit/openstack/python-glanceclient/tree/glanceclient/common/https.py#n75</a><br class=""><br class=""></div></div></div></blockquote><br class=""></div></span><div class=""><div class="">Why does it need to use it’s own VerifiedHTTPSConnection class? Ironically</div><div class="">reimplementing that is probably more dangerous for security than requests</div><div class="">bundling urllib3 ;)</div></div></div></blockquote><div class=""><br class=""></div><div class="">We supported the option to skip SSL compression since before adopting requests (see 556082cd6632dbce52ccb67ace57410d61057d66), useful when uploading already compressed images.</div><div class=""><br class=""></div></div></div></div></div></blockquote><br class=""></div><div>Is that all it’s used for? Probably it’s sane to just delete it then.</div><div><br class=""></div><div>On Python 3.2+, 2.7.9+ Python provides the APIs to do it in the stdlib and urllib3 (and thus requests) will remove TLS Compression by default.</div><div><br class=""></div><div>Python 2.6, and 2.7.0-2.7.8 do not provide the APIs to do so, however on Python 2.x if you install pyOpenSSL, n<span class="sd">dg-httpsclient</span>, and pyasn1 then it’ll also disable TLS compression (automatically if you use requests, you have to do an import + function call with raw urllib3).</div><div><br class=""></div><div>So you can remove all that code and just let requests/urllib3 handle it on 3.2+, 2.7.9+ and for anything less than that either use conditional dependencies to have glance client depend on pyOpenSSL, ndg-httpsclient, and pyasn1 on Python 2.x, or let them be optional and if people want to disable TLS compression in those versions they can install those versions themselves.</div><div><br class=""></div><div>By the way, everything above holds true for SNI as well.</div><div><br class=""></div><div>This seems like the best of both worlds, glance client isn’t importing stuff from the vendored requests.packages.*, people get TLS Compression disabled (by default or optional depending on the choice the project makes), and it no longer has to maintain it’s own copy of security sensitive code.</div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">---</div><div class="">Donald Stufft</div><div class="">PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA</div></div></div>
</div>
<br class=""></body></html>