25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-28 16:34:13 +01:00

Prevent case_clause error when ejabber_odbc:sql_query returns {error, Reason}

SVN Revision: 1540
This commit is contained in:
Christophe Romain 2008-08-25 13:36:34 +00:00
parent 5c9069d677
commit 11f74201ab
3 changed files with 10 additions and 6 deletions

View File

@ -3,6 +3,8 @@
* src/mod_privacy_odbc.erl: Prevent case_clause error when * src/mod_privacy_odbc.erl: Prevent case_clause error when
ejabber_odbc:sql_query returns {error, Reason} ejabber_odbc:sql_query returns {error, Reason}
* src/mod_vcard_odbc.erl: Likewise * src/mod_vcard_odbc.erl: Likewise
* src/mod_last_odbc.erl: Likewise
* src/mod_offline_odbc.erl: Likewise
2008-08-25 Badlop <badlop@process-one.net> 2008-08-25 Badlop <badlop@process-one.net>

View File

@ -114,8 +114,6 @@ process_sm_iq(From, To, #iq{type = Type, sub_el = SubEl} = IQ) ->
get_last(IQ, SubEl, LUser, LServer) -> get_last(IQ, SubEl, LUser, LServer) ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
case catch odbc_queries:get_last(LServer, Username) of case catch odbc_queries:get_last(LServer, Username) of
{'EXIT', _Reason} ->
IQ#iq{type = error, sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]};
{selected, ["seconds","state"], []} -> {selected, ["seconds","state"], []} ->
IQ#iq{type = error, sub_el = [SubEl, ?ERR_SERVICE_UNAVAILABLE]}; IQ#iq{type = error, sub_el = [SubEl, ?ERR_SERVICE_UNAVAILABLE]};
{selected, ["seconds","state"], [{STimeStamp, Status}]} -> {selected, ["seconds","state"], [{STimeStamp, Status}]} ->
@ -132,7 +130,9 @@ get_last(IQ, SubEl, LUser, LServer) ->
_ -> _ ->
IQ#iq{type = error, IQ#iq{type = error,
sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]} sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]}
end end;
_ ->
IQ#iq{type = error, sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]}
end. end.
on_presence_update(User, Server, _Resource, Status) -> on_presence_update(User, Server, _Resource, Status) ->
@ -152,8 +152,6 @@ store_last_info(User, Server, TimeStamp, Status) ->
get_last_info(LUser, LServer) -> get_last_info(LUser, LServer) ->
Username = ejabberd_odbc:escape(LUser), Username = ejabberd_odbc:escape(LUser),
case catch odbc_queries:get_last(LServer, Username) of case catch odbc_queries:get_last(LServer, Username) of
{'EXIT', _Reason} ->
not_found;
{selected, ["seconds","state"], []} -> {selected, ["seconds","state"], []} ->
not_found; not_found;
{selected, ["seconds","state"], [{STimeStamp, Status}]} -> {selected, ["seconds","state"], [{STimeStamp, Status}]} ->
@ -162,7 +160,9 @@ get_last_info(LUser, LServer) ->
{ok, TimeStamp, Status}; {ok, TimeStamp, Status};
_ -> _ ->
not_found not_found
end end;
_ ->
not_found
end. end.
remove_user(User, Server) -> remove_user(User, Server) ->

View File

@ -116,6 +116,8 @@ loop(Host, MaxOfflineMsgs) ->
case catch odbc_queries:add_spool(Host, Query) of case catch odbc_queries:add_spool(Host, Query) of
{'EXIT', Reason} -> {'EXIT', Reason} ->
?ERROR_MSG("~p~n", [Reason]); ?ERROR_MSG("~p~n", [Reason]);
{error, Reason} ->
?ERROR_MSG("~p~n", [Reason]);
_ -> _ ->
ok ok
end end