mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-11-29 01:03:57 +03:00
[messages] don't queue messages if callback present
(cherry picked from commit 99d0f6d7c77e064b7fd0f0f46c40988de1996f3b)
This commit is contained in:
@@ -71,6 +71,31 @@ static ssh_message ssh_message_new(ssh_session session){
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ssh_execute_message_callback(ssh_session session, ssh_message msg) {
|
||||||
|
int ret;
|
||||||
|
if(session->ssh_message_callback != NULL) {
|
||||||
|
ret = session->ssh_message_callback(session, msg,
|
||||||
|
session->ssh_message_callback_data);
|
||||||
|
if(ret == 1) {
|
||||||
|
ret = ssh_message_reply_default(msg);
|
||||||
|
ssh_message_free(msg);
|
||||||
|
if(ret != SSH_OK) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ssh_message_free(msg);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ret = ssh_message_reply_default(msg);
|
||||||
|
ssh_message_free(msg);
|
||||||
|
if(ret != SSH_OK) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SSH_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*
|
*
|
||||||
@@ -81,12 +106,16 @@ static ssh_message ssh_message_new(ssh_session session){
|
|||||||
* @param[in] message The message to add to the queue.
|
* @param[in] message The message to add to the queue.
|
||||||
*/
|
*/
|
||||||
void ssh_message_queue(ssh_session session, ssh_message message){
|
void ssh_message_queue(ssh_session session, ssh_message message){
|
||||||
if(message){
|
if(message) {
|
||||||
if(session->ssh_message_list == NULL){
|
if(session->ssh_message_list == NULL) {
|
||||||
session->ssh_message_list=ssh_list_new();
|
if(session->ssh_message_callback != NULL) {
|
||||||
|
ssh_execute_message_callback(session, message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
session->ssh_message_list = ssh_list_new();
|
||||||
|
}
|
||||||
|
ssh_list_append(session->ssh_message_list, message);
|
||||||
}
|
}
|
||||||
ssh_list_append(session->ssh_message_list, message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user