Skip to content

Commit f725505

Browse files
committed
CDRIVER-530 check for sasl_client_done
(cherry picked from commit 672670c)
1 parent c3c14f4 commit f725505

File tree

3 files changed

+29
-13
lines changed

3 files changed

+29
-13
lines changed

build/autotools/CheckSasl.m4

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,17 @@ dnl Let mongoc-config.h.in know about SASL status.
4343
if test "$sasl_mode" != "no" ; then
4444
AC_SUBST(MONGOC_ENABLE_SASL, 1)
4545

46-
AC_MSG_CHECKING([for sasl_client_done])
47-
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sasl/sasl.h>]],
48-
[[sasl_client_done ();]])],
49-
[AC_MSG_RESULT(yes)
50-
have_sasl_client_done=yes],
51-
[AC_MSG_RESULT(no)
52-
have_sasl_client_done=no])
53-
AS_IF([test "$have_sasl_client_done" = "yes"],
54-
[AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 1)],
55-
[AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 0)])
46+
AC_CHECK_LIB([sasl2],[sasl_client_done],
47+
[have_sasl_client_done=yes],
48+
[have_sasl_client_done=no])
49+
50+
if test "have_sasl_client_done" = "yes" ; then
51+
AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 1)
52+
else
53+
AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 0)
54+
fi
5655

5756
else
5857
AC_SUBST(MONGOC_ENABLE_SASL, 0)
58+
AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 0)
5959
fi

src/mongoc/mongoc-config.h.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,16 @@
4141
#endif
4242

4343

44+
/*
45+
* MONGOC_HAVE_SASL_CLIENT_DONE is set from configure to determine if we
46+
* have SASL and its version is new enough to use sasl_client_done (),
47+
* which supersedes sasl_done ().
48+
*/
49+
#define MONGOC_HAVE_SASL_CLIENT_DONE @MONGOC_HAVE_SASL_CLIENT_DONE@
50+
51+
#if MONGOC_HAVE_SASL_CLIENT_DONE != 1
52+
# undef MONGOC_HAVE_SASL_CLIENT_DONE
53+
#endif
54+
55+
4456
#endif /* MONGOC_CONFIG_H */

src/mongoc/mongoc-init.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,13 @@ static MONGOC_ONCE_FUN( _mongoc_do_cleanup)
135135
_mongoc_ssl_cleanup();
136136
#endif
137137

138-
/* apple's libsasl package somehow lacks sasl_client_done before 2.1.24 */
139-
#if MONGOC_HAVE_SASL_CLIENT_DONE
140-
sasl_client_done ();
138+
#ifdef MONGOC_ENABLE_SASL
139+
#ifdef MONGOC_HAVE_SASL_CLIENT_DONE
140+
sasl_client_done ();
141+
#else
142+
/* fall back to deprecated function */
143+
sasl_done ();
144+
#endif
141145
#endif
142146

143147
#ifdef _WIN32

0 commit comments

Comments
 (0)