aboutsummaryrefslogtreecommitdiff
path: root/libssh/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'libssh/socket.c')
-rw-r--r--libssh/socket.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libssh/socket.c b/libssh/socket.c
index ea8979c1..bcb86124 100644
--- a/libssh/socket.c
+++ b/libssh/socket.c
@@ -132,7 +132,7 @@ void ssh_socket_set_callbacks(ssh_socket s, ssh_socket_callbacks callbacks){
s->callbacks=callbacks;
}
-int ssh_socket_pollcallback(ssh_poll_handle p, int fd, int revents, void *v_s){
+int ssh_socket_pollcallback(ssh_poll_handle p, socket_t fd, int revents, void *v_s){
ssh_socket s=(ssh_socket )v_s;
char buffer[4096];
int r,w;
@@ -146,7 +146,11 @@ int ssh_socket_pollcallback(ssh_poll_handle p, int fd, int revents, void *v_s){
s->poll=p=NULL;
getsockopt(fd,SOL_SOCKET,SO_ERROR,(void *)&err,&errlen);
s->last_errno=err;
+#ifdef _WIN32
+ closesocket(fd);
+#else
close(fd);
+#endif
s->fd=-1;
if(s->callbacks && s->callbacks->connected)
s->callbacks->connected(SSH_SOCKET_CONNECTED_ERROR,err,