introducing libssh2_socket_t type and fixed iovec for windows

Steven Van Ingelgem introduces libssh2_socket_t as a generic socket
type to use internally to avoid compiler warnings and mistakes. Also,
the private struct iovec declaration for windows is now made to look
like the POSIX struct does.
This commit is contained in:
Daniel Stenberg 2009-08-24 14:07:05 +02:00
parent 9e099fb88a
commit 82c3f0ba72
3 changed files with 14 additions and 9 deletions

View File

@ -97,10 +97,9 @@
/* Provide iovec / writev on WIN32 platform. */ /* Provide iovec / writev on WIN32 platform. */
#ifdef WIN32 #ifdef WIN32
/* same as WSABUF */
struct iovec { struct iovec {
u_long iov_len; size_t iov_len;
char *iov_base; void * iov_base;
}; };
#define inline __inline #define inline __inline
@ -150,6 +149,12 @@ static inline int writev(int sock, struct iovec *iov, int nvecs)
#endif #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: /* RFC4253 section 6.1 Maximum Packet Length says:
* *
* "All implementations MUST be able to process packets with * "All implementations MUST be able to process packets with
@ -716,7 +721,7 @@ struct _LIBSSH2_SESSION
struct list_head listeners; /* list of LIBSSH2_LISTENER structs */ struct list_head listeners; /* list of LIBSSH2_LISTENER structs */
/* Actual I/O socket */ /* Actual I/O socket */
int socket_fd; libssh2_socket_t socket_fd;
int socket_state; int socket_state;
int socket_block_directions; int socket_block_directions;
int socket_prev_blockstate; /* stores the state of the socket blockiness int socket_prev_blockstate; /* stores the state of the socket blockiness
@ -1136,8 +1141,8 @@ libssh2_uint64_t _libssh2_ntohu64(const unsigned char *buf);
void _libssh2_htonu32(unsigned char *buf, unsigned int val); void _libssh2_htonu32(unsigned char *buf, unsigned int val);
#ifdef WIN32 #ifdef WIN32
ssize_t _libssh2_recv(int socket, 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(int socket, const void *buffer, size_t length, int flags); ssize_t _libssh2_send(libssh2_socket_t socket, const void *buffer, size_t length, int flags);
#else #else
#define _libssh2_recv(a,b,c,d) recv(a,b,c,d) #define _libssh2_recv(a,b,c,d) recv(a,b,c,d)
#define _libssh2_send(a,b,c,d) send(a,b,c,d) #define _libssh2_send(a,b,c,d) send(a,b,c,d)

View File

@ -78,7 +78,7 @@ static int wsa2errno(void)
* to set errno * to set errno
*/ */
ssize_t 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); ssize_t rc = recv(socket, buffer, length, flags);
#ifdef WIN32 #ifdef WIN32
@ -97,7 +97,7 @@ _libssh2_recv(int socket, void *buffer, size_t length, int flags)
* to set errno * to set errno
*/ */
ssize_t 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); ssize_t rc = send(socket, buffer, length, flags);
#ifdef WIN32 #ifdef WIN32

View File

@ -1349,7 +1349,7 @@ libssh2_poll(LIBSSH2_POLLFD * fds, unsigned int nfds, long timeout)
} }
#elif defined(HAVE_SELECT) #elif defined(HAVE_SELECT)
LIBSSH2_SESSION *session = NULL; LIBSSH2_SESSION *session = NULL;
int maxfd = 0; libssh2_socket_t maxfd = 0;
fd_set rfds, wfds; fd_set rfds, wfds;
struct timeval tv; struct timeval tv;