From 5c299278c2a7348af25725ca3e6d73f9df5f5e03 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 3 Jul 2018 17:14:34 +0200 Subject: Handle download errors when the reply is already gone Fixes #1270 (cherry picked from commit 0a31e19eda91fbb4d5e6a333591cd0b028e7c25a) --- doc/changelog.asciidoc | 8 ++++++++ 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): -- cgit v1.2.3-54-g00ecf