CLEANUP: wdt: do not remap SI_TKILL to SI_LWP, test the values directly

We used to remap SI_TKILL to SI_LWP when SI_TKILL was not available
(e.g. FreeBSD) but that's ugly and since we need this only in a single
switch/case block in wdt.c it's even simpler and cleaner to perform the
two tests there, so let's do this.
This commit is contained in:
Willy Tarreau 2021-10-08 15:31:04 +02:00
parent b474f43816
commit 6414e4423c
2 changed files with 11 additions and 7 deletions

View File

@ -23,7 +23,6 @@
#define _HAPROXY_COMPAT_H
#include <limits.h>
#include <signal.h>
#include <unistd.h>
/* This is needed on Linux for Netfilter includes */
#include <sys/param.h>
@ -154,11 +153,6 @@ typedef struct { } empty_t;
#define F_SETPIPE_SZ (1024 + 7)
#endif
/* On FreeBSD we don't have SI_TKILL but SI_LWP instead */
#if !defined(SI_TKILL) && defined(SI_LWP)
#define SI_TKILL SI_LWP
#endif
#if defined(USE_TPROXY) && defined(USE_NETFILTER)
#include <linux/types.h>
#include <linux/netfilter_ipv6.h>

View File

@ -104,11 +104,21 @@ void wdt_handler(int sig, siginfo_t *si, void *arg)
/* No doubt now, there's no hop to recover, die loudly! */
break;
#ifdef USE_THREAD
#if defined(USE_THREAD) && defined(SI_TKILL) /* Linux uses this */
case SI_TKILL:
/* we got a pthread_kill, stop on it */
thr = tid;
break;
#elif defined(USE_THREAD) && defined(SI_LWP) /* FreeBSD uses this */
case SI_LWP:
/* we got a pthread_kill, stop on it */
thr = tid;
break;
#endif
default:
/* unhandled other conditions */