| CODENOTIFIER | HelpYou are not signed inSign in |
Project: ejabberd
Revision: 1538
Author: cromain
Date: 25 Aug 2008 09:12:23
Changes:Prevent case_clause error when ejabber_odbc:sql_query returns {error, Reason}
Files:| ... | ...@@ -162,7 +162,7 @@ | |
| 162 | 162 | end; |
| 163 | 163 | {selected, ["vcard"], []} -> |
| 164 | 164 | IQ#iq{type = result, sub_el = []}; |
| 165 | {'EXIT', _Reason} -> | |
| 165 | _ -> | |
| 166 | 166 | IQ#iq{type = error, |
| 167 | 167 | sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]} |
| 168 | 168 | end |
| ... | ...@@ -1,3 +1,9 @@ | |
| 1 | 2008-08-25 Christophe Romain <christophe.romain@process-one.net> | |
| 2 | ||
| 3 | * src/mod_privacy_odbc.erl: Prevent case_clause error when | |
| 4 | ejabber_odbc:sql_query returns {error, Reason} | |
| 5 | * src/mod_vcard_odbc.erl: Likewise | |
| 6 | ||
| 1 | 7 | 2008-08-25 Badlop <badlop@process-one.net> |
| 2 | 8 | |
| 3 | 9 | * src/ejabberd_check.erl: Detect correctly MSSQL and ODBC |
| ... | ...@@ -96,16 +96,14 @@ | |
| 96 | 96 | |
| 97 | 97 | process_lists_get(LUser, LServer, Active) -> |
| 98 | 98 | Default = case catch sql_get_default_privacy_list(LUser, LServer) of |
| 99 | {'EXIT', _Reason} -> | |
| 100 | none; | |
| 101 | 99 | {selected, ["name"], []} -> |
| 102 | 100 | none; |
| 103 | 101 | {selected, ["name"], [{DefName}]} -> |
| 104 | DefName | |
| 102 | DefName; | |
| 103 | _ -> | |
| 104 | none | |
| 105 | 105 | end, |
| 106 | 106 | case catch sql_get_privacy_list_names(LUser, LServer) of |
| 107 | {'EXIT', _Reason2} -> | |
| 108 | {error, ?ERR_INTERNAL_SERVER_ERROR}; | |
| 109 | 107 | {selected, ["name"], []} -> |
| 110 | 108 | {result, [{xmlelement, "query", [{"xmlns", ?NS_PRIVACY}], []}]}; |
| 111 | 109 | {selected, ["name"], Names} -> |
| ... | ...@@ -132,19 +130,17 @@ | |
| 132 | 130 | end, |
| 133 | 131 | {result, |
| 134 | 132 | [{xmlelement, "query", [{"xmlns", ?NS_PRIVACY}], |
| 135 | ADItems}]} | |
| 133 | ADItems}]}; | |
| 134 | _ -> | |
| 135 | {error, ?ERR_INTERNAL_SERVER_ERROR} | |
| 136 | 136 | end. |
| 137 | 137 | |
| 138 | 138 | process_list_get(LUser, LServer, {value, Name}) -> |
| 139 | 139 | case catch sql_get_privacy_list_id(LUser, LServer, Name) of |
| 140 | {'EXIT', _Reason} -> | |
| 141 | {error, ?ERR_INTERNAL_SERVER_ERROR}; | |
| 142 | 140 | {selected, ["id"], []} -> |
| 143 | 141 | {error, ?ERR_ITEM_NOT_FOUND}; |
| 144 | 142 | {selected, ["id"], [{ID}]} -> |
| 145 | 143 | case catch sql_get_privacy_list_data_by_id(ID, LServer) of |
| 146 | {'EXIT', _Reason} -> | |
| 147 | {error, ?ERR_INTERNAL_SERVER_ERROR}; | |
| 148 | 144 | {selected, ["t", "value", "action", "ord", "match_all", |
| 149 | 145 | "match_iq", "match_message", |
| 150 | 146 | "match_presence_in", "match_presence_out"], |
| ... | ...@@ -154,8 +150,12 @@ | |
| 154 | 150 | {result, |
| 155 | 151 | [{xmlelement, "query", [{"xmlns", ?NS_PRIVACY}], |
| 156 | 152 | [{xmlelement, "list", |
| 157 | [{"name", Name}], LItems}]}]} | |
| 158 | end | |
| 153 | [{"name", Name}], LItems}]}]}; | |
| 154 | _ -> | |
| 155 | {error, ?ERR_INTERNAL_SERVER_ERROR} | |
| 156 | end; | |
| 157 | _ -> | |
| 158 | {error, ?ERR_INTERNAL_SERVER_ERROR} | |
| 159 | 159 | end; |
| 160 | 160 | |
| 161 | 161 | process_list_get(_LUser, _LServer, false) -> |
| ... | ...@@ -294,6 +294,8 @@ | |
| 294 | 294 | case catch sql_unset_default_privacy_list(LUser, LServer) of |
| 295 | 295 | {'EXIT', _Reason} -> |
| 296 | 296 | {error, ?ERR_INTERNAL_SERVER_ERROR}; |
| 297 | {error, _Reason} -> | |
| 298 | {error, ?ERR_INTERNAL_SERVER_ERROR}; | |
| 297 | 299 | _ -> |
| 298 | 300 | {result, []} |
| 299 | 301 | end. |
| ... | ...@@ -301,21 +303,21 @@ | |
| 301 | 303 | |
| 302 | 304 | process_active_set(LUser, LServer, {value, Name}) -> |
| 303 | 305 | case catch sql_get_privacy_list_id(LUser, LServer, Name) of |
| 304 | {'EXIT', _Reason} -> | |
| 305 | {error, ?ERR_INTERNAL_SERVER_ERROR}; | |
| 306 | 306 | {selected, ["id"], []} -> |
| 307 | 307 | {error, ?ERR_ITEM_NOT_FOUND}; |
| 308 | 308 | {selected, ["id"], [{ID}]} -> |
| 309 | 309 | case catch sql_get_privacy_list_data_by_id(ID, LServer) of |
| 310 | {'EXIT', _Reason} -> | |
| 311 | {error, ?ERR_INTERNAL_SERVER_ERROR}; | |
| 312 | 310 | {selected, ["t", "value", "action", "ord", "match_all", |
| 313 | 311 | "match_iq", "match_message", |
| 314 | 312 | "match_presence_in", "match_presence_out"], |
| 315 | 313 | RItems} -> |
| 316 | 314 | Items = lists:map(fun raw_to_item/1, RItems), |
| 317 | {result, [], #userlist{name = Name, list = Items}} | |
| 318 | end | |
| 315 | {result, [], #userlist{name = Name, list = Items}}; | |
| 316 | _ -> | |
| 317 | {error, ?ERR_INTERNAL_SERVER_ERROR} | |
| 318 | end; | |
| 319 | _ -> | |
| 320 | {error, ?ERR_INTERNAL_SERVER_ERROR} | |
| 319 | 321 | end; |
| 320 | 322 | |
| 321 | 323 | process_active_set(_LUser, _LServer, false) -> |
| ... | ...@@ -517,21 +519,21 @@ | |
| 517 | 519 | LServer = jlib:nameprep(Server), |
| 518 | 520 | |
| 519 | 521 | case catch sql_get_default_privacy_list(LUser, LServer) of |
| 520 | {'EXIT', _Reason} -> | |
| 521 | #userlist{}; | |
| 522 | 522 | {selected, ["name"], []} -> |
| 523 | 523 | #userlist{}; |
| 524 | 524 | {selected, ["name"], [{Default}]} -> |
| 525 | 525 | case catch sql_get_privacy_list_data(LUser, LServer, Default) of |
| 526 | {'EXIT', _Reason} -> | |
| 527 | #userlist{}; | |
| 528 | 526 | {selected, ["t", "value", "action", "ord", "match_all", |
| 529 | 527 | "match_iq", "match_message", |
| 530 | 528 | "match_presence_in", "match_presence_out"], |
| 531 | 529 | RItems} -> |
| 532 | 530 | Items = lists:map(fun raw_to_item/1, RItems), |
| 533 | #userlist{name = Default, list = Items} | |
| 534 | end | |
| 531 | #userlist{name = Default, list = Items}; | |
| 532 | _ -> | |
| 533 | #userlist{} | |
| 534 | end; | |
| 535 | _ -> | |
| 536 | #userlist{} | |
| 535 | 537 | end. |
| 536 | 538 | |
| 537 | 539 |