CSP was added in 6.x version

https://struts.apache.org/core-developers/coop-interceptor
https://struts.apache.org/core-developers/coop-interceptor
https://struts.apache.org/core-developers/fetch-metadata-interceptor


W dniu wt., 30.08.2022 o 15:54 i...@flyingfischer.ch <i...@flyingfischer.ch>
napisał(a):

> It looks like an cross-site issue: The error does only appear, when the
> request is called from a third party domain. When called from a
> subdomain of the main domain, the error does not appear.
>
> Regards
> Markus
>
>
> Am 30.08.22 um 15:35 schrieb i...@flyingfischer.ch:
> > I am puzzled, calling the same request on the console works:
> >
> > curl -i -X OPTIONS https://domain/context/mypath?url=urlEncodedUrl
> > HTTP/1.1 302
> > Cache-control: no-cache, no-store
> > Pragma: no-cache
> > Expires: -1
> > Vary: Sec-Fetch-Dest,Sec-Fetch-Mode,Sec-Fetch-Site,Sec-Fetch-User
> > Cross-Origin-Embedder-Policy-Report-Only: require-corp
> > Cross-Origin-Opener-Policy: same-origin
> > Location: /context/otherpath?url=urlEncodedUrl
> > Content-Language: de-CH
> > Content-Length: 0
> > Date: Tue, 30 Aug 2022 13:23:17 GMT
> > Server: Apache
> >
> > I need to meditate...
> >
> > Regards
> > Markus
> >
> > Am 30.08.22 um 14:41 schrieb i...@flyingfischer.ch:
> >> The action and the result actually do exist as redirectAction
> >>
> >>         <result name="resultName" type="redirectAction">
> >>               <param name="actionName">otherpath</param>
> >>               <param name="url">${url}</param>
> >>         </result>
> >>
> >> This works:
> >> GET /context/mypath?url=urlEncodedUrl HTTP/1.1"
> >>
> >> This fails:
> >> OPTIONS /context/mypath?url=urlEncodedUrl HTTP/1.1" 404
> >>
> >> But yes, strange that OPTIONS returns 404, while WARN
> >> org.apache.struts2.dispatcher.Dispatcher returns 403.
> >>
> >> Regards
> >> Markus
> >>
> >>
> >> Am 30.08.22 um 14:32 schrieb Yasser Zamani:
> >>> Thanks. I see "...and result 403..." so looks like the underlying
> >>> action has responded with 403 i.e. forbidden and you haven't defined
> >>> such result for this action in struts.xml? wdyt?
> >>>
> >>> On 8/29/2022 8:32 PM, i...@flyingfischer.ch wrote:
> >>>> Hi Yasser
> >>>> sure.
> >>>>
> >>>> Regards
> >>>> Markus
> >>>>
> >>>>
> >>>> 29-08-2022 16:12:47.8 WARN org.apache.struts2.dispatcher.Dispatcher
> >>>> - Could not find action or result: /context/mypath?url=urlEncodedUrl
> >>>> No result defined for action ch.xx.xx.xx and result 403 - action -
> >>>>
> file:/xx/xx/xx/apache-tomcat-8.5.81/webapps/context/WEB-INF/classes/struts.xml:223:65
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:366)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:280)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.CoopInterceptor.intercept(CoopInterceptor.java:57)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.CoepInterceptor.intercept(CoepInterceptor.java:56)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:143)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:146)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:146)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:202)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:242)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:161)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.csp.CspInterceptor.intercept(CspInterceptor.java:46)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:209)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:229)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> util.CachingHeadersInterceptor.intercept(CachingHeadersInterceptor.java:28)
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> com.googlecode.sslplugin.interceptors.SSLInterceptor.intercept(SSLInterceptor.java:128)
>
> >>>>
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>> util.HostwwwInterceptor.intercept(HostwwwInterceptor.java:37)
> >>>>          at
> >>>>
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:251)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:630)
> >>>>          at
> >>>>
> org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:140)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
> >>>>          at
> >>>>
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
> >>>>          at
> >>>>
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
>
> >>>>
> >>>>          at
> >>>> org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2078)
>
> >>>>
> >>>>          at
> >>>> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
>
> >>>>
> >>>>          at
> >>>>
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>
> >>>>
> >>>>          at java.base/java.lang.Thread.run(Thread.java:833)
> >>>>
> >>>> Am 29.08.22 um 17:39 schrieb Yasser Zamani:
> >>>>> Hi Markus,
> >>>>>
> >>>>> I see corresponding codes in Struts:
> >>>>>         if (devMode) {
> >>>>>             LOG.error("Could not find action or result: {}", uri, e);
> >>>>>         } else if (LOG.isWarnEnabled()) {
> >>>>>             LOG.warn("Could not find action or result: {}", uri, e);
> >>>>>         }
> >>>>> so it seems you should also have the exception e stack trace
> >>>>> logged. Could you please share it as well? I guess you might
> >>>>> affected by [1] but honestly hard to say how. So the stack trace
> >>>>> could help a lot.
> >>>>>
> >>>>> Regards,
> >>>>> Yasser
> >>>>>
> >>>>> [1]
> >>>>>
> https://github.com/apache/struts/commit/1c2b491a27b48a0b064b991a6cef63db5e6cb28b
> >>>>>
> >>>>>
> >>>>> On 8/29/2022 5:22 PM, i...@flyingfischer.ch wrote:
> >>>>>> If I see this correctly, this happens only with OPTIONS and HEAD
> >>>>>> requests....
> >>>>>>
> >>>>>> Am 29.08.22 um 14:09 schrieb i...@flyingfischer.ch:
> >>>>>>> After removing commons-digester3-3.2 and leaving
> >>>>>>> commons-digester-2.1 only, I still get the Warnings/Errors in
> >>>>>>> production:
> >>>>>>>
> >>>>>>> WARN org.apache.struts2.dispatcher.Dispatcher - Could not find
> >>>>>>> action or result: /context/mypath?url=urlEncodedUrl
> >>>>>>>
> >>>>>>> Seems to be a new issue in Struts6 and not really related to
> >>>>>>> commons-digester? Unfortunately I cannot reproduce the issue
> >>>>>>> straightforward. I just see the error in the log. Calling the
> >>>>>>> path directly does not cause the issue. May there be a
> >>>>>>> connection with a not present session?
> >>>>>>>
> >>>>>>> Markus
> >>>>>>>
> >>>>>>>
> >>>>>>> Am 29.08.22 um 11:36 schrieb i...@flyingfischer.ch:
> >>>>>>>> Removing commons-digester-2.1 gives:
> >>>>>>>>
> >>>>>>>> java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
> >>>>>>>>
> >>>>>>>> I am able to remove commons-digester3-3.2: the application does
> >>>>>>>> start.
> >>>>>>>>
> >>>>>>>> I will replace the application in production and check, if the
> >>>>>>>> Warnings/Errors from org.apache.struts2.dispatcher.Dispatcher
> >>>>>>>> disappear.
> >>>>>>>>
> >>>>>>>> Regards
> >>>>>>>> Markus
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Am 29.08.22 um 10:19 schrieb Lukasz Lenart:
> >>>>>>>>> Could you exclude commons-digester in the Tiles plugin?
> >>>>>>>>>
> >>>>>>>>> Regards
> >>>>>>>>> Łukasz
> >>>>>>>>>
> >>>>>>>>> pon., 29 sie 2022 o 10:11 i...@flyingfischer.ch
> >>>>>>>>> <i...@flyingfischer.ch> napisał(a):
> >>>>>>>>>> hmm, in production I see from time to time:
> >>>>>>>>>>
> >>>>>>>>>> WARN org.apache.struts2.dispatcher.Dispatcher - Could not
> >>>>>>>>>> find action or
> >>>>>>>>>> result: /context/mypath?url=urlEncodedUrl
> >>>>>>>>>>
> >>>>>>>>>> The action exists and the result also, as redirectAction
> >>>>>>>>>>
> >>>>>>>>>>         <result name="resultName" type="redirectAction">
> >>>>>>>>>>               <param name="actionName">otherpath</param>
> >>>>>>>>>>               <param name="url">${url}</param>
> >>>>>>>>>>         </result>
> >>>>>>>>>>
> >>>>>>>>>> This behaviour seems to be new. I cannot reproduce it
> >>>>>>>>>> consistently, but
> >>>>>>>>>> there seems to be thrown an error in
> >>>>>>>>>> org.apache.struts2.dispatcher.Dispatcher, somewhere between
> >>>>>>>>>> these lines:
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>           try {
> >>>>>>>>>>               String actionNamespace = mapping.getNamespace();
> >>>>>>>>>>               String actionName = mapping.getName();
> >>>>>>>>>>               String actionMethod = mapping.getMethod();
> >>>>>>>>>>
> >>>>>>>>>>               LOG.trace("Processing action, namespace: {},
> >>>>>>>>>> name: {},
> >>>>>>>>>> method: {}", actionNamespace, actionName, actionMethod);
> >>>>>>>>>>               ActionProxy proxy =
> >>>>>>>>>> prepareActionProxy(extraContext,
> >>>>>>>>>> actionNamespace, actionName, actionMethod);
> >>>>>>>>>>
> >>>>>>>>>> request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY,
> >>>>>>>>>> proxy.getInvocation().getStack());
> >>>>>>>>>>
> >>>>>>>>>>               // if the ActionMapping says to go straight to
> >>>>>>>>>> a result, do it!
> >>>>>>>>>>               if (mapping.getResult() != null) {
> >>>>>>>>>>                   Result result = mapping.getResult();
> >>>>>>>>>> result.execute(proxy.getInvocation());
> >>>>>>>>>>               } else {
> >>>>>>>>>>                   proxy.execute();
> >>>>>>>>>>               }
> >>>>>>>>>>
> >>>>>>>>>>               // If there was a previous value stack then set
> >>>>>>>>>> it back
> >>>>>>>>>> onto the request
> >>>>>>>>>>               if (!nullStack) {
> >>>>>>>>>>
> request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY,
> >>>>>>>>>> stack);
> >>>>>>>>>>               }
> >>>>>>>>>>           } catch (ConfigurationException e) {
> >>>>>>>>>>               logConfigurationException(request, e);
> >>>>>>>>>>               sendError(request, response,
> >>>>>>>>>> HttpServletResponse.SC_NOT_FOUND, e);
> >>>>>>>>>>           }
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> The artifacts contains two version of commons-digester:
> >>>>>>>>>>
> >>>>>>>>>> commons-digester-2.1
> >>>>>>>>>> commons-digester3-3.2
> >>>>>>>>>>
> >>>>>>>>>> Any idea, what is causing this warning, which seems to be
> >>>>>>>>>> rather an error?
> >>>>>>>>>>
> >>>>>>>>>> Best Markus
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Am 27.08.22 um 12:28 schrieb i...@flyingfischer.ch:
> >>>>>>>>>>> Works fine here. Tested with tiles-plugin.
> >>>>>>>>>>>
> >>>>>>>>>>> Best regards
> >>>>>>>>>>> Markus
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Am 25.08.22 um 07:52 schrieb Lukasz Lenart:
> >>>>>>>>>>>> Hello,
> >>>>>>>>>>>>
> >>>>>>>>>>>> This is the first patch version of Struts 6.x series.
> >>>>>>>>>>>> Please take the
> >>>>>>>>>>>> time and test the bits - any help is appreciated. Please
> >>>>>>>>>>>> report any
> >>>>>>>>>>>> problems you will spot.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Here are the changes from the previous 6.0.0 version:
> >>>>>>>>>>>> https://github.com/apache/struts/releases/tag/STRUTS_6_0_2
> >>>>>>>>>>>>
> >>>>>>>>>>>> Staging Maven repo
> >>>>>>>>>>>> https://repository.apache.org/content/groups/staging/
> >>>>>>>>>>>>
> >>>>>>>>>>>> Standalone artifacts
> >>>>>>>>>>>> https://dist.apache.org/repos/dist/dev/struts/6.0.2/
> >>>>>>>>>>>>
> >>>>>>>>>>>> Release notes
> >>>>>>>>>>>>
> https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.0.2
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> Kind regards
> >>>>>>>>>>>> --
> >>>>>>>>>>>> Łukasz
> >>>>>>>>>>>> + 48 606 323 122 http://www.lenart.org.pl/
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> ---------------------------------------------------------------------
> >>>>>>>>>>>>
> >>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>>>>>>>>>>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>>>>>>>>>>
> >>>>>>>>>>>
> ---------------------------------------------------------------------
> >>>>>>>>>>>
> >>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>>>>>>>>>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>>>>>>>>>
> >>>>>>>>>
> ---------------------------------------------------------------------
> >>>>>>>>>
> >>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>>>>>>>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> ---------------------------------------------------------------------
> >>>>>>>>
> >>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>>>>>>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> ---------------------------------------------------------------------
> >>>>>>>
> >>>>>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>>>>>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>>
> >>>>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>>>>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>>>>
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>>>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >>> For additional commands, e-mail: dev-h...@struts.apache.org
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> >> For additional commands, e-mail: dev-h...@struts.apache.org
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> For additional commands, e-mail: dev-h...@struts.apache.org
>
> --
(mobile)

Reply via email to