@@ -4,7 +4,7 @@ use super::client_error::ClientError;
4
4
5
5
6
6
use std:: io:: { Write , Read } ;
7
- use std:: net:: { TcpStream , SocketAddr , IpAddr } ;
7
+ use std:: net:: { TcpStream , SocketAddr , IpAddr , Ipv4Addr } ;
8
8
use std:: time:: Duration ;
9
9
use std:: io:: Error as IoError ;
10
10
use std:: io:: ErrorKind ;
@@ -34,7 +34,7 @@ impl ClientConnection for ClientTCPConnection {
34
34
}
35
35
36
36
/// 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 > {
38
38
39
39
let timeout: Duration = self . get_timeout ( ) ;
40
40
let bytes: Vec < u8 > = dns_query. to_bytes ( ) ;
@@ -58,6 +58,7 @@ impl ClientConnection for ClientTCPConnection {
58
58
59
59
let tcp_msg_len: u16 = ( msg_size_response[ 0 ] as u16 ) << 8 | msg_size_response[ 1 ] as u16 ;
60
60
let mut vec_msg: Vec < u8 > = Vec :: new ( ) ;
61
+ let ip = self . get_server_addr ( ) ;
61
62
62
63
while vec_msg. len ( ) < tcp_msg_len as usize {
63
64
let mut msg = [ 0 ; 512 ] ;
@@ -69,7 +70,7 @@ impl ClientConnection for ClientTCPConnection {
69
70
vec_msg. extend_from_slice ( & msg[ ..number_of_bytes_msg] ) ;
70
71
}
71
72
72
- return Ok ( vec_msg) ;
73
+ return Ok ( ( vec_msg, ip ) ) ;
73
74
}
74
75
}
75
76
@@ -186,7 +187,7 @@ mod tcp_connection_test{
186
187
0 ,
187
188
false ,
188
189
1 ) ;
189
- let response = conn_new. send ( dns_query) . unwrap ( ) ;
190
+ let ( response, ip ) = conn_new. send ( dns_query) . unwrap ( ) ;
190
191
191
192
assert ! ( DnsMessage :: from_bytes( & response) . unwrap( ) . get_answer( ) . len( ) > 0 ) ;
192
193
// FIXME:
0 commit comments