diff options
Diffstat (limited to 'recipes/gnutls/gnutls-2.4.2/gnutls-replace-siginterrupt.patch')
-rw-r--r-- | recipes/gnutls/gnutls-2.4.2/gnutls-replace-siginterrupt.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/recipes/gnutls/gnutls-2.4.2/gnutls-replace-siginterrupt.patch b/recipes/gnutls/gnutls-2.4.2/gnutls-replace-siginterrupt.patch new file mode 100644 index 0000000000..9b734a9bf9 --- /dev/null +++ b/recipes/gnutls/gnutls-2.4.2/gnutls-replace-siginterrupt.patch @@ -0,0 +1,37 @@ +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) |