From 29481beb98a8aabb2f2f1f45a3aa07333dd777e2 Mon Sep 17 00:00:00 2001 From: logbie Date: Fri, 24 Apr 2026 03:21:03 -0500 Subject: [PATCH] fix: pass loaded WflConfig to Interpreter, not just the timeout Interpreter::with_timeout() constructs a fresh WflConfig with only the timeout field set, defaulting everything else. That silently discards every setting loaded from .wflcfg other than timeout_seconds -- including web_server_bind_address, so `listen on port N as ...` always binds 127.0.0.1 regardless of the operator-supplied value. Switch to Interpreter::with_config(Arc::new(config.clone())) so the fully-loaded config reaches the interpreter. The .clone() is needed because `config` is also used later at main.rs:1297 (`if config.logging_enabled`). Repro before this change: echo "web_server_bind_address = 0.0.0.0" > .wflcfg cat > server.wfl < io::Result<()> { // Log execution start if execution logging is enabled exec_trace!("Starting execution of script: {}", &file_path); - let mut interpreter = Interpreter::with_timeout(config.timeout_seconds); + let mut interpreter = Interpreter::with_config(std::sync::Arc::new(config.clone())); interpreter.set_step_mode(step_mode); // Set step mode from CLI flag interpreter.set_test_mode(test_mode); // Set test mode from CLI flag interpreter.set_script_args(script_args); // Pass script arguments