summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2007-04-13 04:22:14 +0000
committerKen Raeburn <raeburn@mit.edu>2007-04-13 04:22:14 +0000
commit1a94872d6b77180c6bfceaf560fb55be8909f3b2 (patch)
treec99f13ff4e975d0f3789e0c109a7b67cf95c05e5 /src/lib
parent183a4d78661159d31ac207ea6ea9428b86103484 (diff)
downloadkrb5-1a94872d6b77180c6bfceaf560fb55be8909f3b2.tar.gz
krb5-1a94872d6b77180c6bfceaf560fb55be8909f3b2.tar.xz
krb5-1a94872d6b77180c6bfceaf560fb55be8909f3b2.zip
If select returns EINTR, recompute the expiration time and call it again
ticket: 5440 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19452 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/os/sendto_kdc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lib/krb5/os/sendto_kdc.c b/src/lib/krb5/os/sendto_kdc.c
index 78bb419bd..b133ec7d2 100644
--- a/src/lib/krb5/os/sendto_kdc.c
+++ b/src/lib/krb5/os/sendto_kdc.c
@@ -497,6 +497,7 @@ krb5int_cm_call_select (const struct select_state *in,
e = getcurtime(&now);
if (e)
return e;
+try_again:
if (out->end_time.tv_sec == 0)
timo = 0;
else {
@@ -527,8 +528,11 @@ krb5int_cm_call_select (const struct select_state *in,
else
dprint(":%F\n", &out->rfds, &out->wfds, &out->xfds, out->max);
- if (*sret < 0)
+ if (*sret < 0) {
+ if (e == EINTR)
+ goto try_again;
return e;
+ }
return 0;
}