@@ -3,6 +3,7 @@ use async_std::sync;
3
3
4
4
use std:: convert:: TryInto ;
5
5
use std:: mem;
6
+ use std:: net:: SocketAddr ;
6
7
use std:: pin:: Pin ;
7
8
use std:: task:: { Context , Poll } ;
8
9
@@ -39,6 +40,8 @@ pin_project_lite::pin_project! {
39
40
#[ pin]
40
41
body: Body ,
41
42
local: TypeMap ,
43
+ local_addr: Option <SocketAddr >,
44
+ peer_addr: Option <SocketAddr >,
42
45
}
43
46
}
44
47
@@ -54,6 +57,8 @@ impl Response {
54
57
sender : Some ( sender) ,
55
58
receiver : Some ( receiver) ,
56
59
local : TypeMap :: new ( ) ,
60
+ peer_addr : None ,
61
+ local_addr : None ,
57
62
}
58
63
}
59
64
@@ -331,6 +336,16 @@ impl Response {
331
336
self . version
332
337
}
333
338
339
+ /// Get the peer socket address for the underlying transport, if appropriate
340
+ pub fn peer_addr ( & self ) -> Option < SocketAddr > {
341
+ self . peer_addr
342
+ }
343
+
344
+ /// Get the local socket address for the underlying transport, if appropriate
345
+ pub fn local_addr ( & self ) -> Option < SocketAddr > {
346
+ self . local_addr
347
+ }
348
+
334
349
/// Set the HTTP version.
335
350
///
336
351
/// # Examples
@@ -430,6 +445,8 @@ impl Clone for Response {
430
445
receiver : self . receiver . clone ( ) ,
431
446
body : Body :: empty ( ) ,
432
447
local : TypeMap :: new ( ) ,
448
+ peer_addr : self . peer_addr . clone ( ) ,
449
+ local_addr : self . local_addr . clone ( ) ,
433
450
}
434
451
}
435
452
}
0 commit comments