summaryrefslogtreecommitdiffstats
path: root/src/lib/krb5/os
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2002-09-19 19:49:16 +0000
committerKen Raeburn <raeburn@mit.edu>2002-09-19 19:49:16 +0000
commit08e8e4aa95784b44c8ce9c737a5bb64d5936d684 (patch)
tree47236995059bc3112cbeac670caf87fa3f6ab075 /src/lib/krb5/os
parentdb51533e989372e38d0835c7b30e05f047204d80 (diff)
downloadkrb5-08e8e4aa95784b44c8ce9c737a5bb64d5936d684.tar.gz
krb5-08e8e4aa95784b44c8ce9c737a5bb64d5936d684.tar.xz
krb5-08e8e4aa95784b44c8ce9c737a5bb64d5936d684.zip
* sendto_kdc.c (krb5int_cm_call_select): If timeout value has tv_sec==0, treat
it as meaning "no timeout". (krb5int_debug_fprint): Handle null timeval pointer. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14884 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5/os')
-rw-r--r--src/lib/krb5/os/ChangeLog6
-rw-r--r--src/lib/krb5/os/sendto_kdc.c36
2 files changed, 28 insertions, 14 deletions
diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog
index a6b95422a0..a7a17ccc29 100644
--- a/src/lib/krb5/os/ChangeLog
+++ b/src/lib/krb5/os/ChangeLog
@@ -1,3 +1,9 @@
+2002-09-19 Ken Raeburn <raeburn@mit.edu>
+
+ * sendto_kdc.c (krb5int_cm_call_select): If timeout value has
+ tv_sec==0, treat it as meaning "no timeout".
+ (krb5int_debug_fprint): Handle null timeval pointer.
+
2002-09-18 Ken Raeburn <raeburn@mit.edu>
* sendto_kdc.c: Include cm.h.
diff --git a/src/lib/krb5/os/sendto_kdc.c b/src/lib/krb5/os/sendto_kdc.c
index 09bbcaa8c4..07d7a4d7bf 100644
--- a/src/lib/krb5/os/sendto_kdc.c
+++ b/src/lib/krb5/os/sendto_kdc.c
@@ -171,9 +171,12 @@ krb5int_debug_fprint (const char *fmt, ...)
case 't':
/* %t => struct timeval * */
tv = va_arg(args, struct timeval *);
- sprintf(tmpbuf, "%ld.%06ld",
- (long) tv->tv_sec, (long) tv->tv_usec);
- putstr(tmpbuf);
+ if (tv) {
+ sprintf(tmpbuf, "%ld.%06ld",
+ (long) tv->tv_sec, (long) tv->tv_usec);
+ putstr(tmpbuf);
+ } else
+ putstr("never");
break;
case 'd':
/* %d => int */
@@ -434,27 +437,32 @@ krb5_error_code
krb5int_cm_call_select (const struct select_state *in,
struct select_state *out, int *sret)
{
- struct timeval now;
+ struct timeval now, *timo;
krb5_error_code e;
*out = *in;
e = getcurtime(&now);
if (e)
return e;
- out->end_time.tv_sec -= now.tv_sec;
- out->end_time.tv_usec -= now.tv_usec;
- if (out->end_time.tv_usec < 0) {
- out->end_time.tv_usec += 1000000;
- out->end_time.tv_sec--;
- }
- if (out->end_time.tv_sec < 0) {
- *sret = 0;
- return 0;
+ if (out->end_time.tv_sec == 0)
+ timo = 0;
+ else {
+ timo = &out->end_time;
+ out->end_time.tv_sec -= now.tv_sec;
+ out->end_time.tv_usec -= now.tv_usec;
+ if (out->end_time.tv_usec < 0) {
+ out->end_time.tv_usec += 1000000;
+ out->end_time.tv_sec--;
+ }
+ if (out->end_time.tv_sec < 0) {
+ *sret = 0;
+ return 0;
+ }
}
dprint("selecting on max=%d sockets [%F] timeout %t\n",
out->max,
&out->rfds, &out->wfds, &out->xfds, out->max,
- &out->end_time);
+ timo);
*sret = select(out->max, &out->rfds, &out->wfds, &out->xfds,
&out->end_time);
e = SOCKET_ERRNO;