Skip to content

Default development server to loopback and preserve bind interface - #555

Merged
rochacbruno merged 1 commit into
mainfrom
fix/dev-server-loopback
Sep 29, 2026
Merged

rochacbruno merged 1 commit into
mainfrom
fix/dev-server-loopback

Conversation

@rochacbruno

Copy link
Copy Markdown
Owner

The development server previously defaulted to all interfaces, and a failed explicit loopback bind could fall back to all interfaces. Default --serve to 127.0.0.1:8000 and preserve the requested IPv4/IPv6 interfaces when retrying on an OS-assigned port. Explicit network binds remain supported.

Label the server as development-only in CLI help, source comments, terminal startup output, and documentation. Add binding regression tests and a draft release note.

This intentionally addresses only binding defaults/fallback and development-only messaging. Editor/API behavior is unchanged; no authentication, CSRF/CORS checks, or filesystem restrictions are introduced. This does not resolve the broader path-traversal findings.

Related to #554.

Validation: formatting, Clippy with warnings denied, the full unit/integration test suite, and mask pedantic passed with Rust 1.96. The example site also builds successfully.

Browser visual verification could not run because the browser tool rejected this session's API-key authentication. The preview server started successfully on loopback and printed the development-only message.

@github-actions

Copy link
Copy Markdown

Code Coverage

Coverage report could not be generated.

