aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2013-07-14 14:08:37 +0200
committerAndreas Schneider <asn@cryptomilk.org>2013-07-14 14:12:08 +0200
commitdf373efc5688b6c320316d30b5f4398d37f4fe61 (patch)
treeeb62afd3d6759ca3e8f9efef15b7a2cae5573c5d
parente3b4f27aa999515727c64e5e78bc2eaccf93077f (diff)
downloadlibssh-df373efc5688b6c320316d30b5f4398d37f4fe61.tar.gz
libssh-df373efc5688b6c320316d30b5f4398d37f4fe61.tar.xz
libssh-df373efc5688b6c320316d30b5f4398d37f4fe61.zip
callbacks: Still support the legacy callback.
-rw-r--r--src/callbacks.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/callbacks.c b/src/callbacks.c
index 51747d32..dc3ecb46 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -26,6 +26,22 @@
#include "libssh/callbacks.h"
#include "libssh/session.h"
+
+/* LEGACY */
+static void ssh_legacy_log_callback(int priority,
+ const char *function,
+ const char *buffer,
+ void *userdata)
+{
+ ssh_session session = (ssh_session)userdata;
+ ssh_log_callback log_fn = session->common.callbacks->log_function;
+ void *log_data = log_data = session->common.callbacks->userdata;
+
+ (void)function; /* unused */
+
+ log_fn(session, priority, buffer, log_data);
+}
+
int ssh_set_callbacks(ssh_session session, ssh_callbacks cb) {
if (session == NULL || cb == NULL) {
return SSH_ERROR;
@@ -39,6 +55,12 @@ int ssh_set_callbacks(ssh_session session, ssh_callbacks cb) {
}
session->common.callbacks = cb;
+ /* LEGACY */
+ if (ssh_get_log_callback() == NULL && cb->log_function) {
+ ssh_set_log_callback(ssh_legacy_log_callback);
+ ssh_set_log_userdata(session);
+ }
+
return 0;
}