Skip to content

Commit 7306ae7

Browse files
committed
fix: allow re-allocate
1 parent 12e17ea commit 7306ae7

File tree

5 files changed

+19
-21
lines changed

5 files changed

+19
-21
lines changed

Cargo.lock

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/src/lib.rs

+12-12
Original file line numberDiff line numberDiff line change
@@ -549,10 +549,10 @@ mod tests {
549549
let turn_3_port = turn_3.allocate().await?;
550550
let turn_4_port = turn_4.allocate().await?;
551551

552-
assert!(turn_1.allocate().await.is_err());
553-
assert!(turn_2.allocate().await.is_err());
554-
assert!(turn_3.allocate().await.is_err());
555-
assert!(turn_4.allocate().await.is_err());
552+
assert_eq!(turn_1.allocate().await?, turn_1_port);
553+
assert_eq!(turn_2.allocate().await?, turn_2_port);
554+
assert_eq!(turn_3.allocate().await?, turn_3_port);
555+
assert_eq!(turn_4.allocate().await?, turn_4_port);
556556

557557
{
558558
turn_1.create_permission(turn_2_port).await?;
@@ -579,14 +579,14 @@ mod tests {
579579
turn_4.channel_bind(turn_1_port, 0x4002).await?;
580580
turn_4.refresh(600).await?;
581581

582-
assert!(turn_1.channel_bind(turn_2_port, 0x4000).await.is_err());
583-
assert!(turn_1.channel_bind(turn_3_port, 0x4001).await.is_err());
584-
assert!(turn_1.channel_bind(turn_4_port, 0x4002).await.is_err());
585-
assert!(turn_2.channel_bind(turn_1_port, 0x4000).await.is_err());
586-
assert!(turn_2.channel_bind(turn_3_port, 0x4002).await.is_err());
587-
assert!(turn_3.channel_bind(turn_1_port, 0x4001).await.is_err());
588-
assert!(turn_3.channel_bind(turn_2_port, 0x4002).await.is_err());
589-
assert!(turn_4.channel_bind(turn_1_port, 0x4002).await.is_err());
582+
assert!(turn_1.channel_bind(turn_2_port, 0x4000).await.is_ok());
583+
assert!(turn_1.channel_bind(turn_3_port, 0x4001).await.is_ok());
584+
assert!(turn_1.channel_bind(turn_4_port, 0x4002).await.is_ok());
585+
assert!(turn_2.channel_bind(turn_1_port, 0x4000).await.is_ok());
586+
assert!(turn_2.channel_bind(turn_3_port, 0x4002).await.is_ok());
587+
assert!(turn_3.channel_bind(turn_1_port, 0x4001).await.is_ok());
588+
assert!(turn_3.channel_bind(turn_2_port, 0x4002).await.is_ok());
589+
assert!(turn_4.channel_bind(turn_1_port, 0x4002).await.is_ok());
590590
}
591591

592592
{

turn-server/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "turn-server"
3-
version = "3.3.3"
3+
version = "3.3.4"
44
edition = "2021"
55
authors = ["mycrl <[email protected]>"]
66
description = "A pure rust-implemented turn server."

turn/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "turn"
3-
version = "1.3.0"
3+
version = "1.3.1"
44
edition = "2021"
55
authors = ["mycrl <[email protected]>"]
66
description = "A library for handling round sessions."

turn/src/sessions.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -483,15 +483,15 @@ impl<T: Observer + 'static> Sessions<T> {
483483
/// assert_eq!(session.allocate.channels.len(), 0);
484484
/// }
485485
///
486-
/// assert!(sessions.allocate(&addr).is_none());
486+
/// assert_eq!(sessions.allocate(&addr), Some(port));
487487
/// ```
488488
pub fn allocate(&self, addr: &SessionAddr) -> Option<u16> {
489489
let mut lock = self.state.sessions.write();
490490
let session = lock.get_mut(addr)?;
491491

492492
// If the port has already been allocated, re-allocation is not allowed.
493-
if session.allocate.port.is_some() {
494-
return None;
493+
if let Some(port) = session.allocate.port {
494+
return Some(port);
495495
}
496496

497497
// Records the port assigned to the current session and resets the alive time.
@@ -735,8 +735,6 @@ impl<T: Observer + 'static> Sessions<T> {
735735

736736
if !session.allocate.channels.contains(&channel) {
737737
session.allocate.channels.push(channel);
738-
} else {
739-
return false;
740738
}
741739
}
742740

0 commit comments

Comments
 (0)