ptth/todo.md

1.4 KiB

  • Not working behind Nginx (Works okay behind Caddy)

  • Reduce idle memory use?

  • Flip match_prefix args

  • Impl multi-range / multi-part byte serving

  • Allow spaces in server names

  • Deny unused HTTP methods for endpoints

  • ETag cache based on mtime

  • Server-side hash?

  • Log / audit log?

  • Add "Last check-in time" to server list

  • Prevent directory traversal attacks in file_server.rs

  • Error handling

  • Reverse proxy to other local servers

Off-project stuff:

  • Benchmark directory entry sorting

Known issues:

Graceful shutdown

Relay can't shut down gracefully if Firefox is connected to it, e.g. if Firefox kept a connection open while watching a video. I'm pretty sure this is a bug in Hyper, so for now I've worked around it with a forced shutdown timer.

Sometimes I get the turtle icon in Firefox's network debugger. But this happens even with Caddy running a static file server, so I can't prove that it's on my side. The VPS is cheap, and the datacenter is far away.

Embedded asssets

The bad_passwords file is huge. Since it's static, it should only be in physical RAM when the server first launches, and then the kernel will let it be paged out.

Rust has some open issues with compiling assets into the exe, so I'm not going to push on this for now, for neither bad_passwords nor the HTML assets:

https://github.com/rust-lang/rust/issues/65818

I also considered compressing the passwords file, but I couldn't even get brotli to give it a decent ratio.