@@ -4,13 +4,14 @@ 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
use zerocopy:: network_endian:: I32 ;
13
13
14
+ use crate :: console:: clients:: udp:: checker:: ClientError ;
14
15
use crate :: shared:: bit_torrent:: tracker:: udp:: { source_address, MAX_PACKET_SIZE } ;
15
16
16
17
/// Default timeout for sending and receiving packets. And waiting for sockets
@@ -79,15 +80,15 @@ impl UdpClient {
79
80
Err ( e) => return Err ( anyhow ! ( "IO error waiting for the socket to become readable: {e:?}" ) ) ,
80
81
} ;
81
82
}
82
- Err ( e ) => return Err ( anyhow ! ( "Timeout waiting for the socket to become readable: {e:?}" ) ) ,
83
+ Err ( _ ) => bail ! ( ClientError :: ConnectionTimeout ) ,
83
84
} ;
84
85
85
86
match time:: timeout ( self . timeout , self . socket . send ( bytes) ) . await {
86
87
Ok ( send_result) => match send_result {
87
88
Ok ( size) => Ok ( size) ,
88
89
Err ( e) => Err ( anyhow ! ( "IO error during send: {e:?}" ) ) ,
89
90
} ,
90
- Err ( e ) => Err ( anyhow ! ( "Send operation timed out: {e:?}" ) ) ,
91
+ Err ( _ ) => bail ! ( ClientError :: ConnectionTimeout ) ,
91
92
}
92
93
}
93
94
@@ -110,15 +111,15 @@ impl UdpClient {
110
111
Err ( e) => return Err ( anyhow ! ( "IO error waiting for the socket to become readable: {e:?}" ) ) ,
111
112
} ;
112
113
}
113
- Err ( e ) => return Err ( anyhow ! ( "Timeout waiting for the socket to become readable: {e:?}" ) ) ,
114
+ Err ( _ ) => bail ! ( ClientError :: ConnectionTimeout ) ,
114
115
} ;
115
116
116
117
let size_result = match time:: timeout ( self . timeout , self . socket . recv ( bytes) ) . await {
117
118
Ok ( recv_result) => match recv_result {
118
119
Ok ( size) => Ok ( size) ,
119
120
Err ( e) => Err ( anyhow ! ( "IO error during send: {e:?}" ) ) ,
120
121
} ,
121
- Err ( e ) => Err ( anyhow ! ( "Receive operation timed out: {e:?}" ) ) ,
122
+ Err ( _ ) => bail ! ( ClientError :: ConnectionTimeout ) ,
122
123
} ;
123
124
124
125
if size_result. is_ok ( ) {
0 commit comments