Skip to content

Commit

Permalink
catch Unknownnameerror for resolve_name
Browse files Browse the repository at this point in the history
Its expected behavior that a name won't resolve so this more
gracefully handles that case
  • Loading branch information
jobevers committed Feb 14, 2017
1 parent 9f4ccfe commit f989814
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 15 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Expand Up @@ -10,7 +10,7 @@ at anytime.
## [Unreleased]
### Fixed
* Add better logging to help track down [#478](https://github.com/lbryio/lbry/issues/478)

* Catch UnknownNameErrors when resolving a name. [#479](https://github.com/lbryio/lbry/issues/479)

## [0.8.3rc3] - 2017-02-14

Expand All @@ -25,6 +25,7 @@ at anytime.
* mark peers as down if it fails download protocol
* Made hash reannounce time to be adjustable to fix [#432](https://github.com/lbryio/lbry/issues/432)


## [0.8.3rc0] - 2017-02-10
### Changed
* Convert EncryptedFileDownloader to inlineCallbacks
Expand Down
33 changes: 19 additions & 14 deletions lbrynet/lbrynet_daemon/Daemon.py
Expand Up @@ -45,7 +45,7 @@
from lbrynet.core.looping_call_manager import LoopingCallManager
from lbrynet.core.server.BlobRequestHandler import BlobRequestHandlerFactory
from lbrynet.core.server.ServerProtocol import ServerProtocolFactory
from lbrynet.core.Error import InsufficientFundsError
from lbrynet.core.Error import InsufficientFundsError, UnknownNameError

log = logging.getLogger(__name__)

Expand Down Expand Up @@ -938,14 +938,14 @@ def _add_key_fee_to_est_data_cost(self, metadata, data_cost):
fee_amount = 0.0 if fee is None else fee.amount
return data_cost + fee_amount

@defer.inlineCallbacks
def get_est_cost_from_name(self, name):
"""
Resolve a name and return the estimated stream cost
"""

d = self._resolve_name(name)
d.addCallback(self._get_est_cost_from_metadata, name)
return d
metadata = yield self._resolve_name(name)
cost = yield self._get_est_cost_from_metadata(metadata, name)
defer.returnValue(cost)

def get_est_cost(self, name, size=None):
"""Get a cost estimate for a lbry stream, if size is not provided the
Expand Down Expand Up @@ -1404,22 +1404,28 @@ def _get_deferred_for_lbry_file(self, search_fields):
else:
return self._get_lbry_file(searchtype, value)

@defer.inlineCallbacks
def jsonrpc_resolve_name(self, name, force=False):
"""
Resolve stream info from a LBRY uri
Args:
'name': name to look up, string, do not include lbry:// prefix
Returns:
metadata from name claim
metadata from name claim or None if the name is not known
"""

if not name:
return self._render_response(None)
# TODO: seems like we should raise an error here
defer.returnValue(None)

d = self._resolve_name(name, force_refresh=force)
d.addCallback(self._render_response)
return d
try:
metadata = yield self._resolve_name(name, force_refresh=force)
except UnknownNameError:
log.info('Name %s is not known', name)
defer.returnValue(None)
else:
defer.returnValue(metadata)

def jsonrpc_get_claim_info(self, **kwargs):
"""
Expand Down Expand Up @@ -1619,6 +1625,7 @@ def jsonrpc_get_est_cost(self, **kwargs):
"""
return self.jsonrpc_stream_cost_estimate(**kwargs)

@defer.inlineCallbacks
def jsonrpc_stream_cost_estimate(self, name, size=None):
"""
Get estimated cost for a lbry stream
Expand All @@ -1629,10 +1636,8 @@ def jsonrpc_stream_cost_estimate(self, name, size=None):
Returns:
estimated cost
"""

d = self.get_est_cost(name, size)
d.addCallback(lambda r: self._render_response(r))
return d
cost = yield self.get_est_cost(name, size)
defer.returnValue(cost)

@AuthJSONRPCServer.auth_required
def jsonrpc_publish(self, name, bid, metadata, file_path=None, fee=None):
Expand Down

0 comments on commit f989814

Please sign in to comment.