Merge "Fix HttpClientConnection leaking temporary buffer files"
This commit is contained in:
commit
c29363046d
|
@ -226,17 +226,25 @@ public String getResponseMessage() throws IOException {
|
|||
}
|
||||
|
||||
private void execute() throws IOException, ClientProtocolException {
|
||||
if (resp == null)
|
||||
if (entity != null) {
|
||||
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);
|
||||
entity.getBuffer().close();
|
||||
} finally {
|
||||
entity.close();
|
||||
entity = null;
|
||||
} else
|
||||
resp = getClient().execute(req);
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, List<String>> getHeaderFields() {
|
||||
|
|
|
@ -55,7 +55,8 @@
|
|||
*
|
||||
* @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 boolean isStreaming() {
|
|||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue