qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hari Pyla <ha...@vt.edu>
Subject Re: SSL environment variables for C++ clients
Date Tue, 27 May 2014 00:58:06 GMT
On 5/19/14, 5:44 AM, Gordon Sim wrote:
> On 05/15/2014 04:11 PM, Hari Pyla wrote:
>> Hi,
>>   I am setting the SSL client environment variables for a C++ client and
>> I ran into the following issue.
>> When I set them at the command line and run the client program things
>> works as expected. However, when I try to set them programmatically
>> prior(in program order) to opening a connection, qpid seems to ignore
>> the environment variables. I was wondering if there is anyway to specify
>> the environment variables programmatically in the qpid C++ client.
>
> The issue here is that the variables relating to finding and opening 
> the certificate db are needed when initialising the NSS library, and 
> this is not specific to any connection. At present the NSS library is 
> initialised when the qpid client library is loaded.
>
Hi Gordon,
  I guess another artifact of such an initialization process is that if 
a process forks a child process and if the child attempts to create a 
new connection then it would fail in the child process. This precludes a 
qid client from creating multiple processes which in turn can create 
connections to the broker. See below example. Is this currently a 
limitation of qpid C++ client. My current work around to this issue is 
to clone qpid client process with CLONE_VM flags set so all the newly 
created process share the same virtual address pages of the qpid client 
library.

===example===

#include <qpid/messaging/Connection.h>
#include<cstdlib>
#include<iostream>
#include<stdlib.h>

using namespace qpid::messaging;

int foo()
{
     const char* url = "localhost:5672";
     std::string connectionOptions = 
"{username:test,password:test,transport:ssl}";

     Connection connection(url, connectionOptions);

      try
      {
         connection.open();
      }

     catch (const std::exception& e)
     {
         std::cout << e.what() << "\n";
     }

     connection.close();
     return 0;
}

int main()
{
     int retval = -1;

     retval = fork();
     if (retval == 0)
         foo();
     else
         sleep(5);

     return 0;
}

===error message===
On C++ qpid broker:
May 26 20:50:00 qa1 qpidd[21500]: 2014-05-26 20:50:00 [System] error 
Error reading socket: Success(0)

On C++ qpid client:
2014-05-26 20:50:00 [Security] warning Connect failed: Failed: NSS error 
[-8023] 
(/builddir/build/BUILD/qpid-0.28-rc2/cpp/src/qpid/sys/ssl/SslSocket.cpp:156)
2014-05-26 20:50:00 [Client] warning Connection  closed

Thanks,
-Hari

>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Mime
View raw message