diff options
author | Dave Borowitz <dborowitz@google.com> | 2015-07-01 11:24:25 -0700 |
---|---|---|
committer | Dave Borowitz <dborowitz@google.com> | 2015-07-09 11:41:24 -0700 |
commit | 6e4e34bb9e0620f00a820457705a0df60a1bd9c2 (patch) | |
tree | fbd8e6094d719d47036d12bb024336224cef34e3 /org.eclipse.jgit/src/org/eclipse | |
parent | a643aaaa4a19bf92f33ac57a29e59db9fb3e1a1f (diff) | |
download | jgit-6e4e34bb9e0620f00a820457705a0df60a1bd9c2.tar.gz jgit-6e4e34bb9e0620f00a820457705a0df60a1bd9c2.zip |
Report PackProtocolExceptions to client during receive-pack
We have done this since forever with the "wanted old new ref" error,
so let's do it for other such errors thrown in the same block as well.
Change-Id: Ib3b1c7f05e31a5b3e40e85eb07b16736920a033b
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/errors/PackProtocolException.java | 8 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java | 91 |
2 files changed, 52 insertions, 47 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/errors/PackProtocolException.java b/org.eclipse.jgit/src/org/eclipse/jgit/errors/PackProtocolException.java index 5503bd19e2..44bc16492d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/errors/PackProtocolException.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/errors/PackProtocolException.java @@ -60,7 +60,7 @@ public class PackProtocolException extends TransportException { * @param uri * URI used for transport * @param s - * message + * message, which may be shown to an end-user. */ public PackProtocolException(final URIish uri, final String s) { super(uri + ": " + s); //$NON-NLS-1$ @@ -73,7 +73,7 @@ public class PackProtocolException extends TransportException { * @param uri * URI used for transport * @param s - * message + * message, which may be shown to an end-user. * @param cause * root cause exception */ @@ -86,7 +86,7 @@ public class PackProtocolException extends TransportException { * Constructs an PackProtocolException with the specified detail message. * * @param s - * message + * message, which may be shown to an end-user. */ public PackProtocolException(final String s) { super(s); @@ -96,7 +96,7 @@ public class PackProtocolException extends TransportException { * Constructs an PackProtocolException with the specified detail message. * * @param s - * message + * message, which may be shown to an end-user. * @param cause * root cause exception */ 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 36d335503a..518a3178f6 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java @@ -1065,56 +1065,61 @@ public abstract class BaseReceivePack { protected void recvCommands() throws IOException { PushCertificateParser certParser = getPushCertificateParser(); FirstLine firstLine = null; - for (;;) { - String line; - try { - line = pckIn.readString(); - } catch (EOFException eof) { - if (commands.isEmpty()) - return; - throw eof; - } - if (line == PacketLineIn.END) { - break; - } + try { + for (;;) { + String line; + try { + line = pckIn.readString(); + } catch (EOFException eof) { + if (commands.isEmpty()) + return; + throw eof; + } + if (line == PacketLineIn.END) { + break; + } - if (line.length() >= 48 && line.startsWith("shallow ")) { //$NON-NLS-1$ - clientShallowCommits.add(ObjectId.fromString(line.substring(8, 48))); - continue; - } + if (line.length() >= 48 && line.startsWith("shallow ")) { //$NON-NLS-1$ + clientShallowCommits.add(ObjectId.fromString(line.substring(8, 48))); + continue; + } - if (firstLine == null) { - firstLine = new FirstLine(line); - enabledCapabilities = firstLine.getCapabilities(); - line = firstLine.getLine(); + if (firstLine == null) { + firstLine = new FirstLine(line); + enabledCapabilities = firstLine.getCapabilities(); + line = firstLine.getLine(); - if (line.equals(GitProtocolConstants.OPTION_PUSH_CERT)) { - certParser.receiveHeader(pckIn, !isBiDirectionalPipe()); - continue; + if (line.equals(GitProtocolConstants.OPTION_PUSH_CERT)) { + certParser.receiveHeader(pckIn, !isBiDirectionalPipe()); + continue; + } } - } - if (line.equals(PushCertificateParser.BEGIN_SIGNATURE)) { - certParser.receiveSignature(pckIn); - continue; - } + if (line.equals(PushCertificateParser.BEGIN_SIGNATURE)) { + certParser.receiveSignature(pckIn); + continue; + } - ReceiveCommand cmd; - try { - cmd = parseCommand(line); - } catch (PackProtocolException e) { - sendError(e.getMessage()); - throw e; - } - if (cmd.getRefName().equals(Constants.HEAD)) { - cmd.setResult(Result.REJECTED_CURRENT_BRANCH); - } else { - cmd.setRef(refs.get(cmd.getRefName())); - } - commands.add(cmd); - if (certParser.enabled()) { - certParser.addCommand(cmd); + ReceiveCommand cmd; + try { + cmd = parseCommand(line); + } catch (PackProtocolException e) { + sendError(e.getMessage()); + throw e; + } + if (cmd.getRefName().equals(Constants.HEAD)) { + cmd.setResult(Result.REJECTED_CURRENT_BRANCH); + } else { + cmd.setRef(refs.get(cmd.getRefName())); + } + commands.add(cmd); + if (certParser.enabled()) { + certParser.addCommand(cmd); + } } + } catch (PackProtocolException e) { + sendError(e.getMessage()); + throw e; } } |