[Pkg-bitcoin-commits] [electrum] 01/04: Imported Upstream version 2.5.4

Tristan Seligmann mithrandi at moszumanska.debian.org
Fri Nov 13 00:08:36 UTC 2015


This is an automated email from the git hooks/post-receive script.

mithrandi pushed a commit to branch master
in repository electrum.

commit 1c8ff395a75063bae001e7b43d3e0c18d2fcbc06
Author: Tristan Seligmann <mithrandi at debian.org>
Date:   Thu Nov 12 19:47:05 2015 +0200

    Imported Upstream version 2.5.4
---
 Electrum.egg-info/PKG-INFO |  2 +-
 PKG-INFO                   |  2 +-
 RELEASE-NOTES              |  3 +++
 gui/android.py             |  3 ---
 gui/qt/icons_rc.py         |  2 +-
 gui/qt/main_window.py      |  1 -
 gui/stdio.py               | 13 +------------
 gui/text.py                |  3 ---
 lib/bitcoin.py             |  3 +--
 lib/network.py             | 14 ++++++++++----
 lib/synchronizer.py        |  5 ++++-
 lib/version.py             |  2 +-
 lib/wallet.py              | 14 ++++++++++----
 plugins/labels.py          |  3 +++
 14 files changed, 36 insertions(+), 34 deletions(-)

diff --git a/Electrum.egg-info/PKG-INFO b/Electrum.egg-info/PKG-INFO
index 19e6d02..bdce339 100644
--- a/Electrum.egg-info/PKG-INFO
+++ b/Electrum.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: Electrum
-Version: 2.5.3
+Version: 2.5.4
 Summary: Lightweight Bitcoin Wallet
 Home-page: https://electrum.org
 Author: Thomas Voegtlin
diff --git a/PKG-INFO b/PKG-INFO
index 19e6d02..bdce339 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: Electrum
-Version: 2.5.3
+Version: 2.5.4
 Summary: Lightweight Bitcoin Wallet
 Home-page: https://electrum.org
 Author: Thomas Voegtlin
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 8edef06..68d1ef5 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,3 +1,6 @@
+# Release 2.5.4
+ * increase MIN_RELAY_TX_FEE to avoid dust transactions
+
 # Release 2.5.3 (bugfixes)
  * installwizard: do not allow direct copy-paste of the seed
  * installwizard: fix bug #1531 (starting offline)
diff --git a/gui/android.py b/gui/android.py
index c1d9f47..16d14d8 100644
--- a/gui/android.py
+++ b/gui/android.py
@@ -909,9 +909,6 @@ class ElectrumGui:
         network = _network
         config = _config
         network.register_callback('updated', update_callback)
-        network.register_callback('connected', update_callback)
-        network.register_callback('disconnected', update_callback)
-        network.register_callback('disconnecting', update_callback)
 
         contacts = util.StoreDict(config, 'contacts')
 
diff --git a/gui/qt/icons_rc.py b/gui/qt/icons_rc.py
index c03b236..5b6f85f 100644
--- a/gui/qt/icons_rc.py
+++ b/gui/qt/icons_rc.py
@@ -2,7 +2,7 @@
 
 # Resource object code
 #
-# Created: mer. nov. 11 16:13:13 2015
+# Created: jeu. nov. 12 15:04:26 2015
 #      by: The Resource Compiler for PyQt (Qt v4.8.6)
 #
 # WARNING! All changes made in this file will be lost!
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
index 9affe26..0641c98 100644
--- a/gui/qt/main_window.py
+++ b/gui/qt/main_window.py
@@ -163,7 +163,6 @@ class ElectrumWindow(QMainWindow, PrintError):
             self.network.register_callback('updated', lambda: self.need_update.set())
             self.network.register_callback('new_transaction', self.new_transaction)
             self.register_callback('status', self.update_status)
-            self.register_callback('close', self.close)
             self.register_callback('banner', self.console.showMessage)
             self.register_callback('verified', self.history_list.update_item)
 
diff --git a/gui/stdio.py b/gui/stdio.py
index e338ba9..8688690 100644
--- a/gui/stdio.py
+++ b/gui/stdio.py
@@ -35,9 +35,7 @@ class ElectrumGui:
         self.contacts = StoreDict(self.config, 'contacts')
 
         self.wallet.network.register_callback('updated', self.updated)
