X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Ftransports.ex;h=9f3fc535dc9d8dbb33e3e90a50967892b80294eb;hb=5f4fc0c373e89f200271ffc520fadb2784c5f980;hp=5600a4fdd465180020a4de1ac4174441a93ab654;hpb=efcf54dc0248a7d37b1ecbe8a91d2340a2edaf6a;p=akkoma diff --git a/lib/transports.ex b/lib/transports.ex index 5600a4fdd..9f3fc535d 100644 --- a/lib/transports.ex +++ b/lib/transports.ex @@ -1,8 +1,14 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Phoenix.Transports.WebSocket.Raw do - import Plug.Conn, only: [ - fetch_query_params: 1, - send_resp: 3 - ] + import Plug.Conn, + only: [ + fetch_query_params: 1, + send_resp: 3 + ] + alias Phoenix.Socket.Transport def default_config do @@ -16,21 +22,24 @@ defmodule Phoenix.Transports.WebSocket.Raw do def init(%Plug.Conn{method: "GET"} = conn, {endpoint, handler, transport}) do {_, opts} = handler.__transport__(transport) - conn = conn - |> fetch_query_params - |> Transport.transport_log(opts[:transport_log]) - |> Transport.force_ssl(handler, endpoint, opts) - |> Transport.check_origin(handler, endpoint, opts) + conn = + conn + |> fetch_query_params + |> Transport.transport_log(opts[:transport_log]) + |> Transport.force_ssl(handler, endpoint, opts) + |> Transport.check_origin(handler, endpoint, opts) case conn do %{halted: false} = conn -> case Transport.connect(endpoint, handler, transport, __MODULE__, nil, conn.params) do {:ok, socket} -> {:ok, conn, {__MODULE__, {socket, opts}}} + :error -> send_resp(conn, :forbidden, "") {:error, conn} end + _ -> {:error, conn} end @@ -52,16 +61,19 @@ defmodule Phoenix.Transports.WebSocket.Raw do |> case do {op, data} -> {:reply, {op, data}, state} + {op, data, state} -> {:reply, {op, data}, state} + %{} = state -> {:ok, state} + _ -> {:ok, state} end end - def ws_info({op, data} = tuple, state) do + def ws_info({_, _} = tuple, state) do {:reply, tuple, state} end