provide a default client context even if no Application instance is available

This commit is contained in:
Guenter Obiltschnig
2016-08-31 11:00:47 +02:00
parent d3c1dfa912
commit c8848ebfd8

View File

@@ -1,7 +1,7 @@
// //
// SSLManager.cpp // SSLManager.cpp
// //
// $Id$ // $Id: //poco/1.7/NetSSL_Win/src/SSLManager.cpp#2 $
// //
// Library: NetSSL_Win // Library: NetSSL_Win
// Package: SSLCore // Package: SSLCore
@@ -18,6 +18,7 @@
#include "Poco/Net/Context.h" #include "Poco/Net/Context.h"
#include "Poco/Net/Utility.h" #include "Poco/Net/Utility.h"
#include "Poco/Net/PrivateKeyPassphraseHandler.h" #include "Poco/Net/PrivateKeyPassphraseHandler.h"
#include "Poco/Net/RejectCertificateHandler.h"
#include "Poco/SingletonHolder.h" #include "Poco/SingletonHolder.h"
#include "Poco/Delegate.h" #include "Poco/Delegate.h"
#include "Poco/Util/Application.h" #include "Poco/Util/Application.h"
@@ -120,7 +121,17 @@ Context::Ptr SSLManager::defaultClientContext()
Poco::FastMutex::ScopedLock lock(_mutex); Poco::FastMutex::ScopedLock lock(_mutex);
if (!_ptrDefaultClientContext) if (!_ptrDefaultClientContext)
initDefaultContext(false); {
try
{
initDefaultContext(false);
}
catch (Poco::IllegalStateException&)
{
_ptrClientCertificateHandler = new RejectCertificateHandler(false);
_ptrDefaultClientContext = new Context(Context::CLIENT_USE, "");
}
}
return _ptrDefaultClientContext; return _ptrDefaultClientContext;
} }