From f4339df577a8a9a93bdbb7ed117b5b5c7c207ded Mon Sep 17 00:00:00 2001 From: Aris Adamantiadis Date: Fri, 24 Jul 2015 16:09:48 +0200 Subject: [PATCH] packets: allow removal of callbacks Signed-off-by: Aris Adamantiadis Reviewed-by: Jakub Jelen Reviewed-by: Andreas Schneider --- include/libssh/packet.h | 1 + src/packet.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/libssh/packet.h b/include/libssh/packet.h index fbe09700..cd8a4c0f 100644 --- a/include/libssh/packet.h +++ b/include/libssh/packet.h @@ -70,6 +70,7 @@ int ssh_packet_parse_type(ssh_session session); int ssh_packet_socket_callback(const void *data, size_t len, void *user); void ssh_packet_register_socket_callback(ssh_session session, struct ssh_socket_struct *s); void ssh_packet_set_callbacks(ssh_session session, ssh_packet_callbacks callbacks); +void ssh_packet_remove_callbacks(ssh_session session, ssh_packet_callbacks callbacks); void ssh_packet_set_default_callbacks(ssh_session session); void ssh_packet_process(ssh_session session, uint8_t type); diff --git a/src/packet.c b/src/packet.c index de0cc0a8..4ae72622 100644 --- a/src/packet.c +++ b/src/packet.c @@ -1241,6 +1241,17 @@ void ssh_packet_set_callbacks(ssh_session session, ssh_packet_callbacks callback } } +/** @internal + * @brief remove the callbacks from the packet layer + */ +void ssh_packet_remove_callbacks(ssh_session session, ssh_packet_callbacks callbacks){ + struct ssh_iterator *it = NULL; + it = ssh_list_find(session->packet_callbacks, callbacks); + if (it != NULL) { + ssh_list_remove(session->packet_callbacks, it); + } +} + /** @internal * @brief sets the default packet handlers */