event: Event.t() | nil,
invocation: Invocation.t() | nil,
goodbye: binary() | nil,
+ error: binary(),
realm: Realm.t(),
name: module() | nil,
roles: [module()],
%SL{data: %Sess{message: msg, requests: requests, roles: roles}} = data
) do
Logger.debug("Handling Message #{inspect(msg)}")
- {actions, id, response} = handle_message(msg, roles)
- {%SL{data: sess} = data, response} = maybe_update_response(data, response)
- {requests, actions} = resp = handle_response(id, actions, requests, response)
- Logger.debug("Response: #{inspect(resp)}")
- {:ok, %SL{data | data: %Sess{sess | requests: requests}}, actions}
+
+ case handle_message(msg, roles) do
+ {actions, id, response} ->
+ {%SL{data: sess} = data, response} = maybe_update_response(data, response)
+ {requests, actions} = resp = handle_response(id, actions, requests, response)
+ Logger.debug("Response: #{inspect(resp)}")
+ {:ok, %SL{data | data: %Sess{sess | requests: requests}}, actions}
+
+ nil ->
+ Logger.error("Not supported by roles #{inspect(roles)} - #{inspect(msg)}")
+
+ {:ok, %SL{data | data: %Sess{data.data | error: "wamp.error.not_supported_by_roles"}},
+ [{:next_event, :internal, :abort}]}
+ end
end
@impl true
def handle_resource(@handle_abort, _, @abort, data) do
- Logger.warn("Aborting: #{data.data.error}")
+ Logger.error("Aborting: #{data.data.error}")
{:ok, data, []}
end