Sfoglia il codice sorgente

darkfid: apply update_balances to every request it receive

ghassmo 4 anni fa
parent
commit
a6b003bd9d
1 ha cambiato i file con 9 aggiunte e 7 eliminazioni
  1. 9 7
      src/bin/darkfid.rs

+ 9 - 7
src/bin/darkfid.rs

@@ -51,6 +51,14 @@ impl RequestHandler for Darkfid {
 
         debug!(target: "RPC", "--> {}", serde_json::to_string(&req).unwrap());
 
+        if self.update_balances().await.is_err() {
+            return JsonResult::Err(jsonerr(
+                InternalError,
+                Some("Unable to update balances".into()),
+                req.id,
+            ));
+        }
+
         match req.method.as_str() {
             Some("say_hello") => return self.say_hello(req.id, req.params).await,
             Some("create_wallet") => return self.create_wallet(req.id, req.params).await,
@@ -121,6 +129,7 @@ impl Darkfid {
                     .confirm_spend_coin(&own_coin.coin)?;
             }
         }
+
         Ok(())
     }
 
@@ -160,8 +169,6 @@ impl Darkfid {
     // <-- {"result": "get_balances": "[ {"btc": (value, network)}, .. ]"}
     async fn get_balances(&self, id: Value, _params: Value) -> JsonResult {
         let result: Result<HashMap<String, (String, String)>> = async {
-            self.update_balances().await?;
-
             let balances = self.client.lock().await.get_balances()?;
             let mut symbols: HashMap<String, (String, String)> = HashMap::new();
 
@@ -512,8 +519,6 @@ impl Darkfid {
             let decimals: usize = 8;
             let amount = decode_base10(amount, decimals, true)?;
 
-            self.update_balances().await?;
-
             self.client
                 .lock()
                 .await
@@ -552,7 +557,6 @@ async fn start(
     let mut cashier_keys = Vec::new();
 
     if let Some(cpub) = local_cashier {
-
         let cashier_public: jubjub::SubgroupPoint = deserialize(&bs58::decode(cpub).into_vec()?)?;
 
         cashiers.push(Cashier {
@@ -562,7 +566,6 @@ async fn start(
         });
 
         cashier_keys.push(cashier_public);
-
     } else {
         for cashier in config.clone().cashiers {
             if cashier.public_key.is_empty() {
@@ -666,7 +669,6 @@ async fn main() -> Result<()> {
 
     let config: DarkfidConfig = Config::<DarkfidConfig>::load(config_path)?;
 
-
     if args.is_present("refresh") {
         debug!(target: "DARKFI DAEMON", "Refresh the wallet and the database");