diff --git a/src/vnet/dns/resolver_process.c b/src/vnet/dns/resolver_process.c
index 5603371..f473422 100644
--- a/src/vnet/dns/resolver_process.c
+++ b/src/vnet/dns/resolver_process.c
@@ -44,6 +44,10 @@
 vnet_dns_response_to_reply (u8 * response,
 			    vl_api_dns_resolve_name_reply_t * rmp,
 			    u32 * min_ttlp);
+extern int
+vnet_dns_response_to_name (u8 * response,
+			   vl_api_dns_resolve_ip_reply_t * rmp,
+			   u32 * min_ttlp);
 
 static void
 resolve_event (dns_main_t * dm, f64 now, u8 * reply)
@@ -95,29 +99,47 @@
     ep->flags |= DNS_CACHE_ENTRY_FLAG_VALID;
 
   /* Most likely, send 1 message */
-  for (i = 0; i < vec_len (ep->api_clients_to_notify); i++)
+  for (i = 0; i < vec_len (ep->pending_api_requests); i++)
     {
       vl_api_registration_t *regp;
-      vl_api_dns_resolve_name_reply_t *rmp;
 
       regp = vl_api_client_index_to_registration
-	(ep->api_clients_to_notify[i]);
+	(ep->pending_api_requests[i].client_index);
 
       if (regp == 0)
 	continue;
 
-      rmp = vl_msg_api_alloc (sizeof (*rmp) + vec_len (ep->dns_response));
-      rmp->_vl_msg_id = clib_host_to_net_u16 (VL_API_DNS_RESOLVE_NAME_REPLY);
-      rmp->context = ep->api_client_contexts[i];
-      min_ttl = ~0;
-      rv = vnet_dns_response_to_reply (ep->dns_response, rmp, &min_ttl);
-      if (min_ttl != ~0)
-	ep->expiration_time = now + min_ttl;
-      rmp->retval = clib_host_to_net_u32 (rv);
-      vl_msg_api_send (regp, (u8 *) rmp);
+      if (ep->pending_api_requests[i].request_type
+	  == DNS_API_PENDING_NAME_TO_IP)
+	{
+	  vl_api_dns_resolve_name_reply_t *rmp;
+	  rmp = vl_msg_api_alloc (sizeof (*rmp));
+	  rmp->_vl_msg_id =
+	    clib_host_to_net_u16 (VL_API_DNS_RESOLVE_NAME_REPLY);
+	  rmp->context = ep->pending_api_requests[i].client_context;
+	  min_ttl = ~0;
+	  rv = vnet_dns_response_to_reply (ep->dns_response, rmp, &min_ttl);
+	  if (min_ttl != ~0)
+	    ep->expiration_time = now + min_ttl;
+	  rmp->retval = clib_host_to_net_u32 (rv);
+	  vl_msg_api_send (regp, (u8 *) rmp);
+	}
+      else
+	{
+	  vl_api_dns_resolve_ip_reply_t *rmp;
+	  rmp = vl_msg_api_alloc (sizeof (*rmp));
+	  rmp->_vl_msg_id =
+	    clib_host_to_net_u16 (VL_API_DNS_RESOLVE_IP_REPLY);
+	  rmp->context = ep->pending_api_requests[i].client_context;
+	  min_ttl = ~0;
+	  rv = vnet_dns_response_to_name (ep->dns_response, rmp, &min_ttl);
+	  if (min_ttl != ~0)
+	    ep->expiration_time = now + min_ttl;
+	  rmp->retval = clib_host_to_net_u32 (rv);
+	  vl_msg_api_send (regp, (u8 *) rmp);
+	}
     }
-  vec_free (ep->api_clients_to_notify);
-  vec_free (ep->api_client_contexts);
+  vec_free (ep->pending_api_requests);
 
   /* $$$ Add ip4/ip6 reply code */
   vec_free (ep->ip4_peers_to_notify);
