misc patches

This commit is contained in:
Aiden McClelland
2026-01-08 20:04:46 -07:00
parent f135259c63
commit 350aa78401
3 changed files with 102 additions and 97 deletions

View File

@@ -151,17 +151,22 @@ where
cx: &mut std::task::Context<'_>, cx: &mut std::task::Context<'_>,
) -> Poll<Result<(Self::Metadata, AcceptStream), Error>> { ) -> Poll<Result<(Self::Metadata, AcceptStream), Error>> {
self.in_progress.mutate(|in_progress| { self.in_progress.mutate(|in_progress| {
loop { // First, check if any in-progress handshakes have completed
if !in_progress.is_empty() { if !in_progress.is_empty() {
if let Poll::Ready(Some((handler, res))) = in_progress.poll_next_unpin(cx) { if let Poll::Ready(Some((handler, res))) = in_progress.poll_next_unpin(cx) {
if let Some(res) = res.transpose() { if let Some(res) = res.transpose() {
self.tls_handler = handler; self.tls_handler = handler;
return Poll::Ready(res); return Poll::Ready(res);
} }
continue; // Connection was rejected (preprocess returned None).
// Yield to the runtime to avoid busy-looping, but wake
// immediately to continue processing.
cx.waker().wake_by_ref();
return Poll::Pending;
} }
} }
// Try to accept a new connection
let (metadata, stream) = ready!(self.accept.poll_accept(cx)?); let (metadata, stream) = ready!(self.accept.poll_accept(cx)?);
let mut tls_handler = self.tls_handler.clone(); let mut tls_handler = self.tls_handler.clone();
let mut fut = async move { let mut fut = async move {
@@ -239,15 +244,19 @@ where
match fut.poll_unpin(cx) { match fut.poll_unpin(cx) {
Poll::Pending => { Poll::Pending => {
in_progress.push(fut); in_progress.push(fut);
return Poll::Pending; Poll::Pending
} }
Poll::Ready((handler, res)) => { Poll::Ready((handler, res)) => {
if let Some(res) = res.transpose() { if let Some(res) = res.transpose() {
self.tls_handler = handler; self.tls_handler = handler;
return Poll::Ready(res); return Poll::Ready(res);
} }
// Connection was rejected (preprocess returned None).
// Yield to the runtime to avoid busy-looping, but wake
// immediately to continue processing.
cx.waker().wake_by_ref();
Poll::Pending
} }
};
} }
}) })
} }

View File

@@ -384,16 +384,12 @@ impl ImageSource {
pub fn ingredients(&self) -> Vec<PathBuf> { pub fn ingredients(&self) -> Vec<PathBuf> {
match self { match self {
Self::Packed => Vec::new(), Self::Packed => Vec::new(),
Self::DockerBuild { Self::DockerBuild { dockerfile, .. } => {
dockerfile,
workdir,
..
} => {
vec![ vec![
workdir dockerfile
.as_deref() .as_deref()
.unwrap_or(Path::new(".")) .unwrap_or(Path::new("Dockerfile"))
.join(dockerfile.as_deref().unwrap_or(Path::new("Dockerfile"))), .to_owned(),
] ]
} }
Self::DockerTag(_) => Vec::new(), Self::DockerTag(_) => Vec::new(),

View File

@@ -6,7 +6,7 @@ use crate::prelude::*;
use crate::service::Service; use crate::service::Service;
#[derive(Clone)] #[derive(Clone)]
pub(in crate::service) struct EffectContext(Weak<Service>); pub struct EffectContext(Weak<Service>);
impl EffectContext { impl EffectContext {
pub fn new(service: Weak<Service>) -> Self { pub fn new(service: Weak<Service>) -> Self {
Self(service) Self(service)