--- a/src/resolve.c Thu May 07 02:57:11 2009 +0300
+++ b/src/resolve.c Thu May 07 18:11:50 2009 +0300
@@ -75,7 +75,7 @@
if ((ret = getnameinfo(
addr->ai_addr, addr->ai_addrlen,
host, sizeof(host), service, sizeof(service),
- AI_NUMERICHOST | AI_NUMERICSERV
+ NI_NUMERICHOST | NI_NUMERICSERV
))) {
strcpy(host, "???");
strcpy(service, "???");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/resolve.c Thu May 07 18:11:50 2009 +0300
@@ -0,0 +1,74 @@
+#include "../resolve.h"
+#include "test.h"
+
+void test_resolve_addr (void)
+{
+ struct addrinfo ai;
+ struct sockaddr_in sa_in;
+ struct sockaddr_in6 sa_in6;
+
+ log_debug("test IPv4 bind addr");
+ ai.ai_flags = 0;
+ sa_in.sin_family = ai.ai_family = AF_INET;
+ ai.ai_socktype = SOCK_STREAM;
+ ai.ai_protocol = 0;
+ sa_in.sin_port = htons(1234);
+ sa_in.sin_addr.s_addr = INADDR_ANY;
+ ai.ai_addrlen = sizeof(sa_in);
+ ai.ai_addr = (struct sockaddr *) &sa_in;
+ ai.ai_canonname = NULL;
+ ai.ai_next = NULL;
+
+ assert_strcmp(resolve_addr_text(&ai), "[0.0.0.0]:1234");
+
+ log_debug("test IPv6 remote");
+ sa_in6.sin6_family = ai.ai_family = AF_INET6;
+ sa_in6.sin6_port = htons(1234);
+ sa_in6.sin6_flowinfo = 0;
+ sa_in6.sin6_addr = in6addr_loopback;
+ sa_in6.sin6_scope_id = 0;
+ ai.ai_addrlen = sizeof(sa_in6);
+ ai.ai_addr = (struct sockaddr *) &sa_in6;
+
+ assert_strcmp(resolve_addr_text(&ai), "[::1]:1234");
+}
+
+void test_resolve_result (void)
+{
+ struct resolve_result rr;
+
+ log_debug("resolve_result_init");
+ resolve_result_init(&rr);
+
+ log_debug("test resolve_result_next on empty result");
+ assert_null(resolve_result_next(&rr));
+
+ resolve_result_deinit(&rr);
+}
+
+void test_resolve (void)
+{
+ struct resolve_result rr;
+ struct addrinfo *ai;
+ error_t err, err2;
+
+ log_debug("test resolve_addr on 0.0.0.0:1234 passive");
+ assert_success(resolve_addr(&rr, NULL, "1234", SOCK_STREAM, AI_PASSIVE, &err));
+
+ while ((ai = resolve_result_next(&rr))) {
+ if (ai->ai_family == AF_INET)
+ assert_strcmp(resolve_addr_text(ai), "[0.0.0.0]:1234");
+ else if (ai->ai_family == AF_INET6)
+ assert_strcmp(resolve_addr_text(ai), "[::]:1234");
+ else
+ assert(false);
+ }
+
+ resolve_result_deinit(&rr);
+
+ log_debug("test resolve_addr error");
+ SET_ERROR_EXTRA(&err2, ERR_GETADDRINFO, EAI_NONAME);
+ assert_err(resolve_addr(&rr, NULL, NULL, 0, 0, &err), ERR_GETADDRINFO);
+ assert_error(&err, &err2);
+}
+
--- a/src/test/test_list.inc Thu May 07 02:57:11 2009 +0300
+++ b/src/test/test_list.inc Thu May 07 18:11:50 2009 +0300
@@ -24,8 +24,15 @@
TEST ( str_quote )
TEST ( str_format )
TEST ( dump_str )
+
+TEST ( resolve_addr )
+TEST ( resolve_result )
+TEST ( resolve )
+
TEST ( transport_test )
+
TEST ( line_proto )
+
TEST ( irc_queue )
TEST ( irc_conn )
TEST ( irc_conn_self_nick )