diff options
author | Cédric Georges <cgeorges@edge-airport.com> | 2016-03-05 16:56:51 +0100 |
---|---|---|
committer | Cédric Georges <cgeorges@edge-airport.com> | 2016-03-05 16:56:51 +0100 |
commit | 6fabf75f9ce7adb565ca4c02d03ba3cccae36759 (patch) | |
tree | 769849d44cd274651ea63dc9de9c6bc1e8b83087 /libvncclient | |
parent | e91132f6a99cb9055d3a7f5a6f5c7ec02bbeb809 (diff) | |
download | libtdevnc-6fabf75f9ce7adb565ca4c02d03ba3cccae36759.tar.gz libtdevnc-6fabf75f9ce7adb565ca4c02d03ba3cccae36759.zip |
Append missing include directory for GNUTLS and OPENSSL in CMake project
Append support of gnutls > v 2.99.01 (gnutls_transport_set_global_errno have a different signature)
Diffstat (limited to 'libvncclient')
-rw-r--r-- | libvncclient/tls_gnutls.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/libvncclient/tls_gnutls.c b/libvncclient/tls_gnutls.c index 3daa416..a5a5610 100644 --- a/libvncclient/tls_gnutls.c +++ b/libvncclient/tls_gnutls.c @@ -67,9 +67,20 @@ InitializeTLS(void) * libvncclient are linked to different versions of msvcrt.dll. */ #ifdef WIN32 -static void WSAtoTLSErrno() +static void WSAtoTLSErrno(gnutls_session_t* session) { switch(WSAGetLastError()) { +#if (GNUTLS_VERSION_NUMBER >= 0x029901) + case WSAEWOULDBLOCK: + gnutls_transport_set_errno(session, EAGAIN); + break; + case WSAEINTR: + gnutls_transport_set_errno(session, EINTR); + break; + default: + gnutls_transport_set_errno(session, EIO); + break; +#else case WSAEWOULDBLOCK: gnutls_transport_set_global_errno(EAGAIN); break; @@ -79,11 +90,11 @@ static void WSAtoTLSErrno() default: gnutls_transport_set_global_errno(EIO); break; +#endif } } #endif - static ssize_t PushTLS(gnutls_transport_ptr_t transport, const void *data, size_t len) { @@ -96,7 +107,7 @@ PushTLS(gnutls_transport_ptr_t transport, const void *data, size_t len) if (ret < 0) { #ifdef WIN32 - WSAtoTLSErrno(); + WSAtoTLSErrno((gnutls_session_t*)&client->tlsSession); #endif if (errno == EINTR) continue; return -1; @@ -118,7 +129,7 @@ PullTLS(gnutls_transport_ptr_t transport, void *data, size_t len) if (ret < 0) { #ifdef WIN32 - WSAtoTLSErrno(); + WSAtoTLSErrno((gnutls_session_t*)&client->tlsSession); #endif if (errno == EINTR) continue; return -1; |