diff options
author | Loïc Hoguin <[email protected]> | 2017-09-14 18:23:55 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2017-09-14 18:23:55 +0200 |
commit | 1cc877b6499683eb73d4feedbfbc6c4816dbe5cc (patch) | |
tree | 8ea24e6ff965883046fc62f929d6c50f77f87e70 | |
parent | 5027d1335d1ca39e614f56bea199aacac4d3d5a7 (diff) | |
download | cowboy-1cc877b6499683eb73d4feedbfbc6c4816dbe5cc.tar.gz cowboy-1cc877b6499683eb73d4feedbfbc6c4816dbe5cc.tar.bz2 cowboy-1cc877b6499683eb73d4feedbfbc6c4816dbe5cc.zip |
Fix propagating the stacktrace on errors for OTP 19
-rw-r--r-- | src/cowboy_stream_h.erl | 6 |
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. |