diff options
author | Florian Bruhin <git@the-compiler.org> | 2018-07-03 17:14:34 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2018-07-10 15:29:17 +0200 |
commit | 5c299278c2a7348af25725ca3e6d73f9df5f5e03 (patch) | |
tree | 89e65d6d1194a26bf41a364e3ffefa89921c6ac6 | |
parent | 0f037fb415581283074dff8b2d090cefcd337602 (diff) | |
download | qutebrowser-5c299278c2a7348af25725ca3e6d73f9df5f5e03.tar.gz qutebrowser-5c299278c2a7348af25725ca3e6d73f9df5f5e03.zip |
Handle download errors when the reply is already gone
Fixes #1270
(cherry picked from commit 0a31e19eda91fbb4d5e6a333591cd0b028e7c25a)
-rw-r--r-- | doc/changelog.asciidoc | 8 | ||||
-rw-r--r-- | qutebrowser/browser/qtnetworkdownloads.py | 11 |
2 files changed, 17 insertions, 2 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index f550f2ef1..28a7d89ea 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -15,6 +15,14 @@ breaking changes (such as renamed commands) can happen in minor releases. // `Fixed` for any bug fixes. // `Security` to invite users to upgrade in case of vulnerabilities. +v1.5.0 (unreleased) +------------------- + +Fixed +~~~~~ + +- Rare crash when an error occurs in downloads. + v1.4.0 ------ diff --git a/qutebrowser/browser/qtnetworkdownloads.py b/qutebrowser/browser/qtnetworkdownloads.py index 4e992b172..bdd2b280a 100644 --- a/qutebrowser/browser/qtnetworkdownloads.py +++ b/qutebrowser/browser/qtnetworkdownloads.py @@ -29,7 +29,7 @@ from PyQt5.QtCore import pyqtSlot, pyqtSignal, QTimer from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply from qutebrowser.config import config -from qutebrowser.utils import message, usertypes, log, urlutils, utils +from qutebrowser.utils import message, usertypes, log, urlutils, utils, debug from qutebrowser.browser import downloads from qutebrowser.browser.webkit import http from qutebrowser.browser.webkit.network import networkmanager @@ -307,7 +307,14 @@ class DownloadItem(downloads.AbstractDownloadItem): """Handle QNetworkReply errors.""" if code == QNetworkReply.OperationCanceledError: return - self._die(self._reply.errorString()) + + if self._reply is None: + error = "Unknown error: {}".format( + debug.qenum_key(QNetworkReply, code)) + else: + error = self._reply.errorString() + + self._die(error) @pyqtSlot() def _on_read_timer_timeout(self): |