summaryrefslogtreecommitdiff
path: root/net/haproxy/files/patch-0001-CLEANUP-servers-do-not-include-openssl-compat
diff options
context:
space:
mode:
Diffstat (limited to 'net/haproxy/files/patch-0001-CLEANUP-servers-do-not-include-openssl-compat')
-rw-r--r--net/haproxy/files/patch-0001-CLEANUP-servers-do-not-include-openssl-compat78
1 files changed, 78 insertions, 0 deletions
diff --git a/net/haproxy/files/patch-0001-CLEANUP-servers-do-not-include-openssl-compat b/net/haproxy/files/patch-0001-CLEANUP-servers-do-not-include-openssl-compat
new file mode 100644
index 000000000000..e6f0291f8c89
--- /dev/null
+++ b/net/haproxy/files/patch-0001-CLEANUP-servers-do-not-include-openssl-compat
@@ -0,0 +1,78 @@
+From ce5ca630697a069ffbd81169663e5dbeb554179a Mon Sep 17 00:00:00 2001
+From: Willy Tarreau <w@1wt.eu>
+Date: Wed, 6 Oct 2021 11:23:32 +0200
+Subject: CLEANUP: servers: do not include openssl-compat
+
+This is exactly the same as for listeners, servers only include
+openssl-compat to provide the SSL_CTX type to use as two pointers to
+contexts, and to detect if NPN, ALPN, and cipher suites are supported,
+and save up to 5 pointers in the ssl_ctx struct if not supported. This
+is pointless, as these ones have all been supported for about a decade,
+and including this file comes with a long dependency chain that impacts
+lots of other files. The ctx was made a void*.
+
+Now the build time was significantly reduced, from 9.2 to 8.1 seconds,
+thanks to opensslconf.h being included "only" 456 times instead of 2424
+previously!
+
+The total number of lines of code compiled was reduced by 15%.
+
+(cherry picked from commit 340ef2502eae2a37781e460d3590982c0e437fbd)
+[wt: this is backported to get rid of the painful #ifdef around SSL
+ fields that regularly break backports]
+Signed-off-by: Willy Tarreau <w@1wt.eu>
+---
+ include/haproxy/server-t.h | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/include/haproxy/server-t.h b/include/haproxy/server-t.h
+index 429195388..32b649bf3 100644
+--- include/haproxy/server-t.h
++++ include/haproxy/server-t.h
+@@ -35,9 +35,7 @@
+ #include <haproxy/freq_ctr-t.h>
+ #include <haproxy/listener-t.h>
+ #include <haproxy/obj_type-t.h>
+-#include <haproxy/openssl-compat.h>
+ #include <haproxy/resolvers-t.h>
+-#include <haproxy/ssl_sock-t.h>
+ #include <haproxy/stats-t.h>
+ #include <haproxy/task-t.h>
+ #include <haproxy/thread-t.h>
+@@ -341,7 +339,7 @@ struct server {
+ #ifdef USE_OPENSSL
+ char *sni_expr; /* Temporary variable to store a sample expression for SNI */
+ struct {
+- SSL_CTX *ctx;
++ void *ctx;
+ struct {
+ unsigned char *ptr;
+ int size;
+@@ -353,9 +351,7 @@ struct server {
+ __decl_thread(HA_RWLOCK_T lock); /* lock the cache and SSL_CTX during commit operations */
+
+ char *ciphers; /* cipher suite to use if non-null */
+-#ifdef HAVE_SSL_CTX_SET_CIPHERSUITES
+ char *ciphersuites; /* TLS 1.3 cipher suite to use if non-null */
+-#endif
+ int options; /* ssl options */
+ int verify; /* verify method (set of SSL_VERIFY_* flags) */
+ struct tls_version_filter methods; /* ssl methods */
+@@ -363,14 +359,10 @@ struct server {
+ char *ca_file; /* CAfile to use on verify */
+ char *crl_file; /* CRLfile to use on verify */
+ struct sample_expr *sni; /* sample expression for SNI */
+-#ifdef OPENSSL_NPN_NEGOTIATED
+ char *npn_str; /* NPN protocol string */
+ int npn_len; /* NPN protocol string length */
+-#endif
+-#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation
+ char *alpn_str; /* ALPN protocol string */
+ int alpn_len; /* ALPN protocol string length */
+-#endif
+ } ssl_ctx;
+ #ifdef USE_QUIC
+ struct quic_transport_params quic_params; /* QUIC transport parameters */
+--
+2.28.0
+