aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-09-14 18:23:55 +0200
committerLoïc Hoguin <[email protected]>2017-09-14 18:23:55 +0200
commit1cc877b6499683eb73d4feedbfbc6c4816dbe5cc (patch)
tree8ea24e6ff965883046fc62f929d6c50f77f87e70 /src
parent5027d1335d1ca39e614f56bea199aacac4d3d5a7 (diff)
downloadcowboy-1cc877b6499683eb73d4feedbfbc6c4816dbe5cc.tar.gz
cowboy-1cc877b6499683eb73d4feedbfbc6c4816dbe5cc.tar.bz2
cowboy-1cc877b6499683eb73d4feedbfbc6c4816dbe5cc.zip
Fix propagating the stacktrace on errors for OTP 19
Diffstat (limited to 'src')
-rw-r--r--src/cowboy_stream_h.erl6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cowboy_stream_h.erl b/src/cowboy_stream_h.erl
index cf1d38a..287fd95 100644
--- a/src/cowboy_stream_h.erl
+++ b/src/cowboy_stream_h.erl
@@ -161,12 +161,18 @@ report_crash(Ref, StreamID, Pid, Reason, Stacktrace) ->
%% @todo Better spec.
-spec request_process(_, _, _) -> _.
request_process(Req, Env, Middlewares) ->
+ OTP = erlang:system_info(otp_release),
try
execute(Req, Env, Middlewares)
catch
exit:Reason ->
Stacktrace = erlang:get_stacktrace(),
erlang:raise(exit, {Reason, Stacktrace}, Stacktrace);
+ %% OTP 19 does not propagate any exception stacktraces,
+ %% we therefore add it for every class of exception.
+ _:Reason when OTP =:= "19" ->
+ Stacktrace = erlang:get_stacktrace(),
+ erlang:raise(exit, {Reason, Stacktrace}, Stacktrace);
Class:Reason ->
erlang:raise(Class, Reason, erlang:get_stacktrace())
end.