From 97a1943d41d0bf067ddd3b6a465ba447d41923de Mon Sep 17 00:00:00 2001 From: defanor Date: Sat, 9 May 2020 12:17:45 +0300 Subject: Wrap the SASL property callback So that a library user's SASL property callback gets a pointer to the whole rexmpp structure at once, similarly to other callbacks. --- src/rexmpp.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/rexmpp.c') 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(); -- cgit v1.2.3