From 7a9883b749cb810698d8572eb5bf90a8259471cf Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 27 Jul 2010 19:06:42 -0700 Subject: [PATCH] Fix result status handling with resolver library callback --- gresolv/gresolv.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gresolv/gresolv.c b/gresolv/gresolv.c index ba19672..66b2641 100644 --- a/gresolv/gresolv.c +++ b/gresolv/gresolv.c @@ -193,6 +193,7 @@ static void parse_response(struct resolv_nameserver *nameserver, const unsigned char *buf, int len) { GResolv *resolv = nameserver->resolv; + GResolvResultStatus status; GList *list; char **results; ns_msg msg; @@ -209,6 +210,11 @@ static void parse_response(struct resolv_nameserver *nameserver, debug(resolv, "msg id: 0x%04x rcode: %d count: %d", ns_msg_id(msg), rcode, count); + if (rcode == 0) + status = G_RESOLV_STATUS_SUCCESS; + else + status = G_RESOLV_STATUS_ERROR; + results = g_try_new(char *, count + 1); if (results == NULL) return; @@ -241,8 +247,8 @@ static void parse_response(struct resolv_nameserver *nameserver, struct resolv_query *query = list->data; if (query->result_func != NULL) - query->result_func(G_RESOLV_STATUS_SUCCESS, - results, query->result_data); + query->result_func(status, results, + query->result_data); destroy_query(query); g_queue_remove(resolv->query_queue, query); -- 2.7.4