summaryrefslogtreecommitdiffstats
path: root/src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java')
-rw-r--r--src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java b/src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
index 0781e05..717acf0 100644
--- a/src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
+++ b/src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
@@ -30,7 +30,10 @@
package org.apache.http.impl.conn.tsccm;
+import dalvik.system.BlockGuard;
+
import java.io.IOException;
+import java.net.Socket;
import java.util.concurrent.TimeUnit;
import org.apache.commons.logging.Log;
@@ -173,6 +176,18 @@ public class ThreadSafeClientConnManager implements ClientConnectionManager {
}
BasicPoolEntry entry = poolRequest.getPoolEntry(timeout, tunit);
+ // BEGIN android-changed
+ // When using a recycled Socket, we need to re-tag it with any
+ // updated statistics options.
+ try {
+ final Socket socket = entry.getConnection().getSocket();
+ if (socket != null) {
+ BlockGuard.tagSocketFd(socket.getFileDescriptor$());
+ }
+ } catch (IOException iox) {
+ log.debug("Problem tagging socket.", iox);
+ }
+ // END android-changed
return new BasicPooledConnAdapter(ThreadSafeClientConnManager.this, entry);
}
@@ -196,6 +211,16 @@ public class ThreadSafeClientConnManager implements ClientConnectionManager {
}
try {
+ // BEGIN android-changed
+ // When recycling a Socket, we un-tag it to avoid collecting
+ // statistics from future users.
+ final BasicPoolEntry entry = (BasicPoolEntry) hca.getPoolEntry();
+ final Socket socket = entry.getConnection().getSocket();
+ if (socket != null) {
+ BlockGuard.untagSocketFd(socket.getFileDescriptor$());
+ }
+ // END android-changed
+
// make sure that the response has been read completely
if (hca.isOpen() && !hca.isMarkedReusable()) {
if (log.isDebugEnabled()) {