diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2015-07-24 16:09:48 +0200 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2017-06-08 10:45:53 +0200 |
commit | f68f59c71a3d2ab7dd146489f81b0e9876b2cbe9 (patch) | |
tree | 556a1634eef27cdc32be787f3031ba244a2718b9 | |
parent | 0cffb88b80b1e8b7e292646b955e9b9ca02315c4 (diff) | |
download | libssh-f68f59c71a3d2ab7dd146489f81b0e9876b2cbe9.tar.gz libssh-f68f59c71a3d2ab7dd146489f81b0e9876b2cbe9.tar.xz libssh-f68f59c71a3d2ab7dd146489f81b0e9876b2cbe9.zip |
packets: allow removal of callbacks
-rw-r--r-- | include/libssh/packet.h | 1 | ||||
-rw-r--r-- | src/packet.c | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/libssh/packet.h b/include/libssh/packet.h index 3a84eb70..30fbbc15 100644 --- a/include/libssh/packet.h +++ b/include/libssh/packet.h @@ -74,6 +74,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 33943aef..634bf3b3 100644 --- a/src/packet.c +++ b/src/packet.c @@ -405,6 +405,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; + 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 */ void ssh_packet_set_default_callbacks(ssh_session session){ |