diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2010-01-08 22:25:26 +0100 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2010-01-08 22:25:26 +0100 |
commit | 2fc4c7e3359f6e046faab7cf0089a9375f4b5350 (patch) | |
tree | f475f63e6cc46aa15a6876ae9ce6351b4ca5210f /libssh/server.c | |
parent | da8263b3f69687ef8f269345afbba2ce7561a061 (diff) | |
download | libssh-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.c | 10 |
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; } |