From 042c0da6f617342b6d8762af7ff437452442612c Mon Sep 17 00:00:00 2001 From: Ivan Mikushin Date: Sun, 29 Dec 2024 23:48:46 -0800 Subject: [PATCH] charms server: return 404 only if the spell really isn't there (part 2) --- src/cli/server.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/cli/server.rs b/src/cli/server.rs index 2434cf2..e0db7ee 100644 --- a/src/cli/server.rs +++ b/src/cli/server.rs @@ -1,7 +1,7 @@ use crate::{cli::ServerConfig, spell::Spell, tx::spell_and_proof}; use anyhow::Result; use axum::{http::StatusCode, routing::get, Json, Router}; -use bitcoincore_rpc::{Auth, Client, RpcApi}; +use bitcoincore_rpc::{jsonrpc::Error::Rpc, Auth, Client, RpcApi}; use serde::{Deserialize, Serialize}; use std::{str::FromStr, sync::OnceLock}; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; @@ -76,9 +76,14 @@ fn get_spell(txid: &str) -> Result { None => Err(StatusCode::NOT_FOUND), Some((s, _)) => Ok(Spell::denormalized(&s)), }, - Err(e) => { - eprintln!("Error fetching transaction: {}", e); - Err(StatusCode::INTERNAL_SERVER_ERROR) - } + Err(e) => match e { + bitcoincore_rpc::Error::JsonRpc(Rpc(rpc_error)) if rpc_error.code == -5 => { + Err(StatusCode::NOT_FOUND) + } + _ => { + eprintln!("Error: {:?}", e); + Err(StatusCode::INTERNAL_SERVER_ERROR) + } + }, } }