@@ -255,7 +255,11 @@ where
255255}
256256
257257/// A socket that is already registered with the application runtime
258- pub struct TcpRegistered ( pub TcpStream ) ;
258+ pub struct TcpRegistered {
259+ pub socket : TcpStream ,
260+ pub peer_addr : SocketAddress ,
261+ pub local_port : u16 ,
262+ }
259263
260264impl < Sub > super :: Peer < Environment < Sub > > for TcpRegistered
261265where
@@ -274,9 +278,9 @@ where
274278
275279 #[ inline]
276280 fn setup ( self , _env : & Environment < Sub > ) -> super :: Result < super :: SocketSet < Self :: WorkerSocket > > {
277- let remote_addr = self . 0 . peer_addr ( ) ? . into ( ) ;
278- let source_control_port = self . 0 . local_addr ( ) ? . port ( ) ;
279- let application = Box :: new ( self . 0 ) ;
281+ let remote_addr = self . peer_addr ;
282+ let source_control_port = self . local_port ;
283+ let application = Box :: new ( self . socket ) ;
280284 Ok ( super :: SocketSet {
281285 application,
282286 read_worker : None ,
@@ -289,7 +293,11 @@ where
289293}
290294
291295/// A socket that should be reregistered with the application runtime
292- pub struct TcpReregistered ( pub TcpStream , pub SocketAddress ) ;
296+ pub struct TcpReregistered {
297+ pub socket : TcpStream ,
298+ pub peer_addr : SocketAddress ,
299+ pub local_port : u16 ,
300+ }
293301
294302impl < Sub > super :: Peer < Environment < Sub > > for TcpReregistered
295303where
@@ -308,9 +316,9 @@ where
308316
309317 #[ inline]
310318 fn setup ( self , _env : & Environment < Sub > ) -> super :: Result < super :: SocketSet < Self :: WorkerSocket > > {
311- let remote_addr = self . 1 ;
312- let source_control_port = self . 0 . local_addr ( ) ? . port ( ) ;
313- let application = Box :: new ( self . 0 . into_std ( ) ?) ;
319+ let source_control_port = self . local_port ;
320+ let remote_addr = self . peer_addr ;
321+ let application = Box :: new ( self . socket . into_std ( ) ?) ;
314322 Ok ( super :: SocketSet {
315323 application,
316324 read_worker : None ,
0 commit comments