aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ROADMAP.md5
-rw-r--r--doc/src/guide/middlewares.ezdoc1
-rw-r--r--doc/src/manual/cowboy_middleware.ezdoc7
-rw-r--r--src/cowboy_handler.erl1
-rw-r--r--src/cowboy_middleware.erl1
-rw-r--r--src/cowboy_protocol.erl8
-rw-r--r--src/cowboy_router.erl8
-rw-r--r--src/cowboy_spdy.erl8
8 files changed, 8 insertions, 31 deletions
diff --git a/ROADMAP.md b/ROADMAP.md
index ad684ec..1f3c51a 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -38,11 +38,6 @@ callbacks will be removed in favor of a unified `terminate/3`.
The `terminate/3` callback will become optional.
-### Middlewares
-
-The error tuple return value brings little value compared to
-the halt tuple. The error tuple will therefore be removed.
-
### Hooks
The interface of the `onresponse` hook will change. There has
diff --git a/doc/src/guide/middlewares.ezdoc b/doc/src/guide/middlewares.ezdoc
index e33abfb..0c142f9 100644
--- a/doc/src/guide/middlewares.ezdoc
+++ b/doc/src/guide/middlewares.ezdoc
@@ -24,7 +24,6 @@ Middlewares can return one of four different values:
* `{ok, Req, Env}` to continue the request processing
* `{suspend, Module, Function, Args}` to hibernate
* `{halt, Req}` to stop processing and move on to the next request
-* `{error, StatusCode, Req}` to reply an error and close the socket
Of note is that when hibernating, processing will resume on the given
MFA, discarding all previous stacktrace. Make sure you keep the `Req`
diff --git a/doc/src/manual/cowboy_middleware.ezdoc b/doc/src/manual/cowboy_middleware.ezdoc
index 065139c..2275d35 100644
--- a/doc/src/manual/cowboy_middleware.ezdoc
+++ b/doc/src/manual/cowboy_middleware.ezdoc
@@ -22,7 +22,6 @@ optionally with its contents modified.
-> {ok, Req, Env}
| {suspend, Module, Function, Args}
| {halt, Req}
- | {error, StatusCode, Req}
Types:
@@ -31,7 +30,6 @@ Types:
* Module = module()
* Function = atom()
* Args = [any()]
-* StatusCode = cowboy:http_status()
Execute the middleware.
@@ -47,8 +45,3 @@ The `halt` return value stops Cowboy from doing any further
processing of the request, even if there are middlewares
that haven't been executed yet. The connection may be left
open to receive more requests from the client.
-
-The `error` return value sends an error response identified
-by the `StatusCode` and then proceeds to terminate the
-connection. Middlewares that haven't been executed yet
-will not be called.
diff --git a/src/cowboy_handler.erl b/src/cowboy_handler.erl
index 5eb16b4..1e8261f 100644
--- a/src/cowboy_handler.erl
+++ b/src/cowboy_handler.erl
@@ -99,7 +99,6 @@ handler_init(Req, State, Handler, HandlerOpts) ->
-> {ok, Req, Env}
| {suspend, module(), atom(), any()}
| {halt, Req}
- | {error, cowboy:http_status(), Req}
when Req::cowboy_req:req(), Env::cowboy_middleware:env().
upgrade_protocol(Req, #state{env=Env},
Handler, HandlerOpts, Module) ->
diff --git a/src/cowboy_middleware.erl b/src/cowboy_middleware.erl
index fa0f5bc..7ff947e 100644
--- a/src/cowboy_middleware.erl
+++ b/src/cowboy_middleware.erl
@@ -21,5 +21,4 @@
-> {ok, Req, Env}
| {suspend, module(), atom(), [any()]}
| {halt, Req}
- | {error, cowboy:http_status(), Req}
when Req::cowboy_req:req(), Env::env().
diff --git a/src/cowboy_protocol.erl b/src/cowboy_protocol.erl
index a5873ea..82f1f38 100644
--- a/src/cowboy_protocol.erl
+++ b/src/cowboy_protocol.erl
@@ -428,9 +428,7 @@ execute(Req, State, Env, [Middleware|Tail]) ->
erlang:hibernate(?MODULE, resume,
[State, Env, Tail, Module, Function, Args]);
{halt, Req2} ->
- next_request(Req2, State, ok);
- {error, Code, Req2} ->
- error_terminate(Code, Req2, State)
+ next_request(Req2, State, ok)
end.
-spec resume(#state{}, cowboy_middleware:env(), [module()],
@@ -443,9 +441,7 @@ resume(State, Env, Tail, Module, Function, Args) ->
erlang:hibernate(?MODULE, resume,
[State, Env, Tail, Module2, Function2, Args2]);
{halt, Req2} ->
- next_request(Req2, State, ok);
- {error, Code, Req2} ->
- error_terminate(Code, Req2, State)
+ next_request(Req2, State, ok)
end.
-spec next_request(cowboy_req:req(), #state{}, any()) -> ok.
diff --git a/src/cowboy_router.erl b/src/cowboy_router.erl
index 3b71205..2e54151 100644
--- a/src/cowboy_router.erl
+++ b/src/cowboy_router.erl
@@ -157,7 +157,7 @@ compile_brackets_split(<< C, Rest/binary >>, Acc, N) ->
compile_brackets_split(Rest, << Acc/binary, C >>, N).
-spec execute(Req, Env)
- -> {ok, Req, Env} | {error, 400 | 404, Req}
+ -> {ok, Req, Env} | {halt, Req}
when Req::cowboy_req:req(), Env::cowboy_middleware:env().
execute(Req, Env) ->
{_, Dispatch} = lists:keyfind(dispatch, 1, Env),
@@ -168,11 +168,11 @@ execute(Req, Env) ->
Req2 = cowboy_req:set_bindings(HostInfo, PathInfo, Bindings, Req),
{ok, Req2, [{handler, Handler}, {handler_opts, HandlerOpts}|Env]};
{error, notfound, host} ->
- {error, 400, Req};
+ {halt, cowboy_req:reply(400, Req)};
{error, badrequest, path} ->
- {error, 400, Req};
+ {halt, cowboy_req:reply(400, Req)};
{error, notfound, path} ->
- {error, 404, Req}
+ {halt, cowboy_req:reply(404, Req)}
end.
%% Internal.
diff --git a/src/cowboy_spdy.erl b/src/cowboy_spdy.erl
index 5b89c48..3057cca 100644
--- a/src/cowboy_spdy.erl
+++ b/src/cowboy_spdy.erl
@@ -407,9 +407,7 @@ execute(Req, Env, [Middleware|Tail]) ->
erlang:hibernate(?MODULE, resume,
[Env, Tail, Module, Function, Args]);
{halt, Req2} ->
- cowboy_req:ensure_response(Req2, 204);
- {error, Status, Req2} ->
- cowboy_req:reply(Status, Req2)
+ cowboy_req:ensure_response(Req2, 204)
end.
-spec resume(cowboy_middleware:env(), [module()],
@@ -422,9 +420,7 @@ resume(Env, Tail, Module, Function, Args) ->
erlang:hibernate(?MODULE, resume,
[Env, Tail, Module2, Function2, Args2]);
{halt, Req2} ->
- cowboy_req:ensure_response(Req2, 204);
- {error, Status, Req2} ->
- cowboy_req:reply(Status, Req2)
+ cowboy_req:ensure_response(Req2, 204)
end.
%% Reply functions used by cowboy_req.