REORG: ssl: move ssl_sock_ctx and fix cross-dependencies issues
In order to move all SSL sample fetches in another file, moving the
ssl_sock_ctx definition in a .h file is required.
Unfortunately it became a cross dependencies hell to solve, because of
the struct wait_event field, so <types/connection.h> is needed which
created other problems.
diff --git a/include/proto/ssl_sock.h b/include/proto/ssl_sock.h
index a01e29e..32b7a33 100644
--- a/include/proto/ssl_sock.h
+++ b/include/proto/ssl_sock.h
@@ -28,6 +28,7 @@
#include <types/connection.h>
#include <types/listener.h>
#include <types/proxy.h>
+#include <types/ssl_sock.h>
#include <types/stream_interface.h>
#include <proto/connection.h>
diff --git a/include/types/listener.h b/include/types/listener.h
index 4b71ddb..997a597 100644
--- a/include/types/listener.h
+++ b/include/types/listener.h
@@ -27,7 +27,6 @@
#ifdef USE_OPENSSL
#include <common/openssl-compat.h>
-#include <types/ssl_sock.h>
#endif
#include <common/config.h>
@@ -112,6 +111,12 @@
#define BC_SSL_O_PREF_CLIE_CIPH 0x0200 /* prefer client ciphers */
#endif
+struct tls_version_filter {
+ uint16_t flags; /* ssl options */
+ uint8_t min; /* min TLS version */
+ uint8_t max; /* max TLS version */
+};
+
/* ssl "bind" settings */
struct ssl_bind_conf {
#ifdef USE_OPENSSL
diff --git a/include/types/ssl_sock.h b/include/types/ssl_sock.h
index e6b092e..99c964d 100644
--- a/include/types/ssl_sock.h
+++ b/include/types/ssl_sock.h
@@ -27,6 +27,7 @@
#include <ebmbtree.h>
#include <eb64tree.h>
+#include <types/connection.h> /* struct wait_event */
#include <types/ssl_ckch.h>
#include <types/ssl_crtlist.h>
@@ -131,12 +132,6 @@
struct ebmb_node name; /* node holding the servername value */
};
-struct tls_version_filter {
- uint16_t flags; /* ssl options */
- uint8_t min; /* min TLS version */
- uint8_t max; /* max TLS version */
-};
-
extern struct list tlskeys_reference;
struct tls_sess_key_128 {
@@ -233,6 +228,20 @@
char ciphersuite[0];
};
+struct ssl_sock_ctx {
+ struct connection *conn;
+ SSL *ssl;
+ BIO *bio;
+ const struct xprt_ops *xprt;
+ void *xprt_ctx;
+ struct wait_event wait_event;
+ struct wait_event *subs;
+ int xprt_st; /* transport layer state, initialized to zero */
+ struct buffer early_buf; /* buffer to store the early data received */
+ int sent_early_data; /* Amount of early data we sent so far */
+
+};
+
struct global_ssl {
char *crt_base; /* base directory path for certificates */
char *ca_base; /* base directory path for CAs and CRLs */
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index e0326c0..684a419 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -143,20 +143,6 @@
static BIO_METHOD *ha_meth;
-struct ssl_sock_ctx {
- struct connection *conn;
- SSL *ssl;
- BIO *bio;
- const struct xprt_ops *xprt;
- void *xprt_ctx;
- struct wait_event wait_event;
- struct wait_event *subs;
- int xprt_st; /* transport layer state, initialized to zero */
- struct buffer early_buf; /* buffer to store the early data received */
- int sent_early_data; /* Amount of early data we sent so far */
-
-};
-
DECLARE_STATIC_POOL(ssl_sock_ctx_pool, "ssl_sock_ctx_pool", sizeof(struct ssl_sock_ctx));
static struct task *ssl_sock_io_cb(struct task *, void *, unsigned short);