)]}'
{"swift/proxy/controllers/base.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ba603d6f70d084f3831cd3ac663ace428928b904","unresolved":false,"context_lines":[{"line_number":675,"context_line":"            begin, end \u003d req_range.ranges[0]"},{"line_number":676,"context_line":"            if begin is None:"},{"line_number":677,"context_line":"                # this is a -50 range req (last 50 bytes of file)"},{"line_number":678,"context_line":"                end -\u003d num_bytes"},{"line_number":679,"context_line":"            else:"},{"line_number":680,"context_line":"                begin +\u003d num_bytes"},{"line_number":681,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_579550e2","line":678,"range":{"start_line":678,"start_character":16,"end_line":678,"end_character":32},"updated":"2016-04-15 21:17:11.000000000","message":"Random thought: we never check that end is still positive (or at least non-negative) after this...","commit_id":"36cb9e1298fdcd24ded3bc7d75a7601b47074b46"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"cda9b07dbcc0cfcc7c537333ab356bc5297ab5c0","unresolved":false,"context_lines":[{"line_number":675,"context_line":"            begin, end \u003d req_range.ranges[0]"},{"line_number":676,"context_line":"            if begin is None:"},{"line_number":677,"context_line":"                # this is a -50 range req (last 50 bytes of file)"},{"line_number":678,"context_line":"                end -\u003d num_bytes"},{"line_number":679,"context_line":"            else:"},{"line_number":680,"context_line":"                begin +\u003d num_bytes"},{"line_number":681,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_c037d8e1","line":678,"in_reply_to":"1a122d0e_579550e2","updated":"2016-04-15 23:43:02.000000000","message":"True, but outside the scope here, I think. If we ask to fast-forward N+M bytes into an N-byte file, we\u0027ve got bigger problems... for one, the bogus Content-Range header from the object server that would cause such a thing to occur in the first place.","commit_id":"36cb9e1298fdcd24ded3bc7d75a7601b47074b46"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ba603d6f70d084f3831cd3ac663ace428928b904","unresolved":false,"context_lines":[{"line_number":683,"context_line":"                # we sent out exactly the first range\u0027s worth of bytes, so"},{"line_number":684,"context_line":"                # we\u0027re done with it"},{"line_number":685,"context_line":"                raise RangeAlreadyComplete()"},{"line_number":686,"context_line":"            elif end and begin \u003e end:"},{"line_number":687,"context_line":"                raise HTTPRequestedRangeNotSatisfiable()"},{"line_number":688,"context_line":"            elif end is not None and begin is not None:"},{"line_number":689,"context_line":"                req_range.ranges \u003d [(begin, end)] + req_range.ranges[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_13bc8d6b","line":686,"range":{"start_line":686,"start_character":17,"end_line":686,"end_character":20},"updated":"2016-04-15 21:17:11.000000000","message":"Should we be using \"end is not None\" here as well? Or would Range have already raised the appropriate HTTPRequestedRangeNotSatisfiable?","commit_id":"36cb9e1298fdcd24ded3bc7d75a7601b47074b46"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ba603d6f70d084f3831cd3ac663ace428928b904","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                raise RangeAlreadyComplete()"},{"line_number":686,"context_line":"            elif end and begin \u003e end:"},{"line_number":687,"context_line":"                raise HTTPRequestedRangeNotSatisfiable()"},{"line_number":688,"context_line":"            elif end is not None and begin is not None:"},{"line_number":689,"context_line":"                req_range.ranges \u003d [(begin, end)] + req_range.ranges[1:]"},{"line_number":690,"context_line":"            elif end is not None:"},{"line_number":691,"context_line":"                req_range.ranges \u003d [(None, end)] + req_range.ranges[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_b3f95950","line":688,"range":{"start_line":688,"start_character":37,"end_line":688,"end_character":54},"updated":"2016-04-15 21:17:11.000000000","message":"It was *this* guy, right?\n\nAs I\u0027m staring at this, though, it\u0027s unclear to me why we can\u0027t just have\n\n else:\n     req_range.ranges \u003d [(begin, end)] + req_range.ranges[1:]\n\n...in place of these last three cases. We already know that one of begin or end is not None, right?","commit_id":"36cb9e1298fdcd24ded3bc7d75a7601b47074b46"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"cda9b07dbcc0cfcc7c537333ab356bc5297ab5c0","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                raise RangeAlreadyComplete()"},{"line_number":686,"context_line":"            elif end and begin \u003e end:"},{"line_number":687,"context_line":"                raise HTTPRequestedRangeNotSatisfiable()"},{"line_number":688,"context_line":"            elif end is not None and begin is not None:"},{"line_number":689,"context_line":"                req_range.ranges \u003d [(begin, end)] + req_range.ranges[1:]"},{"line_number":690,"context_line":"            elif end is not None:"},{"line_number":691,"context_line":"                req_range.ranges \u003d [(None, end)] + req_range.ranges[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_3aa079f4","line":688,"in_reply_to":"1a122d0e_b3f95950","updated":"2016-04-15 23:43:02.000000000","message":"Yeah, this one\u0027s the culprit this time. \"begin\" --\u003e \"begin is not None\" fixes the crash shown in the wild.\n\nI think you\u0027re right; these three clauses all end up collapsing down to the same thing.\n\nHooray for bugs in unnecessary code. :|","commit_id":"36cb9e1298fdcd24ded3bc7d75a7601b47074b46"}]}
