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:
authorVic Lee <llyzs@163.com>2011-06-25 11:04:20 +0400
committerVic Lee <llyzs@163.com>2011-06-25 11:04:20 +0400
commitf8830521b86ceb3b5f51de8b54af0b3874337a30 (patch)
tree2075d7ac16f1c0123aeb7729855911367ea217d7
parenta34a6dba01f97fc5aaaecc38af2b7d5eb447afcf (diff)
parent6acc9e53e1c4dda5c8c2995140d936b9706dffd3 (diff)
Merge branch 'master' into remotefx
-rw-r--r--channels/rdpdr/devman.c6
-rw-r--r--libfreerdp-core/crypto/openssl.c8
-rw-r--r--libfreerdp-utils/unicode.c1
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>