-        self.wallet.network.register_callback('connected', self.connected)
-        self.wallet.network.register_callback('disconnected', self.disconnected)
-        self.wallet.network.register_callback('disconnecting', self.disconnecting)
+
         self.wallet.network.register_callback('peers', self.peers)
         self.wallet.network.register_callback('banner', self.print_banner)
         self.commands = [_("[h] - displays this help text"), \
@@ -73,15 +71,6 @@ class ElectrumGui:
         for s in l:
             print (s)
 
-    def connected(self):
-        print ("connected")
-
-    def disconnected(self):
-        print ("disconnected")
-
-    def disconnecting(self):
-        print ("disconnecting")
-
     def updated(self):
         s = self.get_balance()
         if s != self.last_balance:
diff --git a/gui/text.py b/gui/text.py
index bae39af..5d1e242 100644
--- a/gui/text.py
+++ b/gui/text.py
@@ -54,9 +54,6 @@ class ElectrumGui:
 
         if self.network:
             self.network.register_callback('updated', self.update)
-            self.network.register_callback('connected', self.refresh)
-            self.network.register_callback('disconnected', self.refresh)
-            self.network.register_callback('disconnecting', self.refresh)
 
         self.tab_names = [_("History"), _("Send"), _("Receive"), _("Addresses"), _("Contacts"), _("Banner")]
         self.num_tabs = len(self.tab_names)
diff --git a/lib/bitcoin.py b/lib/bitcoin.py
index 1f54b36..4ecf727 100644
--- a/lib/bitcoin.py
+++ b/lib/bitcoin.py
@@ -30,8 +30,7 @@ import aes
 
 ################################## transactions
 
-DUST_THRESHOLD = 546
-MIN_RELAY_TX_FEE = 1000
+MIN_RELAY_TX_FEE = 5000
 RECOMMENDED_FEE = 50000
 COINBASE_MATURITY = 100
 COIN = 100000000
diff --git a/lib/network.py b/lib/network.py
index 31201ad..43352e1 100644
--- a/lib/network.py
+++ b/lib/network.py
@@ -198,10 +198,10 @@ class Network(util.DaemonThread):
         with self.lock:
             self.callbacks[event].append(callback)
 
-    def trigger_callback(self, event, params=()):
+    def trigger_callback(self, event, *args):
         with self.lock:
             callbacks = self.callbacks[event][:]
-        [callback(*params) for callback in callbacks]
+        [callback(*args) for callback in callbacks]
 
     def read_recent_servers(self):
         if not self.config.path:
@@ -294,11 +294,10 @@ class Network(util.DaemonThread):
         return value
 
     def notify(self, key):
-        value = self.get_status_value(key)
         if key in ['status', 'updated']:
             self.trigger_callback(key)
         else:
-            self.trigger_callback(key, (value,))
+            self.trigger_callback(key, self.get_status_value(key))
 
     def get_parameters(self):
         host, port, protocol = deserialize_server(self.default_server)
@@ -556,6 +555,13 @@ class Network(util.DaemonThread):
                 message_id = self.queue_request(method, params)
                 self.unanswered_requests[message_id] = method, params, callback
 
+    def unsubscribe(self, callback):
+        '''Unsubscribe a callback to free object references to enable GC.'''
+        # Note: we can't unsubscribe from the server, so if we receive
+        # subsequent notifications process_response() will emit a harmless
+        # "received unexpected notification" warning
+        self.subscriptions.pop(callback, None)
+
     def connection_down(self, server):
         '''A connection to server either went down, or was never made.
         We distinguish by whether it is in self.interfaces.'''
diff --git a/lib/synchronizer.py b/lib/synchronizer.py
index ef4796b..8762ea0 100644
--- a/lib/synchronizer.py
+++ b/lib/synchronizer.py
@@ -56,6 +56,9 @@ class Synchronizer(ThreadJob):
         return (not self.requested_tx and not self.requested_histories
                 and not self.requested_addrs)
 
+    def release(self):
+        self.network.unsubscribe(self.addr_subscription_response)
+
     def add(self, address):
         '''This can be called from the proxy or GUI threads.'''
         with self.lock:
@@ -126,7 +129,7 @@ class Synchronizer(ThreadJob):
         self.print_error("received tx %s height: %d bytes: %d" %
                          (tx_hash, tx_height, len(tx.raw)))
         # callbacks
-        self.network.trigger_callback('new_transaction', (tx,))
+        self.network.trigger_callback('new_transaction', tx)
         if not self.requested_tx:
             self.network.trigger_callback('updated')
 
diff --git a/lib/version.py b/lib/version.py
index b99f568..5f999bc 100644
--- a/lib/version.py
+++ b/lib/version.py
@@ -1,4 +1,4 @@
-ELECTRUM_VERSION = '2.5.3'  # version of the client package
+ELECTRUM_VERSION = '2.5.4'  # version of the client package
 PROTOCOL_VERSION = '0.10'   # protocol version requested
 NEW_SEED_VERSION = 11       # electrum versions >= 2.0
 OLD_SEED_VERSION = 4        # electrum versions < 2.0
diff --git a/lib/wallet.py b/lib/wallet.py
index 8a6fcfd..aee1ef4 100644
--- a/lib/wallet.py
+++ b/lib/wallet.py
@@ -36,6 +36,7 @@ from transaction import Transaction
 from plugins import run_hook
 import bitcoin
 from synchronizer import Synchronizer
+from verifier import SPV
 from mnemonic import Mnemonic
 
 import paymentrequest
@@ -434,7 +435,7 @@ class Abstract_Wallet(PrintError):
         self.storage.put('verified_tx3', self.verified_tx, True)
 
         conf, timestamp = self.get_confirmations(tx_hash)
-        self.network.trigger_callback('verified', (tx_hash, conf, timestamp))
+        self.network.trigger_callback('verified', tx_hash, conf, timestamp)
 
     def get_unverified_txs(self):
         '''Returns a map from tx hash to transaction height'''
@@ -897,6 +898,9 @@ class Abstract_Wallet(PrintError):
         # this method can be overloaded
         return tx.get_fee()
 
+    def dust_threshold(self):
+        return 182 * 3 * MIN_RELAY_TX_FEE/1000
+
     @profiler
     def estimated_fee(self, tx, fee_per_kb):
         estimated_size = len(tx.serialize(-1))/2
@@ -975,7 +979,7 @@ class Abstract_Wallet(PrintError):
         change_amount = total - ( amount + fee )
         if fixed_fee is not None and change_amount > 0:
             tx.outputs.append(('address', change_addr, change_amount))
-        elif change_amount > DUST_THRESHOLD:
+        elif change_amount > self.dust_threshold():
             tx.outputs.append(('address', change_addr, change_amount))
             # recompute fee including change output
             fee = self.estimated_fee(tx, fee_per_kb)
@@ -983,7 +987,7 @@ class Abstract_Wallet(PrintError):
             tx.outputs.pop()
             # if change is still above dust threshold, re-add change output.
             change_amount = total - ( amount + fee )
-            if change_amount > DUST_THRESHOLD:
+            if change_amount > self.dust_threshold():
                 tx.outputs.append(('address', change_addr, change_amount))
                 self.print_error('change', change_amount)
             else:
@@ -1128,7 +1132,6 @@ class Abstract_Wallet(PrintError):
                 self.transactions.pop(tx_hash)
 
     def start_threads(self, network):
-        from verifier import SPV
         self.network = network
         if self.network is not None:
             self.prepare_for_verifier()
@@ -1142,8 +1145,11 @@ class Abstract_Wallet(PrintError):
     def stop_threads(self):
         if self.network:
             self.network.remove_jobs([self.synchronizer, self.verifier])
+            self.synchronizer.release()
             self.synchronizer = None
             self.verifier = None
+            # Now no references to the syncronizer or verifier
+            # remain so they will be GC-ed
             self.storage.put('stored_height', self.get_local_height(), True)
 
     def wait_until_synchronized(self, callback=None):
diff --git a/plugins/labels.py b/plugins/labels.py
index f9598f2..7c74dfd 100644
--- a/plugins/labels.py
+++ b/plugins/labels.py
@@ -53,6 +53,9 @@ class Plugin(BasePlugin):
         t.setDaemon(True)
         t.start()
 
+    def on_close_window(self, window):
+        self.wallets.pop(window.wallet)
+
     def version(self):
         return "0.0.1"
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-bitcoin/electrum.git



More information about the Pkg-bitcoin-commits mailing list