diff -c -r cups-1.3.4-old/scheduler/process.c cups-1.3.4/scheduler/process.c *** cups-1.3.4-old/scheduler/process.c Tue Sep 25 17:44:07 2007 --- cups-1.3.4/scheduler/process.c Fri Nov 16 00:29:50 2007 *************** *** 65,73 **** int force) /* I - Force child to die */ { if (force) ! return (kill(pid, SIGKILL)); else ! return (kill(pid, SIGTERM)); } --- 65,73 ---- int force) /* I - Force child to die */ { if (force) ! return (kill(-pid, SIGKILL)); else ! return (kill(-pid, SIGTERM)); } *************** *** 183,189 **** * * Update stdin/stdout/stderr as needed... */ ! if (infd != 0) { close(0); --- 183,209 ---- * * Update stdin/stdout/stderr as needed... */ ! /* ! give the child a separate process group to be able to kill the complete group ! */ ! #if _SVID_SOURCE || _XOPEN_SOURCE >= 500 ! if(setpgrp()) { ! cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to setpgrp %s - %s.", command, strerror(errno)); ! exit(1); ! } ! #else ! #if _BSD_SOURCE && ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE || _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE) ! if(setpgrp(0,0)) { ! cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to setpgrp %s - %s.", command, strerror(errno)); ! exit(1); ! } ! #else ! if(setpgrp()) { ! cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to setpgrp %s - %s.", command, strerror(errno)); ! exit(1); ! } ! #endif ! #endif if (infd != 0) { close(0);