]> source.dussan.org Git - jgit.git/commit
UploadPack: Don't buffer ls-refs output 09/121509/2
authorJonathan Nieder <jrn@google.com>
Fri, 20 Apr 2018 23:34:15 +0000 (16:34 -0700)
committerJonathan Nieder <jrn@google.com>
Mon, 23 Apr 2018 17:26:51 +0000 (10:26 -0700)
commita99bbf162a6e949692a1bc883be888dbeb10ab8d
tree9e86de269567319732accec3da00f1b1457c7252
parent332bc611249d21f9b604f2c0207bf0bdfbfc3a78
UploadPack: Don't buffer ls-refs output

Once we have read the user's entire command, there is no more need to
buffer our response --- even the strictest servlet engine allows
writing output once the input has been consumed.  Noticed when the
analogous code in the "fetch" command (introduced in a later patch)
overflowed its buffer:

 java.lang.OutOfMemoryError
        at java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123)
 [...]
        at org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:1905)
        at org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:1741)
        at org.eclipse.jgit.transport.UploadPack.fetchV2(UploadPack.java:1001)
        at org.eclipse.jgit.transport.UploadPack.serviceV2(UploadPack.java:1030)
        at org.eclipse.jgit.transport.UploadPack.upload(UploadPack.java:726)
        at org.eclipse.jgit.http.server.UploadPackServlet.doPost(UploadPackServlet.java:195)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

Change-Id: I33df56f1cb1c6c2c25ee95426cb7ad665134ac6b
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java