1 Index: glibc-2.5-20061008T1257/sunrpc/svc_tcp.c
2 ===================================================================
3 --- glibc-2.5-20061008T1257.orig/sunrpc/svc_tcp.c
4 +++ glibc-2.5-20061008T1257/sunrpc/svc_tcp.c
5 @@ -50,6 +50,7 @@ static char sccsid[] = "@(#)svc_tcp.c 1.
13 @@ -249,6 +250,11 @@ again:
17 + if (errno == EMFILE)
19 + struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 };
20 + __nanosleep(&ts , NULL);
25 Index: glibc-2.5-20061008T1257/sunrpc/svc_udp.c
26 ===================================================================
27 --- glibc-2.5-20061008T1257.orig/sunrpc/svc_udp.c
28 +++ glibc-2.5-20061008T1257/sunrpc/svc_udp.c
29 @@ -46,6 +46,7 @@ static char sccsid[] = "@(#)svc_udp.c 1.
30 #include <sys/socket.h>
37 @@ -277,8 +278,16 @@ again:
39 (struct sockaddr *) &(xprt->xp_raddr), &len);
40 xprt->xp_addrlen = len;
41 - if (rlen == -1 && errno == EINTR)
47 + if (errno == EMFILE)
49 + struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 };
50 + __nanosleep(&ts , NULL);
53 if (rlen < 16) /* < 4 32-bit ints? */
55 xdrs->x_op = XDR_DECODE;
56 Index: glibc-2.5-20061008T1257/sunrpc/svc_unix.c
57 ===================================================================
58 --- glibc-2.5-20061008T1257.orig/sunrpc/svc_unix.c
59 +++ glibc-2.5-20061008T1257/sunrpc/svc_unix.c
68 @@ -247,6 +248,11 @@ again:
72 + if (errno == EMFILE)
74 + struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 };
75 + __nanosleep(&ts , NULL);