Index: gnutls-2.4.2/src/tests.c =================================================================== --- gnutls-2.4.2.orig/src/tests.c 2008-09-15 13:04:19.000000000 -0700 +++ gnutls-2.4.2/src/tests.c 2009-03-04 15:25:09.000000000 -0800 @@ -491,6 +491,7 @@ int old, secs = 6; #ifndef _WIN32 + struct sigaction act; signal (SIGALRM, got_alarm); #endif @@ -511,7 +512,9 @@ return TEST_FAILED; #ifndef _WIN32 - old = siginterrupt (SIGALRM, 1); + (void) sigaction(SIGALRM, NULL, &act); + act.sa_flags &= ~SA_RESTART; + old = sigaction(SIGALRM, &act, NULL); alarm (secs); #else setsockopt ((int)gnutls_transport_get_ptr (session), SOL_SOCKET, SO_RCVTIMEO, @@ -525,7 +528,12 @@ while (ret > 0); #ifndef _WIN32 - siginterrupt (SIGALRM, old); + (void) sigaction(SIGALRM, NULL, &act); + if (old) + act.sa_flags &= ~SA_RESTART; + else + act.sa_flags |= SA_RESTART; + sigaction(SIGALRM, &act, NULL); #else if (WSAGetLastError () == WSAETIMEDOUT || WSAGetLastError () == WSAECONNABORTED)