From 7ec1e68d6cd293dcc7b08d130ccbc755314e4482 Mon Sep 17 00:00:00 2001 From: daywalker90 <8257956+daywalker90@users.noreply.github.com> Date: Thu, 23 Apr 2026 11:00:51 +0200 Subject: [PATCH] fix budget race condition --- CHANGELOG.md | 5 +++++ Cargo.lock | 2 +- Cargo.toml | 2 +- coffee.yml | 2 +- src/rpc.rs | 8 ++++---- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cb0208..6eb4680 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## [0.1.9] 2026-04-23 + +### Fixed +- ``nip47-budget``: race condition where new budget settings would sometimes be ignored + ## [0.1.8] 2026-04-03 ### Changed diff --git a/Cargo.lock b/Cargo.lock index 9a88dd3..99c47f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -272,7 +272,7 @@ dependencies = [ [[package]] name = "cln-nip47" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", "cln-plugin", diff --git a/Cargo.toml b/Cargo.toml index f846dd5..554256b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cln-nip47" -version = "0.1.8" +version = "0.1.9" edition = "2024" rust-version = "1.85.0" diff --git a/coffee.yml b/coffee.yml index 9c7d20d..980549a 100644 --- a/coffee.yml +++ b/coffee.yml @@ -1,6 +1,6 @@ plugin: name: cln-nip47 - version: 0.1.8 + version: 0.1.9 lang: rust install: | cargo build --release && cp target/release/cln-nip47 . && cargo clean diff --git a/src/rpc.rs b/src/rpc.rs index bbc12db..272d483 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -6,15 +6,15 @@ use cln_rpc::model::requests::{ DeldatastoreRequest, ListdatastoreRequest, }; -use nostr_sdk::{nips::nip47::NostrWalletConnectURI, Keys, SecretKey, Timestamp}; +use nostr_sdk::{Keys, SecretKey, Timestamp, nips::nip47::NostrWalletConnectURI}; use serde_json::json; use crate::{ + PLUGIN_NAME, nwc::{run_nwc, send_nwc_info_event, start_nwc_budget_job, stop_nwc, stop_nwc_budget_job}, parse::parse_time_period, structs::{BudgetIntervalConfig, NwcStore, PluginState}, util::{build_capabilities, is_read_only_nwc, load_nwc_store, update_nwc_store}, - PLUGIN_NAME, }; pub async fn nwc_create( @@ -140,12 +140,12 @@ pub async fn nwc_budget( let is_new_nwc_read_only = is_read_only_nwc(&nwc_store); + update_nwc_store(&mut rpc, &label, nwc_store.clone()).await?; + if nwc_store.interval_config.is_some() { start_nwc_budget_job(&plugin, label.clone()); } - update_nwc_store(&mut rpc, &label, nwc_store.clone()).await?; - if is_old_nwc_read_only != is_new_nwc_read_only { let wallet_keys = Keys::new(SecretKey::from_hex(&nwc_store.walletkey)?); let (method_capabilities, _) = build_capabilities(is_new_nwc_read_only, &plugin);