socket: Move socket function to right location.

This commit is contained in:
Andreas Schneider
2011-09-17 18:58:30 +02:00
parent e7009fe8f3
commit c2686b8feb
4 changed files with 27 additions and 26 deletions

View File

@@ -206,8 +206,6 @@ socket_t ssh_connect_host(ssh_session session, const char *host,const char
*bind_addr, int port, long timeout, long usec); *bind_addr, int port, long timeout, long usec);
socket_t ssh_connect_host_nonblocking(ssh_session session, const char *host, socket_t ssh_connect_host_nonblocking(ssh_session session, const char *host,
const char *bind_addr, int port); const char *bind_addr, int port);
void ssh_sock_set_nonblocking(socket_t sock);
void ssh_sock_set_blocking(socket_t sock);
/* in base64.c */ /* in base64.c */
ssh_buffer base64_to_bin(const char *source); ssh_buffer base64_to_bin(const char *source);

View File

@@ -56,6 +56,8 @@ int ssh_socket_get_status(ssh_socket s);
int ssh_socket_buffered_write_bytes(ssh_socket s); int ssh_socket_buffered_write_bytes(ssh_socket s);
int ssh_socket_data_available(ssh_socket s); int ssh_socket_data_available(ssh_socket s);
int ssh_socket_data_writable(ssh_socket s); int ssh_socket_data_writable(ssh_socket s);
void ssh_socket_set_nonblocking(socket_t fd);
void ssh_socket_set_blocking(socket_t fd);
void ssh_socket_set_callbacks(ssh_socket s, ssh_socket_callbacks callbacks); void ssh_socket_set_callbacks(ssh_socket s, ssh_socket_callbacks callbacks);
int ssh_socket_pollcallback(struct ssh_poll_handle_struct *p, socket_t fd, int revents, void *v_s); int ssh_socket_pollcallback(struct ssh_poll_handle_struct *p, socket_t fd, int revents, void *v_s);

View File

@@ -84,16 +84,6 @@
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
void ssh_sock_set_nonblocking(socket_t sock) {
u_long nonblocking = 1;
ioctlsocket(sock, FIONBIO, &nonblocking);
}
void ssh_sock_set_blocking(socket_t sock) {
u_long nonblocking = 0;
ioctlsocket(sock, FIONBIO, &nonblocking);
}
#ifndef gai_strerror #ifndef gai_strerror
char WSAAPI *gai_strerrorA(int code) { char WSAAPI *gai_strerrorA(int code) {
static char buf[256]; static char buf[256];
@@ -103,16 +93,6 @@ char WSAAPI *gai_strerrorA(int code) {
return buf; return buf;
} }
#endif /* gai_strerror */ #endif /* gai_strerror */
#else /* _WIN32 */
void ssh_sock_set_nonblocking(socket_t sock) {
fcntl(sock, F_SETFL, O_NONBLOCK);
}
void ssh_sock_set_blocking(socket_t sock) {
fcntl(sock, F_SETFL, 0);
}
#endif /* _WIN32 */ #endif /* _WIN32 */
static int ssh_connect_socket_close(socket_t s){ static int ssh_connect_socket_close(socket_t s){
@@ -168,7 +148,7 @@ static int ssh_connect_ai_timeout(ssh_session session, const char *host,
*/ */
timeout_ms=timeout * 1000 + usec / 1000; timeout_ms=timeout * 1000 + usec / 1000;
ssh_sock_set_nonblocking(s); ssh_socket_set_nonblocking(s);
ssh_log(session, SSH_LOG_RARE, "Trying to connect to host: %s:%d with " ssh_log(session, SSH_LOG_RARE, "Trying to connect to host: %s:%d with "
"timeout %d ms", host, port, timeout_ms); "timeout %d ms", host, port, timeout_ms);
@@ -215,7 +195,7 @@ static int ssh_connect_ai_timeout(ssh_session session, const char *host,
/* s is connected ? */ /* s is connected ? */
ssh_log(session, SSH_LOG_PACKET, "Socket connected with timeout\n"); ssh_log(session, SSH_LOG_PACKET, "Socket connected with timeout\n");
ssh_sock_set_blocking(s); ssh_socket_set_blocking(s);
leave_function(); leave_function();
return s; return s;
@@ -385,7 +365,7 @@ socket_t ssh_connect_host_nonblocking(ssh_session session, const char *host,
continue; continue;
} }
} }
ssh_sock_set_nonblocking(s); ssh_socket_set_nonblocking(s);
connect(s, itr->ai_addr, itr->ai_addrlen); connect(s, itr->ai_addr, itr->ai_addrlen);
break; break;

View File

@@ -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"); ssh_log(s->session,SSH_LOG_PACKET,"Received POLLOUT in connecting state");
s->state = SSH_SOCKET_CONNECTED; s->state = SSH_SOCKET_CONNECTED;
ssh_poll_set_events(p,POLLOUT | POLLIN); 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) if(s->callbacks && s->callbacks->connected)
s->callbacks->connected(SSH_SOCKET_CONNECTED_OK,0,s->callbacks->userdata); s->callbacks->connected(SSH_SOCKET_CONNECTED_OK,0,s->callbacks->userdata);
return 0; return 0;
@@ -701,6 +701,27 @@ int ssh_socket_get_status(ssh_socket s) {
return r; 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 * @internal
* @brief Launches a socket connection * @brief Launches a socket connection