Browse Source
qt "open channel" dialog: detect invalid remote node id sooner
and avoid the "please wait" text to be interpreted as a node id
related #6705
patch-4
SomberNight
4 years ago
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
3 changed files with
11 additions and
4 deletions
-
electrum/gui/qt/channels_list.py
-
electrum/gui/qt/main_window.py
-
electrum/lnutil.py
|
|
@ -357,8 +357,9 @@ class ChannelsList(MyTreeView): |
|
|
|
self.parent.wallet.network.start_gossip() |
|
|
|
nodeid = bh2u(lnworker.lnrater.suggest_peer() or b'') |
|
|
|
if not nodeid: |
|
|
|
remote_nodeid.setText( |
|
|
|
"Please wait until the graph is synchronized to 30%.") |
|
|
|
remote_nodeid.setText("") |
|
|
|
remote_nodeid.setPlaceholderText( |
|
|
|
"Please wait until the graph is synchronized to 30%, and then try again.") |
|
|
|
else: |
|
|
|
remote_nodeid.setText(nodeid) |
|
|
|
remote_nodeid.repaint() # macOS hack for #6269 |
|
|
|
|
|
@ -74,7 +74,7 @@ from electrum.network import Network, TxBroadcastError, BestEffortRequestFailed, |
|
|
|
from electrum.exchange_rate import FxThread |
|
|
|
from electrum.simple_config import SimpleConfig |
|
|
|
from electrum.logging import Logger |
|
|
|
from electrum.lnutil import ln_dummy_address |
|
|
|
from electrum.lnutil import ln_dummy_address, extract_nodeid, ConnStringFormatError |
|
|
|
from electrum.lnaddr import lndecode, LnDecodeException |
|
|
|
|
|
|
|
from .exception_window import Exception_Hook |
|
|
@ -1757,6 +1757,11 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): |
|
|
|
return make_tx |
|
|
|
|
|
|
|
def open_channel(self, connect_str, funding_sat, push_amt): |
|
|
|
try: |
|
|
|
extract_nodeid(connect_str) |
|
|
|
except ConnStringFormatError as e: |
|
|
|
self.main_window.show_error(str(e)) |
|
|
|
return |
|
|
|
# use ConfirmTxDialog |
|
|
|
# we need to know the fee before we broadcast, because the txid is required |
|
|
|
make_tx = self.mktx_for_open_channel(funding_sat) |
|
|
|
|
|
@ -1203,7 +1203,8 @@ def extract_nodeid(connect_contents: str) -> Tuple[bytes, str]: |
|
|
|
raise ConnStringFormatError(_('At least a hostname must be supplied after the at symbol.')) |
|
|
|
try: |
|
|
|
node_id = bfh(nodeid_hex) |
|
|
|
assert len(node_id) == 33, len(node_id) |
|
|
|
if len(node_id) != 33: |
|
|
|
raise Exception() |
|
|
|
except: |
|
|
|
raise ConnStringFormatError(_('Invalid node ID, must be 33 bytes and hexadecimal')) |
|
|
|
return node_id, rest |
|
|
|