URI: 
       tlightning: do not require lock for broadcast tx, it is thread-safe - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 76bd120bdf2011de24b415204bdafd65478c2b22
   DIR parent 311c53ef1d470e2dae7011a9de480e4c5e4ae524
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Tue, 20 Mar 2018 14:51:55 +0100
       
       lightning: do not require lock for broadcast tx, it is thread-safe
       
       Diffstat:
         M lib/lightning.py                    |      27 +++++++++++----------------
       
       1 file changed, 11 insertions(+), 16 deletions(-)
       ---
   DIR diff --git a/lib/lightning.py b/lib/lightning.py
       t@@ -197,12 +197,7 @@ def SendOutputs(json):
                m.resultHash = ""
                return json_format.MessageToJson(m)
        
       -    suc, has = NETWORK.broadcast(tx)
       -    if not suc:
       -        m.success = False
       -        m.error = "electrum/lightning/SendOutputs: Could not broadcast: " + str(has)
       -        m.resultHash = ""
       -        return json_format.MessageToJson(m)
       +    publishTxThread(tx)
            m.success = True
            m.error = ""
            m.resultHash = tx.txid()
       t@@ -475,21 +470,21 @@ def signOutputRaw(tx, signDesc):
                                          signDesc.output.value, signDesc.witnessScript, sigHashAll, pri2)
            return sig[:len(sig) - 1]
        
       -async def PublishTransaction(json):
       -    req = rpc_pb2.PublishTransactionRequest()
       -    json_format.Parse(json, req)
       -    global NETWORK, globLock
       -    tx = transaction.Transaction(binascii.hexlify(req.tx).decode("utf-8"))
       -    def target(tx, NETWORK, globLock):
       -        globLock.acquire()
       +def publishTxThread(tx):
       +    global NETWORK
       +    def target(tx, NETWORK):
                try:
                  res = NETWORK.broadcast(tx)
                  print("PUBLISH TRANSACTION IN SEPARATE THREAD PRODUCED", res)
                except:
                  traceback.print_exc()
       -        finally:
       -          globLock.release()
       -    threading.Thread(target=target, args=(tx, NETWORK, globLock)).start()
       +    threading.Thread(target=target, args=(tx, NETWORK)).start()
       +
       +async def PublishTransaction(json):
       +    req = rpc_pb2.PublishTransactionRequest()
       +    json_format.Parse(json, req)
       +    tx = transaction.Transaction(binascii.hexlify(req.tx).decode("utf-8"))
       +    publishTxThread(tx)
            m = rpc_pb2.PublishTransactionResponse()
            m.success = True
            m.error = ""