diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index 611228c79..d7aed3412 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -1073,10 +1073,21 @@ class LBRYDaemon(jsonrpc.JSONRPC): return defer.succeed(True) def _download_sd_blob(self, sd_hash): + def cb(result): + r.callback(result) + + def eb(): + if not r.called: + r.errback(Exception("sd timeout")) + + r = defer.Deferred(None) + reactor.callLater(3, eb) d = download_sd_blob(self.session, sd_hash, PaymentRateManager(self.session.base_payment_rate_manager)) d.addCallback(BlobStreamDescriptorReader) d.addCallback(lambda blob: blob.get_info()) - return d + d.addCallback(cb) + + return r def _download_name(self, name, timeout=DEFAULT_TIMEOUT, download_directory=None, file_name=None, stream_info=None, wait_for_write=True): @@ -2251,10 +2262,10 @@ class LBRYDaemon(jsonrpc.JSONRPC): Returns sd blob, dict """ - sd_hash = p['sd_hash'] + d = self._download_sd_blob(sd_hash) - d.addCallback(lambda r: self._render_response(r, OK_CODE)) + d.addCallbacks(lambda r: self._render_response(r, OK_CODE), lambda _: self._render_response(False, OK_CODE)) return d def jsonrpc_get_nametrie(self):