Skip to content

Commit 031253c

Browse files
committed
add peer and local addr setters
1 parent bbfda0d commit 031253c

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

src/request.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,16 @@ impl Request {
5959
}
6060
}
6161

62+
#[doc(hidden)]
63+
pub fn set_peer_addr(&mut self, peer_addr: Option<impl std::string::ToString>) {
64+
self.peer_addr = peer_addr.map(|addr| addr.to_string());
65+
}
66+
67+
#[doc(hidden)]
68+
pub fn set_local_addr(&mut self, local_addr: Option<impl std::string::ToString>) {
69+
self.local_addr = local_addr.map(|addr| addr.to_string());
70+
}
71+
6272
/// Get the peer socket address for the underlying transport, if appropriate
6373
pub fn peer_addr(&self) -> Option<&str> {
6474
self.peer_addr.as_deref()
@@ -609,7 +619,7 @@ mod tests {
609619
#[test]
610620
fn test_remote_and_forwarded_for_when_forwarded_is_properly_formatted() {
611621
let mut request = build_test_request();
612-
request.peer_addr = Some("127.0.0.1:8000".parse().unwrap());
622+
request.set_peer_addr(Some("127.0.0.1:8000"));
613623
set_forwarded(&mut request, "127.0.0.1:8001");
614624

615625
assert_eq!(request.forwarded_for(), Some("127.0.0.1:8001"));
@@ -619,7 +629,9 @@ mod tests {
619629
#[test]
620630
fn test_remote_and_forwarded_for_when_forwarded_is_improperly_formatted() {
621631
let mut request = build_test_request();
622-
request.peer_addr = Some("127.0.0.1:8000".parse().unwrap());
632+
request.set_peer_addr(Some(
633+
"127.0.0.1:8000".parse::<std::net::SocketAddr>().unwrap(),
634+
));
623635

624636
request
625637
.insert_header("Forwarded", "this is an improperly ;;; formatted header")
@@ -632,7 +644,9 @@ mod tests {
632644
#[test]
633645
fn test_remote_and_forwarded_for_when_x_forwarded_for_is_set() {
634646
let mut request = build_test_request();
635-
request.peer_addr = Some("127.0.0.1:8000".parse().unwrap());
647+
request.set_peer_addr(Some(
648+
std::path::PathBuf::from("/dev/random").to_str().unwrap(),
649+
));
636650
set_x_forwarded_for(&mut request, "forwarded-host.com");
637651

638652
assert_eq!(request.forwarded_for(), Some("forwarded-host.com"));
@@ -644,7 +658,7 @@ mod tests {
644658
let mut request = build_test_request();
645659
set_forwarded(&mut request, "forwarded.com");
646660
set_x_forwarded_for(&mut request, "forwarded-for-client.com");
647-
request.peer_addr = Some("127.0.0.1:8000".parse().unwrap());
661+
request.peer_addr = Some("127.0.0.1:8000".into());
648662

649663
assert_eq!(request.forwarded_for(), Some("forwarded.com".into()));
650664
assert_eq!(request.remote(), Some("forwarded.com".into()));
@@ -653,7 +667,7 @@ mod tests {
653667
#[test]
654668
fn test_remote_falling_back_to_peer_addr() {
655669
let mut request = build_test_request();
656-
request.peer_addr = Some("127.0.0.1:8000".parse().unwrap());
670+
request.peer_addr = Some("127.0.0.1:8000".into());
657671

658672
assert_eq!(request.forwarded_for(), None);
659673
assert_eq!(request.remote(), Some("127.0.0.1:8000".into()));

src/response.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,16 @@ impl Response {
335335
self.version
336336
}
337337

338+
#[doc(hidden)]
339+
pub fn set_peer_addr(&mut self, peer_addr: Option<impl std::string::ToString>) {
340+
self.peer_addr = peer_addr.map(|addr| addr.to_string());
341+
}
342+
343+
#[doc(hidden)]
344+
pub fn set_local_addr(&mut self, local_addr: Option<impl std::string::ToString>) {
345+
self.local_addr = local_addr.map(|addr| addr.to_string());
346+
}
347+
338348
/// Get the peer socket address for the underlying transport, if appropriate
339349
pub fn peer_addr(&self) -> Option<&str> {
340350
self.peer_addr.as_deref()

0 commit comments

Comments
 (0)