Bug 1158385

Summary: [GSS] (6.4.x) JBossWeb RewriteValve throws IllegalArgumentException when using 'CO' flag
Product: [JBoss] JBoss Enterprise Application Platform 6 Reporter: Masafumi Miura <mmiura>
Component: WebAssignee: Rémy Maucherat <rmaucher>
Status: CLOSED CURRENTRELEASE QA Contact: Michael Cada <mcada>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4.0CC: myarboro, rmaucher
Target Milestone: DR11   
Target Release: EAP 6.4.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1158381 Environment:
Last Closed: 2019-08-19 12:45:49 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1157438, 1158381    

Description Masafumi Miura 2014-10-29 09:39:55 UTC
+++ This bug was initially created as a clone of Bug #1158381 +++

### Description of problem:

When configuring the following RewriteValve setting using 'CO' flag:

~~~
<subsystem xmlns="urn:jboss:domain:web:2.1" default-virtual-server="default-host" native="false">
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
    <virtual-server name="default-host" enable-welcome-root="true">
        <alias name="localhost"/>
        <alias name="example.com"/>
        <rewrite name="rule-1" pattern="^/(.*)$" substitution="-" flags="CO=foo:bar:.example.com:60:/test">
            <condition name="condition-0" test="%{REQUEST_URI}" pattern=".*/valvetest/.*"/>
        </rewrite>
    </virtual-server>
</subsystem>
~~~

JBossWeb RewriteValve throws the following IllegalArgumentException at JBoss EAP start-up:

~~~
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.web.host.default-host: org.jboss.msc.service.StartException in service jboss.web.host.default-host: java.lang.IllegalArgumentException: JBWEB007005: Error reading rewrite flags in line RewriteRule ^/(.*)$ - [CO=foo:bar:.example.com:100:/test] as CO=foo:bar:.example.com:100:/test
	at org.jboss.as.web.WebVirtualHostService.createRewriteValve(WebVirtualHostService.java:225)
	at org.jboss.as.web.WebVirtualHostService.start(WebVirtualHostService.java:88)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1913) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_67]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_67]
	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67]
Caused by: java.lang.IllegalArgumentException: JBWEB007005: Error reading rewrite flags in line RewriteRule ^/(.*)$ - [CO=foo:bar:.example.com:100:/test] as CO=foo:bar:.example.com:100:/test
	at org.jboss.web.rewrite.RewriteValve.parseRuleFlag(RewriteValve.java:718)
	at org.jboss.web.rewrite.RewriteValve.parse(RewriteValve.java:565)
	at org.jboss.web.rewrite.RewriteValve.parse(RewriteValve.java:208)
	at org.jboss.web.rewrite.RewriteValve.setConfiguration(RewriteValve.java:184)
	at org.jboss.as.web.WebVirtualHostService.createRewriteValve(WebVirtualHostService.java:223)
	... 6 more
~~~


### How reproducible:

Anytime when configuring the RewriteValve using 'CO' flag.


### Steps to Reproduce:
1. Configure the above <rewrite> config inside web subsystem in standalone.xml
2. Start EAP 6

### Actual results:

JBossWeb RewriteValve throws IllegalArgumentException at JBoss EAP start-up.


### Expected results:

JBoss EAP starts without IllegalArgumentException and the configured RewriteValve works.


### Additional info:

http://docs.jboss.org/jbossweb/7.0.x/rewrite.html says:

~~~
'cookie|CO=NAME:VAL:domain[:lifetime[:path]]' (set cookie)
This sets a cookie in the client's browser. The cookie's name is specified by NAME and the value is VAL. The domain field is the domain of the cookie, such as '.apache.org', the optional lifetime is the lifetime of the cookie in minutes, and the optional path is the path of the cookie
~~~

so 'CO' flag should work.

--- Additional comment from Masafumi Miura on 2014-10-29 18:36:26 JST ---

Comment 1 Rémy Maucherat 2014-10-29 10:10:57 UTC
r2536 in web. I don't see the point about 6.3 though, the workaround is trivial (use cookie=).

Comment 2 Kabir Khan 2014-11-18 08:31:02 UTC
Should be fixed by 7.5.0.Beta5 upgrade 1157438

Comment 3 Radim Hatlapatka 2014-11-27 16:34:43 UTC
Verified with EAP 6.4.0.DR11