TransferConfig: Move reading advertisesid setting into TransferConfig

The config setting to enable advertising the session-id capability is
currently read in the ReceivePack class. This change moves it to a
common location in the TransferConfig class so that it can be reused
in other places like UploadPack. TransferConfig is also a more logical
place for the setting as it resides in the `transfer` config section.

Set the transfer.advertisesid setting to true to send the session-id
capability to the client.

Change-Id: If68ecb5e68b59f5c452a7992d02e3688b0a86747
Signed-off-by: Josh Brown <sjoshbrown@google.com>
This commit is contained in:
Josh Brown 2022-11-01 19:00:07 +00:00
parent e8068188f1
commit 7b0a71a5e9
3 changed files with 30 additions and 7 deletions

View File

@ -11,6 +11,8 @@
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
import org.junit.Test; import org.junit.Test;
@ -66,4 +68,19 @@ public void testParseProtocolInvalid() {
TransferConfig tc = new TransferConfig(rc); TransferConfig tc = new TransferConfig(rc);
assertNull(tc.protocolVersion); assertNull(tc.protocolVersion);
} }
@Test
public void testParseAdvertiseSIDDefault() {
Config rc = new Config();
TransferConfig tc = new TransferConfig(rc);
assertFalse(tc.isAllowReceiveClientSID());
}
@Test
public void testParseAdvertiseSIDSet() {
Config rc = new Config();
rc.setBoolean("transfer", null, "advertiseSID", true);
TransferConfig tc = new TransferConfig(rc);
assertTrue(tc.isAllowReceiveClientSID());
}
} }

View File

@ -312,6 +312,7 @@ public ReceivePack(Repository into) {
TransferConfig tc = db.getConfig().get(TransferConfig.KEY); TransferConfig tc = db.getConfig().get(TransferConfig.KEY);
objectChecker = tc.newReceiveObjectChecker(); objectChecker = tc.newReceiveObjectChecker();
allowReceiveClientSID = tc.isAllowReceiveClientSID();
ReceiveConfig rc = db.getConfig().get(ReceiveConfig::new); ReceiveConfig rc = db.getConfig().get(ReceiveConfig::new);
allowCreates = rc.allowCreates; allowCreates = rc.allowCreates;
@ -320,7 +321,6 @@ public ReceivePack(Repository into) {
allowNonFastForwards = rc.allowNonFastForwards; allowNonFastForwards = rc.allowNonFastForwards;
allowOfsDelta = rc.allowOfsDelta; allowOfsDelta = rc.allowOfsDelta;
allowPushOptions = rc.allowPushOptions; allowPushOptions = rc.allowPushOptions;
allowReceiveClientSID = rc.allowReceiveClientSID;
maxCommandBytes = rc.maxCommandBytes; maxCommandBytes = rc.maxCommandBytes;
maxDiscardBytes = rc.maxDiscardBytes; maxDiscardBytes = rc.maxDiscardBytes;
advertiseRefsHook = AdvertiseRefsHook.DEFAULT; advertiseRefsHook = AdvertiseRefsHook.DEFAULT;
@ -344,8 +344,6 @@ private static class ReceiveConfig {
final boolean allowPushOptions; final boolean allowPushOptions;
final boolean allowReceiveClientSID;
final long maxCommandBytes; final long maxCommandBytes;
final long maxDiscardBytes; final long maxDiscardBytes;
@ -361,10 +359,6 @@ private static class ReceiveConfig {
true); true);
allowPushOptions = config.getBoolean("receive", "pushoptions", //$NON-NLS-1$ //$NON-NLS-2$ allowPushOptions = config.getBoolean("receive", "pushoptions", //$NON-NLS-1$ //$NON-NLS-2$
false); false);
// TODO: This should not be enabled until the corresponding change to
// upload pack has been implemented.
allowReceiveClientSID = config.getBoolean("transfer", //$NON-NLS-1$
"advertisesid", false); //$NON-NLS-1$
maxCommandBytes = config.getLong("receive", //$NON-NLS-1$ maxCommandBytes = config.getLong("receive", //$NON-NLS-1$
"maxCommandBytes", //$NON-NLS-1$ "maxCommandBytes", //$NON-NLS-1$
3 << 20); 3 << 20);

View File

@ -125,6 +125,8 @@ static ProtocolVersion parse(@Nullable String name) {
private final boolean advertiseWaitForDone; private final boolean advertiseWaitForDone;
private final boolean advertiseObjectInfo; private final boolean advertiseObjectInfo;
private final boolean allowReceiveClientSID;
final @Nullable ProtocolVersion protocolVersion; final @Nullable ProtocolVersion protocolVersion;
final String[] hideRefs; final String[] hideRefs;
@ -214,6 +216,8 @@ public TransferConfig(Config rc) {
"advertisewaitfordone", false); "advertisewaitfordone", false);
advertiseObjectInfo = rc.getBoolean("uploadpack", advertiseObjectInfo = rc.getBoolean("uploadpack",
"advertiseobjectinfo", false); "advertiseobjectinfo", false);
allowReceiveClientSID = rc.getBoolean("transfer", "advertisesid",
false);
} }
/** /**
@ -328,6 +332,14 @@ public boolean isAdvertiseObjectInfo() {
return advertiseObjectInfo; return advertiseObjectInfo;
} }
/**
* @return true to advertise and receive session-id capability
* @since 6.4
*/
public boolean isAllowReceiveClientSID() {
return allowReceiveClientSID;
}
/** /**
* Get {@link org.eclipse.jgit.transport.RefFilter} respecting configured * Get {@link org.eclipse.jgit.transport.RefFilter} respecting configured
* hidden refs. * hidden refs.