- Replace all sqlite::open().unwrap() per-request with shared Arc<Mutex<Connection>> - Add Mutex poisoning recovery in all cfg.lock() and db.lock() calls - Fix std::str::from_utf8().unwrap() with safe match → 400 Bad Request - Fix timestamp_nanos_opt().unwrap() with safe match - Fix panic on RPC client failure (bal-pusher): error log + sleep + retry - Fix ZMQ socket connect with retry loop (bal-pusher) - Add ZMQ_RCVTIMEO=5000 and match recv for graceful timeout (bal-pusher) - Fix ZMQ subscribe error with match instead of unwrap (bal-pusher) - Add unwrap_or for all tbl_stats row fields in echo_stats (prevent NULL panic) - Add panic_regression_tests.rs: test mutex poisoning recovery and NULL unwrap_or All tests pass: cargo test --test panic_regression_tests + sql_injection_tests Build verified: cargo check --bin=bal-server --bin=bal-pusher
1.4 KiB
1.4 KiB