From 93f700d9619eb5ed955e0e6429004cc5ee97c647 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 15 Nov 2019 14:27:34 +0100 Subject: [PATCH] Return Ok(None) when the registrar contract returns empty slice (#11257) --- miner/src/service_transaction_checker.rs | 2 +- util/registrar/src/registrar.rs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/miner/src/service_transaction_checker.rs b/miner/src/service_transaction_checker.rs index d0343d6e2..2d058a119 100644 --- a/miner/src/service_transaction_checker.rs +++ b/miner/src/service_transaction_checker.rs @@ -44,12 +44,12 @@ impl ServiceTransactionChecker { client: &C, tx: &SignedTransaction ) -> Result { - let sender = tx.sender(); // Skip checking the contract if the transaction does not have zero gas price if !tx.gas_price.is_zero() { return Ok(false) } + let sender = tx.sender(); self.check_address(client, sender) } diff --git a/util/registrar/src/registrar.rs b/util/registrar/src/registrar.rs index e236de4f8..8175a90b0 100644 --- a/util/registrar/src/registrar.rs +++ b/util/registrar/src/registrar.rs @@ -42,9 +42,10 @@ pub trait RegistrarClient: CallContract + Send + Sync { let id = encode_input(hashed_key, DNS_A_RECORD); let address_bytes = self.call_contract(block, registrar_address, id)?; - + if address_bytes.is_empty() { + return Ok(None) + } let address = decode_output(&address_bytes).map_err(|e| e.to_string())?; - if address.is_zero() { Ok(None) } else {