diff --git a/proxy/src/serverless/backend.rs b/proxy/src/serverless/backend.rs index b398c3ddd0..1eb6016d6f 100644 --- a/proxy/src/serverless/backend.rs +++ b/proxy/src/serverless/backend.rs @@ -30,6 +30,7 @@ use crate::control_plane::locks::ApiLocks; use crate::control_plane::CachedNodeInfo; use crate::error::{ErrorKind, ReportableError, UserFacingError}; use crate::intern::EndpointIdInt; +use crate::postgres_rustls::MakeRustlsConnect; use crate::proxy::connect_compute::ConnectMechanism; use crate::proxy::retry::{CouldRetry, ShouldRetryWakeCompute}; use crate::rate_limiter::EndpointRateLimiter; @@ -514,7 +515,9 @@ impl ConnectMechanism for TokioMechanism { .connect_timeout(compute_config.timeout); let pause = ctx.latency_timer_pause(crate::metrics::Waiting::Compute); - let res = config.connect(postgres_client::NoTls).await; + let res = config + .connect(MakeRustlsConnect::new(&compute_config.tls)) + .await; drop(pause); let (client, connection) = permit.release_result(res)?; @@ -560,6 +563,10 @@ impl ConnectMechanism for HyperMechanism { let pause = ctx.latency_timer_pause(crate::metrics::Waiting::Compute); let port = node_info.config.get_port(); + + // TODO(conrad): how would we roll-out TLS for these connections? + // Postgres has negotiation, but no such thing for HTTP. + // Assume https, fall back to http (on the same port)? let res = connect_http2(&host, port, config.timeout).await; drop(pause); let (client, connection) = permit.release_result(res)?; diff --git a/proxy/src/serverless/conn_pool.rs b/proxy/src/serverless/conn_pool.rs index 447103edce..07a60d6f24 100644 --- a/proxy/src/serverless/conn_pool.rs +++ b/proxy/src/serverless/conn_pool.rs @@ -5,7 +5,6 @@ use std::task::{ready, Poll}; use futures::future::poll_fn; use futures::Future; -use postgres_client::tls::NoTlsStream; use postgres_client::AsyncMessage; use smallvec::SmallVec; use tokio::net::TcpStream; @@ -26,6 +25,7 @@ use super::conn_pool_lib::{ use crate::context::RequestContext; use crate::control_plane::messages::MetricsAuxInfo; use crate::metrics::Metrics; +use crate::postgres_rustls::RustlsStream; #[derive(Debug, Clone)] pub(crate) struct ConnInfoWithAuth { @@ -58,7 +58,7 @@ pub(crate) fn poll_client( ctx: &RequestContext, conn_info: ConnInfo, client: C, - mut connection: postgres_client::Connection, + mut connection: postgres_client::Connection>, conn_id: uuid::Uuid, aux: MetricsAuxInfo, ) -> Client {