]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/tcp-wrappers/tcp-wrappers-7.6/restore_sigalarm
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / tcp-wrappers / tcp-wrappers-7.6 / restore_sigalarm
1 diff -ruN tcp_wrappers_7.6.orig/rfc931.c tcp_wrappers_7.6/rfc931.c
2 --- tcp_wrappers_7.6.orig/rfc931.c      2004-08-29 18:40:08.000000000 +0200
3 +++ tcp_wrappers_7.6/rfc931.c   2004-08-29 18:40:02.000000000 +0200
4 @@ -92,6 +92,8 @@
5      char   *cp;
6      char   *result = unknown;
7      FILE   *fp;
8 +    unsigned saved_timeout;
9 +    struct sigaction nact, oact;
10  
11  #ifdef INET6
12      /* address family must be the same */
13 @@ -134,7 +136,12 @@
14          */
15  
16         if (setjmp(timebuf) == 0) {
17 -           signal(SIGALRM, timeout);
18 +           /* Save SIGALRM timer and handler. Sudheer Abdul-Salam, SUN. */
19 +           saved_timeout = alarm(0);
20 +           nact.sa_handler = timeout;
21 +           nact.sa_flags = 0;
22 +           (void) sigemptyset(&nact.sa_mask);
23 +           (void) sigaction(SIGALRM, &nact, &oact);
24             alarm(rfc931_timeout);
25  
26             /*
27 @@ -223,6 +230,10 @@
28             }
29             alarm(0);
30         }
31 +       /* Restore SIGALRM timer and handler. Sudheer Abdul-Salam, SUN. */
32 +       (void) sigaction(SIGALRM, &oact, NULL);
33 +       if (saved_timeout > 0)
34 +           alarm(saved_timeout);
35         fclose(fp);
36      }
37      STRN_CPY(dest, result, STRING_LENGTH);