Index: uspace/srv/net/dnsrsrv/dns_type.h
===================================================================
--- uspace/srv/net/dnsrsrv/dns_type.h	(revision 9f029aad6714344fd5426157c5a25c4c68bf1b98)
+++ uspace/srv/net/dnsrsrv/dns_type.h	(revision d242cb6a311e633e1cf8c95117046ea51295d4c7)
@@ -113,5 +113,5 @@
 typedef struct {
 	/** Host name */
-	char *name;
+	char *cname;
 	/** Host address */
 	inet_addr_t addr;
Index: uspace/srv/net/dnsrsrv/dnsrsrv.c
===================================================================
--- uspace/srv/net/dnsrsrv/dnsrsrv.c	(revision 9f029aad6714344fd5426157c5a25c4c68bf1b98)
+++ uspace/srv/net/dnsrsrv/dnsrsrv.c	(revision d242cb6a311e633e1cf8c95117046ea51295d4c7)
@@ -89,4 +89,8 @@
 	char *name;
 	dns_host_info_t *hinfo;
+	ipc_callid_t rcallid;
+	size_t size;
+	sysarg_t retval;
+	size_t act_size;
 	int rc;
 
@@ -100,11 +104,26 @@
 	}
 
+	if (!async_data_read_receive(&rcallid, &size)) {
+		async_answer_0(rcallid, EREFUSED);
+		async_answer_0(callid, EREFUSED);
+		return;
+	}
+
 	rc = dns_name2host(name, &hinfo);
 	if (rc != EOK) {
+		async_answer_0(rcallid, rc);
 		async_answer_0(callid, rc);
 		return;
 	}
 
-	async_answer_1(callid, EOK, hinfo->addr.ipv4);
+	act_size = str_size(hinfo->cname);
+	if (act_size > size) {
+		async_answer_0(rcallid, EOVERFLOW);
+		async_answer_0(callid, EOVERFLOW);
+		return;
+	}
+
+	retval = async_data_read_finalize(rcallid, hinfo->cname, act_size);
+	async_answer_1(callid, retval, hinfo->addr.ipv4);
 
 	dns_hostinfo_destroy(hinfo);
Index: uspace/srv/net/dnsrsrv/query.c
===================================================================
--- uspace/srv/net/dnsrsrv/query.c	(revision 9f029aad6714344fd5426157c5a25c4c68bf1b98)
+++ uspace/srv/net/dnsrsrv/query.c	(revision d242cb6a311e633e1cf8c95117046ea51295d4c7)
@@ -127,8 +127,8 @@
 			}
 
-			info->name = str_dup(rr->name);
+			info->cname = str_dup(rr->name);
 			info->addr.ipv4 = dns_uint32_t_decode(rr->rdata, rr->rdata_size);
 			log_msg(LOG_DEFAULT, LVL_DEBUG, "info->name = '%s' "
-			    "info->addr = %x", info->name, info->addr.ipv4);
+			    "info->addr = %x", info->cname, info->addr.ipv4);
 
 			dns_message_destroy(msg);
@@ -148,5 +148,5 @@
 void dns_hostinfo_destroy(dns_host_info_t *info)
 {
-	free(info->name);
+	free(info->cname);
 	free(info);
 }
