diff --git a/src/ssl.c b/src/ssl.c index 1167a4f57..0307b4e7c 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -55873,20 +55873,29 @@ void wolfSSL_set_psk_use_session_callback(WOLFSSL* ssl, (void)ssl; (void)cb; } +#endif /* NO_WOLFSSL_STUB */ /** * Determine whether a WOLFSSL_SESSION object can be used for resumption * @param s a pointer to WOLFSSL_SESSION structure - * @return return 1 if session is resumable, - * otherwise 0 (currently always 0 with stub) + * @return return 1 if session is resumable, otherwise 0. */ int wolfSSL_SESSION_is_resumable(const WOLFSSL_SESSION *s) { - WOLFSSL_STUB("wolfSSL_SESSION_is_resumable"); - (void)s; + if (s == NULL) + return 0; + + #ifdef HAVE_SESSION_TICKET + if (s->ticketLen > 0) + return 1; + #endif + + if (s->sessionIDSz > 0) + return 1; + return 0; } -#endif /* NO_WOLFSSL_STUB */ + /** * free allocated memory resouce diff --git a/tests/api.c b/tests/api.c index 15fe861b7..cc74b242e 100644 --- a/tests/api.c +++ b/tests/api.c @@ -32946,11 +32946,13 @@ static void test_wolfSSL_SESSION(void) sess = wolfSSL_get_session(ssl); - /* STUB */ + #if defined(OPENSSL_EXTRA) - AssertIntEQ(SSL_SESSION_is_resumable(sess), 0); + AssertIntEQ(SSL_SESSION_is_resumable(NULL), 0); + AssertIntEQ(SSL_SESSION_is_resumable(sess), 1); #else - AssertIntEQ(wolfSSL_SESSION_is_resumable(sess), 0); + AssertIntEQ(wolfSSL_SESSION_is_resumable(NULL), 0); + AssertIntEQ(wolfSSL_SESSION_is_resumable(sess), 1); #endif wolfSSL_shutdown(ssl);