projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge develop
[akkoma]
/
lib
/
pleroma
/
web
/
mastodon_api
/
websocket_handler.ex
diff --git
a/lib/pleroma/web/mastodon_api/websocket_handler.ex
b/lib/pleroma/web/mastodon_api/websocket_handler.ex
index 94e4595d84a932c8faf08a3382763c884fe465b6..cf923ded84d8e853fae65219aaa9e7aec7aaa0a2 100644
(file)
--- a/
lib/pleroma/web/mastodon_api/websocket_handler.ex
+++ b/
lib/pleroma/web/mastodon_api/websocket_handler.ex
@@
-37,12
+37,12
@@
defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do
else
{:error, :bad_topic} ->
Logger.debug("#{__MODULE__} bad topic #{inspect(req)}")
else
{:error, :bad_topic} ->
Logger.debug("#{__MODULE__} bad topic #{inspect(req)}")
-
{:ok, req}
= :cowboy_req.reply(404, req)
+
req
= :cowboy_req.reply(404, req)
{:ok, req, state}
{:error, :unauthorized} ->
Logger.debug("#{__MODULE__} authentication error: #{inspect(req)}")
{:ok, req, state}
{:error, :unauthorized} ->
Logger.debug("#{__MODULE__} authentication error: #{inspect(req)}")
-
{:ok, req}
= :cowboy_req.reply(401, req)
+
req
= :cowboy_req.reply(401, req)
{:ok, req, state}
end
end
{:ok, req, state}
end
end
@@
-64,7
+64,9
@@
defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do
{:ok, %{state | timer: timer()}}
end
{:ok, %{state | timer: timer()}}
end
- # We never receive messages.
+ # We only receive pings for now
+ def websocket_handle(:ping, state), do: {:ok, state}
+
def websocket_handle(frame, state) do
Logger.error("#{__MODULE__} received frame: #{inspect(frame)}")
{:ok, state}
def websocket_handle(frame, state) do
Logger.error("#{__MODULE__} received frame: #{inspect(frame)}")
{:ok, state}
@@
-98,6
+100,10
@@
defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do
{:reply, :ping, %{state | timer: nil, count: 0}, :hibernate}
end
{:reply, :ping, %{state | timer: nil, count: 0}, :hibernate}
end
+ # State can be `[]` only in case we terminate before switching to websocket,
+ # we already log errors for these cases in `init/1`, so just do nothing here
+ def terminate(_reason, _req, []), do: :ok
+
def terminate(reason, _req, state) do
Logger.debug(
"#{__MODULE__} terminating websocket connection for user #{
def terminate(reason, _req, state) do
Logger.debug(
"#{__MODULE__} terminating websocket connection for user #{