Skip to content

Commit d0a6054

Browse files
committed
Add Response::is_upgrade
1 parent e2b8f64 commit d0a6054

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/response.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ pin_project_lite::pin_project! {
7777
trailers_receiver: Option<sync::Receiver<Trailers>>,
7878
upgrade_sender: Option<sync::Sender<upgrade::Connection>>,
7979
upgrade_receiver: Option<sync::Receiver<upgrade::Connection>>,
80+
is_upgrade: bool,
8081
#[pin]
8182
body: Body,
8283
ext: Extensions,
@@ -131,6 +132,7 @@ impl Response {
131132
trailers_receiver: Some(trailers_receiver),
132133
upgrade_sender: Some(upgrade_sender),
133134
upgrade_receiver: Some(upgrade_receiver),
135+
is_upgrade: false,
134136
ext: Extensions::new(),
135137
peer_addr: None,
136138
local_addr: None,
@@ -542,6 +544,7 @@ impl Response {
542544
#[cfg(feature = "unstable")]
543545
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
544546
pub fn send_upgrade(&mut self) -> upgrade::Sender {
547+
self.is_upgrade = true;
545548
let sender = self
546549
.upgrade_sender
547550
.take()
@@ -553,13 +556,21 @@ impl Response {
553556
#[cfg(feature = "unstable")]
554557
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
555558
pub async fn recv_upgrade(&mut self) -> upgrade::Receiver {
559+
self.is_upgrade = true;
556560
let receiver = self
557561
.upgrade_receiver
558562
.take()
559563
.expect("Upgrade receiver can only be constructed once");
560564
upgrade::Receiver::new(receiver)
561565
}
562566

567+
/// Returns `true` if a protocol upgrade is in progress.
568+
#[cfg(feature = "unstable")]
569+
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
570+
pub fn is_upgrade(&self) -> bool {
571+
self.is_upgrade
572+
}
573+
563574
/// An iterator visiting all header pairs in arbitrary order.
564575
pub fn iter(&self) -> headers::Iter<'_> {
565576
self.headers.iter()
@@ -620,6 +631,8 @@ impl Clone for Response {
620631
upgrade_sender: self.upgrade_sender.clone(),
621632
#[cfg(feature = "unstable")]
622633
upgrade_receiver: self.upgrade_receiver.clone(),
634+
#[cfg(feature = "unstable")]
635+
is_upgrade: false,
623636
body: Body::empty(),
624637
ext: Extensions::new(),
625638
peer_addr: self.peer_addr.clone(),

0 commit comments

Comments
 (0)