summaryrefslogtreecommitdiffstats
path: root/client.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2010-05-04 08:48:06 +0000
committerNicholas Marriott <nicm@openbsd.org>2010-05-04 08:48:06 +0000
commitaf5e0bd15affd358017e43110ac5a6c3b22233bc (patch)
treee1930b88f5378d0e412a7d6584a313ae614fdc11 /client.c
parentec1d37b1b259e8a3502646876b60eb42c2c5c740 (diff)
Revert last change, it appears to be broken somehow.
Diffstat (limited to 'client.c')
-rw-r--r--client.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/client.c b/client.c
index 5940f62e..69d5bd7b 100644
--- a/client.c
+++ b/client.c
@@ -172,12 +172,35 @@ client_update_event(void)
__dead void
client_main(void)
{
+ struct event ev_sigcont, ev_sigterm, ev_sigwinch;
+ struct sigaction sigact;
+
logfile("client");
/* Note: event_init() has already been called. */
/* Set up signals. */
- set_signals(client_signal);
+ memset(&sigact, 0, sizeof sigact);
+ sigemptyset(&sigact.sa_mask);
+ sigact.sa_flags = SA_RESTART;
+ sigact.sa_handler = SIG_IGN;
+ if (sigaction(SIGINT, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGPIPE, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGUSR1, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGUSR2, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGTSTP, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+
+ signal_set(&ev_sigcont, SIGCONT, client_signal, NULL);
+ signal_add(&ev_sigcont, NULL);
+ signal_set(&ev_sigterm, SIGTERM, client_signal, NULL);
+ signal_add(&ev_sigterm, NULL);
+ signal_set(&ev_sigwinch, SIGWINCH, client_signal, NULL);
+ signal_add(&ev_sigwinch, NULL);
/*
* imsg_read in the first client poll loop (before the terminal has