aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV2Parser.java
diff options
context:
space:
mode:
authorJonathan Nieder <jrn@google.com>2018-12-18 19:44:39 -0800
committerMatthias Sohn <matthias.sohn@sap.com>2018-12-26 00:39:44 +0100
commit1638a2fce8e2a71f4cdfdee278e0cb9699860add (patch)
tree57c71c694c23ab1d3d35c3e743f17263fb539ca7 /org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV2Parser.java
parent25deb304600242e4bffda53b9e41d46bcb301414 (diff)
downloadjgit-1638a2fce8e2a71f4cdfdee278e0cb9699860add.tar.gz
jgit-1638a2fce8e2a71f4cdfdee278e0cb9699860add.zip
UploadPack: Defer want-ref resolution to after parsing
ProtocolV2Parser explains: // TODO(ifrade): This validation should be done after the // protocol parsing. It is not a protocol problem asking for an // unexisting ref and we wouldn't need the ref database here. Do so. This way all ref database accesses are in one place, in the UploadPack class. No user-visible change intended --- this is just to make the code easier to manipulate. Change-Id: I68e87dff7b9a63ccc169bd0836e8e8baaf5d1048 Signed-off-by: Jonathan Nieder <jrn@google.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV2Parser.java')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV2Parser.java32
1 files changed, 4 insertions, 28 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV2Parser.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV2Parser.java
index eae2c6edb9..2cc50a7f38 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV2Parser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ProtocolV2Parser.java
@@ -57,8 +57,6 @@ import java.text.MessageFormat;
import org.eclipse.jgit.errors.PackProtocolException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.Ref;
-import org.eclipse.jgit.lib.RefDatabase;
/**
* Parse the incoming git protocol lines from the wire and translate them into a
@@ -79,24 +77,17 @@ final class ProtocolV2Parser {
* Parse the incoming fetch request arguments from the wire. The caller must
* be sure that what is comings is a fetch request before coming here.
*
- * This operation requires the reference database to validate incoming
- * references.
- *
* @param pckIn
* incoming lines
- * @param refdb
- * reference database (to validate that received references exist
- * and point to valid objects)
* @return A FetchV2Request populated with information received from the
* wire.
* @throws PackProtocolException
* incompatible options, wrong type of arguments or other issues
* where the request breaks the protocol.
* @throws IOException
- * an IO error prevented reading the incoming message or
- * accessing the ref database.
+ * an IO error prevented reading the incoming message.
*/
- FetchV2Request parseFetchRequest(PacketLineIn pckIn, RefDatabase refdb)
+ FetchV2Request parseFetchRequest(PacketLineIn pckIn)
throws PackProtocolException, IOException {
FetchV2Request.Builder reqBuilder = FetchV2Request.builder();
@@ -116,25 +107,10 @@ final class ProtocolV2Parser {
boolean filterReceived = false;
while ((line = pckIn.readString()) != PacketLineIn.END) {
if (line.startsWith("want ")) { //$NON-NLS-1$
- reqBuilder.addWantsIds(ObjectId.fromString(line.substring(5)));
+ reqBuilder.addWantsId(ObjectId.fromString(line.substring(5)));
} else if (transferConfig.isAllowRefInWant()
&& line.startsWith(OPTION_WANT_REF + " ")) { //$NON-NLS-1$
- String refName = line.substring(OPTION_WANT_REF.length() + 1);
- // TODO(ifrade): This validation should be done after the
- // protocol parsing. It is not a protocol problem asking for an
- // unexisting ref and we wouldn't need the ref database here
- Ref ref = refdb.exactRef(refName);
- if (ref == null) {
- throw new PackProtocolException(MessageFormat
- .format(JGitText.get().invalidRefName, refName));
- }
- ObjectId oid = ref.getObjectId();
- if (oid == null) {
- throw new PackProtocolException(MessageFormat
- .format(JGitText.get().invalidRefName, refName));
- }
- reqBuilder.addWantedRef(refName, oid);
- reqBuilder.addWantsIds(oid);
+ reqBuilder.addWantedRef(line.substring(OPTION_WANT_REF.length() + 1));
} else if (line.startsWith("have ")) { //$NON-NLS-1$
reqBuilder.addPeerHas(ObjectId.fromString(line.substring(5)));
} else if (line.equals("done")) { //$NON-NLS-1$