)]}'
{"neutron/agent/windows/winutils.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"48466a1cc61dc629e4983eaf32c5473ffb989365","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                # This is returned when the overlapped structure is passed"},{"line_number":261,"context_line":"                # to the read operation (which is our case) and the operation"},{"line_number":262,"context_line":"                # has not finished yet. We mark this as a pending read"},{"line_number":263,"context_line":"                # operation and we will use the method \u0027get_read_result\u0027"},{"line_number":264,"context_line":"                # later on to retrieve the result."},{"line_number":265,"context_line":"                self._read_pending \u003d True"},{"line_number":266,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_446b201d","side":"PARENT","line":263,"range":{"start_line":263,"start_character":18,"end_line":263,"end_character":72},"updated":"2017-08-29 09:18:24.000000000","message":"IMO, the problem is here: when errCode\u003d\u003dERROR_IO_PENDING, \"self.get_read_result\" should be called. This function will return:\n- False if the reading operation is still in progress.\n- The result in case the reading operation is finished.\n\nThe current implementation (base patch) doesn\u0027t take care of this code.","commit_id":"d224effd26ddd793336e9f6a0ab5caccae549b45"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bcab6ed3c7ee5a13192f1e43b37335bc8a3f9775","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                # This is returned when the overlapped structure is passed"},{"line_number":261,"context_line":"                # to the read operation (which is our case) and the operation"},{"line_number":262,"context_line":"                # has not finished yet. We mark this as a pending read"},{"line_number":263,"context_line":"                # operation and we will use the method \u0027get_read_result\u0027"},{"line_number":264,"context_line":"                # later on to retrieve the result."},{"line_number":265,"context_line":"                self._read_pending \u003d True"},{"line_number":266,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_487970fa","side":"PARENT","line":263,"range":{"start_line":263,"start_character":18,"end_line":263,"end_character":72},"in_reply_to":"5f2577a7_68c2ec35","updated":"2017-09-12 07:28:51.000000000","message":"I mean: if \"nonblocking_read\" returns a partial buffer, \"get_read_result\" is not called and the message is not completely read. There you have your buffer leak.","commit_id":"d224effd26ddd793336e9f6a0ab5caccae549b45"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"728d4ab033eee49111415004b1b76eac80457fc9","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                # This is returned when the overlapped structure is passed"},{"line_number":261,"context_line":"                # to the read operation (which is our case) and the operation"},{"line_number":262,"context_line":"                # has not finished yet. We mark this as a pending read"},{"line_number":263,"context_line":"                # operation and we will use the method \u0027get_read_result\u0027"},{"line_number":264,"context_line":"                # later on to retrieve the result."},{"line_number":265,"context_line":"                self._read_pending \u003d True"},{"line_number":266,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_ea009503","side":"PARENT","line":263,"range":{"start_line":263,"start_character":18,"end_line":263,"end_character":72},"in_reply_to":"7f287b81_446b201d","updated":"2017-08-29 10:07:55.000000000","message":"It does get called eventually through the \u0027_get_result_namedpipe\u0027 call.\n\nStill, the issue is that subsequent read requests may be needed although not performed. Also, the current implementation will have issues when handling data exceeding its buffer.","commit_id":"d224effd26ddd793336e9f6a0ab5caccae549b45"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1809d2df1bea806a0174cf2c4ded8be4ac91a87f","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                # This is returned when the overlapped structure is passed"},{"line_number":261,"context_line":"                # to the read operation (which is our case) and the operation"},{"line_number":262,"context_line":"                # has not finished yet. We mark this as a pending read"},{"line_number":263,"context_line":"                # operation and we will use the method \u0027get_read_result\u0027"},{"line_number":264,"context_line":"                # later on to retrieve the result."},{"line_number":265,"context_line":"                self._read_pending \u003d True"},{"line_number":266,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_68c2ec35","side":"PARENT","line":263,"range":{"start_line":263,"start_character":18,"end_line":263,"end_character":72},"in_reply_to":"7f287b81_ea009503","updated":"2017-09-12 07:20:30.000000000","message":"\"get_read_result\" is called in \"_get_result_namedpipe\" L511 if stdout is None.\n\nAnyway, I won\u0027t block this patch if is tested and working in Windows and solves the bug.","commit_id":"d224effd26ddd793336e9f6a0ab5caccae549b45"}]}
