diff options
author | Stef Walter <stefw@collabora.co.uk> | 2011-03-07 16:55:20 +0100 |
---|---|---|
committer | Stef Walter <stefw@collabora.co.uk> | 2011-03-10 16:25:50 +0100 |
commit | 71303eba13770a8628b8af62c3b08e9c6fb79954 (patch) | |
tree | 1cc4b7275f2afcafddd208483d585f461d1622ca | |
parent | 441f5c02e8a930d07ed81d93ff2f04eb95ab51f7 (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.c | 15 |
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); |