Process-wide concurrency + Cancellation ownership fixes

This commit is contained in:
Alexey
2026-09-23 22:30:51 +03:00
parent baa9bfbb01
commit f1107c21d9
47 changed files with 2177 additions and 762 deletions
+5 -5
View File
@@ -155,18 +155,20 @@ impl RunningClientHandler {
.or((config.access.user_max_tcp_conns_global_each > 0)
.then_some(config.access.user_max_tcp_conns_global_each))
.map(|v| v as u64);
if !stats.try_acquire_user_curr_connects(user, limit) {
let Some(_connection_permit) = stats
.connection_authority()
.try_acquire(user, limit)
else {
return Err(ProxyError::ConnectionLimitExceeded {
user: user.to_string(),
});
}
};
match ip_tracker.check_and_add(user, peer_addr.ip()).await {
Ok(()) => {
ip_tracker.remove_ip(user, peer_addr.ip()).await;
}
Err(reason) => {
stats.decrement_user_curr_connects(user);
warn!(
user = %user,
ip = %peer_addr.ip(),
@@ -178,8 +180,6 @@ impl RunningClientHandler {
});
}
}
stats.decrement_user_curr_connects(user);
Ok(())
}
}