]> granicus.if.org Git - libevent/commitdiff
test: add getaddrinfo(AI_ADDRCONFIG) test (off by default)
authorAzat Khuzhin <azat@libevent.org>
Fri, 26 Jun 2020 07:35:44 +0000 (10:35 +0300)
committerAzat Khuzhin <azat@libevent.org>
Fri, 26 Jun 2020 08:32:59 +0000 (11:32 +0300)
test/regress_util.c

index f28238c850d8e0adbe35b4bd9178aa60d4457e1e..0f33ea0ea11c8372bba711622176bf2f6c0f975f 100644 (file)
@@ -1194,6 +1194,41 @@ end:
                evutil_freeaddrinfo(ai);
 }
 
+static void
+test_evutil_getaddrinfo_AI_ADDRCONFIG(void *arg)
+{
+       struct evutil_addrinfo *ai = NULL;
+       struct evutil_addrinfo hints;
+       int r;
+
+       memset(&hints, 0, sizeof(hints));
+       hints.ai_family = AF_UNSPEC;
+       hints.ai_socktype = SOCK_STREAM;
+       hints.ai_flags = EVUTIL_AI_PASSIVE|EVUTIL_AI_ADDRCONFIG;
+
+       /* IPv4 */
+       r = evutil_getaddrinfo("127.0.0.1", "80", &hints, &ai);
+       tt_int_op(r, ==, 0);
+       tt_assert(ai);
+       tt_ptr_op(ai->ai_next, ==, NULL);
+       test_ai_eq(ai, "127.0.0.1:80", SOCK_STREAM, IPPROTO_TCP);
+       evutil_freeaddrinfo(ai);
+       ai = NULL;
+
+       /* IPv6 */
+       r = evutil_getaddrinfo("::1", "80", &hints, &ai);
+       tt_int_op(r, ==, 0);
+       tt_assert(ai);
+       tt_ptr_op(ai->ai_next, ==, NULL);
+       test_ai_eq(ai, "[::1]:80", SOCK_STREAM, IPPROTO_TCP);
+       evutil_freeaddrinfo(ai);
+       ai = NULL;
+
+end:
+       if (ai)
+               evutil_freeaddrinfo(ai);
+}
+
 #ifdef _WIN32
 static void
 test_evutil_loadsyslib(void *arg)
@@ -1800,6 +1835,7 @@ struct testcase_t util_testcases[] = {
        { "EVUTIL_IS_", test_EVUTIL_IS_, 0, NULL, NULL },
        { "getaddrinfo", test_evutil_getaddrinfo, TT_FORK, NULL, NULL },
        { "getaddrinfo_live", test_evutil_getaddrinfo_live, TT_FORK|TT_OFF_BY_DEFAULT, NULL, NULL },
+       { "getaddrinfo_AI_ADDRCONFIG", test_evutil_getaddrinfo_AI_ADDRCONFIG, TT_FORK|TT_OFF_BY_DEFAULT, NULL, NULL },
 #ifdef _WIN32
        { "loadsyslib", test_evutil_loadsyslib, TT_FORK, NULL, NULL },
 #endif