Update of /cvsroot/tmux/tmux
In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv10654
Modified Files:
cmd-pipe-pane.c job.c server.c signal.c tmux.c tmux.h window.c
Log Message:
Sync OpenBSD patchset 751:
Do not call event_del() for signals after fork(), just use sigaction()
directly instead - calling libevent functions after fork() w/o
event_reinit() is a bad idea, even if in this case it was harmless.
Index: cmd-pipe-pane.c
===================================================================
RCS file: /cvsroot/tmux/tmux/cmd-pipe-pane.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmd-pipe-pane.c 15 Jun 2010 20:25:40 -0000 1.13
+++ cmd-pipe-pane.c 29 Aug 2010 14:42:11 -0000 1.14
@@ -96,7 +96,7 @@
case 0:
/* Child process. */
close(pipe_fd[0]);
- clear_signals();
+ clear_signals(1);
if (dup2(pipe_fd[1], STDIN_FILENO) == -1)
_exit(1);
Index: job.c
===================================================================
RCS file: /cvsroot/tmux/tmux/job.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- job.c 14 May 2010 14:30:01 -0000 1.17
+++ job.c 29 Aug 2010 14:42:11 -0000 1.18
@@ -148,7 +148,7 @@
case -1:
return (-1);
case 0: /* child */
- clear_signals();
+ clear_signals(1);
environ_push(&global_environ);
Index: server.c
===================================================================
RCS file: /cvsroot/tmux/tmux/server.c,v
retrieving revision 1.242
retrieving revision 1.243
diff -u -d -r1.242 -r1.243
--- server.c 22 Jun 2010 23:21:39 -0000 1.242
+++ server.c 29 Aug 2010 14:42:11 -0000 1.243
@@ -143,7 +143,7 @@
/* event_init() was called in our parent, need to reinit. */
if (event_reinit(ev_base) != 0)
fatal("event_reinit failed");
- clear_signals();
+ clear_signals(0);
logfile("server");
log_debug("server started, pid %ld", (long) getpid());
Index: signal.c
===================================================================
RCS file: /cvsroot/tmux/tmux/signal.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- signal.c 14 May 2010 14:35:26 -0000 1.2
+++ signal.c 29 Aug 2010 14:42:11 -0000 1.3
@@ -62,7 +62,7 @@
}
void
-clear_signals(void)
+clear_signals(int after_fork)
{
struct sigaction sigact;
@@ -79,10 +79,25 @@
if (sigaction(SIGTSTP, &sigact, NULL) != 0)
fatal("sigaction failed");
- event_del(&ev_sighup);
- event_del(&ev_sigchld);
- event_del(&ev_sigcont);
- event_del(&ev_sigterm);
- event_del(&ev_sigusr1);
- event_del(&ev_sigwinch);
+ if (after_fork) {
+ if (sigaction(SIGHUP, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGCHLD, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGCONT, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGTERM, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGUSR1, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ if (sigaction(SIGWINCH, &sigact, NULL) != 0)
+ fatal("sigaction failed");
+ } else {
+ event_del(&ev_sighup);
+ event_del(&ev_sigchld);
+ event_del(&ev_sigcont);
+ event_del(&ev_sigterm);
+ event_del(&ev_sigusr1);
+ event_del(&ev_sigwinch);
+ }
}
Index: window.c
===================================================================
RCS file: /cvsroot/tmux/tmux/window.c,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -d -r1.134 -r1.135
--- window.c 17 Jul 2010 14:38:13 -0000 1.134
+++ window.c 29 Aug 2010 14:42:11 -0000 1.135
@@ -572,7 +572,7 @@
environ_push(env);
- clear_signals();
+ clear_signals(1);
log_close();
if (*wp->cmd != '\0') {
Index: tmux.h
===================================================================
RCS file: /cvsroot/tmux/tmux/tmux.h,v
retrieving revision 1.573
retrieving revision 1.574
diff -u -d -r1.573 -r1.574
--- tmux.h 11 Aug 2010 22:16:03 -0000 1.573
+++ tmux.h 29 Aug 2010 14:42:11 -0000 1.574
@@ -1951,8 +1951,8 @@
char *default_window_name(struct window *);
/* signal.c */
-void set_signals(void(*handler)(int, short, unused void *));
-void clear_signals(void);
+void set_signals(void(*)(int, short, void *));
+void clear_signals(int);
/* session.c */
extern struct sessions sessions;
Index: tmux.c
===================================================================
RCS file: /cvsroot/tmux/tmux/tmux.c,v
retrieving revision 1.214
retrieving revision 1.215
diff -u -d -r1.214 -r1.215
--- tmux.c 17 Jul 2010 14:36:41 -0000 1.214
+++ tmux.c 29 Aug 2010 14:42:11 -0000 1.215
@@ -566,7 +566,7 @@
event_dispatch();
- clear_signals();
+ clear_signals(0);
client_main(); /* doesn't return */
}
@@ -653,7 +653,7 @@
memcpy(&shelldata, imsg.data, sizeof shelldata);
shelldata.shell[(sizeof shelldata.shell) - 1] = '\0';
- clear_signals();
+ clear_signals(0);
shell_exec(shelldata.shell, shellcmd);
default:
------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users
worldwide. Take advantage of special opportunities to increase revenue and
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
tmux-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-cvs