summaryrefslogtreecommitdiffstats
path: root/libssh/server.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/server.c
parentda8263b3f69687ef8f269345afbba2ce7561a061 (diff)
downloadlibssh-2fc4c7e3359f6e046faab7cf0089a9375f4b5350.tar.gz
libssh-2fc4c7e3359f6e046faab7cf0089a9375f4b5350.tar.xz
libssh-2fc4c7e3359f6e046faab7cf0089a9375f4b5350.zip
Dequeue the processed messages
Diffstat (limited to 'libssh/server.c')
-rw-r--r--libssh/server.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libssh/server.c b/libssh/server.c
index efb3220..87bb3ab 100644
--- a/libssh/server.c
+++ b/libssh/server.c
@@ -908,17 +908,23 @@ int ssh_execute_message_callbacks(ssh_session session){
if(!session->ssh_message_list)
return SSH_OK;
if(session->ssh_message_callback){
- while((msg=ssh_list_get_head(ssh_message , session->ssh_message_list)) != NULL){
+ while(ssh_list_get_head(ssh_message , session->ssh_message_list) != NULL){
+ msg=ssh_message_pop_head(session);
ret=session->ssh_message_callback(session,msg);
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 {
- while((msg=ssh_list_get_head(ssh_message , session->ssh_message_list)) != NULL){
+ while(ssh_list_get_head(ssh_message , session->ssh_message_list) != NULL){
+ msg=ssh_message_pop_head(session);
ret = ssh_message_reply_default(msg);
+ ssh_message_free(msg);
if(ret != SSH_OK)
return ret;
}