diff options
-rw-r--r-- | lib/gtls.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/gtls.c b/lib/gtls.c index bfa4347bf..797d18b16 100644 --- a/lib/gtls.c +++ b/lib/gtls.c @@ -58,6 +58,17 @@ /* The last #include file should be: */ #include "memdebug.h" +/* + Some hackish cast macros based on: + http://library.gnome.org/devel/glib/unstable/glib-Type-Conversion-Macros.html +*/ +#ifndef GNUTLS_POINTER_TO_INT_CAST +#define GNUTLS_POINTER_TO_INT_CAST(p) ((int) (long) (p)) +#endif +#ifndef GNUTLS_INT_TO_POINTER_CAST +#define GNUTLS_INT_TO_POINTER_CAST(i) ((void*) (long) (i)) +#endif + /* Enable GnuTLS debugging by defining GTLSDEBUG */ /*#define GTLSDEBUG */ @@ -78,12 +89,12 @@ static bool gtls_inited = FALSE; */ static ssize_t Curl_gtls_push(void *s, const void *buf, size_t len) { - return swrite(s, buf, len); + return swrite(GNUTLS_POINTER_TO_INT_CAST(s), buf, len); } static ssize_t Curl_gtls_pull(void *s, void *buf, size_t len) { - return sread(s, buf, len); + return sread(GNUTLS_POINTER_TO_INT_CAST(s), buf, len); } /* Curl_gtls_init() @@ -381,7 +392,7 @@ Curl_gtls_connect(struct connectdata *conn, /* set the connection handle (file descriptor for the socket) */ gnutls_transport_set_ptr(session, - (gnutls_transport_ptr)conn->sock[sockindex]); + GNUTLS_INT_TO_POINTER_CAST(conn->sock[sockindex])); /* register callback functions to send and receive data. */ gnutls_transport_set_push_function(session, Curl_gtls_push); |