мой сервер erlang по какой-то причине генерирует ошибку case_clause после каждого запроса. Вот мой код:
keychain_no_auth_handler.erl
-module(keychain_no_auth_handler).
-export(
[ init/3,
content_types_accepted/2,
terminate/3,
allowed_methods/2,
handle_request/2
]).
-export([is_registered/1]).
init(_Transport, _Req, []) -> {upgrade, protocol, cowboy_rest}.
terminate(_Reason, _Req, _State) -> ok.
allowed_methods(Req, State) -> {[<<"POST">>], Req, State}.
content_types_accepted(Req, State) -> {[{<<"application/json">>, handle_request}], Req, State}.
handle_request(Req, State) ->
{Action, Req2} = cowboy_req:binding(action, Req),
{Reply, Req3} = case Action of
<<"registered">> -> is_registered(Req2)
end,
{ok, Req4} = cowboy_req:reply(200, [{<<"content-type">>, <<"application/json">>}], Reply, Req3),
{ok, Req4, State}
.
is_registered(Req) ->
{Number, Req2} = cowboy_req:qs_val(<<"number">>, Req),
Reply = backend:is_registered(Number),
{Reply, Req2}
.
is_registered [функция]
is_registered(Number) ->
emysql:prepare(is_registered, <<"SELECT `device`.`id` FROM `device` WHERE `device`.`number`= ?">>),
ResultPacket = emysql:execute(auth_pool, is_registered, [Number]),
ResultType = is_record(ResultPacket, result_packet),
case ResultType of
true ->
Field = emysql_util:as_proplist(ResultPacket),
Id = proplists:get_value(<<"device.id">>, Field),
Registered = Id >= 0,
case Registered of
true ->
Reply = {[{response, registered}]},
jiffy:encode(Reply)
;
false ->
Reply = {[{response, available}]},
jiffy:encode(Reply)
end;
false ->
Reply = {[{response, error}]},
jiffy:encode(Reply)
end
.
Сервер отвечает соответствующим ответом, а затем генерирует ошибку case_clause после каждого запроса:
=ОТЧЕТ О ОБ ОШИБКЕ==== 5 февраля 2014 г.::10:32:39 === Ошибка в процессе ‹0.182.0> на узле 'keychain@dnldd' со значением выхода: {{case_clause,{ok,{http_req ,#Port‹0.2286>,ranch_tcp,keepalive,‹0.182.0>,‹‹4 байта>>, 'HTTP/1.1', {{127,0,0,1},49720},‹‹9 байт>> ,не определено,4004,‹‹11 байт>>,не определено,‹‹0 байт>>,[],[{действие,‹‹10 байт>>}],[{‹‹4 байта>>,‹‹14 байт >>},{‹‹10 байт>>,‹‹10 байт>>},{‹‹14 байт>>,‹‹1 байт>>},{‹‹13 байт>>,‹‹8 байт>> },{‹‹6 байт>>,‹‹51 байт>>},{‹‹6 байт>>,‹‹12 байт>>}, {‹‹12 байт>>,‹‹16 байт>>}, {‹‹10 байт>>,‹‹120 байт>>},{‹‹13 байт>>,‹‹36 байт>>}, {‹‹6 байт>>,‹‹3 байт>>},{‹ ‹3 байта>>, ‹‹1 байт>>},{‹‹15 байтов>>, ‹‹17 байтов>>}, {‹‹15 байтов>>, ‹‹14 байтов>>}],[{‹ ‹12 байтов>>,{‹‹11 байтов>>, ‹‹4 байта>>,[]}}, {‹‹17 байтов>>, не определено}, {‹‹13 байтов>>, не определено}, {‹ ‹19 байтов>>, не определено}, {‹‹8 байтов>>, не определено}, {‹‹6 байтов>>,[...
=ОТЧЕТ О ОБ ОШИБКЕ==== 5 февраля 2014 г.::10:32:39 === У слушателя Ranch keychain_http был запущен процесс соединения с cowboy_protocol:start_link/4 в ‹0.182.0> выход с причиной: {{case_clause,{ ok,{http_req,#Port‹0.2286>,ranch_tcp,keepalive,‹0.182.0>,‹‹"POST">>, 'HTTP/1.1', {{127,0,0,1},49720},‹ ‹"127.0.0.1">>,не определено,4004,‹‹"/зарегистрировано">>,не определено,‹‹>>,[],[{действие,‹‹"зарегистрировано">>}],[{‹‹ "хост">>,‹‹"127.0.0.1:4004">>},{‹‹"соединение">>,‹‹"поддерживать активность">>},{‹‹"длина содержимого">>, ‹‹"0">>},{‹‹"управление кешем">>,‹‹"без кеша">>},{‹‹"происхождение">>,‹‹"chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop ">>},{‹‹"номер">>,‹‹"233265256262">>},{‹‹"тип содержимого">>,‹‹"приложение/json">>},{‹‹"пользователь -agent">>,‹‹"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/32.0.1700.107 Safari/537.36">>},{‹‹"postman-token ">>,‹‹"61b7c8f0-b4f8-3bde-8b99-67c141242e5a">>},{‹‹"принять">>,‹‹"/">>},{‹‹" dnt">>,‹‹"1">>},{‹‹"accept-encoding">>,‹‹"gzip,deflate,sdch">>},{‹‹"accept-l язык">>,‹‹"en-US,en;q=0.8">>}],[{‹‹"тип содержимого">>,{‹‹"приложение">>,‹‹"json"> >,[]}},{‹‹"if-modified-since">>, undefined},{‹‹"if-none-match">>, undefined},{‹‹"if-unmodified-since"> >,undefined},{‹‹"if-match">>,undefined},{‹‹"accept">>,[{{‹‹"">>,‹‹""> >,[]},1000,[]}]},{‹‹"соединение">>,[‹‹"поддержка активности">>]}],undefined,[{charset,undefined},{media_type,{ ‹‹"text">>,‹‹"html">>,[]}}],waiting,undefined,‹‹>>,true,done,[],‹‹>>,undefined},undefined}}, [{cowboy_rest,process_content_type,3,[{file,"src/cowboy_rest.erl"},{line,780}]},{cowboy_protocol,execute,4,[{file,"src/cowboy_protocol.erl"},{ строка,529}]}]}
Что я здесь делаю неправильно? Спасибо.