[INFO] cloning repository https://github.com/igroykt/cheburproxy [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/igroykt/cheburproxy" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Figroykt%2Fcheburproxy", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Figroykt%2Fcheburproxy'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 8e28af58aed056c42fbf956c32e6e8e200935458 [INFO] testing igroykt/cheburproxy against 1.95.0 for beta-1.96-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Figroykt%2Fcheburproxy" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/igroykt/cheburproxy [INFO] finished tweaking git repo https://github.com/igroykt/cheburproxy [INFO] tweaked toml for git repo https://github.com/igroykt/cheburproxy written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/igroykt/cheburproxy on toolchain 1.95.0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/igroykt/cheburproxy already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded unicode-ident v1.0.20 [INFO] [stderr] Downloaded prost-derive v0.13.5 [INFO] [stderr] Downloaded geosite-rs v0.1.6 [INFO] [stderr] Downloaded prost v0.13.5 [INFO] [stderr] Downloaded iana-time-zone v0.1.64 [INFO] [stderr] Downloaded arc-swap v1.8.1 [INFO] [stderr] Downloaded humantime v2.3.0 [INFO] [stderr] Downloaded openssl-sys v0.9.110 [INFO] [stderr] Downloaded resolv-conf v0.7.5 [INFO] [stderr] Downloaded ipnetwork v0.18.0 [INFO] [stderr] Downloaded rustls-native-certs v0.7.3 [INFO] [stderr] Downloaded maxminddb v0.23.0 [INFO] [stderr] Downloaded patricia_tree v0.6.3 [INFO] [stderr] Downloaded widestring v1.2.1 [INFO] [stderr] Downloaded cc v1.2.43 [INFO] [stderr] Downloaded openssl v0.10.74 [INFO] [stderr] Downloaded chrono v0.4.42 [INFO] [stderr] Downloaded openssl-src v300.5.4+3.5.4 [INFO] [stderr] Downloaded aws-lc-sys v0.32.3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 753e9cdeb3ba48090c27c75cfe070f1e4a454acdd4acebe74387c452ee062125 [INFO] running `Command { std: "docker" "start" "-a" "753e9cdeb3ba48090c27c75cfe070f1e4a454acdd4acebe74387c452ee062125", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "753e9cdeb3ba48090c27c75cfe070f1e4a454acdd4acebe74387c452ee062125", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "753e9cdeb3ba48090c27c75cfe070f1e4a454acdd4acebe74387c452ee062125", kill_on_drop: false }` [INFO] [stdout] 753e9cdeb3ba48090c27c75cfe070f1e4a454acdd4acebe74387c452ee062125 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] dd3f3b151ccc02fa1d690e7258e0c6d38a811fbce3ddf6a55bace524cbf7ded7 [INFO] running `Command { std: "docker" "start" "-a" "dd3f3b151ccc02fa1d690e7258e0c6d38a811fbce3ddf6a55bace524cbf7ded7", kill_on_drop: false }` [INFO] [stderr] Compiling unicode-ident v1.0.20 [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling memchr v2.7.6 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling futures-io v0.3.31 [INFO] [stderr] Compiling futures-task v0.3.31 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling proc-macro2 v1.0.103 [INFO] [stderr] Compiling tracing-core v0.1.34 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling zerocopy v0.8.27 [INFO] [stderr] Compiling indexmap v2.12.0 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling quote v1.0.41 [INFO] [stderr] Compiling anyhow v1.0.100 [INFO] [stderr] Compiling syn v2.0.108 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling memoffset v0.9.1 [INFO] [stderr] Compiling itertools v0.14.0 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling simd-adler32 v0.3.7 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling rustls v0.23.34 [INFO] [stderr] Compiling regex-syntax v0.8.8 [INFO] [stderr] Compiling tinyvec_macros v0.1.1 [INFO] [stderr] Compiling tinyvec v1.10.0 [INFO] [stderr] Compiling cc v1.2.43 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling getrandom v0.2.16 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling signal-hook-registry v1.4.6 [INFO] [stderr] Compiling mio v1.1.0 [INFO] [stderr] Compiling socket2 v0.6.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling cmake v0.1.54 [INFO] [stderr] Compiling openssl-src v300.5.4+3.5.4 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling socket2 v0.5.10 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling aws-lc-sys v0.32.3 [INFO] [stderr] Compiling openssl-sys v0.9.110 [INFO] [stderr] Compiling winnow v0.7.13 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling serde_json v1.0.145 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling data-encoding v2.9.0 [INFO] [stderr] Compiling geosite-rs v0.1.6 [INFO] [stderr] Compiling linked-hash-map v0.5.6 [INFO] [stderr] Compiling openssl v0.10.74 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling lru-cache v0.1.2 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling flate2 v1.1.5 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling tokio v1.48.0 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling yoke v0.8.0 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Compiling zerovec v0.11.4 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling zerotrie v0.2.2 [INFO] [stderr] Compiling tinystr v0.8.1 [INFO] [stderr] Compiling potential_utf v0.1.3 [INFO] [stderr] Compiling icu_locale_core v2.0.0 [INFO] [stderr] Compiling icu_collections v2.0.0 [INFO] [stderr] Compiling sct v0.7.1 [INFO] [stderr] Compiling icu_provider v2.0.0 [INFO] [stderr] Compiling rustls-webpki v0.101.7 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling icu_properties v2.0.1 [INFO] [stderr] Compiling icu_normalizer v2.0.0 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling enum-as-inner v0.6.1 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling url v2.5.7 [INFO] [stderr] Compiling prost-derive v0.13.5 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tokio-socks v0.5.2 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling tokio-rustls v0.24.1 [INFO] [stderr] Compiling h2 v0.3.27 [INFO] [stderr] Compiling hickory-proto v0.24.4 [INFO] [stderr] Compiling prost v0.13.5 [INFO] [stderr] Compiling ipnetwork v0.18.0 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling webpki v0.22.4 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling is-terminal v0.4.17 [INFO] [stderr] Compiling rustls-pemfile v2.2.0 [INFO] [stderr] Compiling encoding_rs v0.8.35 [INFO] [stderr] Compiling sync_wrapper v0.1.2 [INFO] [stderr] Compiling webpki-roots v0.25.4 [INFO] [stderr] Compiling byteorder v1.5.0 [INFO] [stderr] Compiling termcolor v1.4.1 [INFO] [stderr] Compiling resolv-conf v0.7.5 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling hyper v0.14.32 [INFO] [stderr] Compiling humantime v2.3.0 [INFO] [stderr] Compiling iana-time-zone v0.1.64 [INFO] [stderr] Compiling env_logger v0.10.2 [INFO] [stderr] Compiling chrono v0.4.42 [INFO] [stderr] Compiling dashmap v5.5.3 [INFO] [stderr] Compiling hickory-resolver v0.24.4 [INFO] [stderr] Compiling patricia_tree v0.6.3 [INFO] [stderr] Compiling hdrhistogram v7.5.4 [INFO] [stderr] Compiling rustls-native-certs v0.7.3 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling arc-swap v1.8.1 [INFO] [stderr] Compiling hyper-rustls v0.24.2 [INFO] [stderr] Compiling reqwest v0.11.27 [INFO] [stderr] Compiling nix v0.27.1 [INFO] [stderr] Compiling webpki-roots v0.22.6 [INFO] [stderr] Compiling maxminddb v0.23.0 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling aws-lc-rs v1.14.1 [INFO] [stderr] Compiling rustls-webpki v0.103.7 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling cheburproxy v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/udp_proxy.rs:530:1 [INFO] [stdout] | [INFO] [stdout] 530 | / /// Global pool of TCP tunnels, keyed by proxy address. [INFO] [stdout] 531 | | /// Allows multiple UDP sessions to share a single TCP tunnel to the same proxy. [INFO] [stdout] | |_-------------------------------------------------------------------------------^ [INFO] [stdout] | | [INFO] [stdout] | rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_addr` [INFO] [stdout] --> src/cheburproxy_server.rs:1036:33 [INFO] [stdout] | [INFO] [stdout] 1036 | ... let (target_stream, target_addr) = match timeout(DEFAULT_HANDSHAKE_TIMEOUT, handle_socks5_connect_request_after_header(&mut ... [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_addr` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `known_targets_cleanup` [INFO] [stdout] --> src/cheburproxy_server.rs:912:9 [INFO] [stdout] | [INFO] [stdout] 912 | let known_targets_cleanup = known_targets.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_known_targets_cleanup` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS_AUTH_NO_AUTH` is never used [INFO] [stdout] --> src/cheburproxy_server.rs:46:7 [INFO] [stdout] | [INFO] [stdout] 46 | const SOCKS_AUTH_NO_AUTH: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS_AUTH_USERNAME_PASSWORD` is never used [INFO] [stdout] --> src/cheburproxy_server.rs:47:7 [INFO] [stdout] | [INFO] [stdout] 47 | const SOCKS_AUTH_USERNAME_PASSWORD: u8 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS_AUTH_NO_ACCEPTABLE` is never used [INFO] [stdout] --> src/cheburproxy_server.rs:48:7 [INFO] [stdout] | [INFO] [stdout] 48 | const SOCKS_AUTH_NO_ACCEPTABLE: u8 = 0xFF; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_domain_to_ip` is never used [INFO] [stdout] --> src/cheburproxy_server.rs:348:10 [INFO] [stdout] | [INFO] [stdout] 348 | async fn resolve_domain_to_ip(domain: String) -> ProxyResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/cheburproxy_server.rs:157:25 [INFO] [stdout] | [INFO] [stdout] 157 | if port == 0 || port > 65535 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/cheburproxy_server.rs:166:30 [INFO] [stdout] | [INFO] [stdout] 166 | if uport == 0 || uport > 65535 || uport == port { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncBufReadExt` [INFO] [stdout] --> src/rule.rs:14:46 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio::io::{AsyncReadExt, AsyncWriteExt, AsyncBufReadExt}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_display` [INFO] [stdout] --> src/proxy.rs:874:17 [INFO] [stdout] | [INFO] [stdout] 874 | let target_display = format_target(&connection_info.routing_domain, target_port); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_display` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `total_domains` is assigned to, but never used [INFO] [stdout] --> src/rule.rs:1846:9 [INFO] [stdout] | [INFO] [stdout] 1846 | let mut total_domains = 0usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_total_domains` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `total_domains` is never read [INFO] [stdout] --> src/rule.rs:1865:9 [INFO] [stdout] | [INFO] [stdout] 1865 | total_domains += num_domains; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `timeout` [INFO] [stdout] --> src/main.rs:473:64 [INFO] [stdout] | [INFO] [stdout] 473 | async fn establish_udp_associate(proxy: &crate::router::Proxy, timeout: Duration) -> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_tls` [INFO] [stdout] --> src/main.rs:1434:34 [INFO] [stdout] | [INFO] [stdout] 1434 | ... let (is_tls, sni_domain, use_reverse_dns) = match peek_result { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_tls` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `username` [INFO] [stdout] --> src/main.rs:594:9 [INFO] [stdout] | [INFO] [stdout] 594 | let username = general.and_then(|g| g.get("username")).and_then(|v| v.as_str()) [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_username` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `password` [INFO] [stdout] --> src/main.rs:597:9 [INFO] [stdout] | [INFO] [stdout] 597 | let password = general.and_then(|g| g.get("password")).and_then(|v| v.as_str()) [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dns_enabled` [INFO] [stdout] --> src/main.rs:603:9 [INFO] [stdout] | [INFO] [stdout] 603 | let dns_enabled = parsed.get("client") [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dns_enabled` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dns_listen_port` [INFO] [stdout] --> src/main.rs:608:9 [INFO] [stdout] | [INFO] [stdout] 608 | let dns_listen_port = parsed.get("client") [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dns_listen_port` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ConnectionPoolError` is more private than the item `proxy::ProxyError::PoolError::0` [INFO] [stdout] --> src/proxy.rs:176:23 [INFO] [stdout] | [INFO] [stdout] 176 | PoolError(#[from] ConnectionPoolError), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ field `proxy::ProxyError::PoolError::0` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ConnectionPoolError` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/proxy.rs:161:1 [INFO] [stdout] | [INFO] [stdout] 161 | enum ConnectionPoolError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_LISTEN_ADDRESS` is never used [INFO] [stdout] --> src/main.rs:53:7 [INFO] [stdout] | [INFO] [stdout] 53 | const DEFAULT_LISTEN_ADDRESS: &str = "0.0.0.0"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_PORT` is never used [INFO] [stdout] --> src/main.rs:54:7 [INFO] [stdout] | [INFO] [stdout] 54 | const DEFAULT_PORT: u16 = 12345; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_DNS_PORT` is never used [INFO] [stdout] --> src/main.rs:55:7 [INFO] [stdout] | [INFO] [stdout] 55 | const DEFAULT_DNS_PORT: u16 = 53; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_MODE` is never used [INFO] [stdout] --> src/main.rs:56:7 [INFO] [stdout] | [INFO] [stdout] 56 | const DEFAULT_MODE: &str = "transparent"; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_UPSTREAM_TIMEOUT_SECS` is never used [INFO] [stdout] --> src/main.rs:57:7 [INFO] [stdout] | [INFO] [stdout] 57 | const DEFAULT_UPSTREAM_TIMEOUT_SECS: u64 = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_CACHE_TTL_SECS` is never used [INFO] [stdout] --> src/main.rs:69:7 [INFO] [stdout] | [INFO] [stdout] 69 | const DNS_CACHE_TTL_SECS: u64 = 3600; // 1 hour [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_CACHE_FAILURE_TTL_SECS` is never used [INFO] [stdout] --> src/main.rs:70:7 [INFO] [stdout] | [INFO] [stdout] 70 | const DNS_CACHE_FAILURE_TTL_SECS: u64 = 60; // 1 minute for failures [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_REVERSE_LOOKUP_TIMEOUT_MS` is never used [INFO] [stdout] --> src/main.rs:71:7 [INFO] [stdout] | [INFO] [stdout] 71 | const DNS_REVERSE_LOOKUP_TIMEOUT_MS: u64 = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_FORWARD_LOOKUP_TIMEOUT_MS` is never used [INFO] [stdout] --> src/main.rs:72:7 [INFO] [stdout] | [INFO] [stdout] 72 | const DNS_FORWARD_LOOKUP_TIMEOUT_MS: u64 = 100; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_NAMESERVER_IP` is never used [INFO] [stdout] --> src/main.rs:73:7 [INFO] [stdout] | [INFO] [stdout] 73 | const DNS_NAMESERVER_IP: &str = "8.8.8.8"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CONNECTION_POOL_CLEANUP_INTERVAL_SECS` is never used [INFO] [stdout] --> src/main.rs:76:7 [INFO] [stdout] | [INFO] [stdout] 76 | const CONNECTION_POOL_CLEANUP_INTERVAL_SECS: u64 = 60; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CONNECTIONS_PER_PROXY` is never used [INFO] [stdout] --> src/main.rs:77:7 [INFO] [stdout] | [INFO] [stdout] 77 | const MAX_CONNECTIONS_PER_PROXY: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CONNECTION_TTL_SECS` is never used [INFO] [stdout] --> src/main.rs:78:7 [INFO] [stdout] | [INFO] [stdout] 78 | const CONNECTION_TTL_SECS: u64 = 60; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DOMAIN_CACHE_TTL_SECS` is never used [INFO] [stdout] --> src/main.rs:81:7 [INFO] [stdout] | [INFO] [stdout] 81 | const DOMAIN_CACHE_TTL_SECS: u64 = 3600; // 1 hour for UDP relay [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DOMAIN_CACHE_CLEANUP_INTERVAL_SECS` is never used [INFO] [stdout] --> src/main.rs:82:7 [INFO] [stdout] | [INFO] [stdout] 82 | const DOMAIN_CACHE_CLEANUP_INTERVAL_SECS: u64 = 1800; // 30 minutes [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS5_BUFFER_SIZE` is never used [INFO] [stdout] --> src/main.rs:85:7 [INFO] [stdout] | [INFO] [stdout] 85 | const SOCKS5_BUFFER_SIZE: usize = 256; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PEEK_BUFFER_SIZE` is never used [INFO] [stdout] --> src/main.rs:86:7 [INFO] [stdout] | [INFO] [stdout] 86 | const PEEK_BUFFER_SIZE: usize = 8192; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_EXACT_DOMAINS_TO_CHECK` is never used [INFO] [stdout] --> src/main.rs:88:7 [INFO] [stdout] | [INFO] [stdout] 88 | const MAX_EXACT_DOMAINS_TO_CHECK: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS5_VERSION` is never used [INFO] [stdout] --> src/main.rs:91:7 [INFO] [stdout] | [INFO] [stdout] 91 | const SOCKS5_VERSION: u8 = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS5_NO_AUTH` is never used [INFO] [stdout] --> src/main.rs:92:7 [INFO] [stdout] | [INFO] [stdout] 92 | const SOCKS5_NO_AUTH: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS5_CONNECT_CMD` is never used [INFO] [stdout] --> src/main.rs:93:7 [INFO] [stdout] | [INFO] [stdout] 93 | const SOCKS5_CONNECT_CMD: u8 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS5_SUCCESS` is never used [INFO] [stdout] --> src/main.rs:94:7 [INFO] [stdout] | [INFO] [stdout] 94 | const SOCKS5_SUCCESS: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `domain` is never read [INFO] [stdout] --> src/main.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 101 | struct DnsCacheEntry { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 107 | domain: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DnsCacheEntry` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AppConfig` is never constructed [INFO] [stdout] --> src/main.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | struct AppConfig { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reload_router_config` is never used [INFO] [stdout] --> src/main.rs:467:10 [INFO] [stdout] | [INFO] [stdout] 467 | async fn reload_router_config(_rule_engine_config: &RuleEngineConfig, _resolver: Arc) -> anyhow::Result src/proxy.rs:36:7 [INFO] [stdout] | [INFO] [stdout] 36 | const MAX_CONNECTION_POOL_SIZE: usize = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `PoolExhausted`, `ConnectionTimeout`, and `InvalidProxyConfig` are never constructed [INFO] [stdout] --> src/proxy.rs:163:5 [INFO] [stdout] | [INFO] [stdout] 161 | enum ConnectionPoolError { [INFO] [stdout] | ------------------- variants in this enum [INFO] [stdout] 162 | #[error("Connection pool exhausted")] [INFO] [stdout] 163 | PoolExhausted, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 164 | #[error("Connection timeout")] [INFO] [stdout] 165 | ConnectionTimeout, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 166 | #[error("Invalid proxy configuration")] [INFO] [stdout] 167 | InvalidProxyConfig, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConnectionPoolError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `DnsResolutionError` and `NoRoutingRule` are never constructed [INFO] [stdout] --> src/proxy.rs:182:5 [INFO] [stdout] | [INFO] [stdout] 171 | pub enum ProxyError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 182 | DnsResolutionError { domain: String, source: std::io::Error }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 188 | NoRoutingRule { domain: String }, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProxyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cleanup_stale_connections` is never used [INFO] [stdout] --> src/proxy.rs:573:4 [INFO] [stdout] | [INFO] [stdout] 573 | fn cleanup_stale_connections(key: &ProxyKey) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `maintain_pool_size` is never used [INFO] [stdout] --> src/proxy.rs:589:4 [INFO] [stdout] | [INFO] [stdout] 589 | fn maintain_pool_size(key: &ProxyKey) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cleanup_all_stale_connections` is never used [INFO] [stdout] --> src/proxy.rs:600:8 [INFO] [stdout] | [INFO] [stdout] 600 | pub fn cleanup_all_stale_connections() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `start_pool_cleanup_task` is never used [INFO] [stdout] --> src/proxy.rs:626:14 [INFO] [stdout] | [INFO] [stdout] 626 | pub async fn start_pool_cleanup_task() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `record_failure_typed` is never used [INFO] [stdout] --> src/proxy_health.rs:270:8 [INFO] [stdout] | [INFO] [stdout] 270 | pub fn record_failure_typed(proxy_addr: &str, error: &dyn fmt::Display, failure_type: FailureType) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `subscribe_recovery` is never used [INFO] [stdout] --> src/proxy_health.rs:287:8 [INFO] [stdout] | [INFO] [stdout] 287 | pub fn subscribe_recovery(proxy_addr: &str) -> watch::Receiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `last_recovery_at` is never used [INFO] [stdout] --> src/proxy_health.rs:292:8 [INFO] [stdout] | [INFO] [stdout] 292 | pub fn last_recovery_at(proxy_addr: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `subscribe_recovery` and `last_recovery_at` are never used [INFO] [stdout] --> src/proxy_health.rs:661:12 [INFO] [stdout] | [INFO] [stdout] 308 | impl ProxyHealthTracker { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 661 | pub fn subscribe_recovery(&self, proxy_addr: &str) -> watch::Receiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 678 | pub fn last_recovery_at(&self, proxy_addr: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_DEBUG_PATTERN_SAMPLES` is never used [INFO] [stdout] --> src/rule.rs:80:7 [INFO] [stdout] | [INFO] [stdout] 80 | const MAX_DEBUG_PATTERN_SAMPLES: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InvalidIpAddress` and `RegexCompilationError` are never constructed [INFO] [stdout] --> src/rule.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 99 | pub enum RuleEngineError { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] 100 | InvalidDomain(String), [INFO] [stdout] 101 | InvalidIpAddress(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | RegexCompilationError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RuleEngineError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `matches` is never used [INFO] [stdout] --> src/rule.rs:403:8 [INFO] [stdout] | [INFO] [stdout] 374 | impl DomainPattern { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 403 | fn matches(&self, domain: &str) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_config`, `clear_cache`, `get_config`, and `get_routing_decision_async` are never used [INFO] [stdout] --> src/rule.rs:441:12 [INFO] [stdout] | [INFO] [stdout] 439 | impl RuleEngine { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 440 | /// Create a new RuleEngine from configuration with default settings and a shared DNS resolver [INFO] [stdout] 441 | pub fn from_config(cfg: Router, resolver: Arc) -> anyhow::Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 974 | pub fn clear_cache(&self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 995 | pub fn get_config(&self) -> &RuleEngineConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1000 | pub async fn get_routing_decision_async(&self, domain: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `connect_tcp` is never used [INFO] [stdout] --> src/transparent.rs:165:14 [INFO] [stdout] | [INFO] [stdout] 165 | pub async fn connect_tcp(addr: A) -> anyhow::Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `listen` is never read [INFO] [stdout] --> src/udp_proxy.rs:121:9 [INFO] [stdout] | [INFO] [stdout] 120 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 121 | pub listen: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `IP_RECVORIGDSTADDR` is never used [INFO] [stdout] --> src/udp_proxy.rs:133:11 [INFO] [stdout] | [INFO] [stdout] 133 | pub const IP_RECVORIGDSTADDR: i32 = 20; // Constant to receive original destination in ancillary data (Linux-specific) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `label` is never used [INFO] [stdout] --> src/udp_proxy.rs:170:12 [INFO] [stdout] | [INFO] [stdout] 150 | impl FlowType { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn label(&self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `proxy_addr` is never used [INFO] [stdout] --> src/udp_proxy.rs:205:12 [INFO] [stdout] | [INFO] [stdout] 203 | impl SessionRoute { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] 204 | /// Get proxy server address if this is a proxy route [INFO] [stdout] 205 | pub fn proxy_addr(&self) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `client` and `target` are never used [INFO] [stdout] --> src/udp_proxy.rs:239:12 [INFO] [stdout] | [INFO] [stdout] 232 | impl SessionKey { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 239 | pub fn client(&self) -> &SocketAddr { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn target(&self) -> &SocketAddr { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_active` is never used [INFO] [stdout] --> src/udp_proxy.rs:322:12 [INFO] [stdout] | [INFO] [stdout] 300 | impl UdpSession { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn is_active(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_HEADER_LEN` is never used [INFO] [stdout] --> src/sni.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const TLS_HANDSHAKE_HEADER_LEN: usize = 4; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_VERSION_LEN` is never used [INFO] [stdout] --> src/sni.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const TLS_VERSION_LEN: usize = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `UnsupportedTlsVersion` is never constructed [INFO] [stdout] --> src/sni.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum SniError { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 23 | UnsupportedTlsVersion, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SniError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `read_u32_be` is never used [INFO] [stdout] --> src/sni.rs:121:8 [INFO] [stdout] | [INFO] [stdout] 89 | impl<'a> TlsParser<'a> { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 121 | fn read_u32_be(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_sni_legacy` is never used [INFO] [stdout] --> src/sni.rs:237:8 [INFO] [stdout] | [INFO] [stdout] 237 | pub fn extract_sni_legacy(data: &[u8]) -> anyhow::Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_mapping` and `hardcoded_domains` are never used [INFO] [stdout] --> src/dns_protocols/bootstrap.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl BootstrapResolver { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn has_mapping(&self, domain: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn hardcoded_domains(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `bootstrap` is never read [INFO] [stdout] --> src/dns_resolver.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 173 | pub struct InternalDnsResolver { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 178 | bootstrap: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `clear_cache` and `cache_stats` are never used [INFO] [stdout] --> src/dns_resolver.rs:424:12 [INFO] [stdout] | [INFO] [stdout] 181 | impl InternalDnsResolver { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 424 | pub fn clear_cache(&self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 431 | pub fn cache_stats(&self) -> (usize, usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `cache_stats` is never used [INFO] [stdout] --> src/dns_proxy.rs:528:12 [INFO] [stdout] | [INFO] [stdout] 98 | impl DnsProxy { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 528 | pub fn cache_stats(&self) -> (usize, usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/router.rs:140:37 [INFO] [stdout] | [INFO] [stdout] 140 | if self.server_port == 0 || self.server_port > 65535 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8m 23s [INFO] running `Command { std: "docker" "inspect" "dd3f3b151ccc02fa1d690e7258e0c6d38a811fbce3ddf6a55bace524cbf7ded7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dd3f3b151ccc02fa1d690e7258e0c6d38a811fbce3ddf6a55bace524cbf7ded7", kill_on_drop: false }` [INFO] [stdout] dd3f3b151ccc02fa1d690e7258e0c6d38a811fbce3ddf6a55bace524cbf7ded7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 17d3d26bf5c01501eaaf9445708d5764fface7abf1c4309fad82fe874be3bd6e [INFO] running `Command { std: "docker" "start" "-a" "17d3d26bf5c01501eaaf9445708d5764fface7abf1c4309fad82fe874be3bd6e", kill_on_drop: false }` [INFO] [stderr] Compiling cheburproxy v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `target_addr` [INFO] [stdout] --> src/cheburproxy_server.rs:1036:33 [INFO] [stdout] | [INFO] [stdout] 1036 | ... let (target_stream, target_addr) = match timeout(DEFAULT_HANDSHAKE_TIMEOUT, handle_socks5_connect_request_after_header(&mut ... [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_addr` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `known_targets_cleanup` [INFO] [stdout] --> src/cheburproxy_server.rs:912:9 [INFO] [stdout] | [INFO] [stdout] 912 | let known_targets_cleanup = known_targets.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_known_targets_cleanup` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS_AUTH_NO_AUTH` is never used [INFO] [stdout] --> src/cheburproxy_server.rs:46:7 [INFO] [stdout] | [INFO] [stdout] 46 | const SOCKS_AUTH_NO_AUTH: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS_AUTH_USERNAME_PASSWORD` is never used [INFO] [stdout] --> src/cheburproxy_server.rs:47:7 [INFO] [stdout] | [INFO] [stdout] 47 | const SOCKS_AUTH_USERNAME_PASSWORD: u8 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SOCKS_AUTH_NO_ACCEPTABLE` is never used [INFO] [stdout] --> src/cheburproxy_server.rs:48:7 [INFO] [stdout] | [INFO] [stdout] 48 | const SOCKS_AUTH_NO_ACCEPTABLE: u8 = 0xFF; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_domain_to_ip` is never used [INFO] [stdout] --> src/cheburproxy_server.rs:348:10 [INFO] [stdout] | [INFO] [stdout] 348 | async fn resolve_domain_to_ip(domain: String) -> ProxyResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/cheburproxy_server.rs:157:25 [INFO] [stdout] | [INFO] [stdout] 157 | if port == 0 || port > 65535 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/cheburproxy_server.rs:166:30 [INFO] [stdout] | [INFO] [stdout] 166 | if uport == 0 || uport > 65535 || uport == port { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/udp_proxy.rs:530:1 [INFO] [stdout] | [INFO] [stdout] 530 | / /// Global pool of TCP tunnels, keyed by proxy address. [INFO] [stdout] 531 | | /// Allows multiple UDP sessions to share a single TCP tunnel to the same proxy. [INFO] [stdout] | |_-------------------------------------------------------------------------------^ [INFO] [stdout] | | [INFO] [stdout] | rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this function takes 3 arguments but 2 arguments were supplied [INFO] [stdout] --> src/dns_proxy.rs:933:30 [INFO] [stdout] | [INFO] [stdout] 933 | let proxy = Arc::new(DnsProxy::new(proxy_config, resolver)); [INFO] [stdout] | ^^^^^^^^^^^^^------------------------ argument #3 of type `std::sync::Arc>` is missing [INFO] [stdout] | [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> src/dns_proxy.rs:100:12 [INFO] [stdout] | [INFO] [stdout] 100 | pub fn new(config: DnsProxyConfig, resolver: Arc, domain_cache: DomainCache) -> Self { [INFO] [stdout] | ^^^ ------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 933 | let proxy = Arc::new(DnsProxy::new(proxy_config, resolver, /* std::sync::Arc> */)); [INFO] [stdout] | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncBufReadExt` [INFO] [stdout] --> src/rule.rs:14:46 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio::io::{AsyncReadExt, AsyncWriteExt, AsyncBufReadExt}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_display` [INFO] [stdout] --> src/proxy.rs:874:17 [INFO] [stdout] | [INFO] [stdout] 874 | let target_display = format_target(&connection_info.routing_domain, target_port); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_display` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `total_domains` is assigned to, but never used [INFO] [stdout] --> src/rule.rs:1846:9 [INFO] [stdout] | [INFO] [stdout] 1846 | let mut total_domains = 0usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_total_domains` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `total_domains` is never read [INFO] [stdout] --> src/rule.rs:1865:9 [INFO] [stdout] | [INFO] [stdout] 1865 | total_domains += num_domains; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `timeout` [INFO] [stdout] --> src/main.rs:473:64 [INFO] [stdout] | [INFO] [stdout] 473 | async fn establish_udp_associate(proxy: &crate::router::Proxy, timeout: Duration) -> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_tls` [INFO] [stdout] --> src/main.rs:1434:34 [INFO] [stdout] | [INFO] [stdout] 1434 | ... let (is_tls, sni_domain, use_reverse_dns) = match peek_result { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_tls` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `username` [INFO] [stdout] --> src/main.rs:594:9 [INFO] [stdout] | [INFO] [stdout] 594 | let username = general.and_then(|g| g.get("username")).and_then(|v| v.as_str()) [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_username` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `password` [INFO] [stdout] --> src/main.rs:597:9 [INFO] [stdout] | [INFO] [stdout] 597 | let password = general.and_then(|g| g.get("password")).and_then(|v| v.as_str()) [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dns_enabled` [INFO] [stdout] --> src/main.rs:603:9 [INFO] [stdout] | [INFO] [stdout] 603 | let dns_enabled = parsed.get("client") [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dns_enabled` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dns_listen_port` [INFO] [stdout] --> src/main.rs:608:9 [INFO] [stdout] | [INFO] [stdout] 608 | let dns_listen_port = parsed.get("client") [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dns_listen_port` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0061`. [INFO] [stdout] [INFO] [stderr] error: could not compile `cheburproxy` (bin "cheburproxy" test) due to 1 previous error; 11 warnings emitted [INFO] running `Command { std: "docker" "inspect" "17d3d26bf5c01501eaaf9445708d5764fface7abf1c4309fad82fe874be3bd6e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "17d3d26bf5c01501eaaf9445708d5764fface7abf1c4309fad82fe874be3bd6e", kill_on_drop: false }` [INFO] [stdout] 17d3d26bf5c01501eaaf9445708d5764fface7abf1c4309fad82fe874be3bd6e