diff options
author | Milind Changire <mchangir@redhat.com> | 2017-12-11 14:41:57 +0530 |
---|---|---|
committer | Jeff Darcy <jeff@pl.atyp.us> | 2017-12-12 14:42:05 +0000 |
commit | 56e5fdae74845dfec0ff7ad0c8fee77695d36ad5 (patch) | |
tree | d931d2f0bc9a9a3ce175858cbe3ea027279c710b /rpc/rpc-transport/socket/src/socket.h | |
parent | e016bcaf8171373cbc327faf42a6b2f2c5449b0e (diff) |
rpc: merge ssl infra with epoll infra
Patch attempts to use the epoll infra for handling SSL connections
as well instead of the socket_poller() thread func.
This essentially makes priv->own_thread flag redundant.
SSL_connect()/SSL_accept() is now non-blocking which has done away
with the localised poll() in ssl_do(). So, ssl_do() has been updated
appropriately.
own_thread and coincidently socket_poller() thread for SSL processing
is now deprecated.
Added a timeout to test whether seal-heal daemon is up and running
as per Ravi's suggestion.
Change-Id: If2b5d7b4fd19e321cb289e08d49a718d2161aafe
Signed-off-by: Milind Changire <mchangir@redhat.com>
Diffstat (limited to 'rpc/rpc-transport/socket/src/socket.h')
-rw-r--r-- | rpc/rpc-transport/socket/src/socket.h | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/rpc/rpc-transport/socket/src/socket.h b/rpc/rpc-transport/socket/src/socket.h index ccc2a84cb35..fdfc20774a8 100644 --- a/rpc/rpc-transport/socket/src/socket.h +++ b/rpc/rpc-transport/socket/src/socket.h @@ -248,12 +248,36 @@ typedef struct { char *ssl_ca_list; pthread_t thread; int pipe[2]; - gf_boolean_t own_thread; - gf_boolean_t own_thread_done; - ot_state_t ot_state; - uint32_t ot_gen; gf_boolean_t is_server; int log_ctr; + gf_boolean_t ssl_accepted; /* To indicate SSL_accept() */ + gf_boolean_t ssl_connected;/* or SSL_connect() has been + * been completed on this socket. + * These are valid only when + * use_ssl is true. + */ + /* SSL_CTX is created for each transport. Since we are now using non- + * blocking mechanism for SSL_accept() and SSL_connect(), the SSL + * context is created on the first EPOLLIN event which may lead to + * SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE and may not complete the + * SSL connection at the first attempt. + * ssl_context_created is a flag to note that we've created the SSL + * context for the connection so that we don't blindly create any more + * while !ssl_accepted or !ssl_connected. + */ + gf_boolean_t ssl_context_created; + gf_boolean_t accepted; /* explicit flag to be set in + * socket_event_handler() for + * newly accepted socket + */ + + /* ssl_error_required is used only during the SSL connection setup + * phase. + * It holds the error code returned by SSL_get_error() and is used to + * arm the epoll event set for the required event for the specific fd. + */ + int ssl_error_required; + GF_REF_DECL; /* refcount to keep track of socket_poller threads */ struct { |