summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStef Walter <stefw@collabora.co.uk>2011-03-07 16:55:20 +0100
committerStef Walter <stefw@collabora.co.uk>2011-03-10 16:25:50 +0100
commit71303eba13770a8628b8af62c3b08e9c6fb79954 (patch)
tree1cc4b7275f2afcafddd208483d585f461d1622ca
parent441f5c02e8a930d07ed81d93ff2f04eb95ab51f7 (diff)
wocky_xmpp_error_extract() fills in @specialized_node for any app error.
Don't just limit parsing/setting of @specialized_node to error codes which have been specifically registered with a WockyXmppErrorSpecialization. Fill in @specialized when the error code has been specifically registered. Fill in @specialized_node when a registered error domain matches, whether or not the specific code has been registered. https://bugs.freedesktop.org/show_bug.cgi?id=35086
-rw-r--r--wocky/wocky-xmpp-error.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/wocky/wocky-xmpp-error.c b/wocky/wocky-xmpp-error.c
index 7c91ffb..3b1c402 100644
--- a/wocky/wocky-xmpp-error.c
+++ b/wocky/wocky-xmpp-error.c
@@ -396,6 +396,7 @@ wocky_xmpp_error_extract (WockyNode *error,
gint core_code = WOCKY_XMPP_ERROR_UNDEFINED_CONDITION;
GQuark specialized_domain = 0;
gint specialized_code;
+ gboolean have_specialized = FALSE;
WockyNode *specialized_node_tmp = NULL;
const gchar *message = NULL;
GSList *l;
@@ -446,12 +447,16 @@ wocky_xmpp_error_extract (WockyNode *error,
*/
WockyXmppErrorDomain *domain = xmpp_error_find_domain (child->ns);
- if (domain != NULL &&
- wocky_enum_from_nick (domain->enum_type, child->name,
- &specialized_code))
+ if (domain != NULL)
{
- specialized_domain = child->ns;
specialized_node_tmp = child;
+ specialized_domain = child->ns;
+
+ if (wocky_enum_from_nick (domain->enum_type, child->name,
+ &specialized_code))
+ {
+ have_specialized = TRUE;
+ }
}
}
}
@@ -468,7 +473,7 @@ wocky_xmpp_error_extract (WockyNode *error,
g_set_error_literal (core, WOCKY_XMPP_ERROR, core_code, message);
- if (specialized_domain != 0)
+ if (have_specialized)
g_set_error_literal (specialized, specialized_domain, specialized_code,
message);