aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse
diff options
context:
space:
mode:
authorDave Borowitz <dborowitz@google.com>2015-07-01 11:24:25 -0700
committerDave Borowitz <dborowitz@google.com>2015-07-09 11:41:24 -0700
commit6e4e34bb9e0620f00a820457705a0df60a1bd9c2 (patch)
treefbd8e6094d719d47036d12bb024336224cef34e3 /org.eclipse.jgit/src/org/eclipse
parenta643aaaa4a19bf92f33ac57a29e59db9fb3e1a1f (diff)
downloadjgit-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.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java91
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;
}
}