Eli Bishop created HTTPCLIENT-1225:
--------------------------------------

             Summary: A cacheable no-body response causes a NPE when that cache 
entry is hit
                 Key: HTTPCLIENT-1225
                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1225
             Project: HttpComponents HttpClient
          Issue Type: Bug
          Components: Cache
    Affects Versions: 4.2.1
            Reporter: Eli Bishop


The fix for HTTPCLIENT-1202 removed null checking on the resource field of 
HttpCacheEntry. Unfortunately, CacheValidityPolicy expects the resource to be 
non-null, so you can get an NPE on the next cache hit on that entry:
{code}
java.lang.NullPointerException
  at 
org.apache.http.impl.client.cache.CacheValidityPolicy.contentLengthHeaderMatchesActualLength(CacheValidityPolicy.java:219)
  at 
org.apache.http.impl.client.cache.CachedResponseSuitabilityChecker.canCachedResponseBeUsed(CachedResponseSuitabilityChecker.java:139)
  at 
org.apache.http.impl.client.cache.CachingHttpClient.handleCacheHit(CachingHttpClient.java:446)
  at 
org.apache.http.impl.client.cache.CachingHttpClient.execute(CachingHttpClient.java:437)
  at 
org.apache.http.impl.client.cache.CachingHttpClient.execute(CachingHttpClient.java:353)
{code}

As far as I can tell, the resource will only be null if the response status is 
one that can never have a response body: 204, 205, or 304. There's other 
special-case logic for 304 which seems to avoid hitting this code path; but if 
a server returns a 204 or 205 with a Cache-Control header (unusual, but I saw 
it happen), you have a problem.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to