parse_proxy_config was using expect()/unwrap()/panic!() which would crash the process on malformed proxy config strings instead of returning a descriptive error. Now returns ConfigError::ProxyConfigInvalid with the specific issue (bad scheme, bad address). Added tests for invalid scheme, invalid address, and end-to-end from_serve_options.
2.0 KiB
id, name, status, depends_on, scope, risk, impact, level
| id | name | status | depends_on | scope | risk | impact | level | |
|---|---|---|---|---|---|---|---|---|
| cleanup/panic-free-static-config | Replace panic/expect/unwrap with Result-based error handling in StaticConfig | completed |
|
narrow | low | component | implementation |
Description
The parse_proxy_config function and related code in crates/alknet-core/src/config/static_config.rs uses expect(), panic!(), and bare unwrap() calls. This is bad form for production code — panics in library code should be avoided unless truly unreachable.
Since StaticConfig::from_serve_options() already returns Result<..., ConfigError>, the proxy config parsing should propagate errors through the Result chain instead of panicking. A misconfigured proxy string should produce a clear ConfigError, not crash the process.
Fix:
- Replace
expect()andpanic!()inparse_proxy_configwith properResult::Errreturns - Replace bare
unwrap()calls with?or explicit error mapping - Ensure all error paths produce meaningful
ConfigErrorvariants
Acceptance Criteria
- No
panic!(),expect(), or bareunwrap()instatic_config.rsproduction code paths - All error paths return
Result<..., ConfigError>with descriptive messages - Invalid proxy config strings produce clear errors instead of panicking
- All existing tests pass
- New test: malformed proxy string returns
Err(ConfigError), doesn't panic
References
- crates/alknet-core/src/config/static_config.rs — lines with panic/expect/unwrap
- crates/alknet-core/src/error.rs — ConfigError type
Notes
Identified during Phase 1 review (W5)
Summary
Replaced all panic!/expect()/unwrap() in parse_proxy_config with Result-based error handling. Added ConfigError::ProxyConfigInvalid variant. Invalid proxy scheme or malformed address now returns clear errors instead of panicking. Added 4 new tests covering invalid scheme, invalid address, and from_serve_options error propagation.