|
@@ -52,13 +52,14 @@ execute(Req, Env) ->
|
|
Stacktrace = erlang:get_stacktrace(),
|
|
Stacktrace = erlang:get_stacktrace(),
|
|
cowboy_req:maybe_reply(Stacktrace, Req),
|
|
cowboy_req:maybe_reply(Stacktrace, Req),
|
|
terminate({crash, Class, Reason}, Req, HandlerOpts, Handler),
|
|
terminate({crash, Class, Reason}, Req, HandlerOpts, Handler),
|
|
- erlang:Class([
|
|
|
|
|
|
+ exit({cowboy_handler, [
|
|
|
|
+ {class, Class},
|
|
{reason, Reason},
|
|
{reason, Reason},
|
|
{mfa, {Handler, init, 2}},
|
|
{mfa, {Handler, init, 2}},
|
|
{stacktrace, Stacktrace},
|
|
{stacktrace, Stacktrace},
|
|
{req, cowboy_req:to_list(Req)},
|
|
{req, cowboy_req:to_list(Req)},
|
|
{opts, HandlerOpts}
|
|
{opts, HandlerOpts}
|
|
- ])
|
|
|
|
|
|
+ ]})
|
|
end.
|
|
end.
|
|
|
|
|
|
-spec terminate(any(), Req, any(), module()) -> ok when Req::cowboy_req:req().
|
|
-spec terminate(any(), Req, any(), module()) -> ok when Req::cowboy_req:req().
|
|
@@ -68,14 +69,15 @@ terminate(Reason, Req, State, Handler) ->
|
|
try
|
|
try
|
|
Handler:terminate(Reason, cowboy_req:lock(Req), State)
|
|
Handler:terminate(Reason, cowboy_req:lock(Req), State)
|
|
catch Class:Reason2 ->
|
|
catch Class:Reason2 ->
|
|
- erlang:Class([
|
|
|
|
|
|
+ exit({cowboy_handler, [
|
|
|
|
+ {class, Class},
|
|
{reason, Reason2},
|
|
{reason, Reason2},
|
|
{mfa, {Handler, terminate, 3}},
|
|
{mfa, {Handler, terminate, 3}},
|
|
{stacktrace, erlang:get_stacktrace()},
|
|
{stacktrace, erlang:get_stacktrace()},
|
|
{req, cowboy_req:to_list(Req)},
|
|
{req, cowboy_req:to_list(Req)},
|
|
{state, State},
|
|
{state, State},
|
|
{terminate_reason, Reason}
|
|
{terminate_reason, Reason}
|
|
- ])
|
|
|
|
|
|
+ ]})
|
|
end;
|
|
end;
|
|
false ->
|
|
false ->
|
|
ok
|
|
ok
|