mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-04 22:39:46 +00:00
misc patches
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
};
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user