@@ -118,13 +118,9 @@ pub async fn handle_announce(
118118
119119 authenticate ( & info_hash, tracker. clone ( ) ) . await ?;
120120
121- let peer_ip = tracker . assign_ip_address_to_peer ( & remote_client_ip) ;
121+ let mut peer = peer_builder :: from_request ( & wrapped_announce_request , & remote_client_ip) ;
122122
123- let peer = peer_builder:: from_request ( & wrapped_announce_request, & peer_ip) ;
124-
125- let torrent_stats = tracker. update_torrent_with_peer_and_get_stats ( & info_hash, & peer) . await ;
126-
127- let peers = tracker. get_other_peers ( & info_hash, & peer. peer_addr ) . await ;
123+ let response = tracker. announce ( & info_hash, & mut peer, & remote_client_ip) . await ;
128124
129125 match remote_client_ip {
130126 IpAddr :: V4 ( _) => {
@@ -140,9 +136,10 @@ pub async fn handle_announce(
140136 Response :: from ( AnnounceResponse {
141137 transaction_id : wrapped_announce_request. announce_request . transaction_id ,
142138 announce_interval : AnnounceInterval ( i64:: from ( tracker. config . announce_interval ) as i32 ) ,
143- leechers : NumberOfPeers ( i64:: from ( torrent_stats. leechers ) as i32 ) ,
144- seeders : NumberOfPeers ( i64:: from ( torrent_stats. seeders ) as i32 ) ,
145- peers : peers
139+ leechers : NumberOfPeers ( i64:: from ( response. swam_stats . leechers ) as i32 ) ,
140+ seeders : NumberOfPeers ( i64:: from ( response. swam_stats . seeders ) as i32 ) ,
141+ peers : response
142+ . peers
146143 . iter ( )
147144 . filter_map ( |peer| {
148145 if let IpAddr :: V4 ( ip) = peer. peer_addr . ip ( ) {
@@ -160,9 +157,10 @@ pub async fn handle_announce(
160157 Response :: from ( AnnounceResponse {
161158 transaction_id : wrapped_announce_request. announce_request . transaction_id ,
162159 announce_interval : AnnounceInterval ( i64:: from ( tracker. config . announce_interval ) as i32 ) ,
163- leechers : NumberOfPeers ( i64:: from ( torrent_stats. leechers ) as i32 ) ,
164- seeders : NumberOfPeers ( i64:: from ( torrent_stats. seeders ) as i32 ) ,
165- peers : peers
160+ leechers : NumberOfPeers ( i64:: from ( response. swam_stats . leechers ) as i32 ) ,
161+ seeders : NumberOfPeers ( i64:: from ( response. swam_stats . seeders ) as i32 ) ,
162+ peers : response
163+ . peers
166164 . iter ( )
167165 . filter_map ( |peer| {
168166 if let IpAddr :: V6 ( ip) = peer. peer_addr . ip ( ) {
0 commit comments