Skip to content

Commit

Permalink
qt "open channel" dialog: detect invalid remote node id sooner
Browse files Browse the repository at this point in the history
and avoid the "please wait" text to be interpreted as a node id

related spesmilo#6705
  • Loading branch information
SomberNight committed Nov 13, 2020
1 parent 46e59d1 commit c872c31
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
5 changes: 3 additions & 2 deletions electrum/gui/qt/channels_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -357,8 +357,9 @@ def on_suggest():
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
Expand Down
7 changes: 6 additions & 1 deletion electrum/gui/qt/main_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
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
Expand Down Expand Up @@ -1757,6 +1757,11 @@ def mktx_for_open_channel(self, funding_sat):
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)
Expand Down
3 changes: 2 additions & 1 deletion electrum/lnutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit c872c31

Please sign in to comment.