2012/2/21  <mt...@apache.org>:
> Author: mturk
> Date: Tue Feb 21 13:15:42 2012
> New Revision: 1291760
>
> URL: http://svn.apache.org/viewvc?rev=1291760&view=rev
> Log:
> Fix BZ52717 by allowing to have %scope_id as address suffix for local-link 
> IPv6 addresses
>
> Modified:
>    tomcat/native/branches/1.1.x/native/src/address.c
>    tomcat/native/branches/1.1.x/xdocs/miscellaneous/changelog.xml
>
> Modified: tomcat/native/branches/1.1.x/native/src/address.c
> URL: 
> http://svn.apache.org/viewvc/tomcat/native/branches/1.1.x/native/src/address.c?rev=1291760&r1=1291759&r2=1291760&view=diff
> ==============================================================================
> --- tomcat/native/branches/1.1.x/native/src/address.c (original)
> +++ tomcat/native/branches/1.1.x/native/src/address.c Tue Feb 21 13:15:42 2012
> @@ -29,6 +29,8 @@ TCN_IMPLEMENT_CALL(jlong, Address, info)
>  {
>     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;
> @@ -36,6 +38,16 @@ TCN_IMPLEMENT_CALL(jlong, Address, info)
>
>     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);
> @@ -58,6 +70,13 @@ TCN_IMPLEMENT_CALL(jlong, Address, info)
>             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;

Maybe guard the above with #if APR_HAVE_IPV6 , like the first code
fragment in this patch?   I do not know what "sa.sin6" is and when it
is available, but it will lessen the chance of bumping into useless
compilation error here on an ip4-only system.

I wonder when this change will be ported to native/trunk. (Just
wondering. No real interest though).

> +    }
>  #endif
>
>  cleanup:
>
> Modified: tomcat/native/branches/1.1.x/xdocs/miscellaneous/changelog.xml
> URL: 
> http://svn.apache.org/viewvc/tomcat/native/branches/1.1.x/xdocs/miscellaneous/changelog.xml?rev=1291760&r1=1291759&r2=1291760&view=diff
> ==============================================================================
> --- tomcat/native/branches/1.1.x/xdocs/miscellaneous/changelog.xml (original)
> +++ tomcat/native/branches/1.1.x/xdocs/miscellaneous/changelog.xml Tue Feb 21 
> 13:15:42 2012
> @@ -38,6 +38,9 @@
>  </section>
>  <section name="Changes between 1.1.22 and 1.1.23">
>   <changelog>
> +    <fix>
> +      <bug>52717</bug>: Set scope_id for IPv6 addresses if provided. (mturk)
> +    </fix>
>     <update>
>       <bug>50570</bug>: Allow explicit use of FIPS mode in APR lifecycle 
> listener (native support only in this update; Java support to follow). Based 
> upon a patch from Chris Beckey. (schultz)
>     </update>
>

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to