X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Ftransports.ex;h=aab7fad99cc14cc2061571bf3a437226d74b581a;hb=c466e739b6cfe21e68fb10805f7747ea74d76f74;hp=a820aa778c60a4c8a3d30d4eba8d900ff184a11c;hpb=59770c3f5c9a038dbde6b2e1cd1551a7b8f1672b;p=akkoma diff --git a/lib/transports.ex b/lib/transports.ex index a820aa778..aab7fad99 100644 --- a/lib/transports.ex +++ b/lib/transports.ex @@ -1,8 +1,14 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 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({_,_} = tuple, state) do + def ws_info({_, _} = tuple, state) do {:reply, tuple, state} end