mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
fix(portal): Do not crash WebSocket when client version is invalid (#5525)
This commit is contained in:
@@ -21,16 +21,16 @@ defmodule API.Client.Channel do
|
||||
opentelemetry_ctx = OpenTelemetry.Ctx.get_current()
|
||||
opentelemetry_span_ctx = OpenTelemetry.Tracer.current_span_ctx()
|
||||
|
||||
gateway_version_requirement = select_gateway_version_requirement(socket.assigns.client)
|
||||
with {:ok, socket} <- schedule_expiration(socket),
|
||||
{:ok, gateway_version_requirement} <-
|
||||
select_gateway_version_requirement(socket.assigns.client) do
|
||||
socket =
|
||||
assign(socket,
|
||||
opentelemetry_ctx: opentelemetry_ctx,
|
||||
opentelemetry_span_ctx: opentelemetry_span_ctx,
|
||||
gateway_version_requirement: gateway_version_requirement
|
||||
)
|
||||
|
||||
socket =
|
||||
assign(socket,
|
||||
opentelemetry_ctx: opentelemetry_ctx,
|
||||
opentelemetry_span_ctx: opentelemetry_span_ctx,
|
||||
gateway_version_requirement: gateway_version_requirement
|
||||
)
|
||||
|
||||
with {:ok, socket} <- schedule_expiration(socket) do
|
||||
send(self(), {:after_join, {opentelemetry_ctx, opentelemetry_span_ctx}})
|
||||
{:ok, socket}
|
||||
end
|
||||
@@ -640,10 +640,10 @@ defmodule API.Client.Channel do
|
||||
end
|
||||
)
|
||||
|
||||
gateway_version_requirement || "> 0.0.0"
|
||||
{:ok, gateway_version_requirement || "> 0.0.0"}
|
||||
|
||||
:error ->
|
||||
"> 0.0.0"
|
||||
{:error, %{reason: :invalid_version}}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -192,17 +192,15 @@ defmodule API.Client.ChannelTest do
|
||||
|
||||
client = %{client | last_seen_version: "development"}
|
||||
|
||||
{:ok, _reply, socket} =
|
||||
API.Client.Socket
|
||||
|> socket("client:#{client.id}", %{
|
||||
opentelemetry_ctx: OpenTelemetry.Ctx.new(),
|
||||
opentelemetry_span_ctx: OpenTelemetry.Tracer.start_span("test"),
|
||||
client: client,
|
||||
subject: subject
|
||||
})
|
||||
|> subscribe_and_join(API.Client.Channel, "client")
|
||||
|
||||
assert socket.assigns.gateway_version_requirement == "> 0.0.0"
|
||||
assert API.Client.Socket
|
||||
|> socket("client:#{client.id}", %{
|
||||
opentelemetry_ctx: OpenTelemetry.Ctx.new(),
|
||||
opentelemetry_span_ctx: OpenTelemetry.Tracer.start_span("test"),
|
||||
client: client,
|
||||
subject: subject
|
||||
})
|
||||
|> subscribe_and_join(API.Client.Channel, "client") ==
|
||||
{:error, %{reason: :invalid_version}}
|
||||
end
|
||||
|
||||
test "sends list of resources after join", %{
|
||||
|
||||
Reference in New Issue
Block a user