--- vsftpd-2.0.2/standalone.c.signal 2004-07-02 13:25:37.000000000 +0200 +++ vsftpd-2.0.2/standalone.c 2005-03-14 09:37:12.937643960 +0100 @@ -134,12 +134,8 @@ void* p_raw_addr; int new_child; int new_client_sock; - vsf_sysutil_unblock_sig(kVSFSysUtilSigCHLD); - vsf_sysutil_unblock_sig(kVSFSysUtilSigHUP); new_client_sock = vsf_sysutil_accept_timeout( listen_sock, p_accept_addr, 0); - vsf_sysutil_block_sig(kVSFSysUtilSigCHLD); - vsf_sysutil_block_sig(kVSFSysUtilSigHUP); if (vsf_sysutil_retval_is_error(new_client_sock)) { continue; --- vsftpd-2.0.2/sysutil.c.signal 2005-03-03 00:48:02.000000000 +0100 +++ vsftpd-2.0.2/sysutil.c 2005-03-14 09:41:34.992805520 +0100 @@ -1623,7 +1623,11 @@ timeout.tv_usec = 0; do { + vsf_sysutil_unblock_sig(kVSFSysUtilSigCHLD); + vsf_sysutil_unblock_sig(kVSFSysUtilSigHUP); retval = select(fd + 1, &accept_fdset, NULL, NULL, &timeout); + vsf_sysutil_block_sig(kVSFSysUtilSigCHLD); + vsf_sysutil_block_sig(kVSFSysUtilSigHUP); saved_errno = errno; vsf_sysutil_check_pending_actions(kVSFSysUtilUnknown, 0, 0); } while (retval < 0 && saved_errno == EINTR); @@ -1633,7 +1637,11 @@ return -1; } } + vsf_sysutil_unblock_sig(kVSFSysUtilSigCHLD); + vsf_sysutil_unblock_sig(kVSFSysUtilSigHUP); retval = accept(fd, &remote_addr.u.u_sockaddr, &socklen); + vsf_sysutil_block_sig(kVSFSysUtilSigCHLD); + vsf_sysutil_block_sig(kVSFSysUtilSigHUP); vsf_sysutil_check_pending_actions(kVSFSysUtilUnknown, 0, 0); if (retval < 0) {