fix(shadowsocks): check mptcp socket() return value #1
Annotations
18 warnings
transmute used without annotations:
crates/shadowsocks-service/src/local/tun/tcp.rs#L172
warning: transmute used without annotations
--> crates/shadowsocks-service/src/local/tun/tcp.rs:172:38
|
172 | let recv_buf = unsafe { mem::transmute::<_, &mut [u8]>(buf.unfilled_mut()) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::<&mut [std::mem::MaybeUninit<u8>], &mut [u8]>`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations
= note: `#[warn(clippy::missing_transmute_annotations)]` on by default
|
unnecessary closure used to substitute value for `Option::None`:
crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None`
--> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46
|
114 | let udp_associate_addr: ServerAddr = self
| ______________________________________________^
115 | | .udp_associate_addr
116 | | .as_ref()
117 | | .or_else(|| self.udp_bind_addr.as_ref())
| |______________--------------------------------------^
| |
| help: use `or(..)` instead: `or(self.udp_bind_addr.as_ref())`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
|
unnecessary closure used to substitute value for `Option::None`:
crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None`
--> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46
|
114 | let udp_associate_addr: ServerAddr = self
| ______________________________________________^
115 | | .udp_associate_addr
116 | | .as_ref()
117 | | .or_else(|| self.udp_bind_addr.as_ref())
118 | | .unwrap_or_else(|| &self.client_config)
| |______________-------------------------------------^
| |
| help: use `unwrap_or(..)` instead: `unwrap_or(&self.client_config)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
= note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default
|
this `match` can be collapsed into the outer `if let`:
crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs#L77
warning: this `match` can be collapsed into the outer `if let`
--> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs:77:21
|
77 | / match errno {
78 | | libc::ENOPROTOOPT => {
79 | | // SO_REUSEPORT is supported after 3.9
80 | | trace!("failed to set SO_REUSEPORT, error: {}", err);
... |
85 | | }
86 | | }
| |_____________________^
|
help: the outer pattern can be modified to include the inner pattern
--> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs:76:29
|
76 | if let Some(errno) = err.raw_os_error() {
| ^^^^^ replace this binding
77 | match errno {
78 | libc::ENOPROTOOPT => {
| ^^^^^^^^^^^^^^^^^ with this pattern
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match
= note: `#[warn(clippy::collapsible_match)]` on by default
|
casting the result of `i32::abs()` to u32:
crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs#L191
warning: casting the result of `i32::abs()` to u32
--> crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs:191:30
|
191 | .map(|s| (*s as i32 - self.data.latency_median as i32).abs() as u32)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(*s as i32 - self.data.latency_median as i32).unsigned_abs()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned
= note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default
|
using `clone` on type `ServerStatData` which implements the `Copy` trait:
crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L69
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait
--> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:69:9
|
69 | self.stat_data.lock().await.data().clone()
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.stat_data.lock().await.data()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
|
using `clone` on type `ServerStatData` which implements the `Copy` trait:
crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L56
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait
--> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:56:38
|
56 | (stat.push_score(score), stat.data().clone())
| ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*stat.data()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
= note: `#[warn(clippy::clone_on_copy)]` on by default
|
redundant pattern matching, consider using `is_ok()`:
crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L919
warning: redundant pattern matching, consider using `is_ok()`
--> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:919:16
|
919 | if let Ok(..) = response.parse(&buf) {
| -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
|
redundant pattern matching, consider using `is_ok()`:
crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L878
warning: redundant pattern matching, consider using `is_ok()`
--> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:878:16
|
878 | if let Ok(..) = response.parse(&buf) {
| -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
= note: `#[warn(clippy::redundant_pattern_matching)]` on by default
|
transmute used without annotations:
crates/shadowsocks-service/src/local/tun/tcp.rs#L172
warning: transmute used without annotations
--> crates/shadowsocks-service/src/local/tun/tcp.rs:172:38
|
172 | let recv_buf = unsafe { mem::transmute::<_, &mut [u8]>(buf.unfilled_mut()) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::<&mut [std::mem::MaybeUninit<u8>], &mut [u8]>`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations
= note: `#[warn(clippy::missing_transmute_annotations)]` on by default
|
unnecessary closure used to substitute value for `Option::None`:
crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None`
--> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46
|
114 | let udp_associate_addr: ServerAddr = self
| ______________________________________________^
115 | | .udp_associate_addr
116 | | .as_ref()
117 | | .or_else(|| self.udp_bind_addr.as_ref())
| |______________--------------------------------------^
| |
| help: use `or(..)` instead: `or(self.udp_bind_addr.as_ref())`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
|
unnecessary closure used to substitute value for `Option::None`:
crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None`
--> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46
|
114 | let udp_associate_addr: ServerAddr = self
| ______________________________________________^
115 | | .udp_associate_addr
116 | | .as_ref()
117 | | .or_else(|| self.udp_bind_addr.as_ref())
118 | | .unwrap_or_else(|| &self.client_config)
| |______________-------------------------------------^
| |
| help: use `unwrap_or(..)` instead: `unwrap_or(&self.client_config)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
= note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default
|
this `match` can be collapsed into the outer `if let`:
crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs#L58
warning: this `match` can be collapsed into the outer `if let`
--> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs:58:21
|
58 | / match errno {
59 | | libc::ENOPROTOOPT => {
60 | | trace!("failed to set SO_REUSEPORT, error: {}", err);
61 | | }
... |
65 | | }
66 | | }
| |_____________________^
|
help: the outer pattern can be modified to include the inner pattern
--> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs:57:29
|
57 | if let Some(errno) = err.raw_os_error() {
| ^^^^^ replace this binding
58 | match errno {
59 | libc::ENOPROTOOPT => {
| ^^^^^^^^^^^^^^^^^ with this pattern
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match
= note: `#[warn(clippy::collapsible_match)]` on by default
|
casting the result of `i32::abs()` to u32:
crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs#L191
warning: casting the result of `i32::abs()` to u32
--> crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs:191:30
|
191 | .map(|s| (*s as i32 - self.data.latency_median as i32).abs() as u32)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(*s as i32 - self.data.latency_median as i32).unsigned_abs()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned
= note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default
|
using `clone` on type `ServerStatData` which implements the `Copy` trait:
crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L69
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait
--> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:69:9
|
69 | self.stat_data.lock().await.data().clone()
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.stat_data.lock().await.data()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
|
using `clone` on type `ServerStatData` which implements the `Copy` trait:
crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L56
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait
--> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:56:38
|
56 | (stat.push_score(score), stat.data().clone())
| ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*stat.data()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
= note: `#[warn(clippy::clone_on_copy)]` on by default
|
redundant pattern matching, consider using `is_ok()`:
crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L919
warning: redundant pattern matching, consider using `is_ok()`
--> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:919:16
|
919 | if let Ok(..) = response.parse(&buf) {
| -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
|
redundant pattern matching, consider using `is_ok()`:
crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L878
warning: redundant pattern matching, consider using `is_ok()`
--> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:878:16
|
878 | if let Ok(..) = response.parse(&buf) {
| -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
= note: `#[warn(clippy::redundant_pattern_matching)]` on by default
|