I use RTSDK C++ 2.1.1.L1
I need some help with this simple program. The program is based on the 112_MP_TunnelingConnection sample.
See below:
void AppClient::onRefreshMsg( const RefreshMsg& refreshMsg, const OmmConsumerEvent& )
{
cout << refreshMsg << endl; // defaults to refreshMsg.toString()
}
void AppClient::onUpdateMsg( const UpdateMsg& updateMsg, const OmmConsumerEvent& )
{
cout << updateMsg << endl; // defaults to updateMsg.toString()
}
void AppClient::onStatusMsg( const StatusMsg& statusMsg, const OmmConsumerEvent& )
{
cout << statusMsg << endl; // defaults to statusMsg.toString()
}
void printHelp()
{
cout << endl << "Options:\n" << " -?\tShows this usage\n"
<< " -tph Tunnelling Proxy host name \n"
<< " -tpp Tunnelling Proxy port number \n"
<< " -plogin User name on proxy server \n"
<< " -ppasswd Password on proxy server \n"
<< " -pdomain Proxy Domain \n"
<< " -sslCAStore the absolute path to the certification file (must endup with file name) \n"
<< " -clientId the Refinitiv clientId of the account \n"
<< " -userName the Refinitiv userName of the account \n"
<< " -password the Refintiv password of the account \n"
<< " -libCurlName the curl library name \n"
<< " -libCryptoName the crypto library name \n"
<< " -libSslName the ssl library name" << endl;
}
int main( int argc, char* argv[] )
{
try {
AppClient client;
OmmConsumerConfig config;
for (int i = 0; i < argc; i++)
{
if (strcmp(argv[i], "-?") == 0)
{
printHelp();
return 0;
}
else if (strcmp(argv[i], "-tph") == 0)
{
config.tunnelingProxyHostName(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-tpp") == 0)
{
config.tunnelingProxyPort(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-plogin") == 0)
{
config.proxyUserName(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-ppasswd") == 0)
{
config.proxyPasswd(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-pdomain") == 0)
{
config.proxyDomain(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-sslCAStore") == 0)
{
config.sslCAStore(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-clientId") == 0)
{
config.clientId(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-userName") == 0)
{
config.username(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-password") == 0)
{
config.password(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-libCurlName") == 0)
{
config.libcurlName(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-libCryptoName") == 0)
{
config.tunnelingLibCryptoName(i < (argc - 1) ? argv[++i] : NULL);
}
else if (strcmp(argv[i], "-libSslName") == 0)
{
config.tunnelingLibSslName(i < (argc - 1) ? argv[++i] : NULL);
}
}
OmmConsumer consumer(config);
consumer.registerClient(ReqMsg().serviceName("ELEKTRON_DD").name("EUR="), client);
std::this_thread::sleep_for(60000ms);
}
catch (const OmmException& excp) {
cout << excp << endl;
}
return 0;
}
So as you can see I wrote code to overwrite/set defaults for a bunch of things like sslCAStore , tunnelingLibCryptoName, libcurlName and so on.
This application is working perfectly on any machine I have ( and I tried on several ones) except on a client machine where this simple program reports back:
rsslRestClientImpl.c1632> Error: _rsslRestClientBlockingRequest() Curl failed to perform the request with text: SSL connect error
I have in the working folder all the required files like libcrypto-1_1_x64.dll, libcurl.dll. libema.dll, librssl.dll, librsslIVA.dll, libssl-1_1-x64.dll etc.
libcurl.dll is the one that is coming with the RTSDK itself so cannot be the wrong version.
Also running curl.exe command on client site seems to work as well but not the above code which is using libcurl.dll instead.
Again I cannot repro at all as is working all the time in my environments except on a client site no matter if we pass the cert file pointing or not to the libcurl.dll location and so on as per above code entry parameters options
Did anyone met this issue before ?
Thank you