@@ -4,12 +4,13 @@ use std::net::SocketAddr;
4
4
use std:: sync:: Arc ;
5
5
use std:: time:: Duration ;
6
6
7
- use anyhow:: { anyhow, Context , Result } ;
7
+ use anyhow:: { anyhow, bail , Context , Result } ;
8
8
use aquatic_udp_protocol:: { ConnectRequest , Request , Response , TransactionId } ;
9
9
use log:: debug;
10
10
use tokio:: net:: UdpSocket ;
11
11
use tokio:: time;
12
12
13
+ use crate :: console:: clients:: udp:: checker:: ClientError ;
13
14
use crate :: shared:: bit_torrent:: tracker:: udp:: { source_address, MAX_PACKET_SIZE } ;
14
15
15
16
/// Default timeout for sending and receiving packets. And waiting for sockets
@@ -78,15 +79,15 @@ impl UdpClient {
78
79
Err ( e) => return Err ( anyhow ! ( "IO error waiting for the socket to become readable: {e:?}" ) ) ,
79
80
} ;
80
81
}
81
- Err ( e ) => return Err ( anyhow ! ( "Timeout waiting for the socket to become readable: {e:?}" ) ) ,
82
+ Err ( _ ) => bail ! ( ClientError :: ConnectionTimeout ) ,
82
83
} ;
83
84
84
85
match time:: timeout ( self . timeout , self . socket . send ( bytes) ) . await {
85
86
Ok ( send_result) => match send_result {
86
87
Ok ( size) => Ok ( size) ,
87
88
Err ( e) => Err ( anyhow ! ( "IO error during send: {e:?}" ) ) ,
88
89
} ,
89
- Err ( e ) => Err ( anyhow ! ( "Send operation timed out: {e:?}" ) ) ,
90
+ Err ( _ ) => bail ! ( ClientError :: ConnectionTimeout ) ,
90
91
}
91
92
}
92
93
@@ -109,15 +110,15 @@ impl UdpClient {
109
110
Err ( e) => return Err ( anyhow ! ( "IO error waiting for the socket to become readable: {e:?}" ) ) ,
110
111
} ;
111
112
}
112
- Err ( e ) => return Err ( anyhow ! ( "Timeout waiting for the socket to become readable: {e:?}" ) ) ,
113
+ Err ( _ ) => bail ! ( ClientError :: ConnectionTimeout ) ,
113
114
} ;
114
115
115
116
let size_result = match time:: timeout ( self . timeout , self . socket . recv ( bytes) ) . await {
116
117
Ok ( recv_result) => match recv_result {
117
118
Ok ( size) => Ok ( size) ,
118
119
Err ( e) => Err ( anyhow ! ( "IO error during send: {e:?}" ) ) ,
119
120
} ,
120
- Err ( e ) => Err ( anyhow ! ( "Receive operation timed out: {e:?}" ) ) ,
121
+ Err ( _ ) => bail ! ( ClientError :: ConnectionTimeout ) ,
121
122
} ;
122
123
123
124
if size_result. is_ok ( ) {
0 commit comments