Fix doc and actually make the test run :)
Этот коммит содержится в:
родитель
3a326793fd
Коммит
af519d73ae
@ -685,7 +685,7 @@ int ssh_connect(ssh_session session) {
|
||||
leave_function();
|
||||
return SSH_ERROR;
|
||||
}
|
||||
if (session->fd == -1 && session->host == NULL) {
|
||||
if (session->fd == -1 && session->host == NULL && session->ProxyCommand == NULL) {
|
||||
ssh_set_error(session, SSH_FATAL, "Hostname required");
|
||||
leave_function();
|
||||
return SSH_ERROR;
|
||||
@ -699,6 +699,8 @@ int ssh_connect(ssh_session session) {
|
||||
if (session->fd != -1) {
|
||||
ssh_socket_set_fd(session->socket, session->fd);
|
||||
ret=SSH_OK;
|
||||
} else if (session->ProxyCommand != NULL){
|
||||
ret=ssh_socket_connect_proxycommand(session->socket, session->ProxyCommand);
|
||||
} else {
|
||||
ret=ssh_socket_connect(session->socket, session->host, session->port,
|
||||
session->bindaddr);
|
||||
|
@ -365,6 +365,9 @@ char *dir_expand_dup(ssh_session session, const char *value, int allowsshdir) {
|
||||
* - SSH_OPTIONS_HOSTKEYCHECK:
|
||||
* Set the parameter StrictHostKeyChecking to avoid
|
||||
* asking about a fingerprint
|
||||
* - SSH_OPTIONS_PROXYCOMMAND:
|
||||
* Set the command to be executed in order to connect to
|
||||
* server.
|
||||
*
|
||||
* @param value The value to set. This is a generic pointer and the
|
||||
* datatype which is used should be set according to the
|
||||
|
@ -66,6 +66,7 @@ enum ssh_socket_states_e {
|
||||
struct ssh_socket_struct {
|
||||
socket_t fd_in;
|
||||
socket_t fd_out;
|
||||
int fd_is_socket;
|
||||
int last_errno;
|
||||
int data_to_read; /* reading now on socket will
|
||||
not block */
|
||||
@ -113,6 +114,7 @@ ssh_socket ssh_socket_new(ssh_session session) {
|
||||
s->fd_in = -1;
|
||||
s->fd_out= -1;
|
||||
s->last_errno = -1;
|
||||
s->fd_is_socket = 1;
|
||||
s->session = session;
|
||||
s->in_buffer = buffer_new();
|
||||
if (s->in_buffer == NULL) {
|
||||
@ -391,8 +393,10 @@ static int ssh_socket_unbuffered_read(ssh_socket s, void *buffer, uint32_t len)
|
||||
if (s->data_except) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
rc = recv(s->fd_in,buffer, len, 0);
|
||||
if(s->fd_is_socket)
|
||||
rc = recv(s->fd_in,buffer, len, 0);
|
||||
else
|
||||
rc = read(s->fd_in,buffer, len);
|
||||
#ifdef _WIN32
|
||||
s->last_errno = WSAGetLastError();
|
||||
#else
|
||||
@ -417,8 +421,10 @@ static int ssh_socket_unbuffered_write(ssh_socket s, const void *buffer,
|
||||
if (s->data_except) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
w = send(s->fd_out,buffer, len, 0);
|
||||
if (s->fd_is_socket)
|
||||
w = send(s->fd_out,buffer, len, 0);
|
||||
else
|
||||
w = write(s->fd_out, buffer, len);
|
||||
#ifdef _WIN32
|
||||
s->last_errno = WSAGetLastError();
|
||||
#else
|
||||
@ -936,6 +942,7 @@ int ssh_socket_connect_proxycommand(ssh_socket s, const char *command){
|
||||
ssh_socket_set_fd_in(s,in_pipe[0]);
|
||||
ssh_socket_set_fd_out(s,out_pipe[1]);
|
||||
s->state=SSH_SOCKET_CONNECTED;
|
||||
s->fd_is_socket=0;
|
||||
/* POLLOUT is the event to wait for in a nonblocking connect */
|
||||
ssh_poll_set_events(ssh_socket_get_poll_handle_in(s),POLLIN | POLLERR);
|
||||
ssh_poll_set_events(ssh_socket_get_poll_handle_out(s),POLLOUT);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user