Pārlūkot izejas kodu

GnuTLS 3.x has removed gnutls_transport_set_global_errno() in favour of

gnutls_transport_set_errno(). Make sure we call the right errno function
depending on which GnuTLS we're using.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4922 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v1.2.90
Pierre Ossman pirms 12 gadiem
vecāks
revīzija
2137f4f78f
5 mainītis faili ar 55 papildinājumiem un 13 dzēšanām
  1. 2
    1
      CMakeLists.txt
  2. 46
    0
      common/rdr/TLSErrno.h
  3. 3
    6
      common/rdr/TLSInStream.cxx
  4. 2
    5
      common/rdr/TLSOutStream.cxx
  5. 2
    1
      config.h.in

+ 2
- 1
CMakeLists.txt Parādīt failu

@@ -356,7 +356,8 @@ if(ENABLE_GNUTLS)
# system's version (if available) to perform this test.
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES};-lz)
endif()
check_function_exists(gnutls_transport_set_global_errno HAVE_OLD_GNUTLS)
check_function_exists(gnutls_transport_set_errno HAVE_GNUTLS_SET_ERRNO)
check_function_exists(gnutls_transport_set_global_errno HAVE_GNUTLS_SET_GLOBAL_ERRNO)
check_function_exists(gnutls_x509_crt_print HAVE_GNUTLS_X509_CRT_PRINT)
check_type_size(gnutls_x509_crt_t GNUTLS_X509_CRT_T)
check_type_size(gnutls_datum_t GNUTLS_DATUM_T)

+ 46
- 0
common/rdr/TLSErrno.h Parādīt failu

@@ -0,0 +1,46 @@
/* Copyright (C) 2012 Pierre Ossman for Cendio AB
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/

#ifndef __RDR_TLSERRNO_H__
#define __RDR_TLSERRNO_H__

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifdef HAVE_GNUTLS

#include <errno.h>

namespace rdr {

static inline void gnutls_errno_helper(gnutls_session session, int _errno)
{
#if defined(HAVE_GNUTLS_SET_ERRNO)
gnutls_transport_set_errno(session, _errno);
#elif defined(HAVE_GNUTLS_SET_GLOBAL_ERRNO)
gnutls_transport_set_global_errno(_errno);
#else
errno = _errno;
#endif
}
};

#endif

#endif

+ 3
- 6
common/rdr/TLSInStream.cxx Parādīt failu

@@ -25,12 +25,9 @@
#include <rdr/Exception.h>
#include <rdr/TLSException.h>
#include <rdr/TLSInStream.h>
#include <rdr/TLSErrno.h>
#include <errno.h>

#ifdef HAVE_OLD_GNUTLS
#define gnutls_transport_set_global_errno(A) do { errno = (A); } while(0)
#endif

#ifdef HAVE_GNUTLS
using namespace rdr;

@@ -43,7 +40,7 @@ ssize_t TLSInStream::pull(gnutls_transport_ptr str, void* data, size_t size)

try {
if (!in->check(1, 1, false)) {
gnutls_transport_set_global_errno(EAGAIN);
gnutls_errno_helper(self->session, EAGAIN);
return -1;
}

@@ -53,7 +50,7 @@ ssize_t TLSInStream::pull(gnutls_transport_ptr str, void* data, size_t size)
in->readBytes(data, size);

} catch (Exception& e) {
gnutls_transport_set_global_errno(EINVAL);
gnutls_errno_helper(self->session, EINVAL);
return -1;
}


+ 2
- 5
common/rdr/TLSOutStream.cxx Parādīt failu

@@ -25,12 +25,9 @@
#include <rdr/Exception.h>
#include <rdr/TLSException.h>
#include <rdr/TLSOutStream.h>
#include <rdr/TLSErrno.h>
#include <errno.h>

#ifdef HAVE_OLD_GNUTLS
#define gnutls_transport_set_global_errno(A) do { errno = (A); } while(0)
#endif

#ifdef HAVE_GNUTLS
using namespace rdr;

@@ -46,7 +43,7 @@ ssize_t TLSOutStream::push(gnutls_transport_ptr str, const void* data,
out->writeBytes(data, size);
out->flush();
} catch (Exception& e) {
gnutls_transport_set_global_errno(EINVAL);
gnutls_errno_helper(self->session, EINVAL);
return -1;
}


+ 2
- 1
config.h.in Parādīt failu

@@ -8,7 +8,8 @@
#cmakedefine HAVE_STRCASECMP
#cmakedefine HAVE_STRNCASECMP
#cmakedefine HAVE_VSNPRINTF
#cmakedefine HAVE_OLD_GNUTLS
#cmakedefine HAVE_GNUTLS_SET_GLOBAL_ERRNO
#cmakedefine HAVE_GNUTLS_SET_ERRNO
#cmakedefine HAVE_GNUTLS_X509_CRT_PRINT
#cmakedefine HAVE_GNUTLS_X509_CRT_T
#cmakedefine HAVE_GNUTLS_DATUM_T

Notiek ielāde…
Atcelt
Saglabāt