summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert McQueen <robert.mcqueen@collabora.co.uk>2006-11-23 17:14:21 +0000
committerRobert McQueen <robert.mcqueen@collabora.co.uk>2006-11-23 17:14:21 +0000
commit71870da26b1acb16da9df3db7f3b8f26bf16afd2 (patch)
tree166a9226f9e4fb3431b0d59eb9e9234bc20366ae
parent0922439e255c864e40703d8ac11cc4c37e0977a6 (diff)
VCardManager: only look up the vcard node if there's no error, so that only one of error or vcard_node is set (testing either will have the correct semantics)
-rw-r--r--src/vcard-manager.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/vcard-manager.c b/src/vcard-manager.c
index 5ac152f96..5aee563a5 100644
--- a/src/vcard-manager.c
+++ b/src/vcard-manager.c
@@ -451,7 +451,7 @@ replace_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
GabbleVCardManagerRequest *request = (GabbleVCardManagerRequest*) user_data;
GabbleVCardManager *manager = GABBLE_VCARD_MANAGER (object);
GabbleVCardManagerPrivate *priv = GABBLE_VCARD_MANAGER_GET_PRIVATE (manager);
- LmMessageNode *vcard_node;
+ LmMessageNode *vcard_node = NULL;
GError *err = NULL;
g_assert (request);
@@ -466,8 +466,6 @@ replace_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
}
- vcard_node = lm_message_node_get_child (sent_msg->node, "vCard");
-
if (lm_message_get_sub_type (reply_msg) == LM_MESSAGE_SUB_TYPE_ERROR)
{
LmMessageNode *error_node;
@@ -486,6 +484,10 @@ replace_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
"an unknown error occurred");
}
}
+ else
+ {
+ vcard_node = lm_message_node_get_child (sent_msg->node, "vCard");
+ }
DEBUG ("Request %p %s, notifying callback %p", request,
err ? "failed" : "succeeded", request->callback);
@@ -512,7 +514,7 @@ request_reply_cb (GabbleConnection *conn,
GabbleVCardManagerRequest *request = (GabbleVCardManagerRequest*) user_data;
GabbleVCardManager *manager = GABBLE_VCARD_MANAGER (object);
GabbleVCardManagerPrivate *priv = GABBLE_VCARD_MANAGER_GET_PRIVATE (manager);
- LmMessageNode *vcard_node;
+ LmMessageNode *vcard_node = NULL;
GError *err = NULL;
g_assert (request);
@@ -527,7 +529,6 @@ request_reply_cb (GabbleConnection *conn,
return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
}
- vcard_node = lm_message_node_get_child (reply_msg->node, "vCard");
if (lm_message_get_sub_type (reply_msg) == LM_MESSAGE_SUB_TYPE_ERROR)
{
@@ -547,16 +548,20 @@ request_reply_cb (GabbleConnection *conn,
"an unknown error occurred");
}
}
- else if (NULL == vcard_node)
+ else
{
- DEBUG ("lookup response contained no <vCard> node, making an empty one");
+ vcard_node = lm_message_node_get_child (reply_msg->node, "vCard");
- vcard_node = lm_message_node_add_child (reply_msg->node, "vCard", NULL);
- lm_message_node_set_attribute (vcard_node, "xmlns", NS_VCARD_TEMP);
- }
+ if (NULL == vcard_node)
+ {
+ DEBUG ("successful lookup response contained no <vCard> node, "
+ "creating an empty one");
+
+ vcard_node = lm_message_node_add_child (reply_msg->node, "vCard",
+ NULL);
+ lm_message_node_set_attribute (vcard_node, "xmlns", NS_VCARD_TEMP);
+ }
- if (vcard_node != NULL)
- {
observe_vcard (conn, manager, request->handle, vcard_node);
}