@Test
  public void basicAcceptConnection() throws Exception {
    final VM vm1 = VM.getVM(1);
    final VM vm2 = VM.getVM(2);
    final VM vm3 = VM.getVM(3);

    disconnectAllFromDS();

    int port = startLocator();
    properties.put(ConfigurationProperties.LOCATORS, "localhost[" + port + "]");

    vm1.invoke(() -> startServer(properties));
    vm2.invoke(() -> startServer(properties));
    vm3.invoke(() -> startServer(properties));

    await().untilAsserted(() -> {
      assertThat(ConnectionTable.getNumSenderSharedConnections()).isEqualTo(3);
    });

    // ensure that the closing of a shared/unordered connection to another node does not
    // remove all connections for that node
    InternalDistributedMember otherMember =
        (InternalDistributedMember) system.getAllOtherMembers().iterator().next();
    DistributionImpl distribution =
        (DistributionImpl) system.getDistributionManager().getDistribution();
    final ConnectionTable connectionTable =
        distribution.getDirectChannel().getConduit().getConTable();

    assertThat(connectionTable.hasReceiversFor(otherMember)).isTrue();

    Connection sharedUnordered = connectionTable.get(otherMember, false,
        System.currentTimeMillis(), 15000, 0, false);
    sharedUnordered.requestClose("for testing");
    // the sender connection has been closed so we should only have 2 senders now
    assertThat(ConnectionTable.getNumSenderSharedConnections()).isEqualTo(2);
    // there should still be receivers for the other member - endpoint not removed!
    assertThat(connectionTable.hasReceiversFor(otherMember)).isTrue();

    try {
      await("for message to be sent").until(() -> {
        final SerialAckedMessage serialAckedMessage = new SerialAckedMessage();
        serialAckedMessage.send(system.getAllOtherMembers(), false);
        return true;
      });
    } finally {
      // DUnit won't clean up properly if the sockets are hung; we have to crash the systems.
      IgnoredException.addIgnoredException("ForcedDisconnectException|loss of quorum");
      for (VM vm : Arrays.asList(vm1, vm2, vm3)) {
        vm.invoke("crash system in case it's hung", () -> {
          if (system != null && system.isConnected()) {
            DistributedTestUtils.crashDistributedSystem(system);
          }
        });
      }
      DistributedTestUtils.crashDistributedSystem(system);
    }
  }
This was a bug where SSL connections were being configured with a timeout that was non-zero,
but didn't handle socket timeouts. This resulted in a permanently hung P2P socket.

We set the lease time to 1000, which in that case would cause the socket to break in 1 second.
geode-core/src/distributedTest/java/org/apache/geode/internal/tcp/TCPConduitDUnitTest.java