Explorar el Código

inet: Fix LT{.old,} compilation due to res_iclose

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Bernhard Reutner-Fischer hace 11 años
padre
commit
044ac16085
Se han modificado 5 ficheros con 54 adiciones y 5 borrados
  1. 1 1
      libc/inet/resolv.c
  2. 3 2
      test/.gitignore
  3. 1 1
      test/Test.mak
  4. 7 1
      test/inet/Makefile.in
  5. 42 0
      test/inet/tst-res.c

+ 1 - 1
libc/inet/resolv.c

@@ -3536,7 +3536,7 @@ __res_iclose(res_state statp)
 	struct __res_state * rp = statp;
 	__UCLIBC_MUTEX_LOCK(__resolv_lock);
 	if (rp == NULL)
-		rp = __resp;
+		rp = __res_state();
 	__close_nameservers();
 	__res_sync = NULL;
 #ifdef __UCLIBC_HAS_IPV6__

+ 3 - 2
test/.gitignore

@@ -40,6 +40,8 @@ dlopen/test[1-3]
 dlopen/testscope
 inet/bug-if1
 inet/gethost_r-align
+inet/gethostid
+inet/getnetent
 inet/if_nameindex
 inet/tst-aton
 inet/tst-ether_aton
@@ -47,9 +49,8 @@ inet/tst-ethers
 inet/tst-ethers-line
 inet/tst-network
 inet/tst-ntoa
+inet/tst-res
 inet/tst-sock-nonblock
-inet/gethostid
-inet/getnetent
 librt/shmtest
 locale/bug-iconv-trans
 locale/bug-usesetlocale

+ 1 - 1
test/Test.mak

@@ -109,7 +109,7 @@ $(G_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS)
 	$(Q)$(HOSTCC) $(filter-out $(HOST_CFLAGS-OMIT-$(patsubst %_glibc,%,$@)),$(HOST_CFLAGS)) \
 	$(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$(patsubst %_glibc,%,$@)) \
 	-c $(patsubst %_glibc,%,$@).c -o $@.o
-	$(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@))
+	$(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@)) $(LDFLAGS_$@)
 
 
 shell_%:

+ 7 - 1
test/inet/Makefile.in

@@ -7,5 +7,11 @@ TESTS_DISABLED := bug-if1 gethost_r-align gethostid if_nameindex tst-aton \
 endif
 
 ifeq ($(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),)
-TESTS_DISABLED := tst-ether_aton tst-ethers tst-ethers-line
+TESTS_DISABLED += tst-ether_aton tst-ethers tst-ethers-line
+endif
+
+ifeq ($(UCLIBC_HAS_RESOLVER_SUPPORT),)
+TESTS_DISABLED += tst-res
+else
+LDFLAGS_tst-res_glibc := -lresolv # assume it's glibc or somebody with that lib
 endif

+ 42 - 0
test/inet/tst-res.c

@@ -0,0 +1,42 @@
+#include <stdlib.h>
+#include <assert.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+#include <netdb.h>
+
+int main(int argc, char **argv)
+{
+    int r;
+    struct __res_state state;
+
+    r = res_ninit(&state);
+    if (r) {
+        herror("ninit");
+		abort();
+	}
+    r = res_init();
+    if (r) {
+        herror("init");
+		abort();
+	}
+
+    res_close();
+#ifdef __UCLIBC__
+	/* assume there is at least one resolver configured */
+	assert (state._u._ext.nscount > 0);
+#else
+	assert (state._u._ext.nscount == 0);
+#endif
+	assert (state.options & RES_INIT);
+    res_nclose(&state);
+#ifdef __UCLIBC__
+	/* We wipe the whole thing */
+	assert ((state.options & RES_INIT) == 0);
+#endif
+	assert (state._u._ext.nscount == 0);
+
+    return 0;
+}
+