Skip to content

Commit 15bec14

Browse files
committed
agent: remove last internal Instant::now() call
Unfortunately we need to make the caller provide the Instant in this case.
1 parent 9e599ca commit 15bec14

File tree

3 files changed

+22
-17
lines changed

3 files changed

+22
-17
lines changed

stun-proto/examples/stund.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use std::net::SocketAddr;
1414
use std::io::{self, Read, Write};
1515
use std::net::{TcpListener, UdpSocket};
1616
use std::str::FromStr;
17+
use std::time::Instant;
1718

1819
use tracing::{debug, error, info, warn};
1920

@@ -150,7 +151,7 @@ fn main() -> io::Result<()> {
150151
if let Some((response, to)) =
151152
handle_incoming_data(&data[..size], remote_addr, &mut tcp_stun_agent)
152153
{
153-
if let Ok(data) = tcp_stun_agent.send(response, to) {
154+
if let Ok(data) = tcp_stun_agent.send(response, to, Instant::now()) {
154155
warn_on_err(stream.write_all(&data.data), ());
155156
}
156157
}

stun-proto/src/agent.rs

+18-15
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ impl StunAgent {
136136
&mut self,
137137
msg: MessageBuilder<'_>,
138138
to: SocketAddr,
139+
now: Instant,
139140
) -> Result<Transmit<'_>, StunError> {
140141
if msg.has_class(MessageClass::Request) {
141142
if self
@@ -146,7 +147,7 @@ impl StunAgent {
146147
}
147148
let transaction_id = msg.transaction_id();
148149
let mut state = StunRequestState::new(msg, self.transport, self.local_addr, to);
149-
let StunRequestPollRet::SendData(transmit) = state.poll(Instant::now()) else {
150+
let StunRequestPollRet::SendData(transmit) = state.poll(now) else {
150151
return Err(StunError::ProtocolViolation);
151152
};
152153
let transmit = transmit.into_owned();
@@ -713,7 +714,7 @@ pub(crate) mod tests {
713714
.build();
714715
let msg = Message::builder_request(BINDING);
715716
let transaction_id = msg.transaction_id();
716-
let transmit = agent.send(msg, remote_addr).unwrap();
717+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
717718
let now = Instant::now();
718719
assert_eq!(transmit.transport, TransportType::Udp);
719720
assert_eq!(transmit.from, local_addr);
@@ -744,7 +745,7 @@ pub(crate) mod tests {
744745
MessageType::from_class_method(MessageClass::Indication, BINDING),
745746
transaction_id,
746747
);
747-
let transmit = agent.send(msg, remote_addr).unwrap();
748+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
748749
assert_eq!(transmit.transport, TransportType::Udp);
749750
assert_eq!(transmit.from, local_addr);
750751
assert_eq!(transmit.to, remote_addr);
@@ -783,7 +784,7 @@ pub(crate) mod tests {
783784
msg.add_message_integrity(&local_credentials.clone().into(), IntegrityAlgorithm::Sha1)
784785
.unwrap();
785786
println!("send");
786-
let transmit = agent.send(msg, remote_addr).unwrap();
787+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
787788
println!("sent");
788789

789790
let request = Message::from_bytes(&transmit.data).unwrap();
@@ -827,7 +828,7 @@ pub(crate) mod tests {
827828
.build();
828829
let msg = Message::builder_request(BINDING);
829830
let transaction_id = msg.transaction_id();
830-
agent.send(msg, remote_addr).unwrap();
831+
agent.send(msg, remote_addr, Instant::now()).unwrap();
831832
let mut now = Instant::now();
832833
loop {
833834
match agent.poll(now) {
@@ -859,7 +860,7 @@ pub(crate) mod tests {
859860

860861
let msg = Message::builder_request(BINDING);
861862
let transaction_id = msg.transaction_id();
862-
let transmit = agent.send(msg, remote_addr).unwrap();
863+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
863864

864865
let request = Message::from_bytes(&transmit.data).unwrap();
865866

@@ -899,7 +900,7 @@ pub(crate) mod tests {
899900
let transaction_id = msg.transaction_id();
900901
msg.add_message_integrity(&local_credentials.into(), IntegrityAlgorithm::Sha1)
901902
.unwrap();
902-
let transmit = agent.send(msg, remote_addr).unwrap();
903+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
903904

904905
let request = Message::from_bytes(&transmit.data).unwrap();
905906

@@ -938,7 +939,7 @@ pub(crate) mod tests {
938939
let transaction_id = msg.transaction_id();
939940
msg.add_message_integrity(&local_credentials.into(), IntegrityAlgorithm::Sha1)
940941
.unwrap();
941-
let transmit = agent.send(msg, remote_addr).unwrap();
942+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
942943

943944
let request = Message::from_bytes(&transmit.data).unwrap();
944945

@@ -978,7 +979,7 @@ pub(crate) mod tests {
978979
let mut msg = Message::builder_request(BINDING);
979980
msg.add_message_integrity(&local_credentials.clone().into(), IntegrityAlgorithm::Sha1)
980981
.unwrap();
981-
let transmit = agent.send(msg, remote_addr).unwrap();
982+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
982983

983984
let request = Message::from_bytes(&transmit.data).unwrap();
984985

@@ -1015,7 +1016,7 @@ pub(crate) mod tests {
10151016
assert!(!agent.is_validated_peer(remote_addr));
10161017

10171018
let msg = Message::builder_request(BINDING);
1018-
let transmit = agent.send(msg, remote_addr).unwrap();
1019+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
10191020

10201021
let request = Message::from_bytes(&transmit.data).unwrap();
10211022

@@ -1048,7 +1049,7 @@ pub(crate) mod tests {
10481049

10491050
let msg = Message::builder_request(BINDING);
10501051
let transaction_id = msg.transaction_id();
1051-
let _transmit = agent.send(msg, remote_addr).unwrap();
1052+
let _transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
10521053

10531054
let mut request = agent.mut_request_transaction(transaction_id).unwrap();
10541055
assert_eq!(request.agent().local_addr(), local_addr);
@@ -1076,7 +1077,7 @@ pub(crate) mod tests {
10761077

10771078
let msg = Message::builder_request(BINDING);
10781079
let transaction_id = msg.transaction_id();
1079-
let _transmit = agent.send(msg, remote_addr).unwrap();
1080+
let _transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
10801081

10811082
let mut request = agent.mut_request_transaction(transaction_id).unwrap();
10821083
assert_eq!(request.agent().local_addr(), local_addr);
@@ -1109,7 +1110,9 @@ pub(crate) mod tests {
11091110

11101111
let msg = Message::builder_request(BINDING);
11111112
let transaction_id = msg.transaction_id();
1112-
let transmit = agent.send(msg.clone(), remote_addr).unwrap();
1113+
let transmit = agent
1114+
.send(msg.clone(), remote_addr, Instant::now())
1115+
.unwrap();
11131116
let to = transmit.to;
11141117
let request = Message::from_bytes(transmit.data()).unwrap();
11151118

@@ -1119,7 +1122,7 @@ pub(crate) mod tests {
11191122
.unwrap();
11201123

11211124
assert!(matches!(
1122-
agent.send(msg, remote_addr),
1125+
agent.send(msg, remote_addr, Instant::now()),
11231126
Err(StunError::AlreadyInProgress)
11241127
));
11251128

@@ -1168,7 +1171,7 @@ pub(crate) mod tests {
11681171

11691172
let msg = Message::builder_request(BINDING);
11701173
let transaction_id = msg.transaction_id();
1171-
let transmit = agent.send(msg, remote_addr).unwrap();
1174+
let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
11721175
assert_eq!(transmit.transport, TransportType::Tcp);
11731176
assert_eq!(transmit.from, local_addr);
11741177
assert_eq!(transmit.to, remote_addr);

stun-proto/src/lib.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
//!
1818
//! ```
1919
//! # use std::net::SocketAddr;
20+
//! # use std::time::Instant;
2021
//! use stun_proto::types::TransportType;
2122
//! use stun_proto::types::attribute::{MessageIntegrity, XorMappedAddress};
2223
//! use stun_proto::types::message::{
@@ -37,7 +38,7 @@
3738
//! // and we can send a Message
3839
//! let mut msg = Message::builder_request(BINDING);
3940
//! msg.add_message_integrity(&local_credentials.clone().into(), IntegrityAlgorithm::Sha1).unwrap();
40-
//! let transmit = agent.send(msg, remote_addr).unwrap();
41+
//! let transmit = agent.send(msg, remote_addr, Instant::now()).unwrap();
4142
//!
4243
//! // The transmit struct indicates what data and where to send it.
4344
//! let request = Message::from_bytes(&transmit.data).unwrap();

0 commit comments

Comments
 (0)