You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2016/05/29 09:52:00 UTC

svn commit: r1745982 - in /axis/axis2/java/core/trunk/modules/transport: http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java

Author: veithen
Date: Sun May 29 09:52:00 2016
New Revision: 1745982

URL: http://svn.apache.org/viewvc?rev=1745982&view=rev
Log:
Revert r1527429 (AXIS2-5608).

Reasons:
* That code change is responsible for the regression described in AXIS2-5772.
* It has zero test coverage.
* If multiple Set-Cookie headers are present, the code concatenates their values to a single string with ';' used as the separator. That's obviously incorrect.

Modified:
    axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
    axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java

Modified: axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java?rev=1745982&r1=1745981&r2=1745982&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java Sun May 29 09:52:00 2016
@@ -413,28 +413,19 @@ public class HTTPSenderImpl extends HTTP
         // Process old style headers first
         Header[] cookieHeaders = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE);
         String customCoookiId = (String) msgContext.getProperty(Constants.CUSTOM_COOKIE_ID);
-
-        // The following only check for JSESSIONID / axis_session / custom-cookie-id from the Set-Cookie header.
-        // But it will ignore if there are other Set-Cookie values, which may cause issues at client level,
-        // when invoking via a load-balancer, which expect some specific Cookie value.
-        // So the correct fix is to add whatever the value(s) in the Set-Cookie header as session cookie.
-
-//        for (int i = 0; i < cookieHeaders.length; i++) {
-//            HeaderElement[] elements = cookieHeaders[i].getElements();
-//            for (int e = 0; e < elements.length; e++) {
-//                HeaderElement element = elements[e];
-//                if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())
-//                        || Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
-//                    sessionCookie = processCookieHeader(element);
-//                }
-//                if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
-//                    sessionCookie = processCookieHeader(element);
-//                }
-//            }
-//        }
-
-        sessionCookie = processSetCookieHeaders(cookieHeaders);
-
+        for (int i = 0; i < cookieHeaders.length; i++) {
+            HeaderElement[] elements = cookieHeaders[i].getElements();
+            for (int e = 0; e < elements.length; e++) {
+                HeaderElement element = elements[e];
+                if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())
+                        || Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
+                    sessionCookie = processCookieHeader(element);
+                }
+                if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
+                    sessionCookie = processCookieHeader(element);
+                }
+            }
+        }
         // Overwrite old style cookies with new style ones if present
         cookieHeaders = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE2);
         for (int i = 0; i < cookieHeaders.length; i++) {
@@ -451,7 +442,7 @@ public class HTTPSenderImpl extends HTTP
             }
         }
 
-        if (sessionCookie != null && !sessionCookie.equals("")) {
+        if (sessionCookie != null) {
             msgContext.getServiceContext().setProperty(HTTPConstants.COOKIE_STRING, sessionCookie);
         }
     }
@@ -465,25 +456,6 @@ public class HTTPSenderImpl extends HTTP
         }
         return cookie;
     }
-
-
-    private String processSetCookieHeaders(Header[] headers) {
-        String cookie = "";
-        for (Header header : headers) {
-            if (!cookie.equals("")) {
-                cookie = cookie + ";";
-            }
-            HeaderElement[] elements = header.getElements();
-            for (HeaderElement element : elements) {
-                cookie = cookie + element.getName() + "=" + element.getValue();
-                NameValuePair[] parameters = element.getParameters();
-                for (NameValuePair parameter : parameters) {
-                    cookie = cookie + "; " + parameter.getName() + "=" + parameter.getValue();
-                }
-            }
-        }
-        return cookie;
-    }
 
     protected void processResponse(HttpMethodBase httpMethod, MessageContext msgContext)
             throws IOException {

Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java?rev=1745982&r1=1745981&r2=1745982&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java Sun May 29 09:52:00 2016
@@ -433,28 +433,19 @@ public class HTTPSenderImpl extends HTTP
         // Process old style headers first
         Header[] cookieHeaders = response.getHeaders(HTTPConstants.HEADER_SET_COOKIE);
         String customCoookiId = (String) msgContext.getProperty(Constants.CUSTOM_COOKIE_ID);
-
-        // The following only check for JSESSIONID / axis_session / custom-cookie-id from the Set-Cookie header.
-        // But it will ignore if there are other Set-Cookie values, which may cause issues at client level,
-        // when invoking via a load-balancer, which expect some specific Cookie value.
-        // So the correct fix is to add whatever the value(s) in the Set-Cookie header as session cookie.
-
-//        for (int i = 0; i < cookieHeaders.length; i++) {
-//            HeaderElement[] elements = cookieHeaders[i].getElements();
-//            for (int e = 0; e < elements.length; e++) {
-//                HeaderElement element = elements[e];
-//                if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())
-//                    || Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
-//                    sessionCookie = processCookieHeader(element);
-//                }
-//                if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
-//                    sessionCookie = processCookieHeader(element);
-//                }
-//            }
-//        }
-
-        sessionCookie = processSetCookieHeaders(cookieHeaders);
-
+        for (int i = 0; i < cookieHeaders.length; i++) {
+            HeaderElement[] elements = cookieHeaders[i].getElements();
+            for (int e = 0; e < elements.length; e++) {
+                HeaderElement element = elements[e];
+                if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())
+                    || Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
+                    sessionCookie = processCookieHeader(element);
+                }
+                if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
+                    sessionCookie = processCookieHeader(element);
+                }
+            }
+        }
         // Overwrite old style cookies with new style ones if present
         cookieHeaders = response.getHeaders(HTTPConstants.HEADER_SET_COOKIE2);
         for (int i = 0; i < cookieHeaders.length; i++) {
@@ -471,7 +462,7 @@ public class HTTPSenderImpl extends HTTP
             }
         }
 
-        if (sessionCookie != null  && !sessionCookie.equals("")) {
+        if (sessionCookie != null) {
             msgContext.getServiceContext().setProperty(HTTPConstants.COOKIE_STRING, sessionCookie);
         }
     }
@@ -485,24 +476,6 @@ public class HTTPSenderImpl extends HTTP
         }
         return cookie;
     }
-
-    private String processSetCookieHeaders(Header[] headers) {
-        String cookie = "";
-        for (Header header : headers) {
-            if (!cookie.equals("")) {
-                cookie = cookie + ";";
-            }
-            HeaderElement[] elements = header.getElements();
-            for (HeaderElement element : elements) {
-                cookie = cookie + element.getName() + "=" + element.getValue();
-                NameValuePair[] parameters = element.getParameters();
-                for (NameValuePair parameter : parameters) {
-                    cookie = cookie + "; " + parameter.getName() + "=" + parameter.getValue();
-                }
-            }
-        }
-        return cookie;
-    }
 
     protected void processResponse(HttpResponse response, MessageContext msgContext)
             throws IOException {