mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-12-02 01:17:52 +03:00
Change blocking parameter to a flag
This commit is contained in:
@@ -384,6 +384,7 @@ LIBSSH_API int ssh_get_random(void *where,int len,int strong);
|
|||||||
LIBSSH_API int ssh_get_version(ssh_session session);
|
LIBSSH_API int ssh_get_version(ssh_session session);
|
||||||
LIBSSH_API int ssh_get_status(ssh_session session);
|
LIBSSH_API int ssh_get_status(ssh_session session);
|
||||||
LIBSSH_API int ssh_init(void);
|
LIBSSH_API int ssh_init(void);
|
||||||
|
LIBSSH_API int ssh_is_blocking(ssh_session session);
|
||||||
LIBSSH_API int ssh_is_server_known(ssh_session session);
|
LIBSSH_API int ssh_is_server_known(ssh_session session);
|
||||||
LIBSSH_API void ssh_log(ssh_session session, int prioriry, const char *format, ...) PRINTF_ATTRIBUTE(3, 4);
|
LIBSSH_API void ssh_log(ssh_session session, int prioriry, const char *format, ...) PRINTF_ATTRIBUTE(3, 4);
|
||||||
LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept(ssh_message msg);
|
LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept(ssh_message msg);
|
||||||
|
|||||||
@@ -51,6 +51,10 @@ enum ssh_dh_state_e {
|
|||||||
DH_STATE_FINISHED
|
DH_STATE_FINISHED
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* libssh calls may block an undefined amount of time */
|
||||||
|
#define SSH_SESSION_FLAG_BLOCKING 1
|
||||||
|
|
||||||
struct ssh_session_struct {
|
struct ssh_session_struct {
|
||||||
struct error_struct error;
|
struct error_struct error;
|
||||||
struct ssh_socket_struct *socket;
|
struct ssh_socket_struct *socket;
|
||||||
@@ -72,8 +76,8 @@ struct ssh_session_struct {
|
|||||||
/* two previous are deprecated */
|
/* two previous are deprecated */
|
||||||
/* int auth_service_asked; */
|
/* int auth_service_asked; */
|
||||||
|
|
||||||
/* socket status */
|
/* session flags (SSH_SESSION_FLAG_*) */
|
||||||
int blocking; /* functions should block */
|
int flags;
|
||||||
|
|
||||||
ssh_string banner; /* that's the issue banner from
|
ssh_string banner; /* that's the issue banner from
|
||||||
the server */
|
the server */
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ ssh_session ssh_new(void) {
|
|||||||
|
|
||||||
session->alive = 0;
|
session->alive = 0;
|
||||||
session->auth_methods = 0;
|
session->auth_methods = 0;
|
||||||
session->blocking = 1;
|
ssh_set_blocking(session, 1);
|
||||||
session->log_indent = 0;
|
session->log_indent = 0;
|
||||||
session->maxchannel = FIRST_CHANNEL;
|
session->maxchannel = FIRST_CHANNEL;
|
||||||
|
|
||||||
@@ -280,11 +280,21 @@ void ssh_silent_disconnect(ssh_session session) {
|
|||||||
* \bug nonblocking code is in development and won't work as expected
|
* \bug nonblocking code is in development and won't work as expected
|
||||||
*/
|
*/
|
||||||
void ssh_set_blocking(ssh_session session, int blocking) {
|
void ssh_set_blocking(ssh_session session, int blocking) {
|
||||||
if (session == NULL) {
|
if (session == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
session->flags &= ~SSH_SESSION_FLAG_BLOCKING;
|
||||||
|
session->flags |= blocking ? SSH_SESSION_FLAG_BLOCKING : 0;
|
||||||
|
}
|
||||||
|
|
||||||
session->blocking = blocking ? 1 : 0;
|
/**
|
||||||
|
* @brief Return the blocking mode of libssh
|
||||||
|
* @param[in] session The SSH session
|
||||||
|
* @returns 0 if the session is nonblocking,
|
||||||
|
* @returns 1 if the functions may block.
|
||||||
|
*/
|
||||||
|
int ssh_is_blocking(ssh_session session){
|
||||||
|
return (session->flags&SSH_SESSION_FLAG_BLOCKING) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user