From b460712bf51f2f5d15d5e4dce575ed66e5a3ff50 Mon Sep 17 00:00:00 2001 From: Vic Lee Date: Thu, 23 Jun 2011 22:46:42 +0800 Subject: libfreerdp-utils: add missing config.h in unicode.c --- libfreerdp-utils/unicode.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libfreerdp-utils/unicode.c b/libfreerdp-utils/unicode.c index dda7f96..c4c6fc7 100644 --- a/libfreerdp-utils/unicode.c +++ b/libfreerdp-utils/unicode.c @@ -17,6 +17,7 @@ limitations under the License. */ +#include "config.h" #include #include -- cgit v1.2.3 From d6c5514f191aada3c308b1bdda3a3d6f9f422193 Mon Sep 17 00:00:00 2001 From: Vic Lee Date: Thu, 23 Jun 2011 22:52:03 +0800 Subject: rdpdr: fix a memory access issue related to smartcard. --- channels/rdpdr/devman.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/channels/rdpdr/devman.c b/channels/rdpdr/devman.c index 49e0d46..d14a051 100644 --- a/channels/rdpdr/devman.c +++ b/channels/rdpdr/devman.c @@ -103,11 +103,11 @@ devman_unregister_service(DEVMAN* devman, SERVICE* srv) if (pdev->service == srv) { - devman_unregister_device(devman, pdev); - devman_rewind(devman); - if (pdev->service->type == RDPDR_DTYP_SMARTCARD && pdev->service->control) pthread_cancel(scard_thread); + + devman_unregister_device(devman, pdev); + devman_rewind(devman); } } -- cgit v1.2.3 From 6acc9e53e1c4dda5c8c2995140d936b9706dffd3 Mon Sep 17 00:00:00 2001 From: Vic Lee Date: Sat, 25 Jun 2011 14:41:48 +0800 Subject: libfreerdp-core/openssl: fix high CPU usage when TLS is blocking. --- libfreerdp-core/crypto/openssl.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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 #include +#include #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: -- cgit v1.2.3