-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

André,

On 12/9/19 04:50, André Warnier (tomcat/perl) wrote:
> Hi Christopher.
> 
> I believe that yours is a really good explanation of why Tomcat 
> collapses consecutive slashes in URLs. It's certainly worth a FAQ
> article, in case the question ever pops up again.
> 
> It maybe even be worth a note somewhere in the main documentation,
> such as where it explains how Tomcat actually maps URLs to webapps.
> Except that I can't locate the documentation which specifically
> explains this.. Maybe this is because Tomcat normally refers to the
> Servlet Spec for this ?
> 
> The closest I find is here : 
> http://tomcat.apache.org/tomcat-9.0-doc/config/context.html#Naming 
> Maybe inserting a note to the effect of 'Note: before any of the
> mapping below takes place, Tomcat collapses any consecutive "/"
> characters in the path portion of the URL to a single "/". The
> complete explanation is here : --> FAQ article" '

Sure. Feel free to go ahead and add that.

There may be a place in the security documentation that might be
appropriate to add a reference, too. Like under "security
considerations" or something.

- -chris

> On 05.12.2019 17:13, Christopher Schultz wrote: André,
> 
> On 12/5/19 04:55, André Warnier (tomcat/perl) wrote:
>>>> Christopher,
>>>> 
>>>> I believe that the problem of the OP is that either this
>>>> filter or the application, *relies* on the fact that Tomcat
>>>> would NOT collapse multiple consecutive slashes in the URL,
>>>> to a single slash. That (the non-collapsing) seems to have
>>>> been the case in some previous versions of Tomcat, and has
>>>> apparently been changed in more recent versions of Tomcat
>>>> (and probably rightly so, to adhere more strictly to the
>>>> specs).
> 
> Actually, it's somewhat in *violation* of the specs. But it's a 
> generally-accepted violation because it allows security rules to 
> actually remain sane.
> 
> If you want to protect "/foo/bar.html" which maps to a file on the 
> disk, you'll find that the filesystem collapses slashes and will
> load that same file regardless of how many extra slashes you put in
> there. "/foo////bar.html" is going to give you the same result.
> 
> The same is true for multiple levels like "/foo/bar/bar.html". If
> you want to protect all files in "/foo/bar" it's not practical to
> add protections for "/foo/bar/" and "/foo//bar/" and "/foo///bar/"
> and ... you see where I'm going with this.
> 
> So the server decides that slash-collapsing will allow security 
> constraints to be more practically applied.
> 
> What if we get super-spec-compliant and allow those extra slashes? 
> Well, you'd have to get really (and, IMHO, /overly/) strict about
> how those slashes are treated. In Java, you'd have to do something
> like this :
> 
> String path = ... // file-path from request String docRoot = ... //
> docroot base, absolute File file = new File(docRoot, path); 
> if(!file.exists()) // return 404 
> if(!path.equals(file.getAbsolutePath().substring(docRoot.length()))
>
> 
// return 404
> 
> That last check will check to make sure that the path requested by
> the client *exactly equals* that of the path on the disk. That
> means that multiple-slashes are essentially forbidden when
> requesting disk-files.
> 
> (It gets more fun when you are requesting a directory which has an 
> "index file" like index.html and you have to decide whether or not 
> it's okay to load that file automatically, even though the client 
> didn't specifically request it.)
> 
> So now we are spec-compliant. Yay! Except that all those sloppy 
> webmasters links no longer work because they do all kinds of weird
> URL manipulations that don't always result in a perfectly-clean
> URL. So we've achieved spec-compliance and inconvenienced users.
> Did we really achieve anything? Those multi-slash URLs were never
> going to work. It is really a big deal to just ... let them work?
> So we collapse slashes and everything is fine. Nobody is really
> going to complain if /foo//bar.html and /foo/bar.html both work
> instead of one of them returning 404.
> 
> What about resource that are *not* on a disk? Like servlets and
> stuff like that? Well, the servlet spec allows us to map to URL
> patterns of various types. Some are exact, others prefixes, etc. We
> can also define security constraints with the same kind of
> url-pattern basis. Generally, those things should agree. What
> happens when you introduce multiple-slashes in there?
> 
> Well, nobody is ever going to map a bunch of additional slashes to 
> make their servlets work properly. So we are back to the same
> problem as the on-disk-file: the multiple-slashes are essentially
> forbidden if we want to be super-spec-compliant. So we relax a
> little and take the practical approach: collapse slashes and move
> on with our lives. This has the added benefit of making security
> constraints more consistent, and fewer mistakes. And encouraging
> fewer security mistakes is a Good Thing.
> 
>>>> And the collapsing of multiple consecutive slashes in the
>>>> URL, is probably done at such an early stage in the request
>>>> processing, that it is not easy to do something to turn it
>>>> off (which may or may not be spec-compliant anyway).
> 
> Turning it off would be a giant mess. And yes, it needs to be doe 
> quite early because Tomcat has to figure out which web application 
> will be responding to the request. So it's one of the first things 
> that Tomcat has to do with  an incoming request.
> 
>>>> I did not look up the HTTP specs to find where this
>>>> collapsing of slashes is specified, but I found this in the
>>>> Apache httpd documentation, which would seem to suggest that
>>>> consecutive slashes are not necessarily invalid, and may even
>>>> *mean* something : 
>>>> http://httpd.apache.org/docs/2.4/mod/core.html#location (see
>>>> : Note about "/")
>>>> 
>>>> Ok, then I got curious and did have a quick look at RFCs 7230
>>>> and 7231, and they are mute about consecutive slashes.
>>>> RFC2396 on the other hand does not seem to forbid consecutive
>>>> slashes, and as I understand it, they are even "significant",
>>>> as they seem to delimit a path element (which just happens to
>>>> be empty). https://tools.ietf.org/html/rfc3986#section-3.3
>>>> does not seem to forbid consecutive slashes either.
>>>> 
>>>> But I would suppose that if the Tomcat developers decided to 
>>>> collapse multiple consecutive slashes, they must have had a 
>>>> reason.
> 
> Yep: see above. It's a deliberate violation of the spec designed
> to make the world work the way everyone expects it to work, and
> also make security configuration sensible, too.
> 
> -chris
> 
>>>> On 04.12.2019 15:18, Christopher Schultz wrote: Kushagra,
>>>> 
>>>> On 12/4/19 06:32, Kushagra Bindal wrote:
>>>>>>> I am not saying that this is a tomcat issue, I am just
>>>>>>> asking if there is a way by which we can handle this.
>>>>>>> As maybe in later version of 8.5.24 Tomcat has take
>>>>>>> some action to handle such conditions.
>>>> 
>>>> I still don't really see the problem. Your responses have
>>>> included tiny bits of information separately and not
>>>> everything all at once. If you have a <filter> defined and
>>>> mapped to a URL pattern, it should work and not give you a
>>>> 404.
>>>> 
>>>> Try this with the examples application:
>>>> 
>>>> http://localhost:8080/examples/servlets/servlet/HelloWorldExample
>>>>
>>>>
>>>> 
It will respond no matter how any slashes you put in various
>>>> places:
>>>> 
>>>> http://localhost:8080/examples/servlets/servlet//HelloWorldExample
>>>>
>>>> 
http://localhost:8080/examples/servlets//servlet//HelloWorldExample
>>>> 
>>>> 
> http://localhost:8080/examples/servlets/servlet//////HelloWorldExample
>>>>
>>>>
> 
There are no 404 errors.
>>>> 
>>>> Are you sure your application has deployed correctly?
>>>> 
>>>> -chris
>>>> 
>>>>>>> On Wed, Dec 4, 2019 at 4:53 PM Mark Thomas 
>>>>>>> <ma...@apache.org> wrote:
>>>>>>> 
>>>>>>>> On 04/12/2019 05:16, Kushagra Bindal wrote:
>>>>>>>>> Hi Mark/Manna/Chris,
>>>>>>>>> 
>>>>>>>>> Do we have any way out to handle this type of
>>>>>>>>> behavior?
>>>>>>>> 
>>>>>>>> All the evidence so far points to an application
>>>>>>>> issue, not a Tomcat issue.
>>>>>>>> 
>>>>>>>> If you are able to create a simple test case that 
>>>>>>>> demonstrates a Tomcat issue we can take a look.
>>>>>>>> 
>>>>>>>> Mark
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Tue, Dec 3, 2019 at 5:46 AM Kushagra Bindal <
>>>>>>>> bindal.kusha...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Chris,
>>>>>>>>>> 
>>>>>>>>>> If you will check in my early email then you will
>>>>>>>>>> find that with // it
>>>>>>>> is
>>>>>>>>>> throwing 404. But as soon as I removed it
>>>>>>>>>> manually then it starts
>>>>>>>> working
>>>>>>>>>> properly and all these url were working fine in
>>>>>>>>>> 8.5.24 version.
>>>>>>>>>> 
>>>>>>>>>> On Tue, Dec 3, 2019, 1:21 AM Christopher Schultz
>>>>>>>>>> < ch...@christopherschultz.net> wrote:
>>>>>>>>>> 
>>>>>>>>> Kushagra,
>>>>>>>>> 
>>>>>>>>> On 12/2/19 11:29, Kushagra Bindal wrote:
>>>>>>>>>>>>> I think it should be.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> <filter> 
>>>>>>>>>>>>> <description>DanglingSessionInvalidateFilter</description>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>
>>>>>>>>>>>>>
>
>>>>>>>>>>>>> 
<filter-name>DanglingSessionInvalidateFilter</filter-name>
>>>>>>>>>>>>> <filter-class>com.SessionInvalidateFilter</filter-class>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>
>>>>>>>>>>>>> 
</filter> <filter-mapping>
>>>>>>>>>>>>> <filter-name>DanglingSessionInvalidateFilter</filter-name>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>
>>>>>>>>>>>>>
>
>>>>>>>>>>>>> 
<url-pattern>/restcall/*</url-pattern> </filter-mapping>
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Here in below URL:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> "http://backend_tomcat:8080/sdm/restcall/v1/platform//heal
thC
>
>>>>>>>>>>>>> 
hec
>>>> 
>>>>>>>>>>>>> 
> k"
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>> sdm will be the context path.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> But in another example that I shared in my
>>>>>>>>>>>>> last email, one use case 
>>>>>>>>>>>>> http://backend_tomcat:8080//sdm/restcall)(.*)/file_uploads
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>
>>>>>>>>>>>>> 
my context path itself contains //.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> So, please suggest a viable solution which
>>>>>>>>>>>>> we can try to solve this problem. :)
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks in advance for your help & support
>>>>>>>>>>>>> in resolving this issue.
>>>>>>>>> 
>>>>>>>>> All of these slashes really should be collapsed
>>>>>>>>> into a single slash before processing. I don't see
>>>>>>>>> an issue. If the client requests:
>>>>>>>>> 
>>>>>>>>> http://backend_tomcat:8080/sdm/restcall/v1/platform//healthChe
ck
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>
>>>>>>>>>
>
>>>>>>>>> 
then the filter/servlet at /sdm/restcall/* will respond.
>>>>>>>>> 
>>>>>>>>> If the client requests:
>>>>>>>>> 
>>>>>>>>> http://backend_tomcat:8080//sdm/restcall/foo/file_uploads
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>
>>>>>>>>> 
Then the filter/servlet at /sdm/restcall/* will respond.
>>>>>>>>> 
>>>>>>>>> It doesn't really matter how many extra slashes
>>>>>>>>> the client adds... they should all be collapsed by
>>>>>>>>> the server and your application should not have to
>>>>>>>>> make arrangements to handle them, add them back, or
>>>>>>>>> worry about whether they are there or not.
>>>>>>>>> 
>>>>>>>>> -chris
>>>>>>>>> 
>>>>>>>>>>>>> On Mon, Dec 2, 2019 at 9:00 PM Mark Thomas 
>>>>>>>>>>>>> <ma...@apache.org> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On 02/12/2019 10:59, Kushagra Bindal
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> Hi Mark,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> These are Rest Endpoints, and so will
>>>>>>>>>>>>>>> be processed through Filter.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> That is unusual.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Do, you think Servlet mapping will play
>>>>>>>>>>>>>>> any role here?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> If the filter is handling them, no.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> So I'll change the question. Which URL
>>>>>>>>>>>>>> pattern from the filter mapping do you
>>>>>>>>>>>>>> expect:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> "http://backend_tomcat:8080/sdm/restcall/v1/platform//hea
lth
>
>>>>>>>>>>>>>> 
Che
>>>> 
>>>>>>>>>>>>>> 
> ck"
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>> to match?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> The Context Path question still needs an 
>>>>>>>>>>>>>> answer.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Mark
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Mon, Dec 2, 2019 at 2:33 PM Mark
>>>>>>>>>>>>>>> Thomas <ma...@apache.org> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On 02/12/2019 04:53, Kushagra Bindal 
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>> Hi Mark,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Please find the snippet from
>>>>>>>>>>>>>>>>> web.xml
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Which URL pattern do you expect:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> "http://backend_tomcat:8080/sdm/restcall/v1/platform//h
eal
>
>>>>>>>>>>>>>>>> 
thC
>>>> 
>>>>>>>>>>>>>>>> 
> heck
>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>> "
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>> to match?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> And what is the Context Path at which
>>>>>>>>>>>>>>>> the application is deployed?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Mark
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> <servlet> 
>>>>>>>>>>>>>>>>> <servlet-name>default</servlet-name>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>
>>>>>>>>>>>>>>>>> 
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servle
> t-c
>>>>>>>>> 
>>>>>>>> 
>>>> 
>>>>>>>> 
> lass>
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> <init-param>
>>>>>>>>>>>>>>>>> <param-name>debug</param-name> 
>>>>>>>>>>>>>>>>> <param-value>0</param-value> 
>>>>>>>>>>>>>>>>> </init-param> <init-param> 
>>>>>>>>>>>>>>>>> <param-name>listings</param-name> 
>>>>>>>>>>>>>>>>> <param-value>false</param-value> 
>>>>>>>>>>>>>>>>> </init-param> 
>>>>>>>>>>>>>>>>> <load-on-startup>1</load-on-startup>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 
</servlet> <servlet>
>>>>>>>>>>>>>>>>> <servlet-name>jsp</servlet-name>
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-cl
ass
>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>
>>>>>>>>
>
>>>>>>>> 
<init-param>
>>>>>>>>>>>>>>>>> <param-name>fork</param-name> 
>>>>>>>>>>>>>>>>> <param-value>false</param-value> 
>>>>>>>>>>>>>>>>> </init-param> <init-param> 
>>>>>>>>>>>>>>>>> <param-name>xpoweredBy</param-name>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 
<param-value>false</param-value>
>>>>>>>>>>>>>>>>> </init-param> 
>>>>>>>>>>>>>>>>> <load-on-startup>3</load-on-startup>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 
</servlet> <!-- The mapping for the
>>>>>>>>>>>>>>>>> default servlet -->
>>>>>>>>>>>>>>>>> <servlet-mapping> 
>>>>>>>>>>>>>>>>> <servlet-name>default</servlet-name>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 
<url-pattern>/</url-pattern>
>>>>>>>>>>>>>>>>> </servlet-mapping> <!-- The
>>>>>>>>>>>>>>>>> mappings for the JSP servlet -->
>>>>>>>>>>>>>>>>> <servlet-mapping> 
>>>>>>>>>>>>>>>>> <servlet-name>jsp</servlet-name> 
>>>>>>>>>>>>>>>>> <url-pattern>*.jsp</url-pattern> 
>>>>>>>>>>>>>>>>> <url-pattern>*.jspx</url-pattern> 
>>>>>>>>>>>>>>>>> </servlet-mapping> <servlet> 
>>>>>>>>>>>>>>>>> <servlet-name>PatternTemplateLaunchServlet</servlet-na
me>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>
>>>>>>>>>>>>>>>>>
>
>>>>>>>>>>>>>>>>> 
<servlet-class>PatternTemplateLaunchServlet</servlet-class>
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>> </servlet>
>>>>>>>>>>>>>>>>> <servlet> 
>>>>>>>>>>>>>>>>> <servlet-name>MyReportsLaunchServlet</servlet-name>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>
>>>>>>>>>>>>>>>>>
>
>>>>>>>>>>>>>>>>> 
<servlet-class>MyReportsLaunchServlet</servlet-class>
>>>>>>>>>>>>>>>>> </servlet> <servlet-mapping> 
>>>>>>>>>>>>>>>>> <servlet-name>PatternTemplateLaunchServlet</servlet-na
me>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>
>>>>>>>>>>>>>>>>>
>
>>>>>>>>>>>>>>>>> 
<url-pattern>/patterntemplatelaunch</url-pattern>
>>>>>>>>>>>>>>>>> </servlet-mapping>
>>>>>>>>>>>>>>>>> <servlet-mapping> 
>>>>>>>>>>>>>>>>> <servlet-name>MyReportsLaunchServlet</servlet-name>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>
>>>>>>>>>>>>>>>>>
>
>>>>>>>>>>>>>>>>> 
<url-pattern>/MyReportsLaunchServlet</url-pattern>
>>>>>>>>>>>>>>>>> </servlet-mapping>
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Please let me know if you need
>>>>>>>>>>>>>>>>> anyother details from our side.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On Mon, Dec 2, 2019 at 3:07 AM
>>>>>>>>>>>>>>>>> Mark Thomas <ma...@apache.org>
>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> On 01/12/2019 07:11, Kushagra
>>>>>>>>>>>>>>>>>> Bindal wrote:
>>>>>>>>>>>>>>>>>>> Hi Manna/Mark,
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Below are the sample URL which
>>>>>>>>>>>>>>>>>>> we are passing to Tomcat.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> http://backend_tomcat:8080//sdm/restcall)(.*)/file_u
plo
>
>>>>>>>>>>>>>>>>>>> 
ads
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>> 
>>>>>>>>>>>>>>>>>>> 
> http://backend_tomcat:8080/sdm/restcall/v1/platform//healthCheck
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> As from the above example you
>>>>>>>>>>>>>>>>>>> can see that // location may
>>>>>>>>>>>>>>>>>>> vary case
>>>>>>>>>>>>>> by
>>>>>>>>>>>>>>>>>>> case.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> So, you guys have a probable
>>>>>>>>>>>>>>>>>>> solution to handle such
>>>>>>>>>>>>>>>>>>> situation, then
>>>>>>>>>>>>>>>>>> please
>>>>>>>>>>>>>>>>>>> do let me know.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Tomcat is simply going to
>>>>>>>>>>>>>>>>>> normalize those to single '/'.
>>>>>>>>>>>>>>>>>> The
>>>>>>>>>>>>>> application
>>>>>>>>>>>>>>>>>> should be fine with that.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> To repeat my previous request:
>>>>>>>>>>>>>>>>>> Can you provide more details such
>>>>>>>>>>>>>>>>>> as: - an example request URI
>>>>>>>>>>>>>>>>>> *and* - the <url-pattern> for the
>>>>>>>>>>>>>>>>>> servlet you expect it to match
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Mark
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>> ---------------------------------------------------------------
- --
>>>>>>>>>
>>>>>>>>
>>>>
>>>>>>>>
>
>>>>>>>> 
- ----
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>> To unsubscribe, e-mail: 
>>>>>>>>> users-unsubscr...@tomcat.apache.org
>>>>>>>>>>>>>>>>>> For additional commands, e-mail: 
>>>>>>>>>>>>>>>>>> users-h...@tomcat.apache.org
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>> ---------------------------------------------------------------
- ---
>
>>>>>>>> 
- -
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>> 
>>>> 
>>>>>>>> 
> ---------------------------------------------------------------------
>>>>>>>>>>>
> 
To unsubscribe, e-mail:
>>>>>>>>>>> users-unsubscr...@tomcat.apache.org For
>>>>>>>>>>> additional commands, e-mail:
>>>>>>>>>>> users-h...@tomcat.apache.org
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> ---------------------------------------------------------------
- ---
>
>>>>>>>> 
- ---
>>>>>>>> 
>>>>>>>> 
>>>> 
>>>>>>>> 
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>>>>>>> For additional commands, e-mail: 
>>>>>>>> users-h...@tomcat.apache.org
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> ------------------------------------------------------------------
- ---
>>>>>
>>>>>
>
>>>>> 
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>>>> For additional commands, e-mail:
>>>>> users-h...@tomcat.apache.org
>>>>> 
>>>> 
>>>> 
>>>> -------------------------------------------------------------------
- --
>>>>
>>>>
>
>>>> 
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>>> For additional commands, e-mail:
>>>> users-h...@tomcat.apache.org
>>>> 
>> 
>> ---------------------------------------------------------------------
>>
>> 
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>> 
> 
> 
> ---------------------------------------------------------------------
>
> 
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/

iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl3ubnYACgkQHPApP6U8
pFiajA/+IK6qQZDXDZ+keUKKWZnTFJw1OXOKILyMU8RjcvgXJfF10iC1szFLBah0
FtSJNcmKzrkp1kHdnoZguESdK/hcuJrxqOQR3S/D1vCSe3F5fwgEr5ugxwn4Ezzt
NvaEFA11BikotpQJD1t/OdQc4SKL9Y/+Vkz4IhjHHdMZY/NWF55fHsqLVHWf+sMb
AQNpu+te3xHNMD4A8VBiXwaZFejMYoP1gaFXZCfx1GYaFlW+S9O6OnXHuCyWmxr/
//K2RIHv01sIzcBg8MIAFDk9BToOul+41kgiCdSX7YDDPdk6GZUK4xKAn4ad0Bov
iWxuy2nESl6GWfYD+QO2PXuCsPpoF/J1mfzbJqXSJt+aUMpwC4F2cicgfm+Q1ZE/
u3kf5GhxPTC4gUJQFKIqY42PYpsMOD3QOI+JuP5Lklqap3Iy0AX8RUR+kiPbzUTT
tlynVQS/niSQ1pMoSyZIGNxvIW33xPISFXIrw0fgaGtjKx7pmVNky+GIKbF/dsjU
6moR3vcdYlxaSmwlZyXVElHspHFdg/KnIDShY3doYtxBpAYGErmHRyCY67A2h0pS
lvA1iPejUDY6Tp9o88ONthscmpXytcYIIhkisGpSn/X9ST3WSNwGNgVJPGqQ1Vr2
IL3h+klcmSiO6gMel2lOhQsGtPVRDuSgNw+BbWBs5v2XEgC5KYw=
=x7s7
-----END PGP SIGNATURE-----

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

Reply via email to