@@ -4,7 +4,7 @@ use super::client_error::ClientError;
44
55
66use std:: io:: { Write , Read } ;
7- use std:: net:: { TcpStream , SocketAddr , IpAddr } ;
7+ use std:: net:: { TcpStream , SocketAddr , IpAddr , Ipv4Addr } ;
88use std:: time:: Duration ;
99use std:: io:: Error as IoError ;
1010use std:: io:: ErrorKind ;
@@ -34,7 +34,7 @@ impl ClientConnection for ClientTCPConnection {
3434 }
3535
3636 /// creates socket tcp, sends query and receive response
37- fn send ( self , dns_query : DnsMessage ) -> Result < Vec < u8 > , ClientError > {
37+ fn send ( self , dns_query : DnsMessage ) -> Result < ( Vec < u8 > , IpAddr ) , ClientError > {
3838
3939 let timeout: Duration = self . get_timeout ( ) ;
4040 let bytes: Vec < u8 > = dns_query. to_bytes ( ) ;
@@ -58,6 +58,7 @@ impl ClientConnection for ClientTCPConnection {
5858
5959 let tcp_msg_len: u16 = ( msg_size_response[ 0 ] as u16 ) << 8 | msg_size_response[ 1 ] as u16 ;
6060 let mut vec_msg: Vec < u8 > = Vec :: new ( ) ;
61+ let ip = self . get_server_addr ( ) ;
6162
6263 while vec_msg. len ( ) < tcp_msg_len as usize {
6364 let mut msg = [ 0 ; 512 ] ;
@@ -69,7 +70,7 @@ impl ClientConnection for ClientTCPConnection {
6970 vec_msg. extend_from_slice ( & msg[ ..number_of_bytes_msg] ) ;
7071 }
7172
72- return Ok ( vec_msg) ;
73+ return Ok ( ( vec_msg, ip ) ) ;
7374 }
7475}
7576
@@ -186,7 +187,7 @@ mod tcp_connection_test{
186187 0 ,
187188 false ,
188189 1 ) ;
189- let response = conn_new. send ( dns_query) . unwrap ( ) ;
190+ let ( response, ip ) = conn_new. send ( dns_query) . unwrap ( ) ;
190191
191192 assert ! ( DnsMessage :: from_bytes( & response) . unwrap( ) . get_answer( ) . len( ) > 0 ) ;
192193 // FIXME:
0 commit comments