diff options
| author | Christian Beier <dontmind@freeshell.org> | 2016-05-30 12:16:54 +0200 | 
|---|---|---|
| committer | Christian Beier <dontmind@freeshell.org> | 2016-05-30 12:16:54 +0200 | 
| commit | ddabcb67a630d5b8e73cdce6d78f9413b36b742b (patch) | |
| tree | 6542861c237fc2b29c1b73f339b0fe0e881d2ea8 /libvncclient/tls_gnutls.c | |
| parent | 475a2c944731aa5c578f1fc4aba51a3ae0069c2d (diff) | |
| parent | 6fabf75f9ce7adb565ca4c02d03ba3cccae36759 (diff) | |
| download | libtdevnc-ddabcb67a630d5b8e73cdce6d78f9413b36b742b.tar.gz libtdevnc-ddabcb67a630d5b8e73cdce6d78f9413b36b742b.zip | |
Merge pull request #105 from cgeorges82/master
fix for issue #97. Also, this fixes cmake builds for other platforms.
Diffstat (limited to 'libvncclient/tls_gnutls.c')
| -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 91cea67..b9ffe89 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; | 
