s4:ldap_server: Store whether an LDAP connection is over ldapi
authorJo Sutton <josutton@catalyst.net.nz>
Tue, 16 Apr 2024 02:28:21 +0000 (14:28 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 16 Apr 2024 03:58:31 +0000 (03:58 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15634

Signed-off-by: Jo Sutton <josutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/ldap_server/ldap_server.c
source4/ldap_server/ldap_server.h

index 21339dd981938c36943b56b93842f83acc04a475..497d0dbc9a11f0406f97742d0ec1533b81b4cee8 100644 (file)
@@ -300,7 +300,8 @@ static void ldapsrv_accept_tls_done(struct tevent_req *subreq);
 */
 static void ldapsrv_accept(struct stream_connection *c,
                           struct auth_session_info *session_info,
-                          bool is_privileged)
+                          bool is_privileged,
+                          bool is_ldapi)
 {
        struct ldapsrv_service *ldapsrv_service =
                talloc_get_type(c->private_data, struct ldapsrv_service);
@@ -319,6 +320,7 @@ static void ldapsrv_accept(struct stream_connection *c,
                return;
        }
        conn->is_privileged = is_privileged;
+       conn->is_ldapi = is_ldapi;
 
        conn->sockets.send_queue = tevent_queue_create(conn, "ldapsrv send queue");
        if (conn->sockets.send_queue == NULL) {
@@ -1129,7 +1131,7 @@ static void ldapsrv_accept_nonpriv(struct stream_connection *c)
                                            "session info");
                return;
        }
-       ldapsrv_accept(c, session_info, false);
+       ldapsrv_accept(c, session_info, false, false);
 }
 
 static const struct stream_server_ops ldap_stream_nonpriv_ops = {
@@ -1153,7 +1155,7 @@ static void ldapsrv_accept_nonpriv_ldapi(struct stream_connection *c)
                                            "session info");
                return;
        }
-       ldapsrv_accept(c, session_info, false);
+       ldapsrv_accept(c, session_info, false, true);
 }
 
 static const struct stream_server_ops ldapi_stream_nonpriv_ops = {
@@ -1181,7 +1183,7 @@ static void ldapsrv_accept_priv_ldapi(struct stream_connection *c)
                                            "session info");
                return;
        }
-       ldapsrv_accept(c, session_info, true);
+       ldapsrv_accept(c, session_info, true, true);
 }
 
 static const struct stream_server_ops ldapi_stream_priv_ops = {
index b53be2703200d16e1bc878836f9db2e2925320bc..4e833bea592f850229c864255252c76b658ba3b6 100644 (file)
@@ -50,6 +50,7 @@ struct ldapsrv_connection {
 
        bool global_catalog;
        bool is_privileged;
+       bool is_ldapi;
        enum ldap_server_require_strong_auth require_strong_auth;
        bool authz_logged;
        enum ldap_server_referral_scheme referral_scheme;