aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/gtls.c17
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);