/* 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 */
*/
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()
/* 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);