diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java index 6768387e6..551214001 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java @@ -1336,13 +1336,18 @@ class SmartHttpFetchConnection extends BasePackFetchConnection { } @Override - protected void doFetch(final ProgressMonitor monitor, - final Collection want, final Set have, - final OutputStream outputStream) throws TransportException { - try { - svc = new MultiRequestService(SVC_UPLOAD_PACK); - init(svc.getInputStream(), svc.getOutputStream()); + protected void doFetch(ProgressMonitor monitor, Collection want, + Set have, OutputStream outputStream) + throws TransportException { + svc = new MultiRequestService(SVC_UPLOAD_PACK); + try (InputStream svcIn = svc.getInputStream(); + OutputStream svcOut = svc.getOutputStream()) { + init(svcIn, svcOut); super.doFetch(monitor, want, have, outputStream); + } catch (TransportException e) { + throw e; + } catch (IOException e) { + throw new TransportException(e.getMessage(), e); } finally { svc = null; } @@ -1366,12 +1371,19 @@ class SmartHttpPushConnection extends BasePackPushConnection { } @Override - protected void doPush(final ProgressMonitor monitor, - final Map refUpdates, + protected void doPush(ProgressMonitor monitor, + Map refUpdates, OutputStream outputStream) throws TransportException { - final Service svc = new MultiRequestService(SVC_RECEIVE_PACK); - init(svc.getInputStream(), svc.getOutputStream()); - super.doPush(monitor, refUpdates, outputStream); + Service svc = new MultiRequestService(SVC_RECEIVE_PACK); + try (InputStream svcIn = svc.getInputStream(); + OutputStream svcOut = svc.getOutputStream()) { + init(svcIn, svcOut); + super.doPush(monitor, refUpdates, outputStream); + } catch (TransportException e) { + throw e; + } catch (IOException e) { + throw new TransportException(e.getMessage(), e); + } } }