@@ -42,6 +42,7 @@ pin_project_lite::pin_project! {
42
42
status: StatusCode ,
43
43
headers: Headers ,
44
44
version: Option <Version >,
45
+ has_trailers: bool ,
45
46
trailers_sender: Option <sync:: Sender <Trailers >>,
46
47
trailers_receiver: Option <sync:: Receiver <Trailers >>,
47
48
#[ pin]
@@ -75,6 +76,7 @@ pin_project_lite::pin_project! {
75
76
version: Option <Version >,
76
77
trailers_sender: Option <sync:: Sender <Trailers >>,
77
78
trailers_receiver: Option <sync:: Receiver <Trailers >>,
79
+ has_trailers: bool ,
78
80
upgrade_sender: Option <sync:: Sender <upgrade:: Connection >>,
79
81
upgrade_receiver: Option <sync:: Receiver <upgrade:: Connection >>,
80
82
has_upgrade: bool ,
@@ -105,6 +107,7 @@ impl Response {
105
107
body : Body :: empty ( ) ,
106
108
trailers_sender : Some ( trailers_sender) ,
107
109
trailers_receiver : Some ( trailers_receiver) ,
110
+ has_trailers : false ,
108
111
ext : Extensions :: new ( ) ,
109
112
peer_addr : None ,
110
113
local_addr : None ,
@@ -130,6 +133,7 @@ impl Response {
130
133
body : Body :: empty ( ) ,
131
134
trailers_sender : Some ( trailers_sender) ,
132
135
trailers_receiver : Some ( trailers_receiver) ,
136
+ has_trailers : false ,
133
137
upgrade_sender : Some ( upgrade_sender) ,
134
138
upgrade_receiver : Some ( upgrade_receiver) ,
135
139
has_upgrade : false ,
@@ -536,6 +540,7 @@ impl Response {
536
540
537
541
/// Sends trailers to the a receiver.
538
542
pub fn send_trailers ( & mut self ) -> trailers:: Sender {
543
+ self . has_trailers = true ;
539
544
let sender = self
540
545
. trailers_sender
541
546
. take ( )
@@ -544,14 +549,19 @@ impl Response {
544
549
}
545
550
546
551
/// Receive trailers from a sender.
547
- pub async fn recv_trailers ( & mut self ) -> trailers:: Receiver {
552
+ pub fn recv_trailers ( & mut self ) -> trailers:: Receiver {
548
553
let receiver = self
549
554
. trailers_receiver
550
555
. take ( )
551
556
. expect ( "Trailers receiver can only be constructed once" ) ;
552
557
trailers:: Receiver :: new ( receiver)
553
558
}
554
559
560
+ /// Returns `true` if sending trailers is in progress.
561
+ pub fn has_trailers ( & self ) -> bool {
562
+ self . has_trailers
563
+ }
564
+
555
565
/// Sends an upgrade connection to the a receiver.
556
566
#[ cfg( feature = "unstable" ) ]
557
567
#[ cfg_attr( feature = "docs" , doc( cfg( unstable) ) ) ]
@@ -640,6 +650,7 @@ impl Clone for Response {
640
650
version : self . version . clone ( ) ,
641
651
trailers_sender : self . trailers_sender . clone ( ) ,
642
652
trailers_receiver : self . trailers_receiver . clone ( ) ,
653
+ has_trailers : false ,
643
654
#[ cfg( feature = "unstable" ) ]
644
655
upgrade_sender : self . upgrade_sender . clone ( ) ,
645
656
#[ cfg( feature = "unstable" ) ]
0 commit comments