ip-echo-server: Add helper to compute reply length
This commit is contained in:
		
				
					committed by
					
						![mergify[bot]](/avatar/e3df20cd7a67969c41a65f03bea54961?size=40) mergify[bot]
						mergify[bot]
					
				
			
			
				
	
			
			
			
						parent
						
							aab5f24518
						
					
				
				
					commit
					7481ba5618
				
			| @@ -1,4 +1,4 @@ | |||||||
| use crate::HEADER_LENGTH; | use crate::{ip_echo_server_reply_length, HEADER_LENGTH}; | ||||||
| use bytes::Bytes; | use bytes::Bytes; | ||||||
| use log::*; | use log::*; | ||||||
| use serde_derive::{Deserialize, Serialize}; | use serde_derive::{Deserialize, Serialize}; | ||||||
| @@ -177,11 +177,7 @@ pub fn ip_echo_server(tcp: std::net::TcpListener) -> IpEchoServer { | |||||||
|                     } else { |                     } else { | ||||||
|                         // "\0\0\0\0" header is added to ensure a valid response will never |                         // "\0\0\0\0" header is added to ensure a valid response will never | ||||||
|                         // conflict with the first four bytes of a valid HTTP response. |                         // conflict with the first four bytes of a valid HTTP response. | ||||||
|                         let mut bytes = vec![ |                         let mut bytes = vec![0u8; ip_echo_server_reply_length()]; | ||||||
|                             0; |  | ||||||
|                             HEADER_LENGTH + bincode::serialized_size(&peer_addr.ip()).unwrap() |  | ||||||
|                                 as usize |  | ||||||
|                         ]; |  | ||||||
|                         bincode::serialize_into(&mut bytes[HEADER_LENGTH..], &peer_addr.ip()) |                         bincode::serialize_into(&mut bytes[HEADER_LENGTH..], &peer_addr.ip()) | ||||||
|                             .unwrap(); |                             .unwrap(); | ||||||
|                         Ok(Bytes::from(bytes)) |                         Ok(Bytes::from(bytes)) | ||||||
|   | |||||||
| @@ -23,6 +23,10 @@ pub struct UdpSocketPair { | |||||||
| pub type PortRange = (u16, u16); | pub type PortRange = (u16, u16); | ||||||
|  |  | ||||||
| pub(crate) const HEADER_LENGTH: usize = 4; | pub(crate) const HEADER_LENGTH: usize = 4; | ||||||
|  | pub(crate) fn ip_echo_server_reply_length() -> usize { | ||||||
|  |     let largest_ip_addr = IpAddr::from([0u16; 8]); // IPv6 variant | ||||||
|  |     HEADER_LENGTH + bincode::serialized_size(&largest_ip_addr).unwrap() as usize | ||||||
|  | } | ||||||
|  |  | ||||||
| fn ip_echo_server_request( | fn ip_echo_server_request( | ||||||
|     ip_echo_server_addr: &SocketAddr, |     ip_echo_server_addr: &SocketAddr, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user