MXS-2597: Log libmicrohttpd errors on startup

By enabling the debug messages only at startup, we'll get log messages for
any daemon startup failures and we exlude the verbose parsing errors that
malformed requests cause.
This commit is contained in:
Markus Mäkelä
2019-07-16 10:03:27 +03:00
parent 797069df52
commit bc2f7f4040

View File

@ -372,6 +372,19 @@ static bool load_ssl_certificates()
return rval;
}
static bool log_daemon_errors = true;
void admin_log_error(void* arg, const char* fmt, va_list ap)
{
if (log_daemon_errors)
{
char buf[1024];
vsnprintf(buf, sizeof(buf), fmt, ap);
trim(buf);
MXS_ERROR("HTTP daemon error: %s\n", buf);
}
}
bool mxs_admin_init()
{
struct sockaddr_storage addr;
@ -380,7 +393,7 @@ bool mxs_admin_init()
config_get_global_options()->admin_port,
&addr))
{
int options = MHD_USE_EPOLL_INTERNALLY_LINUX_ONLY;
int options = MHD_USE_EPOLL_INTERNALLY_LINUX_ONLY | MHD_USE_DEBUG;
if (addr.ss_family == AF_INET6)
{
@ -395,6 +408,7 @@ bool mxs_admin_init()
// The port argument is ignored and the port in the struct sockaddr is used instead
http_daemon = MHD_start_daemon(options, 0, NULL, NULL, handle_client, NULL,
MHD_OPTION_EXTERNAL_LOGGER, admin_log_error, NULL,
MHD_OPTION_NOTIFY_COMPLETED, close_client, NULL,
MHD_OPTION_SOCK_ADDR, &addr,
!using_ssl ? MHD_OPTION_END :
@ -404,6 +418,9 @@ bool mxs_admin_init()
MHD_OPTION_END);
}
// Silence all other errors to prevent malformed requests from flooding the log
log_daemon_errors = false;
return http_daemon != NULL;
}