diff --git a/proxy/src/bin/pglb.rs b/proxy/src/bin/pglb.rs index d32863de35..b6c9980496 100644 --- a/proxy/src/bin/pglb.rs +++ b/proxy/src/bin/pglb.rs @@ -520,10 +520,12 @@ impl PglbConn { let mut compute_stream = Framed::new( compute_stream, PgRawCodec { - start_or_ssl_request: true, + start_or_ssl_request: false, }, ); + let mut resps = 4; + let mut first_auth_proxy_request = true; loop { select! { msg = auth_stream.next() => { @@ -532,9 +534,10 @@ impl PglbConn { }; match msg? { PglbMessage::Postgres(mut payload) => { - let Some(msg) = PgRawMessage::decode(&mut payload, false)? else { + let Some(msg) = PgRawMessage::decode(&mut payload, first_auth_proxy_request)? else { bail!("auth proxy sent invalid message"); }; + first_auth_proxy_request = false; compute_stream.send(msg).await?; } PglbMessage::Control(PglbControlMessage::ConnectionInitiated(_)) => { @@ -556,13 +559,14 @@ impl PglbConn { } } - msg = compute_stream.next() => { + msg = compute_stream.next(), if resps > 0 => { let Some(msg) = msg else { bail!("compute disconnected"); }; match msg? { PgRawMessage::SslRequest => bail!("protocol violation"), msg => { + resps -= 1; let mut buf = BytesMut::new(); msg.encode(&mut buf)?; auth_stream.send(proxy::PglbMessage::Postgres( @@ -595,14 +599,18 @@ impl PglbConn { let Some(msg) = msg else { bail!("compute disconnected"); }; - compute_stream.send(msg?).await?; + let msg = msg?; + dbg!(&msg); + compute_stream.send(msg).await?; } msg = compute_stream.next() => { let Some(msg) = msg else { bail!("compute disconnected"); }; - client_stream.send(msg?).await?; + let msg = msg?; + dbg!(&msg); + client_stream.send(msg).await?; } } }