URI: 
       tRequire gossip_queries in LNWallet (follow-up f83d2d9fee160e7b5475d397672559fc8f947470) - workaround lnd bug https://github.com/lightningnetwork/lnd/issues/3651 - also reduces bandwidth usage - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit b29cdc02da10836fc32e6be76b6ca5f463bd86ac
   DIR parent c478f3bb91371204c9015fb7160a9c26ca15607e
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Tue, 22 Dec 2020 12:28:40 +0100
       
       Require gossip_queries in LNWallet (follow-up f83d2d9fee160e7b5475d397672559fc8f947470)
        - workaround lnd bug https://github.com/lightningnetwork/lnd/issues/3651
        - also reduces bandwidth usage
       
       Diffstat:
         M electrum/lnpeer.py                  |       9 +++++++++
         M electrum/lnworker.py                |       3 +++
       
       2 files changed, 12 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/electrum/lnpeer.py b/electrum/lnpeer.py
       t@@ -256,6 +256,8 @@ class Peer(Logger):
                self.gossip_queue.put_nowait(('channel_update', payload))
        
            def maybe_save_remote_update(self, payload):
       +        if not self.channels:
       +            return
                for chan in self.channels.values():
                    if chan.short_channel_id == payload['short_channel_id']:
                        chan.set_remote_update(payload['raw'])
       t@@ -265,7 +267,14 @@ class Peer(Logger):
                    # Save (some bounded number of) orphan channel updates for later
                    # as it might be for our own direct channel with this peer
                    # (and we might not yet know the short channel id for that)
       +            # Background: this code is here to deal with a bug in LND,
       +            # see https://github.com/lightningnetwork/lnd/issues/3651
       +            # and https://github.com/lightningnetwork/lightning-rfc/pull/657
       +            # This code assumes gossip_queries is set. BOLT7: "if the
       +            # gossip_queries feature is negotiated, [a node] MUST NOT
       +            # send gossip it did not generate itself"
                    short_channel_id = ShortChannelID(payload['short_channel_id'])
       +            self.logger.info(f'received orphan channel update {short_channel_id}')
                    self.orphan_channel_updates[short_channel_id] = payload
                    while len(self.orphan_channel_updates) > 25:
                        self.orphan_channel_updates.popitem(last=False)
   DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py
       t@@ -554,6 +554,9 @@ class LNWallet(LNWorker):
                self.lnrater: LNRater = None
                self.features |= LnFeatures.OPTION_DATA_LOSS_PROTECT_REQ
                self.features |= LnFeatures.OPTION_STATIC_REMOTEKEY_REQ
       +        # we do not want to receive unrequested gossip (see lnpeer.maybe_save_remote_update)
       +        self.features |= LnFeatures.GOSSIP_QUERIES_REQ
       +
                self.payments = self.db.get_dict('lightning_payments')     # RHASH -> amount, direction, is_paid  # FIXME amt should be msat
                self.preimages = self.db.get_dict('lightning_preimages')   # RHASH -> preimage
                # note: this sweep_address is only used as fallback; as it might result in address-reuse