diff --git a/examples/webtransport_server.rs b/examples/webtransport_server.rs
index 98f1ab05..87508b73 100644
--- a/examples/webtransport_server.rs
+++ b/examples/webtransport_server.rs
@@ -295,9 +295,16 @@ async fn handle_session_and_echo_all_inbound_messages(
tokio::spawn( async move { log_result!(echo_stream(send, stream).await); });
}
stream = session.accept_bi() => {
- if let Some(server::AcceptedBi::BidiStream(_, stream)) = stream? {
- let (send, recv) = quic::BidiStream::split(stream);
- tokio::spawn( async move { log_result!(echo_stream(send, recv).await); });
+ if let Some(resolver) = stream? {
+ tokio::spawn(async move {
+ log_result!(async move {
+ if let server::AcceptedBi::BidiStream(_, stream) = resolver.resolve().await? {
+ let (send, recv) = quic::BidiStream::split(stream);
+ echo_stream(send, recv).await?;
+ }
+ Ok::<_, anyhow::Error>(())
+ }.await);
+ });
}
}
else => {
diff --git a/h3-webtransport/src/server.rs b/h3-webtransport/src/server.rs
index 8d472267..a2d711f7 100644
--- a/h3-webtransport/src/server.rs
+++ b/h3-webtransport/src/server.rs
@@ -17,7 +17,7 @@ use h3::{
frame::FrameStream,
proto::frame::Frame,
quic::{self, OpenStreams, WriteBuf},
- server::{Connection, RequestStream},
+ server::{Connection, RequestResolver, RequestStream},
ConnectionState, SharedState,
};
use h3::{
@@ -177,45 +177,22 @@ where
}
}
- /// Accepts an incoming bidirectional stream or request
- pub async fn accept_bi(&self) -> Result