diff options
author | Vic Lee <llyzs@163.com> | 2011-06-25 11:04:20 +0400 |
---|---|---|
committer | Vic Lee <llyzs@163.com> | 2011-06-25 11:04:20 +0400 |
commit | f8830521b86ceb3b5f51de8b54af0b3874337a30 (patch) | |
tree | 2075d7ac16f1c0123aeb7729855911367ea217d7 | |
parent | a34a6dba01f97fc5aaaecc38af2b7d5eb447afcf (diff) | |
parent | 6acc9e53e1c4dda5c8c2995140d936b9706dffd3 (diff) |
Merge branch 'master' into remotefx
-rw-r--r-- | channels/rdpdr/devman.c | 6 | ||||
-rw-r--r-- | libfreerdp-core/crypto/openssl.c | 8 | ||||
-rw-r--r-- | libfreerdp-utils/unicode.c | 1 |
3 files changed, 12 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); } } 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: 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 <errno.h> #include <freerdp/utils/memory.h> |