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_status(ssh_session session);
|
||||
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 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);
|
||||
|
||||
@@ -51,6 +51,10 @@ enum ssh_dh_state_e {
|
||||
DH_STATE_FINISHED
|
||||
};
|
||||
|
||||
|
||||
/* libssh calls may block an undefined amount of time */
|
||||
#define SSH_SESSION_FLAG_BLOCKING 1
|
||||
|
||||
struct ssh_session_struct {
|
||||
struct error_struct error;
|
||||
struct ssh_socket_struct *socket;
|
||||
@@ -72,8 +76,8 @@ struct ssh_session_struct {
|
||||
/* two previous are deprecated */
|
||||
/* int auth_service_asked; */
|
||||
|
||||
/* socket status */
|
||||
int blocking; /* functions should block */
|
||||
/* session flags (SSH_SESSION_FLAG_*) */
|
||||
int flags;
|
||||
|
||||
ssh_string banner; /* that's the issue banner from
|
||||
the server */
|
||||
|
||||
@@ -85,7 +85,7 @@ ssh_session ssh_new(void) {
|
||||
|
||||
session->alive = 0;
|
||||
session->auth_methods = 0;
|
||||
session->blocking = 1;
|
||||
ssh_set_blocking(session, 1);
|
||||
session->log_indent = 0;
|
||||
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
|
||||
*/
|
||||
void ssh_set_blocking(ssh_session session, int blocking) {
|
||||
if (session == NULL) {
|
||||
if (session == NULL) {
|
||||
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