Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FreeRDP/FreeRDP-old.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDorian Johnson <2011@dorianj.net>2011-06-26 23:19:14 +0400
committerDorian Johnson <2011@dorianj.net>2011-06-26 23:19:14 +0400
commit2e5b06532e588f97cc35bf03b40a8246d78b34d0 (patch)
treeed359acfcbdb96e9e3e615af5d1318296cd26e0c
parent8cb6139ee7a71209f02a885da9c440e67f77b0d5 (diff)
parent6acc9e53e1c4dda5c8c2995140d936b9706dffd3 (diff)
Merge remote branch 'upstream/master'
-rw-r--r--libfreerdp-core/crypto/openssl.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libfreerdp-core/crypto/openssl.c b/libfreerdp-core/crypto/openssl.c
index 333585b..84417d7 100644
--- a/libfreerdp-core/crypto/openssl.c
+++ b/libfreerdp-core/crypto/openssl.c
@@ -21,6 +21,7 @@
#include "crypto.h"
#include <freerdp/utils/memory.h>
#include <freerdp/constants/constants.h>
+#include <time.h>
#include "tls.h"
#include "crypto/openssl.h"
@@ -349,6 +350,7 @@ struct rdp_tls
{
SSL_CTX * ctx;
SSL * ssl;
+ struct timespec ts;
};
RD_BOOL
@@ -428,6 +430,10 @@ tls_new(void)
SSL_CTX_set_options(tls->ctx, SSL_OP_ALL);
+ /* a small 0.1ms delay when network blocking happens. */
+ tls->ts.tv_sec = 0;
+ tls->ts.tv_nsec = 100000;
+
return tls;
}
@@ -515,6 +521,7 @@ tls_write(rdpTls * tls, char* b, int length)
break;
case SSL_ERROR_WANT_WRITE:
+ nanosleep(&tls->ts, NULL);
break;
default:
@@ -543,6 +550,7 @@ tls_read(rdpTls * tls, char* b, int length)
break;
case SSL_ERROR_WANT_READ:
+ nanosleep(&tls->ts, NULL);
break;
default: