mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-12-02 01:17:52 +03:00
socket: Check if socket (non)blocking is working.
This commit is contained in:
21
src/socket.c
21
src/socket.c
@@ -308,7 +308,10 @@ 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_socket_set_blocking(ssh_socket_get_fd_in(s));
|
||||
r = ssh_socket_set_blocking(ssh_socket_get_fd_in(s));
|
||||
if (r < 0) {
|
||||
return -1;
|
||||
}
|
||||
if(s->callbacks && s->callbacks->connected)
|
||||
s->callbacks->connected(SSH_SOCKET_CONNECTED_OK,0,s->callbacks->userdata);
|
||||
return 0;
|
||||
@@ -714,23 +717,23 @@ int ssh_socket_get_status(ssh_socket s) {
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
void ssh_socket_set_nonblocking(socket_t fd) {
|
||||
int ssh_socket_set_nonblocking(socket_t fd) {
|
||||
u_long nonblocking = 1;
|
||||
ioctlsocket(fd, FIONBIO, &nonblocking);
|
||||
return ioctlsocket(fd, FIONBIO, &nonblocking);
|
||||
}
|
||||
|
||||
void ssh_socket_set_blocking(socket_t fd) {
|
||||
int ssh_socket_set_blocking(socket_t fd) {
|
||||
u_long nonblocking = 0;
|
||||
ioctlsocket(fd, FIONBIO, &nonblocking);
|
||||
return ioctlsocket(fd, FIONBIO, &nonblocking);
|
||||
}
|
||||
|
||||
#else /* _WIN32 */
|
||||
void ssh_socket_set_nonblocking(socket_t fd) {
|
||||
fcntl(fd, F_SETFL, O_NONBLOCK);
|
||||
int ssh_socket_set_nonblocking(socket_t fd) {
|
||||
return fcntl(fd, F_SETFL, O_NONBLOCK);
|
||||
}
|
||||
|
||||
void ssh_socket_set_blocking(socket_t fd) {
|
||||
fcntl(fd, F_SETFL, 0);
|
||||
int ssh_socket_set_blocking(socket_t fd) {
|
||||
return fcntl(fd, F_SETFL, 0);
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user