summaryrefslogtreecommitdiffstats
path: root/src/socket.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2011-09-17 18:58:30 +0200
committerAndreas Schneider <asn@cryptomilk.org>2011-09-18 21:37:17 +0200
commitc2686b8febf2c57761cfa9e47c8dc533f84d1cb2 (patch)
tree9a5382c6a2a2c253da279a824d696ad2cdc61579 /src/socket.c
parente7009fe8f3928db009f5d03ff47bd159599e5440 (diff)
downloadlibssh-c2686b8febf2c57761cfa9e47c8dc533f84d1cb2.tar.gz
libssh-c2686b8febf2c57761cfa9e47c8dc533f84d1cb2.tar.xz
libssh-c2686b8febf2c57761cfa9e47c8dc533f84d1cb2.zip
socket: Move socket function to right location.
Diffstat (limited to 'src/socket.c')
-rw-r--r--src/socket.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/socket.c b/src/socket.c
index a4a16b1..5bde836 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -300,7 +300,7 @@ int ssh_socket_pollcallback(struct ssh_poll_handle_struct *p, socket_t fd, int r
ssh_log(s->session,SSH_LOG_PACKET,"Received POLLOUT in connecting state");
s->state = SSH_SOCKET_CONNECTED;
ssh_poll_set_events(p,POLLOUT | POLLIN);
- ssh_sock_set_blocking(ssh_socket_get_fd_in(s));
+ ssh_socket_set_blocking(ssh_socket_get_fd_in(s));
if(s->callbacks && s->callbacks->connected)
s->callbacks->connected(SSH_SOCKET_CONNECTED_OK,0,s->callbacks->userdata);
return 0;
@@ -701,6 +701,27 @@ int ssh_socket_get_status(ssh_socket s) {
return r;
}
+#ifdef _WIN32
+void ssh_socket_set_nonblocking(socket_t fd) {
+ u_long nonblocking = 1;
+ ioctlsocket(fd, FIONBIO, &nonblocking);
+}
+
+void ssh_socket_set_blocking(socket_t fd) {
+ u_long nonblocking = 0;
+ ioctlsocket(fd, FIONBIO, &nonblocking);
+}
+
+#else /* _WIN32 */
+void ssh_socket_set_nonblocking(socket_t fd) {
+ fcntl(fd, F_SETFL, O_NONBLOCK);
+}
+
+void ssh_socket_set_blocking(socket_t fd) {
+ fcntl(fd, F_SETFL, 0);
+}
+#endif /* _WIN32 */
+
/**
* @internal
* @brief Launches a socket connection