summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.http.apache/src/org/eclipse
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.http.apache/src/org/eclipse')
-rw-r--r--org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java30
-rw-r--r--org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java15
2 files changed, 33 insertions, 12 deletions
diff --git a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java
index a0eeef89fc..2d9d17a890 100644
--- a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java
+++ b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java
@@ -226,17 +226,25 @@ public class HttpClientConnection implements HttpConnection {
}
private void execute() throws IOException, ClientProtocolException {
- if (resp == null)
- if (entity != null) {
- if (req instanceof HttpEntityEnclosingRequest) {
- HttpEntityEnclosingRequest eReq = (HttpEntityEnclosingRequest) req;
- eReq.setEntity(entity);
- }
- resp = getClient().execute(req);
- entity.getBuffer().close();
- entity = null;
- } else
- resp = getClient().execute(req);
+ if (resp != null) {
+ return;
+ }
+
+ if (entity == null) {
+ resp = getClient().execute(req);
+ return;
+ }
+
+ try {
+ if (req instanceof HttpEntityEnclosingRequest) {
+ HttpEntityEnclosingRequest eReq = (HttpEntityEnclosingRequest) req;
+ eReq.setEntity(entity);
+ }
+ resp = getClient().execute(req);
+ } finally {
+ entity.close();
+ entity = null;
+ }
}
public Map<String, List<String>> getHeaderFields() {
diff --git a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java
index 1ff168e237..377e5ca572 100644
--- a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java
+++ b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/TemporaryBufferEntity.java
@@ -55,7 +55,8 @@ import org.eclipse.jgit.util.TemporaryBuffer;
*
* @since 3.3
*/
-public class TemporaryBufferEntity extends AbstractHttpEntity {
+public class TemporaryBufferEntity extends AbstractHttpEntity
+ implements AutoCloseable {
private TemporaryBuffer buffer;
private Integer contentLength;
@@ -106,4 +107,16 @@ public class TemporaryBufferEntity extends AbstractHttpEntity {
public void setContentLength(int contentLength) {
this.contentLength = new Integer(contentLength);
}
+
+ /**
+ * Close destroys the associated buffer used to buffer the entity
+ *
+ * @since 4.5
+ */
+ @Override
+ public void close() {
+ if (buffer != null) {
+ buffer.destroy();
+ }
+ }
}