s3: smbd: Factor out setting up case parameters for a share to a function - conn_setu...
authorJeremy Allison <jra@samba.org>
Tue, 12 Jan 2021 19:39:51 +0000 (11:39 -0800)
committerAnoop C S <anoopcs@samba.org>
Wed, 13 Jan 2021 17:02:34 +0000 (17:02 +0000)
Will allow it to be reused in the msdfs temporary share code.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14612

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Anoop C S <anoopcs@samba.org>
source3/smbd/conn.c
source3/smbd/proto.h
source3/smbd/service.c

index 003926c97f6fb4a396ee3c62f680de6b517dd140..044242d569756b2fcf85319a9b792d6badd21ddb 100644 (file)
@@ -232,3 +232,22 @@ void conn_free(connection_struct *conn)
 
        conn_free_internal(conn);
 }
+
+/*
+ * Correctly initialize a share with case options.
+ */
+void conn_setup_case_options(connection_struct *conn)
+{
+       int snum = conn->params->service;
+
+       if (lp_case_sensitive(snum) == Auto) {
+               /* We will be setting this per packet. Set to be case
+               * insensitive for now. */
+               conn->case_sensitive = false;
+       } else {
+               conn->case_sensitive = (bool)lp_case_sensitive(snum);
+       }
+
+       conn->case_preserve = lp_preserve_case(snum);
+       conn->short_case_preserve = lp_short_preserve_case(snum);
+}
index 7d6f8eda60790efab5f66c36a279986c41deebe9..879ec71ae943258fa2cdc8bdd5809907881a4340 100644 (file)
@@ -156,6 +156,7 @@ connection_struct *conn_new(struct smbd_server_connection *sconn);
 bool conn_idle_all(struct smbd_server_connection *sconn, time_t t);
 void conn_clear_vuid_caches(struct smbd_server_connection *sconn, uint64_t vuid);
 void conn_free(connection_struct *conn);
+void conn_setup_case_options(connection_struct *conn);
 void conn_force_tdis(
        struct smbd_server_connection *sconn,
        bool (*check_fn)(struct connection_struct *conn,
index b1ea0ea6a8851ba34f6a3f276135e1c663b0c4c8..afdea38b01619350e030d82fee137ddc60d8cc46 100644 (file)
@@ -557,16 +557,7 @@ static NTSTATUS make_connection_snum(struct smbXsrv_connection *xconn,
                      ( lp_enable_asu_support() && strequal(dev,"ADMIN$")) );
 
        /* Case options for the share. */
-       if (lp_case_sensitive(snum) == Auto) {
-               /* We will be setting this per packet. Set to be case
-                * insensitive for now. */
-               conn->case_sensitive = False;
-       } else {
-               conn->case_sensitive = (bool)lp_case_sensitive(snum);
-       }
-
-       conn->case_preserve = lp_preserve_case(snum);
-       conn->short_case_preserve = lp_short_preserve_case(snum);
+       conn_setup_case_options(conn);
 
        conn->encrypt_level = lp_server_smb_encrypt(snum);
        if (conn->encrypt_level > SMB_ENCRYPTION_OFF) {