)]}'
{"glanceclient/common/https.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8deb6e2c38456adff8600a632873b5083a0c43af","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def verify_callback(host\u003dNone):"},{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":"    We use a partial around the \u0027real\u0027 verify_callback function"},{"line_number":59,"context_line":"    so that we can stash the host value without holding a"},{"line_number":60,"context_line":"    reference on the VerifiedHTTPSConnection."},{"line_number":61,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_403727ff","line":58,"updated":"2015-03-03 16:10:59.000000000","message":"Is \"partial\" a special type of wrapper? Or would \"We use a wrapper ...\" make more sense here?","commit_id":"ef9fd9fca05f8da8325ccaa6632e34d1321130bf"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"a69d637a7367fed436cf5fc9ba4cd0625ec2dd52","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def verify_callback(host\u003dNone):"},{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":"    We use a partial around the \u0027real\u0027 verify_callback function"},{"line_number":59,"context_line":"    so that we can stash the host value without holding a"},{"line_number":60,"context_line":"    reference on the VerifiedHTTPSConnection."},{"line_number":61,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_a68e3c2c","line":58,"in_reply_to":"ba7be1f8_403727ff","updated":"2015-03-03 16:16:00.000000000","message":"partial is short for partial function application. Wrapper just provides the way of applying some of the parameters without calling the function directly. We can update this in a dependent patch so as not to lose NIkhil\u0027s +2","commit_id":"ef9fd9fca05f8da8325ccaa6632e34d1321130bf"},{"author":{"_account_id":6896,"name":"Loganathan Parthipan","email":"parthi@hpe.com","username":"parthipan"},"change_message_id":"2cf14d21fdfdde52d9faf97a92a5a4134d46350e","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                if san.startswith(\u0027DNS:\u0027):"},{"line_number":121,"context_line":"                    if check_match(san.split(\u0027:\u0027, 1)[1]):"},{"line_number":122,"context_line":"                        return True"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    # Server certificate does not match host"},{"line_number":125,"context_line":"    msg \u003d (\u0027Host \"%s\" does not match x509 certificate contents: \u0027"},{"line_number":126,"context_line":"           \u0027CommonName \"%s\"\u0027 % (host, common_name))"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_1404997c","line":123,"updated":"2015-02-18 15:58:37.000000000","message":"SAN may have IP Address in addition to DNS. In fact if the uri is IP address, I think we should check IP Address first if it exists. But I could be wrong in my interpretation of the RFC.","commit_id":"ef9fd9fca05f8da8325ccaa6632e34d1321130bf"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"a3eb87b5693b0bc0e04a393c059dc36fa01cbd1d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                if san.startswith(\u0027DNS:\u0027):"},{"line_number":121,"context_line":"                    if check_match(san.split(\u0027:\u0027, 1)[1]):"},{"line_number":122,"context_line":"                        return True"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    # Server certificate does not match host"},{"line_number":125,"context_line":"    msg \u003d (\u0027Host \"%s\" does not match x509 certificate contents: \u0027"},{"line_number":126,"context_line":"           \u0027CommonName \"%s\"\u0027 % (host, common_name))"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_d2c0517e","line":123,"in_reply_to":"da86d52c_1404997c","updated":"2015-02-18 16:16:50.000000000","message":"Thanks for your review Parthi.\n\nThat\u0027s really outside the scope of this patch though (I just cut and paste the existing \u0027host_matches_cert\u0027.)\n\nThe goal of this patch is not to change the behaviour, but just to ensure that sockets are successfully dropped.","commit_id":"ef9fd9fca05f8da8325ccaa6632e34d1321130bf"},{"author":{"_account_id":6896,"name":"Loganathan Parthipan","email":"parthi@hpe.com","username":"parthipan"},"change_message_id":"e945a17ddd73fd1d056e8ac925b9b81eaf0de54d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                if san.startswith(\u0027DNS:\u0027):"},{"line_number":121,"context_line":"                    if check_match(san.split(\u0027:\u0027, 1)[1]):"},{"line_number":122,"context_line":"                        return True"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    # Server certificate does not match host"},{"line_number":125,"context_line":"    msg \u003d (\u0027Host \"%s\" does not match x509 certificate contents: \u0027"},{"line_number":126,"context_line":"           \u0027CommonName \"%s\"\u0027 % (host, common_name))"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_46473e4c","line":123,"in_reply_to":"da86d52c_d2c0517e","updated":"2015-02-18 17:46:07.000000000","message":"Thanks for the explanation Stuart. I hadn\u0027t looked at the removed code below before, thought this was something new. That\u0027s fine then. I\u0027ll remove the -1.","commit_id":"ef9fd9fca05f8da8325ccaa6632e34d1321130bf"}]}
