aboutsummaryrefslogtreecommitdiff
path: root/libssh/messages.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2010-01-08 22:25:26 +0100
committerAris Adamantiadis <aris@0xbadc0de.be>2010-01-08 22:25:26 +0100
commit2fc4c7e3359f6e046faab7cf0089a9375f4b5350 (patch)
treef475f63e6cc46aa15a6876ae9ce6351b4ca5210f /libssh/messages.c
parentda8263b3f69687ef8f269345afbba2ce7561a061 (diff)
downloadlibssh-2fc4c7e3359f6e046faab7cf0089a9375f4b5350.tar.gz
libssh-2fc4c7e3359f6e046faab7cf0089a9375f4b5350.tar.xz
libssh-2fc4c7e3359f6e046faab7cf0089a9375f4b5350.zip
Dequeue the processed messages
Diffstat (limited to 'libssh/messages.c')
-rw-r--r--libssh/messages.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/libssh/messages.c b/libssh/messages.c
index 8dfe482..e5d6c3a 100644
--- a/libssh/messages.c
+++ b/libssh/messages.c
@@ -711,7 +711,7 @@ ssh_message ssh_message_get(ssh_session session) {
}
msg=ssh_list_get_head(ssh_message, session->ssh_message_list);
} while(msg==NULL);
-
+ msg=ssh_message_pop_head(session);
leave_function();
return msg;
}
@@ -790,6 +790,24 @@ void ssh_message_queue(ssh_session session, ssh_message message){
}
}
+/** @internal
+ * @brief Pops one message from the message list and dequeue it.
+ * @param session SSH session.
+ * @returns The head message, or NULL if it doesn't exist
+ */
+ssh_message ssh_message_pop_head(ssh_session session){
+ ssh_message msg=NULL;
+ struct ssh_iterator *i;
+ if(session->ssh_message_list == NULL)
+ return NULL;
+ i=ssh_list_get_iterator(session->ssh_message_list);
+ if(i != NULL){
+ msg=ssh_iterator_value(ssh_message,i);
+ ssh_list_remove(session->ssh_message_list,i);
+ }
+ return msg;
+}
+
/**
* @}
*/