Skip to content

Commit 754a87a

Browse files
fix: Use correct key to access each map
1 parent ffc4095 commit 754a87a

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

proxy/src/limiter.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ impl Display for LimiterError {
2020
}
2121
impl Error for LimiterError {}
2222

23-
async fn has_limiter(state: &State, consumer_key: &String) -> bool {
23+
async fn has_limiter(state: &State, consumer: &Consumer) -> bool {
2424
let rate_limiter_map = state.limiter.read().await;
25-
rate_limiter_map.get(consumer_key).is_some()
25+
rate_limiter_map.get(&consumer.key).is_some()
2626
}
2727

2828
async fn add_limiter(state: &State, consumer: &Consumer, tier: &Tier) {
@@ -47,23 +47,23 @@ async fn add_limiter(state: &State, consumer: &Consumer, tier: &Tier) {
4747
.insert(consumer.key.clone(), rates);
4848
}
4949

50-
pub async fn limiter(state: Arc<State>, consumer_key: String) -> Result<(), LimiterError> {
51-
if !has_limiter(&state, &consumer_key).await {
50+
pub async fn limiter(state: Arc<State>, consumer: &Consumer) -> Result<(), LimiterError> {
51+
if !has_limiter(&state, consumer).await {
5252
let consumers = state.consumers.read().await.clone();
53-
let consumer = match consumers.get(&consumer_key) {
53+
let refreshed_consumer = match consumers.get(&consumer.hash_key) {
5454
Some(consumer) => consumer,
5555
None => return Err(LimiterError::PortDeleted),
5656
};
5757
let tiers = state.tiers.read().await.clone();
58-
let tier = match tiers.get(&consumer.tier) {
58+
let tier = match tiers.get(&refreshed_consumer.tier) {
5959
Some(tier) => tier,
6060
None => return Err(LimiterError::InvalidTier),
6161
};
62-
add_limiter(&state, consumer, tier).await;
62+
add_limiter(&state, refreshed_consumer, tier).await;
6363
}
6464

6565
let rate_limiter_map = state.limiter.read().await.clone();
66-
let rates = rate_limiter_map.get(&consumer_key).unwrap();
66+
let rates = rate_limiter_map.get(&consumer.key).unwrap();
6767

6868
join_all(rates.iter().map(|r| async { r.acquire_one().await })).await;
6969
Ok(())

proxy/src/proxy.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,11 @@ async fn handle_websocket(
199199
while let Some(result) = client_incoming.next().await {
200200
match result {
201201
Ok(data) => {
202-
if let Err(err) =
203-
limiter(state.clone(), proxy_req.consumer.clone().unwrap().key)
204-
.await
202+
if let Err(err) = limiter(
203+
state.clone(),
204+
proxy_req.consumer.clone().as_ref().unwrap(),
205+
)
206+
.await
205207
{
206208
error!(error = err.to_string(), "Failed to run limiter");
207209
break;

0 commit comments

Comments
 (0)