diff --git a/electrum/network.py b/electrum/network.py index 90d66a344..0def020ab 100644 --- a/electrum/network.py +++ b/electrum/network.py @@ -891,12 +891,18 @@ class Network(Logger, NetworkRetryManager[ServerAddr]): return make_reliable_wrapper def catch_server_exceptions(func): + """Decorator that wraps server errors in UntrustedServerReturnedError, + to avoid showing untrusted arbitrary text to users. + """ @functools.wraps(func) async def wrapper(self, *args, **kwargs): try: return await func(self, *args, **kwargs) except aiorpcx.jsonrpc.CodeMessageError as e: - raise UntrustedServerReturnedError(original_exception=e) from e + wrapped_exc = UntrustedServerReturnedError(original_exception=e) + # log (sanitized) untrusted error text now, to ease debugging + self.logger.debug(f"got error from server for {func.__qualname__}: {wrapped_exc!r}") + raise wrapped_exc from e return wrapper @best_effort_reliable