diff -Nur -x cmake -x CMakeLists.txt -x .svn -x .git /tmp/libssh2/src/libssh2_priv.h libssh2/src/libssh2_priv.h
--- /tmp/libssh2/src/libssh2_priv.h	2009-08-24 10:45:50.000000000 +0200
+++ libssh2/src/libssh2_priv.h	2009-08-24 11:02:27.822449400 +0200
@@ -97,10 +97,9 @@
 /* Provide iovec / writev on WIN32 platform. */
 #ifdef WIN32
 
-/* same as WSABUF */
 struct iovec {
-    u_long iov_len;
-    char *iov_base;
+    size_t iov_len;
+    void * iov_base;
 };
 
 #define inline __inline
@@ -150,6 +149,12 @@
 
 #endif
 
+#ifdef WIN32
+typedef SOCKET libssh2_socket_t;
+#else /* !WIN32 */
+typedef int libssh2_socket_t;
+#endif /* WIN32 */
+
 /* RFC4253 section 6.1 Maximum Packet Length says:
  *
  * "All implementations MUST be able to process packets with
@@ -716,7 +721,7 @@
     struct list_head listeners; /* list of LIBSSH2_LISTENER structs */
 
     /* Actual I/O socket */
-    int socket_fd;
+    libssh2_socket_t socket_fd;
     int socket_state;
     int socket_block_directions;
     int socket_prev_blockstate; /* stores the state of the socket blockiness
@@ -1136,8 +1141,8 @@
 void _libssh2_htonu32(unsigned char *buf, unsigned int val);
 
 #ifdef WIN32
-ssize_t _libssh2_recv(int socket, void *buffer, size_t length, int flags);
-ssize_t _libssh2_send(int socket, const void *buffer, size_t length, int flags);
+ssize_t _libssh2_recv(libssh2_socket_t socket, void *buffer, size_t length, int flags);
+ssize_t _libssh2_send(libssh2_socket_t socket, const void *buffer, size_t length, int flags);
 #else
 #define _libssh2_recv(a,b,c,d) recv(a,b,c,d)
 #define _libssh2_send(a,b,c,d) send(a,b,c,d)
diff -Nur -x cmake -x CMakeLists.txt -x .svn -x .git /tmp/libssh2/src/misc.c libssh2/src/misc.c
--- /tmp/libssh2/src/misc.c	2009-08-24 10:45:50.000000000 +0200
+++ libssh2/src/misc.c	2009-08-24 11:02:38.744394300 +0200
@@ -78,7 +78,7 @@
  * to set errno
  */
 ssize_t
-_libssh2_recv(int socket, void *buffer, size_t length, int flags)
+_libssh2_recv(libssh2_socket_t socket, void *buffer, size_t length, int flags)
 {
     ssize_t rc = recv(socket, buffer, length, flags);
 #ifdef WIN32
@@ -97,7 +97,7 @@
  * to set errno
  */
 ssize_t
-_libssh2_send(int socket, const void *buffer, size_t length, int flags)
+_libssh2_send(libssh2_socket_t socket, const void *buffer, size_t length, int flags)
 {
     ssize_t rc = send(socket, buffer, length, flags);
 #ifdef WIN32
diff -Nur -x cmake -x CMakeLists.txt -x .svn -x .git /tmp/libssh2/src/session.c libssh2/src/session.c
--- /tmp/libssh2/src/session.c	2009-08-24 10:45:50.000000000 +0200
+++ libssh2/src/session.c	2009-08-24 11:04:22.448183000 +0200
@@ -1349,7 +1349,7 @@
     }
 #elif defined(HAVE_SELECT)
     LIBSSH2_SESSION *session = NULL;
-    int maxfd = 0;
+    libssh2_socket_t maxfd = 0;
     fd_set rfds, wfds;
     struct timeval tv;
 
