You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by sy...@apache.org on 2020/10/12 06:43:17 UTC

[zookeeper] branch master updated: ZOOKEEPER-3951: C Client: Fix compilation with SASL disabled

This is an automated email from the ASF dual-hosted git repository.

symat pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 064d8f9  ZOOKEEPER-3951: C Client: Fix compilation with SASL disabled
064d8f9 is described below

commit 064d8f91ae95b05b65a0a897238d77d2ade941d2
Author: Damien Diederen <dd...@crosstwine.com>
AuthorDate: Mon Oct 12 06:42:46 2020 +0000

    ZOOKEEPER-3951: C Client: Fix compilation with SASL disabled
    
    The `sasl_client` field doesn't exist when configured without SASL.  Use an accessor outside of the blocks already guarded by `HAVE_CYRUS_SASL_H`.
    
    (Reported by [Parag](https://issues.apache.org/jira/browse/ZOOKEEPER-3951).)
    
    Author: Damien Diederen <dd...@crosstwine.com>
    
    Reviewers: Enrico Olivelli <eo...@apache.org>, Mate Szalay-Beko <sy...@apache.org>
    
    Closes #1477 from ztzg/ZOOKEEPER-3951-no-sasl-compilation
---
 zookeeper-client/zookeeper-client-c/src/zookeeper.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/zookeeper-client/zookeeper-client-c/src/zookeeper.c b/zookeeper-client/zookeeper-client-c/src/zookeeper.c
index 1327816..2b881cb 100644
--- a/zookeeper-client/zookeeper-client-c/src/zookeeper.c
+++ b/zookeeper-client/zookeeper-client-c/src/zookeeper.c
@@ -333,6 +333,18 @@ static void zookeeper_set_sock_timeout(zhandle_t *, socket_t, int);
 static socket_t zookeeper_connect(zhandle_t *, struct sockaddr_storage *, socket_t);
 
 /*
+ * return 1 if zh has a SASL client configured, 0 otherwise.
+ */
+static int has_sasl_client(zhandle_t* zh)
+{
+#ifdef HAVE_CYRUS_SASL_H
+    return zh->sasl_client != NULL;
+#else /* !HAVE_CYRUS_SASL_H */
+    return 0;
+#endif /* HAVE_CYRUS_SASL_H */
+}
+
+/*
  * return 1 if zh has a SASL client performing authentication, 0 otherwise.
  */
 static int is_sasl_auth_in_progress(zhandle_t* zh)
@@ -2846,7 +2858,7 @@ static void finalize_session_establishment(zhandle_t *zh) {
     zh->input_buffer = 0; // just in case the watcher calls zookeeper_process() again
     PROCESS_SESSION_EVENT(zh, zh->state);
 
-    if (zh->sasl_client) {
+    if (has_sasl_client(zh)) {
         /* some packets might have been delayed during SASL negotiaton. */
         adaptor_send_queue(zh, 0);
     }
@@ -5077,7 +5089,7 @@ int zoo_add_auth(zhandle_t *zh,const char* scheme,const char* cert,
         // negotiation is planned.  (Such packets would be queued in
         // front of SASL packets, which is forbidden, and SASL
         // completion is followed by a 'send_auth_info' anyway.)
-        (zh->state == ZOO_ASSOCIATING_STATE && !zh->sasl_client)) {
+        (zh->state == ZOO_ASSOCIATING_STATE && !has_sasl_client(zh))) {
         return send_last_auth_info(zh);
     }