diff options
Diffstat (limited to 'src/rexmpp.c')
-rw-r--r-- | src/rexmpp.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/rexmpp.c b/src/rexmpp.c index 2e05cbb..c74b92b 100644 --- a/src/rexmpp.c +++ b/src/rexmpp.c @@ -201,6 +201,14 @@ xmlNodePtr rexmpp_xml_default_disco_info () { return identity; } +int rexmpp_sasl_cb (Gsasl *ctx, Gsasl_session *sctx, Gsasl_property prop) { + rexmpp_t *s = gsasl_callback_hook_get(ctx); + if (s == NULL) { + return GSASL_NO_CALLBACK; + } + return s->sasl_property_cb(s, prop); +} + rexmpp_err_t rexmpp_init (rexmpp_t *s, const char *jid, log_function_t log_function, @@ -322,7 +330,8 @@ rexmpp_err_t rexmpp_init (rexmpp_t *s, xmlFreeParserCtxt(s->xml_parser); return REXMPP_E_SASL; } - gsasl_callback_set(s->sasl_ctx, s->sasl_property_cb); + gsasl_callback_hook_set(s->sasl_ctx, s); + gsasl_callback_set(s->sasl_ctx, rexmpp_sasl_cb); s->disco_info = rexmpp_xml_default_disco_info(); |