Remove lp_safe_widelinks() -> convert to just lp_widelinks. Suggestion from Volker.
authorJeremy Allison <jra@samba.org>
Thu, 11 Feb 2010 23:16:23 +0000 (15:16 -0800)
committerJeremy Allison <jra@samba.org>
Thu, 11 Feb 2010 23:16:23 +0000 (15:16 -0800)
Create widelinks_warning(int snum) to cover the message needed in make_connection.

Jeremy.

source3/include/proto.h
source3/param/loadparm.c
source3/smbd/filename.c
source3/smbd/service.c
source3/smbd/vfs.c

index 3549ea6c62e3f06118f26806b6d7fe1b59bce32b..c10a885396c486f30431d9877e1f7b924bad96e8 100644 (file)
@@ -4393,7 +4393,7 @@ void lp_set_posix_default_cifsx_readwrite_locktype(enum brl_flavour val);
 int lp_min_receive_file_size(void);
 char* lp_perfcount_module(void);
 void lp_set_passdb_backend(const char *backend);
-bool lp_safe_widelinks(int snum);
+void widelinks_warning(int snum);
 
 /* The following definitions come from param/util.c  */
 
index 4b6fa83b048765b4543eef435a60a49f5db65964..579f847b97258eb22bad09cffedc0a4c0ff9a7d2 100644 (file)
@@ -5676,7 +5676,6 @@ FN_LOCAL_BOOL(lp_oplocks, bOpLocks)
 FN_LOCAL_BOOL(lp_level2_oplocks, bLevel2OpLocks)
 FN_LOCAL_BOOL(lp_onlyuser, bOnlyUser)
 FN_LOCAL_PARM_BOOL(lp_manglednames, bMangledNames)
-FN_LOCAL_BOOL(lp_widelinks, bWidelinks)
 FN_LOCAL_BOOL(lp_symlinks, bSymlinks)
 FN_LOCAL_BOOL(lp_syncalways, bSyncAlways)
 FN_LOCAL_BOOL(lp_strict_allocate, bStrictAllocate)
@@ -9898,12 +9897,28 @@ void lp_set_passdb_backend(const char *backend)
  even after a configuration file reload.
 ********************************************************************/
 
-bool lp_safe_widelinks(int snum)
+static bool lp_widelinks_internal(int snum)
+{
+       return (bool)(LP_SNUM_OK(snum)? ServicePtrs[(snum)]->bWidelinks :
+                       sDefault.bWidelinks);
+}
+
+void widelinks_warning(int snum)
+{
+       if (lp_unix_extensions() && lp_widelinks_internal(snum)) {
+               DEBUG(0,("Share '%s' has wide links and unix extensions enabled. "
+                       "These parameters are incompatible. "
+                       "Wide links will be disabled for this share.\n",
+                       lp_servicename(snum) ));
+       }
+}
+
+bool lp_widelinks(int snum)
 {
        /* wide links is always incompatible with unix extensions */
        if (lp_unix_extensions()) {
                return false;
        }
 
-       return lp_widelinks(snum);
+       return lp_widelinks_internal(snum);
 }
index 73a3c3606282daefb01d633b7187b4148d0e027e..ab79dfd9269c48eac05b545fdc3e4bb103cf4e35 100644 (file)
@@ -854,7 +854,7 @@ NTSTATUS check_name(connection_struct *conn, const char *name)
                }
        }
 
-       if (!lp_safe_widelinks(SNUM(conn)) || !lp_symlinks(SNUM(conn))) {
+       if (!lp_widelinks(SNUM(conn)) || !lp_symlinks(SNUM(conn))) {
                NTSTATUS status = check_reduced_name(conn,name);
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(5,("check_name: name %s failed with %s\n",name,
index 45df7c14fe1325456dad97c6292a48c82ca516b2..7dddff5259ccbdc098ec91d7af3d72ed4931b23f 100644 (file)
@@ -857,10 +857,11 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
                                               conn);
        }
 
-/* ROOT Activities: */ 
-       /* explicitly check with lp_widelinks() instead of using
-        * lp_safe_widelinks() here so that we can correctly warn
+/* ROOT Activities: */
+       /* explicitly check widelinks here so that we can correctly warn
         * in the logs. */
+       widelinks_warning(snum);
+
        if (lp_unix_extensions() && lp_widelinks(snum)) {
                DEBUG(0,("Share '%s' has wide links and unix extensions enabled. "
                        "These parameters are incompatible. "
@@ -973,7 +974,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
         * below this directory. We must do this after the VFS init as we
         * depend on the realpath() pointer in the vfs table. JRA.
         */
-       if (!lp_safe_widelinks(snum)) {
+       if (!lp_widelinks(snum)) {
                if (!canonicalize_connect_path(conn)) {
                        DEBUG(0, ("canonicalize_connect_path failed "
                        "for service %s, path %s\n",
index b575800335d69b65aaa2d2117439c26cce70873d..94bdb1f495c423ce3eb0c252ec3e0c6b3f0308b1 100644 (file)
@@ -928,7 +928,7 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname)
        }
 
        /* Check for widelinks allowed. */
-       if (!lp_safe_widelinks(SNUM(conn))) {
+       if (!lp_widelinks(SNUM(conn))) {
                    const char *conn_rootdir;
 
                    conn_rootdir = SMB_VFS_CONNECTPATH(conn, fname);