diff options
-rw-r--r-- | src/cowboy_http_rest.erl | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/cowboy_http_rest.erl b/src/cowboy_http_rest.erl index a5333fe..63d15ff 100644 --- a/src/cowboy_http_rest.erl +++ b/src/cowboy_http_rest.erl @@ -668,11 +668,16 @@ create_path_location_port(tcp, 80) -> create_path_location_port(_, Port) -> <<":", (list_to_binary(integer_to_list(Port)))/binary>>. +%% process_post should return true when the POST body could be processed +%% and false when it hasn't, in which case a 500 error is sent. process_post(Req, State) -> case call(Req, State, process_post) of - {ok, Req2, HandlerState} -> + {true, Req2, HandlerState} -> + State2 = State#state{handler_state=HandlerState}, + next(Req2, State2, 201); + {false, Req2, HandlerState} -> State2 = State#state{handler_state=HandlerState}, - next(Req2, State2, 201) + respond(Req2, State2, 500) end. is_conflict(Req, State) -> |