diff --git a/native/src/address.c b/native/src/address.c index 87a877178..fb1743107 100644 --- a/native/src/address.c +++ b/native/src/address.c @@ -23,59 +23,19 @@ TCN_IMPLEMENT_CALL(jlong, Address, info)(TCN_STDARGS, { apr_pool_t *p = J2P(pool, apr_pool_t *); TCN_ALLOC_CSTRING(hostname); - char *sp = NULL; - int scope_id = 0; apr_sockaddr_t *sa = NULL; - apr_sockaddr_t *sl = NULL; apr_int32_t f; UNREFERENCED(o); GET_S_FAMILY(f, family); -#if APR_HAVE_IPV6 - if (hostname) { - /* XXX: This only works for real scope_id's - */ - if ((sp = strchr(J2S(hostname), '%'))) { - *sp++ = '\0'; - scope_id = atoi(sp); - } - } -#endif TCN_THROW_IF_ERR(apr_sockaddr_info_get(&sa, J2S(hostname), f, (apr_port_t)port, (apr_int32_t)flags, p), sa); - sl = sa; - /* - * apr_sockaddr_info_get may return several address so this is not - * go to work in some cases (but as least it works for Linux) - * XXX: with AP_ENABLE_V4_MAPPED it is going to work otherwise it won't. - */ -#if APR_HAVE_IPV6 - if (hostname == NULL) { - /* Try all address using IPV6 one */ - while (sl) { - if (sl->family == APR_INET6) - break; /* Done */ - sl = sl->next; - } - /* If we don't find an IPv6 address, use the original one */ - if (sl == NULL) { - sl = sa; - } - } - if (sp) { - /* Set the provided scope id - * APR lack the api for setting this directly so lets presume - * the sin6_scope_id is present everywhere - */ - sl->sa.sin6.sin6_scope_id = scope_id; - } -#endif cleanup: TCN_FREE_CSTRING(hostname); - return P2J(sl); + return P2J(sa); } TCN_IMPLEMENT_CALL(jstring, Address, getnameinfo)(TCN_STDARGS, diff --git a/xdocs/miscellaneous/changelog.xml b/xdocs/miscellaneous/changelog.xml index 9f35b6e88..c7359803c 100644 --- a/xdocs/miscellaneous/changelog.xml +++ b/xdocs/miscellaneous/changelog.xml @@ -35,6 +35,11 @@
Address.getInfo() native implementation. (michaelo)
+