so we can reuse it later

Signed-off-by: William Dauchy <[email protected]>
---
 include/haproxy/ssl_sock.h |  1 +
 src/cfgparse-ssl.c         | 46 ++++++++++++++++----------------------
 2 files changed, 20 insertions(+), 27 deletions(-)

diff --git a/include/haproxy/ssl_sock.h b/include/haproxy/ssl_sock.h
index 8af7edbf0..987a8fb32 100644
--- a/include/haproxy/ssl_sock.h
+++ b/include/haproxy/ssl_sock.h
@@ -65,6 +65,7 @@ const char *ssl_sock_get_proto_version(struct connection 
*conn);
 int ssl_sock_parse_alpn(char *arg, char **alpn_str, int *alpn_len, char **err);
 void ssl_sock_set_alpn(struct connection *conn, const unsigned char *, int);
 void ssl_sock_set_servername(struct connection *conn, const char *hostname);
+void ssl_sock_init_srv(struct server *s);
 
 int ssl_sock_get_cert_used_sess(struct connection *conn);
 int ssl_sock_get_cert_used_conn(struct connection *conn);
diff --git a/src/cfgparse-ssl.c b/src/cfgparse-ssl.c
index d22ae96fb..238749d63 100644
--- a/src/cfgparse-ssl.c
+++ b/src/cfgparse-ssl.c
@@ -1352,19 +1352,7 @@ static int srv_parse_check_sni(char **args, int 
*cur_arg, struct proxy *px, stru
 static int srv_parse_check_ssl(char **args, int *cur_arg, struct proxy *px, 
struct server *newsrv, char **err)
 {
        newsrv->check.use_ssl = 1;
-       if (global_ssl.connect_default_ciphers && !newsrv->ssl_ctx.ciphers)
-               newsrv->ssl_ctx.ciphers = 
strdup(global_ssl.connect_default_ciphers);
-#if (HA_OPENSSL_VERSION_NUMBER >= 0x10101000L)
-       if (global_ssl.connect_default_ciphersuites && 
!newsrv->ssl_ctx.ciphersuites)
-               newsrv->ssl_ctx.ciphersuites = 
strdup(global_ssl.connect_default_ciphersuites);
-#endif
-       newsrv->ssl_ctx.options |= global_ssl.connect_default_ssloptions;
-       newsrv->ssl_ctx.methods.flags |= 
global_ssl.connect_default_sslmethods.flags;
-       if (!newsrv->ssl_ctx.methods.min)
-               newsrv->ssl_ctx.methods.min = 
global_ssl.connect_default_sslmethods.min;
-       if (!newsrv->ssl_ctx.methods.max)
-               newsrv->ssl_ctx.methods.max = 
global_ssl.connect_default_sslmethods.max;
-
+       ssl_sock_init_srv(newsrv);
        return 0;
 }
 
@@ -1532,26 +1520,30 @@ static int srv_parse_sni(char **args, int *cur_arg, 
struct proxy *px, struct ser
 #endif
 }
 
-/* parse the "ssl" server keyword */
-static int srv_parse_ssl(char **args, int *cur_arg, struct proxy *px, struct 
server *newsrv, char **err)
+/* common function to init ssl_ctx */
+void ssl_sock_init_srv(struct server *s)
 {
-       newsrv->use_ssl = 1;
-       if (global_ssl.connect_default_ciphers && !newsrv->ssl_ctx.ciphers)
-               newsrv->ssl_ctx.ciphers = 
strdup(global_ssl.connect_default_ciphers);
+       if (global_ssl.connect_default_ciphers && !s->ssl_ctx.ciphers)
+               s->ssl_ctx.ciphers = strdup(global_ssl.connect_default_ciphers);
 #if (HA_OPENSSL_VERSION_NUMBER >= 0x10101000L)
-       if (global_ssl.connect_default_ciphersuites && 
!newsrv->ssl_ctx.ciphersuites)
-               newsrv->ssl_ctx.ciphersuites = 
strdup(global_ssl.connect_default_ciphersuites);
+       if (global_ssl.connect_default_ciphersuites && !s->ssl_ctx.ciphersuites)
+               s->ssl_ctx.ciphersuites = 
strdup(global_ssl.connect_default_ciphersuites);
 #endif
-       newsrv->ssl_ctx.options |= global_ssl.connect_default_ssloptions;
-       newsrv->ssl_ctx.methods.flags |= 
global_ssl.connect_default_sslmethods.flags;
+       s->ssl_ctx.options |= global_ssl.connect_default_ssloptions;
+       s->ssl_ctx.methods.flags |= global_ssl.connect_default_sslmethods.flags;
 
-       if (!newsrv->ssl_ctx.methods.min)
-               newsrv->ssl_ctx.methods.min = 
global_ssl.connect_default_sslmethods.min;
-
-       if (!newsrv->ssl_ctx.methods.max)
-               newsrv->ssl_ctx.methods.max = 
global_ssl.connect_default_sslmethods.max;
+       if (!s->ssl_ctx.methods.min)
+               s->ssl_ctx.methods.min = 
global_ssl.connect_default_sslmethods.min;
 
+       if (!s->ssl_ctx.methods.max)
+               s->ssl_ctx.methods.max = 
global_ssl.connect_default_sslmethods.max;
+}
 
+/* parse the "ssl" server keyword */
+static int srv_parse_ssl(char **args, int *cur_arg, struct proxy *px, struct 
server *newsrv, char **err)
+{
+       newsrv->use_ssl = 1;
+       ssl_sock_init_srv(newsrv);
        return 0;
 }
 
-- 
2.28.0


Reply via email to