You've already forked mariadb-connector-c
mirror of
https://github.com/mariadb-corporation/mariadb-connector-c.git
synced 2025-08-07 02:42:49 +03:00
Fix openssl sigpipe correctly, move signal handler to openssl.c
This commit is contained in:
@@ -157,6 +157,7 @@ enum enum_server_command
|
||||
#define CLIENT_CONNECT_ATTRS (1UL << 20)
|
||||
#define CLIENT_SESSION_TRACKING (1UL << 23)
|
||||
#define CLIENT_PROGRESS (1UL << 29) /* client supports progress indicator */
|
||||
#define CLIENT_PROGRESS_OBSOLETE CLIENT_PROGRESS
|
||||
#define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30)
|
||||
#define CLIENT_REMEMBER_OPTIONS (1UL << 31)
|
||||
|
||||
|
@@ -3472,13 +3472,6 @@ BOOL CALLBACK win_init_once(
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SIGPIPE) && !defined(_WIN32) && defined(WITH_OPENSSL)
|
||||
static void ma_sigpipe_handler()
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
||||
char **argv __attribute__((unused)),
|
||||
char **groups __attribute__((unused)))
|
||||
@@ -3489,17 +3482,6 @@ int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
||||
return ret? 0: 1;
|
||||
#else
|
||||
static pthread_once_t init_once = PTHREAD_ONCE_INIT;
|
||||
#if defined(SIGPIPE) && defined(WITH_OPENSSL)
|
||||
struct sigaction old_handler, new_handler={NULL};
|
||||
if (!sigaction (SIGPIPE, NULL, &old_handler) &&
|
||||
!old_handler.sa_handler)
|
||||
{
|
||||
new_handler.sa_handler= ma_sigpipe_handler;
|
||||
new_handler.sa_flags= 0;
|
||||
if (!sigemptyset(&new_handler.sa_mask))
|
||||
sigaction(SIGPIPE, &new_handler, NULL);
|
||||
}
|
||||
#endif
|
||||
return pthread_once(&init_once, mysql_once_init);
|
||||
#endif
|
||||
}
|
||||
|
@@ -226,6 +226,28 @@ static int ssl_thread_init()
|
||||
}
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
#define disable_sigpipe()
|
||||
#else
|
||||
#include <signal.h>
|
||||
static void ma_sigpipe_handler()
|
||||
{
|
||||
}
|
||||
|
||||
static void disable_sigpipe()
|
||||
{
|
||||
struct sigaction old_handler, new_handler={NULL};
|
||||
if (!sigaction (SIGPIPE, NULL, &old_handler) &&
|
||||
!old_handler.sa_handler)
|
||||
{
|
||||
new_handler.sa_handler= ma_sigpipe_handler;
|
||||
new_handler.sa_flags= 0;
|
||||
if (!sigemptyset(&new_handler.sa_mask))
|
||||
sigaction(SIGPIPE, &new_handler, NULL);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
Initializes SSL and allocate global
|
||||
context SSL_context
|
||||
@@ -276,6 +298,7 @@ int ma_tls_start(char *errmsg, size_t errmsg_len)
|
||||
SSL_CTX_sess_set_new_cb(SSL_context, ma_tls_session_cb);
|
||||
SSL_CTX_sess_set_remove_cb(SSL_context, ma_tls_remove_session_cb);
|
||||
#endif
|
||||
disable_sigpipe();
|
||||
rc= 0;
|
||||
ma_tls_initialized= TRUE;
|
||||
end:
|
||||
|
Reference in New Issue
Block a user