added error in case openssl is missing
This commit is contained in:
parent
25d5410b13
commit
0ca9bc9dad
|
|
@ -4,7 +4,7 @@
|
|||
* Test program to check AMQP functionality based on LibEV
|
||||
*
|
||||
* @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com>
|
||||
* @copyright 2015 - 2017 Copernica BV
|
||||
* @copyright 2015 - 2018 Copernica BV
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
@ -13,6 +13,7 @@
|
|||
#include <ev.h>
|
||||
#include <amqpcpp.h>
|
||||
#include <amqpcpp/libev.h>
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
/**
|
||||
* Custom handler
|
||||
|
|
@ -65,7 +66,7 @@ int main()
|
|||
MyHandler handler(loop);
|
||||
|
||||
// init the SSL library
|
||||
SSL_library_init();
|
||||
// SSL_library_init();
|
||||
|
||||
// make a connection
|
||||
AMQP::Address address("amqps://guest:guest@localhost/");
|
||||
|
|
|
|||
|
|
@ -22,10 +22,16 @@
|
|||
/**
|
||||
* Begin of namespace
|
||||
*/
|
||||
namespace Copernica { namespace OpenSSL {
|
||||
|
||||
namespace AMQP { namespace OpenSSL {
|
||||
|
||||
/**
|
||||
* List of all methods that we need
|
||||
* Function to check if openssl is loaded
|
||||
* @return bool
|
||||
*/
|
||||
bool valid();
|
||||
|
||||
/**
|
||||
* List of all wrapper methods that are in use inside AMQP-CPP
|
||||
*/
|
||||
SSL_CTX *SSL_CTX_new(const SSL_METHOD *method);
|
||||
SSL *SSL_new(SSL_CTX *ctx);
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ public:
|
|||
if (fd != _socket) return this;
|
||||
|
||||
// start the ssl handshake
|
||||
int result = SSL_do_handshake(_ssl);
|
||||
int result = OpenSSL::SSL_do_handshake(_ssl);
|
||||
|
||||
// if the connection succeeds, we can move to the ssl-connected state
|
||||
if (result == 1) return nextstate(new SslConnected(_connection, _socket, _ssl, std::move(_out), _handler));
|
||||
|
|
|
|||
|
|
@ -20,7 +20,8 @@
|
|||
#include "tcpstate.h"
|
||||
#include "tcpclosed.h"
|
||||
#include "tcpconnected.h"
|
||||
//#include "sslhandshake.h"
|
||||
#include "openssl.h"
|
||||
#include "sslhandshake.h"
|
||||
#include <thread>
|
||||
|
||||
/**
|
||||
|
|
@ -91,6 +92,9 @@ private:
|
|||
// prevent exceptions
|
||||
try
|
||||
{
|
||||
// check if we support openssl in the first place
|
||||
if (!OpenSSL::valid()) throw std::runtime_error("Secure connection cannot be established: the application has no access to openssl");
|
||||
|
||||
// get address info
|
||||
AddressInfo addresses(_hostname.data(), _port);
|
||||
|
||||
|
|
@ -190,7 +194,8 @@ public:
|
|||
if (_socket >= 0)
|
||||
{
|
||||
// if we need a secure connection, we move to the tls handshake
|
||||
//if (_secure) return new SslHandshake(_connection, _socket, _hostname, std::move(_buffer), _handler);
|
||||
// @todo catch exception
|
||||
if (_secure) return new SslHandshake(_connection, _socket, _hostname, std::move(_buffer), _handler);
|
||||
|
||||
// otherwise we have a valid regular tcp connection
|
||||
return new TcpConnected(_connection, _socket, std::move(_buffer), _handler);
|
||||
|
|
|
|||
Loading…
Reference in New Issue