fix(SSLManager): Fixed regression introduced in PR #4103, fixes #4421

This commit is contained in:
Matej Kenda
2024-01-30 23:01:48 +01:00
parent 41ce8be229
commit db5a8a7112
3 changed files with 50 additions and 9 deletions

View File

@@ -25,6 +25,8 @@
#include "Poco/Net/Session.h"
#include "Poco/Net/SSLManager.h"
#include "Poco/Net/SSLException.h"
#include "Poco/Net/AcceptCertificateHandler.h"
#include "Poco/Net/PrivateKeyPassphraseHandler.h"
#include "Poco/Util/Application.h"
#include "Poco/Util/AbstractConfiguration.h"
#include "Poco/StreamCopier.h"
@@ -285,6 +287,44 @@ void HTTPSClientSessionTest::testKeepAlive()
}
void HTTPSClientSessionTest::testMultipleSSLInit()
{
auto initSSL = []()
{
initializeSSL();
Poco::SharedPtr<InvalidCertificateHandler> ptrCert = new AcceptCertificateHandler(false);
Context::Ptr context(new Context(Context::CLIENT_USE, "", "", "",
Context::VerificationMode::VERIFY_STRICT, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"
)
);
SSLManager::instance().initializeClient(0, ptrCert, context);
};
auto deinitSSL = []()
{
uninitializeSSL();
};
try
{
initSSL();
deinitSSL();
initSSL();
HTTPSClientSession session("secure.appinf.com");
HTTPRequest request(HTTPRequest::HTTP_GET, "", HTTPMessage::HTTP_1_1);
(void)session.sendRequest(request);
deinitSSL();
}
catch(...)
{
failmsg("Double SSL init failed");
}
}
void HTTPSClientSessionTest::testInterop()
{
HTTPSClientSession s("secure.appinf.com");
@@ -459,6 +499,7 @@ CppUnit::Test* HTTPSClientSessionTest::suite()
CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostLargeChunked);
CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostLargeChunkedKeepAlive);
CppUnit_addTest(pSuite, HTTPSClientSessionTest, testKeepAlive);
CppUnit_addTest(pSuite, HTTPSClientSessionTest, testMultipleSSLInit);
CppUnit_addTest(pSuite, HTTPSClientSessionTest, testInterop);
CppUnit_addTest(pSuite, HTTPSClientSessionTest, testProxy);
CppUnit_addTest(pSuite, HTTPSClientSessionTest, testCachedSession);

View File

@@ -34,6 +34,7 @@ public:
void testPostLargeChunkedKeepAlive();
void testKeepAlive();
void testInterop();
void testMultipleSSLInit();
void testProxy();
void testCachedSession();
void testUnknownContentLength();