bpo-29183: Fix double exceptions in wsgiref.handlers.BaseHandler (GH-12914)

This commit is contained in:
Berker Peksag 2019-05-19 18:56:15 +03:00 committed by GitHub
parent f4e1babf44
commit 7c59362a15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 1 deletions

View file

@ -183,7 +183,16 @@ class BaseHandler:
for data in self.result:
self.write(data)
self.finish_content()
finally:
except:
# Call close() on the iterable returned by the WSGI application
# in case of an exception.
if hasattr(self.result, 'close'):
self.result.close()
raise
else:
# We only call close() when no exception is raised, because it
# will set status, result, headers, and environ fields to None.
# See bpo-29183 for more details.
self.close()