On Fri, 31 Dec 2021, RVP wrote:
OP: Try this patch:
---START---
diff -u screen-4.8.0{.orig,}/screen.c --- screen-4.8.0.orig/screen.c
2020-02-05 20:09:38.000000000 +0000
+++ screen-4.8.0/screen.c 2021-12-31 01:56:30.470670972 +0000
@@ -1801,6 +1801,10 @@
struct win *p = windows;
windows = windows->w_next;
FreeWindow(p);
+ if (p->w_pid > 0) {
+ debug1("Hangup(%d);\n", p->w_pid);
+ killpg(p->w_pid, SIGHUP);
+ }
}
if (ServerSocket != -1) {
---END---
I goofed that (use-after-free). Try this one please:
---START---
diff -urN screen-4.8.0.orig/screen.c screen-4.8.0/screen.c
--- screen-4.8.0.orig/screen.c 2021-12-31 03:27:41.988827000 +0000
+++ screen-4.8.0/screen.c 2021-12-31 03:26:47.995416000 +0000
@@ -1801,8 +1801,13 @@
debug1("Finit(%d);\n", i);
while (windows) {
struct win *p = windows;
+ pid_t pid = p->w_pid;
windows = windows->w_next;
FreeWindow(p);
+ if (pid > 0) {
+ debug1("Hangup(%d);\n", pid);
+ killpg(pid, SIGHUP);
+ }
}
if (ServerSocket != -1) {
---END---