mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-11 18:50:28 +09:00
messages: Rework ssh_message_queue()
Return early and make it easier to understand. Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
@@ -411,45 +411,58 @@ static int ssh_execute_message_callback(ssh_session session, ssh_message msg) {
|
|||||||
*/
|
*/
|
||||||
static void ssh_message_queue(ssh_session session, ssh_message message)
|
static void ssh_message_queue(ssh_session session, ssh_message message)
|
||||||
{
|
{
|
||||||
if (message != NULL) {
|
|
||||||
#ifdef WITH_SERVER
|
#ifdef WITH_SERVER
|
||||||
int ret;
|
int ret;
|
||||||
/* probably not the best place to execute server callbacks, but still better
|
#endif
|
||||||
* than nothing.
|
|
||||||
*/
|
if (message == NULL) {
|
||||||
ret = ssh_execute_server_callbacks(session, message);
|
return;
|
||||||
if (ret == SSH_OK){
|
}
|
||||||
ssh_message_free(message);
|
|
||||||
return;
|
#ifdef WITH_SERVER
|
||||||
}
|
/* probably not the best place to execute server callbacks, but still better
|
||||||
|
* than nothing.
|
||||||
|
*/
|
||||||
|
ret = ssh_execute_server_callbacks(session, message);
|
||||||
|
if (ret == SSH_OK) {
|
||||||
|
ssh_message_free(message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
#endif /* WITH_SERVER */
|
#endif /* WITH_SERVER */
|
||||||
if(session->ssh_message_callback != NULL) {
|
|
||||||
ssh_execute_message_callback(session, message);
|
if (session->ssh_message_callback != NULL) {
|
||||||
return;
|
/* This will transfer the message, do not free. */
|
||||||
}
|
ssh_execute_message_callback(session, message);
|
||||||
if (session->server_callbacks != NULL){
|
return;
|
||||||
/* if we have server callbacks, but nothing was executed, it means we are
|
}
|
||||||
* in non-synchronous mode, and we just don't care about the message we
|
|
||||||
* received. Just send a default response. Do not queue it.
|
if (session->server_callbacks != NULL) {
|
||||||
*/
|
/* if we have server callbacks, but nothing was executed, it means we are
|
||||||
ssh_message_reply_default(message);
|
* in non-synchronous mode, and we just don't care about the message we
|
||||||
ssh_message_free(message);
|
* received. Just send a default response. Do not queue it.
|
||||||
return;
|
*/
|
||||||
}
|
ssh_message_reply_default(message);
|
||||||
if(session->ssh_message_list == NULL) {
|
ssh_message_free(message);
|
||||||
session->ssh_message_list = ssh_list_new();
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (session->ssh_message_list == NULL) {
|
||||||
|
session->ssh_message_list = ssh_list_new();
|
||||||
if (session->ssh_message_list != NULL) {
|
if (session->ssh_message_list != NULL) {
|
||||||
ssh_list_append(session->ssh_message_list, message);
|
/*
|
||||||
} else {
|
* If the message list couldn't be allocated, the message can't be
|
||||||
/* If the message list couldn't be allocated, the message can't be
|
* enqueued
|
||||||
* enqueued */
|
*/
|
||||||
ssh_message_reply_default(message);
|
ssh_message_reply_default(message);
|
||||||
ssh_set_error_oom(session);
|
ssh_set_error_oom(session);
|
||||||
ssh_message_free(message);
|
ssh_message_free(message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This will transfer the message, do not free. */
|
||||||
|
ssh_list_append(session->ssh_message_list, message);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user