Show output
imd_flag-5fa03e3c45b4101d.rmeta --extern raw_cpuid=/__w/marmite/marmite/target/debug/build/raw-cpuid/30a1f1dd5e7c8b41/out/libraw_cpuid-30a1f1dd5e7c8b41.rmeta --extern reborrow=/__w/marmite/marmite/target/debug/build/reborrow/608cbab27e87df87/out/libreborrow-608cbab27e87df87.rmeta --cap-lints allow -Cdebuginfo=2 -Cstrip=none --cfg=tarpaulin -Clink-dead-code --force-warn=unused_crate_dependencies --cfg libpulp_const --check-cfg 'cfg(libpulp_const)'`
   Compiling loop9 v0.1.5
     Running `/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc --crate-name loop9 --edition=2021 /usr/local/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/loop9-0.1.5/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat,unused-externs-silent --crate-type lib --emit=dep-info,metadata,link -Z embed-metadata=no -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=9c129ef033b6f569 -C extra-filename=-9ec02478d2a9945c --out-dir /__w/marmite/marmite/target/debug/build/loop9/9ec02478d2a9945c/out --extern imgref=/__w/marmite/marmite/target/debug/build/imgref/57a6aa3332a968b6/out/libimgref-57a6aa3332a968b6.rmeta --cap-lints allow -Cdebuginfo=2 -Cstrip=none --cfg=tarpaulin -Clink-dead-code --force-warn=unused_crate_dependencies`
   Compiling signal-hook-registry v1.4.8
     Running `/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc --crate-name signal_hook_registry --edition=2015 /usr/local/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/signal-hook-registry-1.4.8/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat,unused-externs-silent --crate-type lib --emit=dep-info,metadata,link -Z embed-metadata=no -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=8024cd3c8d41f0a9 -C extra-filename=-02b07fb660933ed3 --out-dir /__w/marmite/marmite/target/debug/build/signal-hook-registry/02b07fb660933ed3/out -L dependency=/__w/marmite/marmite/target/debug/build/libc/c780a52bb6a83b7d/out --extern errno=/__w/marmite/marmite/target/debug/build/errno/899025afc602f07e/out/liberrno-899025afc602f07e.rmeta --extern libc=/__w/marmite/marmite/target/debug/build/libc/c780a52bb6a83b7d/out/liblibc-c780a52bb6a83b7d.rmeta --cap-lints allow -Cdebuginfo=2 -Cstrip=none --cfg=tarpaulin -Clink-dead-code --force-warn=unused_crate_dependencies`
   Compiling notify v6.1.1
     Running `/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc --crate-name notify --edition=2021 /usr/local/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/notify-6.1.1/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat,unused-externs-silent --crate-type lib --emit=dep-info,metadata,link -Z embed-metadata=no -C embed-bitcode=no -C debuginfo=2 --cfg 'feature="crossbeam-channel"' --cfg 'feature="default"' --cfg 'feature="fsevent-sys"' --cfg 'feature="macos_fsevent"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("crossbeam-channel", "default", "fsevent-sys", "kqueue", "macos_fsevent", "macos_kqueue", "manual_tests", "mio", "serde", "timing_tests"))' -C metadata=44ccc7aadab90164 -C extra-filename=-c2ad7b092d724c28 --out-dir /__w/marmite/marmite/target/debug/build/notify/c2ad7b092d724c28/out -L dependency=/__w/marmite/marmite/target/debug/build/bitflags/92e079e44f352a5f/out -L dependency=/__w/marmite/marmite/target/debug/build/cfg-if/cfa8c34b3dabb49b/out -L dependency=/__w/marmite/marmite/target/debug/build/crossbeam-utils/b94190a01fe60930/out -L dependency=/__w/marmite/marmite/target/debug/build/inotify-sys/649e5282f1255025/out -L dependency=/__w/marmite/marmite/target/debug/build/libc/c780a52bb6a83b7d/out -L dependency=/__w/marmite/marmite/target/debug/build/log/bd28dd8cd3a50d9e/out -L dependency=/__w/marmite/marmite/target/debug/build/same-file/f4b85417f1720abf/out --extern crossbeam_channel=/__w/marmite/marmite/target/debug/build/crossbeam-channel/c560dcec9872e329/out/libcrossbeam_channel-c560dcec9872e329.rmeta --extern filetime=/__w/marmite/marmite/target/debug/build/filetime/78cf49152239f13e/out/libfiletime-78cf49152239f13e.rmeta --extern inotify=/__w/marmite/marmite/target/debug/build/inotify/eb7b2bdf8c033e2b/out/libinotify-eb7b2bdf8c033e2b.rmeta --extern libc=/__w/marmite/marmite/target/debug/build/libc/c780a52bb6a83b7d/out/liblibc-c780a52bb6a83b7d.rmeta --extern log=/__w/marmite/marmite/target/debug/build/log/bd28dd8cd3a50d9e/out/liblog-bd28dd8cd3a50d9e.rmeta --extern mio=/__w/marmite/marmite/target/debug/build/mio/46ed096e41cd9996/out/libmio-46ed096e41cd9996.rmeta --extern walkdir=/__w/marmite/marmite/target/debug/build/walkdir/64885f6ceffc20ac/out/libwalkdir-64885f6ceffc20ac.rmeta --cap-lints allow -Cdebuginfo=2 -Cstrip=none --cfg=tarpaulin -Clink-dead-code --force-warn=unused_crate_dependencies`
     Running `/__w/marmite/marmite/target/debug/build/arborium-fsharp/bb94a44023fd1152/out/build_script_build`
     Running `/__w/marmite/marmite/target/debug/build/arborium-json/4d97a106a682e848/out/build_script_build`
     Running `/__w/marmite/marmite/target/debug/build/arborium-svelte/dd2aff064b8e11ee/out/build_script_build`
�[2m2026-09-29T14:38:30.224133Z�[0m �[34mDEBUG�[0m �[2mcargo_tarpaulin::cargo�[0m�[2m:�[0m Linker paths: ["/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib", "/__w/marmite/marmite/target/debug/build/arborium-jsdoc/fc36a99f2856e6aa/out", "/__w/marmite/marmite/target/debug/build/arborium-javascript/de6de70c17fbe3bd/out", "/__w/marmite/marmite/target/debug/build/arborium-css/e0c4380310d1bdc9/out", "/__w/marmite/marmite/target/debug/build/arborium-c/09c8aa07b2855949/out", "/__w/marmite/marmite/target/debug/build/arborium-html/edfa113c6b4e9db8/out", "/__w/marmite/marmite/target/debug/build/ring/3818a4fc692f86d2/out", "/__w/marmite/marmite/target/debug/build/arborium-scss/fdde8207d234daa1/out", "/__w/marmite/marmite/target/debug/build/arborium-tree-sitter/f37deb2b739fb2da/out", "/__w/marmite/marmite/target/debug/build/arborium-typescript/f6f3191cf1443d09/out", "/__w/marmite/marmite/target/debug/build/zstd-sys/c2ffd8b4b91393f6/out", "/__w/marmite/marmite/target/debug/build/arborium-toml/9334cee6b4ed39ba/out", "/__w/marmite/marmite/target/debug/build/arborium-yaml/580a7c9e6e2993d8/out", "/__w/marmite/marmite/target/debug/build/arborium-cpp/e06928ca9450d272/out", "/__w/marmite/marmite/target/debug/build/arborium-json/9aeadf1b044f14f5/out"]
error: Broken pipe (os error 32)
warning: build failed, waiting for other jobs to finish...
error: could not compile `pulp` (lib) due to 10 previous errors

Caused by:
  process didn't exit successfully: `/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc --crate-name pulp --edition=2021 /usr/local/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pulp-0.22.3/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat,unused-externs-silent --crate-type lib --emit=dep-info,metadata,link -Z embed-metadata=no -C embed-bitcode=no -C debuginfo=2 --cfg 'feature="default"' --cfg 'feature="relaxed-simd"' --cfg 'feature="std"' --cfg 'feature="x86-v3"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("default", "macro", "nightly", "relaxed-simd", "std", "x86-v3", "x86-v4"))' -C metadata=49c6d26396880696 -C extra-filename=-267e5b9160e0d506 --out-dir /__w/marmite/marmite/target/debug/build/pulp/267e5b9160e0d506/out -L dependency=/__w/marmite/marmite/target/debug/build/bitflags/358e566ab75a077d/out -L dependency=/__w/marmite/marmite/target/debug/build/bytemuck/5cd59610090a74df/out -L dependency=/__w/marmite/marmite/target/debug/build/num-traits/e961cf18440cd68d/out --extern bytemuck=/__w/marmite/marmite/target/debug/build/bytemuck/5cd59610090a74df/out/libbytemuck-5cd59610090a74df.rmeta --extern cfg_if=/__w/marmite/marmite/target/debug/build/cfg-if/cfa8c34b3dabb49b/out/libcfg_if-cfa8c34b3dabb49b.rmeta --extern libm=/__w/marmite/marmite/target/debug/build/libm/fc62884bc3286f32/out/liblibm-fc62884bc3286f32.rmeta --extern num_complex=/__w/marmite/marmite/target/debug/build/num-complex/12c105d6bfc3b668/out/libnum_complex-12c105d6bfc3b668.rmeta --extern paste=/__w/marmite/marmite/target/debug/build/paste/6b7b026d5d765873/out/libpaste-6b7b026d5d765873.so --extern pulp_wasm_simd_flag=/__w/marmite/marmite/target/debug/build/pulp-wasm-simd-flag/5fa03e3c45b4101d/out/libpulp_wasm_simd_flag-5fa03e3c45b4101d.rmeta --extern raw_cpuid=/__w/marmite/marmite/target/debug/build/raw-cpuid/30a1f1dd5e7c8b41/out/libraw_cpuid-30a1f1dd5e7c8b41.rmeta --extern reborrow=/__w/marmite/marmite/target/debug/build/reborrow/608cbab27e87df87/out/libreborrow-608cbab27e87df87.rmeta --cap-lints allow -Cdebuginfo=2 -Cstrip=none --cfg=tarpaulin -Clink-dead-code --force-warn=unused_crate_dependencies --cfg libpulp_const --check-cfg 'cfg(libpulp_const)'` (exit status: 1)
�[2m2026-09-29T14:38:33.168090Z�[0m �[31mERROR�[0m �[2mcargo_tarpaulin�[0m�[2m:�[0m Failed to compile tests!
error[E0080]: evaluation panicked: assertion failed: core::mem::size_of::<T>() == core::mem::size_of::<U>()
    --> /usr/local/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pulp-0.22.3/src/lib.rs:3291:3
     |
3291 |         assert!(core::mem::size_of::<T>() == core::mem::size_of::<U>());
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `CheckSameSize::<i8, u16>::VALID` failed here


Error: "Failed to compile tests!\nerror[E0080]: evaluation panicked: assertion failed: core::mem::size_of::<T>() == core::mem::size_of::<U>()\n    --> /usr/local/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pulp-0.22.3/src/lib.rs:3291:3\n     |\n3291 |         assert!(core::mem::size_of::<T>() == core::mem::size_of::<U>());\n     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `CheckSameSize::<i8, u16>::VALID` failed here\n\n"

@github-actions

Copy link
Copy Markdown

Pedantic Clippy

No pedantic warnings found.

@rochacbruno
rochacbruno merged commit 303a0bf into main Sep 29, 2026
4 checks passed
@rochacbruno
rochacbruno deleted the fix/dev-server-loopback branch September 29, 2026 14:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant