summaryrefslogtreecommitdiffstats
path: root/crypto/bio
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2009-06-05 14:59:26 +0000
committerDr. Stephen Henson <steve@openssl.org>2009-06-05 14:59:26 +0000
commit58f41a926a73bd5c49beb91991b486d4e0b544f5 (patch)
tree8d2cd903536ebd79dfb8c315727c6583fef3157d /crypto/bio
parent81d06ef2fd64512e3833a13bedc004802003fbfa (diff)
Updates from 1.0.0-stable
Diffstat (limited to 'crypto/bio')
-rw-r--r--crypto/bio/bss_dgram.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/crypto/bio/bss_dgram.c b/crypto/bio/bss_dgram.c
index 2e1a6fac33..027cdf943b 100644
--- a/crypto/bio/bss_dgram.c
+++ b/crypto/bio/bss_dgram.c
@@ -217,12 +217,19 @@ static void dgram_adjust_rcv_timeout(BIO *b)
timeleft.tv_usec += 1000000;
}
+ if (timeleft.tv_sec < 0)
+ {
+ timeleft.tv_sec = 0;
+ timeleft.tv_usec = 1;
+ }
+
/* Adjust socket timeout if next handhake message timer
* will expire earlier.
*/
- if (data->socket_timeout.tv_sec < timeleft.tv_sec ||
+ if ((data->socket_timeout.tv_sec == 0 && data->socket_timeout.tv_usec == 0) ||
+ (data->socket_timeout.tv_sec > timeleft.tv_sec) ||
(data->socket_timeout.tv_sec == timeleft.tv_sec &&
- data->socket_timeout.tv_usec <= timeleft.tv_usec))
+ data->socket_timeout.tv_usec >= timeleft.tv_usec))
{
#ifdef OPENSSL_SYS_WINDOWS
timeout = timeleft.tv_sec * 1000 + timeleft.tv_usec / 1000;