From e8990f6b0e48d14523417cfe6ca283f525343c51 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sun, 14 Feb 2021 10:31:59 +0100 Subject: [PATCH] Add SSL on_connect_error --- src/crypto/openssl.c | 5 +++++ src/internal/internal.h | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/crypto/openssl.c b/src/crypto/openssl.c index feb26e5b..8bae26b0 100644 --- a/src/crypto/openssl.c +++ b/src/crypto/openssl.c @@ -677,10 +677,15 @@ void us_internal_ssl_socket_context_on_timeout(struct us_internal_ssl_socket_con us_socket_context_on_timeout(0, (struct us_socket_context_t *) context, (struct us_socket_t *(*)(struct us_socket_t *)) on_timeout); } +/* We do not really listen to passed FIN-handler, we entirely override it with our handler since SSL doesn't really have support for half-closed sockets */ void us_internal_ssl_socket_context_on_end(struct us_internal_ssl_socket_context_t *context, struct us_internal_ssl_socket_t *(*on_end)(struct us_internal_ssl_socket_t *)) { us_socket_context_on_end(0, (struct us_socket_context_t *) context, (struct us_socket_t *(*)(struct us_socket_t *)) ssl_on_end); } +void us_internal_ssl_socket_context_on_connect_error(struct us_internal_ssl_socket_context_t *context, struct us_internal_ssl_socket_t *(*on_connect_error)(struct us_internal_ssl_socket_t *, int code)) { + us_socket_context_on_connect_error(0, (struct us_socket_context_t *) context, (struct us_socket_t *(*)(struct us_socket_t *, int)) on_connect_error); +} + void *us_internal_ssl_socket_context_ext(struct us_internal_ssl_socket_context_t *context) { return context + 1; } diff --git a/src/internal/internal.h b/src/internal/internal.h index 219cdd91..ac54b0f2 100644 --- a/src/internal/internal.h +++ b/src/internal/internal.h @@ -158,6 +158,9 @@ void us_internal_ssl_socket_context_on_timeout(struct us_internal_ssl_socket_con void us_internal_ssl_socket_context_on_end(struct us_internal_ssl_socket_context_t *context, struct us_internal_ssl_socket_t *(*on_end)(struct us_internal_ssl_socket_t *s)); +void us_internal_ssl_socket_context_on_connect_error(struct us_internal_ssl_socket_context_t *context, + struct us_internal_ssl_socket_t *(*on_connect_error)(struct us_internal_ssl_socket_t *s, int code)); + struct us_listen_socket_t *us_internal_ssl_socket_context_listen(struct us_internal_ssl_socket_context_t *context, const char *host, int port, int options, int socket_ext_size);