Skip to content

Commit 44b3d81

Browse files
MasterPtatoNathanFlurry
authored andcommitted
temp
1 parent c5e0cde commit 44b3d81

File tree

4 files changed

+31
-49
lines changed

4 files changed

+31
-49
lines changed

engine/packages/guard-core/src/proxy_service.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2537,7 +2537,7 @@ fn is_retryable_ws_error(err: &anyhow::Error) -> bool {
25372537
}
25382538
}
25392539

2540-
fn is_ws_hibernate(err: &anyhow::Error) -> bool {
2540+
pub fn is_ws_hibernate(err: &anyhow::Error) -> bool {
25412541
if let Some(rivet_err) = err.chain().find_map(|x| x.downcast_ref::<RivetError>()) {
25422542
rivet_err.group() == "guard" && rivet_err.code() == "websocket_service_hibernate"
25432543
} else {

engine/packages/pegboard-gateway/src/lib.rs

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use rivet_guard_core::{
1414
ServiceUnavailable, WebSocketServiceHibernate, WebSocketServiceTimeout,
1515
WebSocketServiceUnavailable,
1616
},
17-
proxy_service::ResponseBody,
17+
proxy_service::{ResponseBody, is_ws_hibernate},
1818
request_context::RequestContext,
1919
websocket_handle::WebSocketReceiver,
2020
};
@@ -559,28 +559,33 @@ impl CustomServeTrait for PegboardGateway {
559559
(res, _) => res,
560560
};
561561

562-
// Send WebSocket close message to runner
563-
let (close_code, close_reason) = match &mut lifecycle_res {
564-
// Taking here because it won't be used again
565-
Ok(LifecycleResult::ClientClose(Some(close))) => {
566-
(close.code, Some(std::mem::take(&mut close.reason)))
567-
}
568-
Ok(_) => (CloseCode::Normal.into(), None),
569-
Err(_) => (CloseCode::Error.into(), Some("ws.downstream_closed".into())),
570-
};
571-
let close_message = protocol::ToClientTunnelMessageKind::ToClientWebSocketClose(
572-
protocol::ToClientWebSocketClose {
573-
code: Some(close_code.into()),
574-
reason: close_reason.map(|x| x.as_str().to_string()),
575-
},
576-
);
577-
578-
if let Err(err) = self
579-
.shared_state
580-
.send_message(request_id, close_message)
581-
.await
562+
// Send close frame to runner if not hibernating
563+
if lifecycle_res
564+
.as_ref()
565+
.map_or_else(is_ws_hibernate, |_| false)
582566
{
583-
tracing::error!(?err, "error sending close message");
567+
let (close_code, close_reason) = match &mut lifecycle_res {
568+
// Taking here because it won't be used again
569+
Ok(LifecycleResult::ClientClose(Some(close))) => {
570+
(close.code, Some(std::mem::take(&mut close.reason)))
571+
}
572+
Ok(_) => (CloseCode::Normal.into(), None),
573+
Err(_) => (CloseCode::Error.into(), Some("ws.downstream_closed".into())),
574+
};
575+
let close_message = protocol::ToClientTunnelMessageKind::ToClientWebSocketClose(
576+
protocol::ToClientWebSocketClose {
577+
code: Some(close_code.into()),
578+
reason: close_reason.map(|x| x.as_str().to_string()),
579+
},
580+
);
581+
582+
if let Err(err) = self
583+
.shared_state
584+
.send_message(request_id, close_message)
585+
.await
586+
{
587+
tracing::error!(?err, "error sending close message");
588+
}
584589
}
585590

586591
// Send WebSocket close message to client

website/public/llms-full.txt

Lines changed: 1 addition & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

website/public/llms.txt

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)