History log of /external/okhttp/okhttp/src/main/java/com/squareup/okhttp/ConnectionPool.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6257f0c1c5e6e94d446051f856207782d7188c43 01-Dec-2014 Neil Fuller <nfuller@google.com> Fixes to ConnectionPool noticed during upstream review

Suggested by Jake Wharton. Minor documentation fixes, plus:

The pool should explicitly re-enter DRAINING state if a
connection is added to a drained pool. This state change was
missing.

The pool was implicitly in DRAINING while the pool still had
connections in it, so the pool would still drain.
However, adding back connections to a pool that was DRAINING
but still incorrectly marked as DRAINED would cause a
new runnable to be scheduled. This would cause the queue of
scheduled items to grow unnecesarily and the clean up thread
would continue to operate longer than necessary.

Bug: 18369687
Change-Id: I2228b33f8240890d3736da1a21c8cc852fceec25
/external/okhttp/okhttp/src/main/java/com/squareup/okhttp/ConnectionPool.java
f3bcd0c7f0741b277b5d58f294df6201dafd45e8 19-Nov-2014 Neil Fuller <nfuller@google.com> Fix for a socket leak in OkHttp on Android

When the preferred Android network changes from
cell -> wifi or wifi -> cell the HTTP connection
pool in use is abandoned to avoid reuse of
connections on the old network. This was added
in commit 8bced3e.

The design for the connection pool was such that
continuous use of the connection pool was required to
clean up idle / expired connections. If a connection
pool becomes idle (as when it is dereferenced on a
network change) it is possible for some connections
to remain in the pool indefinitely.

After the preferred network change, because the old
connection pool was no longer referenced the pool
would be garbage collected and Android's "Strict Mode"
would complain about sockets not being closed.

The only existing way to avoid this was to call
"evictAll()", which would have had issues when a
large number of connections were returned to the pool
after evictAll() was called. It also wouldn't work
for SPDY connections which are shared but not reference
counted, which makes knowing whether it is safe to
close them difficult. SPDY is not enabled on Android
by default and so that may have been safe to ignore.

This fix tries to keep the existing cleaning behavior
intact to avoid introducing new bugs or new thread
behavior that might impact battery life. It adds a
new mode to the pool for "draining", which handles
cleaning up any existing entries in the pool and any
added after the pool has been placed into draining
mode.

The drainModeRunnable introduced serves two purposes:

1) While scheduled / executing, it pins the connection
pool in memory to avoid it being garbage collected.
2) It continues to close connections (safely) until the
pool is empty.

If a connection is then added back to the pool the
drainModeRunnable is restarted.

Bug: 18369687
(cherry picked from commit ff345b6c0ffcc691e4c3c594f8a222cf81bb325c)

Change-Id: I4e9e530f8e7acedf4b9a806237c8769a10671feb
/external/okhttp/okhttp/src/main/java/com/squareup/okhttp/ConnectionPool.java
78092f38ebd93018ead53a87b53118dc829cbb8a 01-Apr-2014 Neil Fuller <nfuller@google.com> Pull upstream fixes from OkHttp

This synced to commit b21b40e480cdcd09b618e399a349556de509d88d
/ master / 1st April 2014.

Notably this contains a fix for apps that bundle an older
copy of OkHttp or which call android.net.http.HttpResponseCache.get()
or android.net.http.HttpResponseCache.put().

See for details:
https://github.com/square/okhttp/pull/672

Change-Id: I90acd9f9946014e834ea203dbc62cdcf7bc80cc6
/external/okhttp/okhttp/src/main/java/com/squareup/okhttp/ConnectionPool.java
3c938a3f6b61ce5e2dba0d039b03fe73b89fd26c 19-Feb-2014 Neil Fuller <nfuller@google.com> Update okhttp to a more recent commit.

Updating to upstream commit : 7b106923e078ac2435e8c8ce9d615f9903106ed8
/ 7th Mar 2014 / main branch.

The following changes were made to Android-only code:
1) HttpsHandler has been changed to deal with the fix for:
https://github.com/square/okhttp/issues/184 (commit 5d7fdba).
2) Platform.java changed to accomodate changes in okhttp Platform
method signatures.
3) .mk file updates to reflect src directory changes.

The following changes were made to OkHttp code:
1) Removal of org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
annotation from okio/src/main/java/okio/DeflaterSink.java

Change-Id: I644a883482ac7ee7d029785f110a2ca00762419b
/external/okhttp/okhttp/src/main/java/com/squareup/okhttp/ConnectionPool.java
166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3 04-Nov-2013 Narayan Kamath <narayan@google.com> Update okhttp.

Updated to commit 19a21936ffbb5e358799af9e4fb7306af45f38.

This also moves src/ to okhttp/src/ to stay faithful
to the original okhttp tree & to make it easier to pull
updates.

Change-Id: Ia1971823f31e5c6957d831f368e3a1fcce38d44d
/external/okhttp/okhttp/src/main/java/com/squareup/okhttp/ConnectionPool.java