Home / Function/ doHandshakeVerifyReusedAndClose() — netty Function Reference

doHandshakeVerifyReusedAndClose() — netty Function Reference

Architecture documentation for the doHandshakeVerifyReusedAndClose() function in SSLEngineTest.java from the netty codebase.

Function java Buffer Allocators calls 7 called by 3

Entity Profile

Dependency Diagram

graph TD
  5b1aff79_52fd_e366_c29d_676e7d63d1e6["doHandshakeVerifyReusedAndClose()"]
  9150c92a_2afc_b83a_c3bf_86dfac6e9d9b["SSLEngineTest"]
  5b1aff79_52fd_e366_c29d_676e7d63d1e6 -->|defined in| 9150c92a_2afc_b83a_c3bf_86dfac6e9d9b
  98846a7d_40bd_bbdd_3c36_d1979088d64c["testSessionCache()"]
  98846a7d_40bd_bbdd_3c36_d1979088d64c -->|calls| 5b1aff79_52fd_e366_c29d_676e7d63d1e6
  19dcc27e_3987_d074_4e29_5604494bbd1a["testSessionCacheTimeout()"]
  19dcc27e_3987_d074_4e29_5604494bbd1a -->|calls| 5b1aff79_52fd_e366_c29d_676e7d63d1e6
  910c0466_28a5_23c5_32b4_4c6f6c6c912e["testSessionCacheSize()"]
  910c0466_28a5_23c5_32b4_4c6f6c6c912e -->|calls| 5b1aff79_52fd_e366_c29d_676e7d63d1e6
  7380f50e_d3f0_3078_ee65_de1cb780c79d["handshake()"]
  5b1aff79_52fd_e366_c29d_676e7d63d1e6 -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d
  13aca077_a788_4333_9f8b_2b1437653846["delegate()"]
  5b1aff79_52fd_e366_c29d_676e7d63d1e6 -->|calls| 13aca077_a788_4333_9f8b_2b1437653846
  86625e77_2660_9fd9_6d8d_5db0cbb6be96["currentSessionCacheSize()"]
  5b1aff79_52fd_e366_c29d_676e7d63d1e6 -->|calls| 86625e77_2660_9fd9_6d8d_5db0cbb6be96
  6339eaf6_8a69_2f4f_725d_2c2c5c9286e2["assertSessionReusedForEngine()"]
  5b1aff79_52fd_e366_c29d_676e7d63d1e6 -->|calls| 6339eaf6_8a69_2f4f_725d_2c2c5c9286e2
  f25b1f05_b981_6c36_3ee6_e0ab50a29057["closeOutboundAndInbound()"]
  5b1aff79_52fd_e366_c29d_676e7d63d1e6 -->|calls| f25b1f05_b981_6c36_3ee6_e0ab50a29057
  87e8e20d_ffbe_f5c3_4fd0_7d8ac419206d["cleanupClientSslEngine()"]
  5b1aff79_52fd_e366_c29d_676e7d63d1e6 -->|calls| 87e8e20d_ffbe_f5c3_4fd0_7d8ac419206d
  78ad5fe5_58d2_9877_f633_22a7048c0e5e["cleanupServerSslEngine()"]
  5b1aff79_52fd_e366_c29d_676e7d63d1e6 -->|calls| 78ad5fe5_58d2_9877_f633_22a7048c0e5e
  style 5b1aff79_52fd_e366_c29d_676e7d63d1e6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java lines 3283–3378

    private void doHandshakeVerifyReusedAndClose(SSLEngineTestParam param, String host, int port, boolean reuse)
            throws Exception {
        SSLEngine clientEngine = null;
        SSLEngine serverEngine = null;
        try {
            clientEngine = wrapEngine(clientSslCtx.newEngine(UnpooledByteBufAllocator.DEFAULT, host, port));
            serverEngine = wrapEngine(serverSslCtx.newEngine(UnpooledByteBufAllocator.DEFAULT));
            handshake(param.type(), param.delegate(), clientEngine, serverEngine);
            int clientSessions = currentSessionCacheSize(clientSslCtx.sessionContext());
            int serverSessions = currentSessionCacheSize(serverSslCtx.sessionContext());
            int nCSessions = clientSessions;
            int nSSessions = serverSessions;
            SessionReusedState clientSessionReused = SessionReusedState.NOT_REUSED;
            SessionReusedState serverSessionReused = SessionReusedState.NOT_REUSED;
            if (param.protocolCipherCombo == ProtocolCipherCombo.TLSV13) {
                // Allocate something which is big enough for sure
                ByteBuffer packetBuffer = allocateBuffer(param.type(), 32 * 1024);
                ByteBuffer appBuffer = allocateBuffer(param.type(), 32 * 1024);

                appBuffer.clear().position(4).flip();
                packetBuffer.clear();

                do {
                    SSLEngineResult result;

                    do {
                        result = serverEngine.wrap(appBuffer, packetBuffer);
                    } while (appBuffer.hasRemaining() || result.bytesProduced() > 0);

                    appBuffer.clear();
                    packetBuffer.flip();
                    do {
                        result = clientEngine.unwrap(packetBuffer, appBuffer);
                    } while (packetBuffer.hasRemaining() || result.bytesProduced() > 0);

                    packetBuffer.clear();
                    appBuffer.clear().position(4).flip();

                    do {
                        result = clientEngine.wrap(appBuffer, packetBuffer);
                    } while (appBuffer.hasRemaining() || result.bytesProduced() > 0);

                    appBuffer.clear();
                    packetBuffer.flip();

                    do {
                        result = serverEngine.unwrap(packetBuffer, appBuffer);
                    } while (packetBuffer.hasRemaining() || result.bytesProduced() > 0);

                    packetBuffer.clear();
                    appBuffer.clear().position(4).flip();
                    nCSessions = currentSessionCacheSize(clientSslCtx.sessionContext());
                    nSSessions = currentSessionCacheSize(serverSslCtx.sessionContext());
                    clientSessionReused = isSessionReused(clientEngine);
                    serverSessionReused = isSessionReused(serverEngine);
                } while ((reuse && (clientSessionReused == SessionReusedState.NOT_REUSED ||
                        serverSessionReused == SessionReusedState.NOT_REUSED))
                        || (!reuse && (nCSessions < clientSessions ||
                        // server may use multiple sessions
                        nSSessions < serverSessions)));
            }

            assertSessionReusedForEngine(clientEngine, serverEngine, reuse);
            String key = "key";
            if (reuse) {
                if (clientSessionReused != SessionReusedState.NOT_REUSED) {
                    // We should see the previous stored value on session reuse.
                    // This is broken in conscrypt.
                    // TODO: Open an issue in the conscrypt project.
                    if (!Conscrypt.isEngineSupported(clientEngine)) {
                        assertEquals(Boolean.TRUE, clientEngine.getSession().getValue(key));
                    }

                    if (clientSessionReused == SessionReusedState.REUSED) {
                        // If we know for sure it was reused so the accessedTime needs to be larger.
                        assertThat(clientEngine.getSession().getLastAccessedTime())
                                .isGreaterThan(clientEngine.getSession().getCreationTime());
                    } else {
                        assertThat(clientEngine.getSession().getLastAccessedTime())
                                .isGreaterThanOrEqualTo(clientEngine.getSession().getCreationTime());
                    }

Domain

Subdomains

Frequently Asked Questions

What does doHandshakeVerifyReusedAndClose() do?
doHandshakeVerifyReusedAndClose() is a function in the netty codebase, defined in handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java.
Where is doHandshakeVerifyReusedAndClose() defined?
doHandshakeVerifyReusedAndClose() is defined in handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java at line 3283.
What does doHandshakeVerifyReusedAndClose() call?
doHandshakeVerifyReusedAndClose() calls 7 function(s): assertSessionReusedForEngine, cleanupClientSslEngine, cleanupServerSslEngine, closeOutboundAndInbound, currentSessionCacheSize, delegate, handshake.
What calls doHandshakeVerifyReusedAndClose()?
doHandshakeVerifyReusedAndClose() is called by 3 function(s): testSessionCache, testSessionCacheSize, testSessionCacheTimeout.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free