diff --git a/src/nodetree_tree_sql.erl b/src/nodetree_tree_sql.erl index f7a31b8ae..09959099e 100644 --- a/src/nodetree_tree_sql.erl +++ b/src/nodetree_tree_sql.erl @@ -82,17 +82,22 @@ set_node(Record) when is_record(Record, pubsub_node) -> " parent=%(Parent)s, plugin=%(Type)s " "where nodeid=%(OldNidx)d")), OldNidx; - _ -> + {error, not_found} -> catch ejabberd_sql:sql_query_t( ?SQL("insert into pubsub_node(host, node, parent, plugin) " "values(%(H)s, %(Node)s, %(Parent)s, %(Type)s)")), case nodeidx(Host, Node) of {result, NewNidx} -> NewNidx; - _ -> none % this should not happen - end + {error, not_found} -> none; % this should not happen + {error, _} -> db_error + end; + {error, _} -> + db_error end, case Nidx of + db_error -> + {error, xmpp:err_internal_server_error(?T("Database failure"), ejabberd_option:language())}; none -> Txt = ?T("Node index not found"), {error, xmpp:err_internal_server_error(Txt, ejabberd_option:language())};