From 3100662a5acb0f7c21035c69841df0e645c62466 Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Mon, 29 Aug 2016 12:11:11 -0700 Subject: [PATCH] ReceivePack: integrate push option parsing into recvCommands This allows the same try/catch to handle parsing the command list, push certificate and push options. Any errors will be caught and handled by the same catch block, as the client is in the same state. Change-Id: I13a66f9100e2dc8ca8f72cd701a5bd44d093ec84 --- .../jgit/transport/BaseReceivePack.java | 13 ++++++++++++ .../eclipse/jgit/transport/ReceivePack.java | 21 +++++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java index 5a61edd6a..0724eac70 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java @@ -1171,6 +1171,9 @@ protected void recvCommands() throws IOException { } } pushCert = certParser.build(); + if (hasCommands()) { + readPostCommands(pckIn); + } } catch (PackProtocolException e) { if (sideBand) { try { @@ -1217,6 +1220,16 @@ static ReceiveCommand parseCommand(String line) throws PackProtocolException { return new ReceiveCommand(oldId, newId, name); } + /** + * @param in + * request stream. + * @throws IOException + * request line cannot be read. + */ + void readPostCommands(PacketLineIn in) throws IOException { + // Do nothing by default. + } + /** Enable capabilities based on a previously read capabilities line. */ protected void enableCapabilities() { sideBand = isCapabilityEnabled(CAPABILITY_SIDE_BAND_64K); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java index 2e3d74a14..cc20d50a7 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java @@ -220,14 +220,17 @@ protected void enableCapabilities() { super.enableCapabilities(); } - private void readPushOptions() throws IOException { - pushOptions = new ArrayList<>(4); - for (;;) { - String option = pckIn.readString(); - if (option == PacketLineIn.END) { - break; + @Override + void readPostCommands(PacketLineIn in) throws IOException { + if (usePushOptions) { + pushOptions = new ArrayList<>(4); + for (;;) { + String option = in.readString(); + if (option == PacketLineIn.END) { + break; + } + pushOptions.add(option); } - pushOptions.add(option); } } @@ -241,10 +244,6 @@ private void service() throws IOException { return; recvCommands(); if (hasCommands()) { - if (usePushOptions) { - readPushOptions(); - } - Throwable unpackError = null; if (needPack()) { try {