Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7129083

CookieManager does not store cookies if url is read before setting cookie manager

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2
    • Resolution: Fixed
    • Affects Version/s: 6u29
    • Fix Version/s: 8
    • Component/s: core-libs
    • Labels:
    • Subcomponent:
    • Resolved In Build:
      b23
    • CPU:
      generic
    • OS:
      generic
    • Verification:
      Verified

      Backports

        Description

        SHORT SUMMARY: No cookies stored if cookieManager installed after caching of
        HttpClient

        INDICATORS: Subsequent requests to the same URL resource may fail to cache
        cookies if a cookiemanager is installed after first request is made.

        When caching is enabled, the JRE maintains
        @ a cache of httpClients objects for re-use (for identical URLs)
        @ .
        @ When the httpClient object is taken from the cache, no checks are made to
        see
        @ if a CookieManager has been installed since first constructed. I'm
        currently
        @ testing with a new fix verification binary and once I have review from Dev
        @ engineer, I'll make the binary available for internal testing.
        @ .
        @ One workaround is to set the following java system property flag to false :
        "
        @ -Dhttp.keepAlive=false"


        COUNTER INDICATORS:
        TRIGGERS: Multiple connections to the same URL resource while installing a
        cookieManager after the 1st connection.

        KNOWN WORKAROUND: Dhttp.keepAlive=false
        PRESENT SINCE: N/A
        HOW TO VERIFY: Testcase will be made available
        NOTES FOR SE: N/A
        REGRESSION: No.

          Activity

          Hide
          chegar Chris Hegarty added a comment -
          BT2:EVALUATION

          The system-wide CookieHandler is read and stored in the sun.net.www.http(s) HttpClient/HttpsClient instance. Since this HttpClient/HttpsClient instance is cached and reused (where possible) as part of the persistent/keep-alive connection implementation, it will not reflect any changes made to the default system-wide CookieHandler after it is created.

          It is unspecified what effect changing the system-wide CookieHandler will have on the HTTP Client, but is seems reasonable that the two parts of the HTTP Client implementation, HttpURLConnection and HttpClient, should use the same CookieHandler. HttpClient should use the instance specific (most recently retrieved system-wide CookieHandler) from HttpURLConnection.
          Show
          chegar Chris Hegarty added a comment - BT2:EVALUATION The system-wide CookieHandler is read and stored in the sun.net. www.http(s) HttpClient/HttpsClient instance. Since this HttpClient/HttpsClient instance is cached and reused (where possible) as part of the persistent/keep-alive connection implementation, it will not reflect any changes made to the default system-wide CookieHandler after it is created. It is unspecified what effect changing the system-wide CookieHandler will have on the HTTP Client, but is seems reasonable that the two parts of the HTTP Client implementation, HttpURLConnection and HttpClient, should use the same CookieHandler. HttpClient should use the instance specific (most recently retrieved system-wide CookieHandler) from HttpURLConnection.
          Hide
          jprtbugupd JPRT Bug Updates (Inactive) added a comment -
          BT2:EVALUATION

          JDK8 changeset:

          Changeset: e8a143213c65
          Author: chegar
          Date: 2012-01-16 18:05 +0000
          URL: http://hg.openjdk.java.net/jdk8/tl/jdk/rev/e8a143213c65

          7129083: CookieManager does not store cookies if url is read before setting cookie manager
          Reviewed-by: michaelm

          ! src/share/classes/sun/net/www/http/HttpClient.java
          ! src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java
          ! src/share/classes/sun/net/www/protocol/https/HttpsClient.java
          + test/sun/net/www/http/HttpClient/CookieHttpClientTest.java
          + test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHttpsClientTest.java
          Show
          jprtbugupd JPRT Bug Updates (Inactive) added a comment - BT2:EVALUATION JDK8 changeset: Changeset: e8a143213c65 Author: chegar Date: 2012-01-16 18:05 +0000 URL: http://hg.openjdk.java.net/jdk8/tl/jdk/rev/e8a143213c65 7129083: CookieManager does not store cookies if url is read before setting cookie manager Reviewed-by: michaelm ! src/share/classes/sun/net/www/http/HttpClient.java ! src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java ! src/share/classes/sun/net/www/protocol/https/HttpsClient.java + test/sun/net/www/http/HttpClient/CookieHttpClientTest.java + test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHttpsClientTest.java

            People

            • Assignee:
              chegar Chris Hegarty
              Reporter:
              shadowbug Shadow Bug
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Imported:
                Indexed: