- fix potential hang when in a backgroud process group
*/
bool pkgDPkgPM::Go(int OutStatusFd)
{
*/
bool pkgDPkgPM::Go(int OutStatusFd)
{
+ fd_set rfds;
+ struct timespec tv;
+ sigset_t sigmask;
+ sigset_t original_sigmask;
+
unsigned int MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024);
unsigned int MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024);
bool NoTriggers = _config->FindB("DPkg::NoTriggers",false);
unsigned int MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024);
unsigned int MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024);
bool NoTriggers = _config->FindB("DPkg::NoTriggers",false);
rtt = tt;
cfmakeraw(&rtt);
rtt.c_lflag &= ~ECHO;
rtt = tt;
cfmakeraw(&rtt);
rtt.c_lflag &= ~ECHO;
+ // block SIGTTOU during tcsetattr to prevent a hang if
+ // the process is a member of the background process group
+ // http://www.opengroup.org/onlinepubs/000095399/functions/tcsetattr.html
+ sigemptyset(&sigmask);
+ sigaddset(&sigmask, SIGTTOU);
+ sigprocmask(SIG_BLOCK,&sigmask, &original_sigmask);
tcsetattr(0, TCSAFLUSH, &rtt);
tcsetattr(0, TCSAFLUSH, &rtt);
+ sigprocmask(SIG_SETMASK, &original_sigmask, 0);
close(slave);
// setups fds
close(slave);
// setups fds
- fd_set rfds;
- struct timespec tv;
- sigset_t sigmask;
- sigset_t original_sigmask;
sigemptyset(&sigmask);
sigprocmask(SIG_BLOCK,&sigmask,&original_sigmask);
sigemptyset(&sigmask);
sigprocmask(SIG_BLOCK,&sigmask,&original_sigmask);
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
dnl -- SET THIS TO THE RELEASE VERSION --
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.7.14ubuntu6")
+AC_DEFINE_UNQUOTED(VERSION,"0.7.14ubuntu7")
PACKAGE="apt"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_SUBST(PACKAGE)
PACKAGE="apt"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_SUBST(PACKAGE)
-apt (0.7.14ubuntu7) intrepid; urgency=low
+apt (0.7.14ubuntu7) jaunty; urgency=low
* cmdline/apt-cache.cc:
- remove the gettext from a string that consists entirely
of variables (LP: #56792)
* cmdline/apt-cache.cc:
- remove the gettext from a string that consists entirely
of variables (LP: #56792)
+ * apt-pkg/deb/dpkgpm.cc:
+ - fix potential hang when in a backgroud process group
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 28 Oct 2008 21:09:12 +0100
apt (0.7.14ubuntu6) intrepid; urgency=low
apt (0.7.14ubuntu6) intrepid; urgency=low