diff --git a/libc/dns/net/gethnamaddr.c b/libc/dns/net/gethnamaddr.c
index f8212a2..add124f 100644
--- a/libc/dns/net/gethnamaddr.c
+++ b/libc/dns/net/gethnamaddr.c
@@ -1537,7 +1537,7 @@
 gethostbyname(const char *name)
 {
 	struct hostent *result = NULL;
-	res_static rs = __res_get_static(); /* Use res_static to provide thread-safety. */
+	struct res_static* rs = __res_get_static();
 
 	gethostbyname_r(name, &rs->host, rs->hostbuf, sizeof(rs->hostbuf), &result, &h_errno);
 	return result;
@@ -1547,7 +1547,7 @@
 gethostbyname2(const char *name, int af)
 {
 	struct hostent *result = NULL;
-	res_static rs = __res_get_static(); /* Use res_static to provide thread-safety. */
+	struct res_static* rs = __res_get_static();
 
 	gethostbyname2_r(name, af, &rs->host, rs->hostbuf, sizeof(rs->hostbuf), &result, &h_errno);
 	return result;
@@ -1583,7 +1583,7 @@
 	res_state res = __res_get_state();
 	if (res == NULL)
 		return NULL;
-	res_static rs = __res_get_static(); /* Use res_static to provide thread-safety. */
+	struct res_static* rs = __res_get_static();
 	hp = gethostbyname_internal(name, af, res, &rs->host, rs->hostbuf, sizeof(rs->hostbuf),
 	                            &h_errno, netcontext);
 	__res_put_state(res);
@@ -1615,7 +1615,7 @@
 android_gethostbyaddrfornetcontext_proxy(const void* addr, socklen_t len, int af,
                                   const struct android_net_context *netcontext)
 {
-	res_static rs = __res_get_static(); /* Use res_static to provide thread-safety. */
+	struct res_static* rs = __res_get_static();
 	return android_gethostbyaddrfornetcontext_proxy_internal(addr, len, af, &rs->host, rs->hostbuf,
                                                     sizeof(rs->hostbuf), &h_errno, netcontext);
 }
@@ -1623,7 +1623,7 @@
 struct hostent *
 gethostent(void)
 {
-  res_static  rs = __res_get_static();
+  struct res_static* rs = __res_get_static();
 	if (!rs->hostf) {
 	  sethostent_r(&rs->hostf);
 	  if (!rs->hostf) {
diff --git a/libc/dns/net/getservent.c b/libc/dns/net/getservent.c
index 03add59..6a50d23 100644
--- a/libc/dns/net/getservent.c
+++ b/libc/dns/net/getservent.c
@@ -35,7 +35,7 @@
 #include "resolv_static.h"
 #include "services.h"
 
-struct servent* getservent_r(res_static rs) {
+struct servent* getservent_r(struct res_static* rs) {
     const char*  p;
     const char*  q;
     int          namelen;
@@ -109,17 +109,17 @@
 }
 
 void endservent(void) {
-  res_static rs = __res_get_static();
+  struct res_static* rs = __res_get_static();
   if (rs) rs->servent_ptr = NULL;
 }
 
 struct servent* getservent(void) {
-  res_static rs = __res_get_static();
+  struct res_static* rs = __res_get_static();
   return rs ? getservent_r(rs) : NULL;
 }
 
 struct servent* getservbyname(const char* name, const char* proto) {
-  res_static rs = __res_get_static();
+  struct res_static* rs = __res_get_static();
   if (rs == NULL) return NULL;
 
   const char* old_servent_ptr = rs->servent_ptr;
@@ -135,7 +135,7 @@
 }
 
 struct servent* getservbyport(int port, const char* proto) {
-  res_static rs = __res_get_static();
+  struct res_static* rs = __res_get_static();
   if (rs == NULL) return NULL;
 
   const char* old_servent_ptr = rs->servent_ptr;
diff --git a/libc/dns/net/sethostent.c b/libc/dns/net/sethostent.c
index b2b0132..483105a 100644
--- a/libc/dns/net/sethostent.c
+++ b/libc/dns/net/sethostent.c
@@ -65,14 +65,14 @@
 /*ARGSUSED*/
 sethostent(int stayopen)
 {
-	res_static rs = __res_get_static();
+	struct res_static* rs = __res_get_static();
 	if (rs) sethostent_r(&rs->hostf);
 }
 
 void
 endhostent(void)
 {
-	res_static rs = __res_get_static();
+	struct res_static* rs = __res_get_static();
 	if (rs) endhostent_r(&rs->hostf);
 }
 
