]> source.dussan.org Git - jgit.git/commitdiff
Enable git wire protocol version 2 on server side per default 16/163216/6
authorDavid Ostrovsky <david@ostrovsky.org>
Tue, 19 May 2020 05:17:24 +0000 (07:17 +0200)
committerThomas Wolf <thomas.wolf@paranor.ch>
Sun, 3 Jan 2021 15:25:01 +0000 (16:25 +0100)
Bug: 563145
Change-Id: Id5030c2b85466da0a8ccf3d78ae78df16d64ffc5
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java
org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java

index 26a453be143a46510bf5c6001fbcde5bba7f304a..df093c185bee5519ceb63aa8905fb1eae6521d1d 100644 (file)
@@ -38,7 +38,6 @@ import org.eclipse.jgit.internal.JGitText;
 import org.eclipse.jgit.junit.TestRepository;
 import org.eclipse.jgit.junit.http.AccessEvent;
 import org.eclipse.jgit.junit.http.AppServer;
-import org.eclipse.jgit.lib.ConfigConstants;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.lib.RefUpdate;
@@ -50,7 +49,6 @@ import org.eclipse.jgit.transport.HttpTransport;
 import org.eclipse.jgit.transport.PacketLineIn;
 import org.eclipse.jgit.transport.PacketLineOut;
 import org.eclipse.jgit.transport.Transport;
-import org.eclipse.jgit.transport.TransferConfig;
 import org.eclipse.jgit.transport.URIish;
 import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
 import org.eclipse.jgit.transport.http.HttpConnection;
@@ -326,7 +324,22 @@ public class HttpClientTests extends AllFactoriesHttpTestCase {
        }
 
        @Test
-       public void testHttpClientWantsV2ButServerNotConfigured() throws Exception {
+       public void testHttpClientWantsV2AndServerNotConfigured() throws Exception {
+               String url = smartAuthNoneURI.toString() + "/info/refs?service=git-upload-pack";
+               HttpConnection c = HttpTransport.getConnectionFactory()
+                               .create(new URL(url));
+               c.setRequestMethod("GET");
+               c.setRequestProperty("Git-Protocol", "version=2");
+               assertEquals(200, c.getResponseCode());
+
+               PacketLineIn pckIn = new PacketLineIn(c.getInputStream());
+               assertThat(pckIn.readString(), is("version 2"));
+       }
+
+       @Test
+       public void testHttpServerConfiguredToV0() throws Exception {
+               remoteRepository.getRepository().getConfig().setInt(
+                       "protocol", null, "version", 0);
                String url = smartAuthNoneURI.toString() + "/info/refs?service=git-upload-pack";
                HttpConnection c = HttpTransport.getConnectionFactory()
                                .create(new URL(url));
@@ -344,11 +357,6 @@ public class HttpClientTests extends AllFactoriesHttpTestCase {
 
        @Test
        public void testV2HttpFirstResponse() throws Exception {
-               remoteRepository.getRepository().getConfig().setString(
-                               ConfigConstants.CONFIG_PROTOCOL_SECTION, null,
-                               ConfigConstants.CONFIG_KEY_VERSION,
-                               TransferConfig.ProtocolVersion.V2.version());
-
                String url = smartAuthNoneURI.toString() + "/info/refs?service=git-upload-pack";
                HttpConnection c = HttpTransport.getConnectionFactory()
                                .create(new URL(url));
@@ -368,11 +376,6 @@ public class HttpClientTests extends AllFactoriesHttpTestCase {
 
        @Test
        public void testV2HttpSubsequentResponse() throws Exception {
-               remoteRepository.getRepository().getConfig().setString(
-                               ConfigConstants.CONFIG_PROTOCOL_SECTION, null,
-                               ConfigConstants.CONFIG_KEY_VERSION,
-                               TransferConfig.ProtocolVersion.V2.version());
-
                String url = smartAuthNoneURI.toString() + "/git-upload-pack";
                HttpConnection c = HttpTransport.getConnectionFactory()
                                .create(new URL(url));
index f3e56f85d35480e08f797709d8bfd22ce97f5c0e..f2c7bc63c41d6bb8543877f1d97d38a2f92ac729 100644 (file)
@@ -1333,6 +1333,8 @@ public class SmartClientSmartServerTest extends AllProtocolsHttpTestCase {
                                        new DfsRepositoryDescription(repoName));
                        final TestRepository<Repository> repo = new TestRepository<>(
                                        badRefsRepo);
+                       badRefsRepo.getConfig().setInt("protocol", null, "version",
+                                       enableProtocolV2 ? 2 : 0);
 
                        ServletContextHandler app = noRefServer.addContext("/git");
                        GitServlet gs = new GitServlet();
@@ -1362,7 +1364,8 @@ public class SmartClientSmartServerTest extends AllProtocolsHttpTestCase {
                                                Collections.<ObjectId> emptySet());
                                fail("Successfully served ref with value " + c.getRef(master));
                        } catch (TransportException err) {
-                               assertEquals("Internal server error", err.getMessage());
+                               assertTrue("Unexpected exception message " + err.getMessage(),
+                                               err.getMessage().contains("Internal server error"));
                        }
                } finally {
                        noRefServer.tearDown();
index afe4d3fd9fb887f1aec733669df61316797b3460..5205ca9a9a270e55fbfb7e94908b08f772cc3c88 100644 (file)
@@ -723,7 +723,8 @@ public class UploadPack {
        }
 
        private boolean useProtocolV2() {
-               return ProtocolVersion.V2.equals(transferConfig.protocolVersion)
+               return (transferConfig.protocolVersion == null
+                       || ProtocolVersion.V2.equals(transferConfig.protocolVersion))
                                && clientRequestedV2;
        }