diff options
author | Robert McQueen <robert.mcqueen@collabora.co.uk> | 2006-11-23 17:14:21 +0000 |
---|---|---|
committer | Robert McQueen <robert.mcqueen@collabora.co.uk> | 2006-11-23 17:14:21 +0000 |
commit | 71870da26b1acb16da9df3db7f3b8f26bf16afd2 (patch) | |
tree | 166a9226f9e4fb3431b0d59eb9e9234bc20366ae | |
parent | 0922439e255c864e40703d8ac11cc4c37e0977a6 (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.c | 29 |
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); } |