[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Tue Dec 13 09:27:04 MST 2011
The branch, master has been updated
via 3cf275c s3:smbd/msdfs: enum_msdfs_links() doesn't need a smbd_server_connection anymore
via ae7d877 s3:smbd: use connections_snum_used() instead of conn_snum_used() for load_usershare_shares()
via cefb797 s3:smbd: add connections_snum_used()
via 611ab8a s3:lib/dummyparam: remove unused conn_snum_used() dummy
via 1399e6b s3:param: don't reference conn_snum_used directly in load_usershare_shares()
from 1cf54ef s3: Use talloc_tos() in set_write_time()
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 3cf275cd754486e07a891fbcb0607afb171d5359
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 12:29:54 2011 +0100
s3:smbd/msdfs: enum_msdfs_links() doesn't need a smbd_server_connection anymore
metze
Autobuild-User: Stefan Metzmacher <metze at samba.org>
Autobuild-Date: Tue Dec 13 17:26:20 CET 2011 on sn-devel-104
commit ae7d8778415234eb85df1aceb024875691ccb8ef
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 12:24:03 2011 +0100
s3:smbd: use connections_snum_used() instead of conn_snum_used() for load_usershare_shares()
Before removing the share security descriptor, we should make sure there're
really no active users anymore.
metze
commit cefb797434ef738870b3f2447fdbeea361bdea57
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 12:18:01 2011 +0100
s3:smbd: add connections_snum_used()
This works similar to conn_snum_used(), but instead of
looking at the current connection only, it looks at
all active connections in "connections.tdb".
metze
commit 611ab8aaa779c1e426a918eb376b8a8e44bc56ef
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 11:53:10 2011 +0100
s3:lib/dummyparam: remove unused conn_snum_used() dummy
metze
commit 1399e6bdf52d2ef08d1cea918a171108c502900a
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 11:50:04 2011 +0100
s3:param: don't reference conn_snum_used directly in load_usershare_shares()
This uses the same logic as lp_killunused().
metze
-----------------------------------------------------------------------
Summary of changes:
source3/include/proto.h | 4 ++--
source3/lib/dummyparam.c | 5 -----
source3/param/loadparm.c | 5 +++--
source3/rpc_server/dfs/srv_dfs_nt.c | 3 +--
source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 2 +-
source3/smbd/connection.c | 12 ++++++++++++
source3/smbd/lanman.c | 2 +-
source3/smbd/msdfs.c | 5 ++---
source3/smbd/proto.h | 4 ++--
9 files changed, 24 insertions(+), 18 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 15cd7f9..2c12a5f 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1592,7 +1592,8 @@ enum usershare_err parse_usershare_file(TALLOC_CTX *ctx,
struct security_descriptor **ppsd,
bool *pallow_guest);
int load_usershare_service(const char *servicename);
-int load_usershare_shares(struct smbd_server_connection *sconn);
+int load_usershare_shares(struct smbd_server_connection *sconn,
+ bool (*snumused) (struct smbd_server_connection *, int));
void gfree_loadparm(void);
bool lp_load(const char *pszFname,
bool global_only,
@@ -1786,7 +1787,6 @@ void unbecome_root(void);
/* The following definitions come from lib/dummysmbd.c */
int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out);
-bool conn_snum_used(struct smbd_server_connection *sconn, int snum);
void cancel_pending_lock_requests_by_fid(files_struct *fsp,
struct byte_range_lock *br_lck,
enum file_close_type close_type);
diff --git a/source3/lib/dummyparam.c b/source3/lib/dummyparam.c
index bad5d56..91dda65 100644
--- a/source3/lib/dummyparam.c
+++ b/source3/lib/dummyparam.c
@@ -28,8 +28,3 @@ int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out)
return -1;
}
-bool conn_snum_used(struct smbd_server_connection *sconn,
- int snum)
-{
- return False;
-}
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index d406483..e0da6fd 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -8731,7 +8731,8 @@ int load_usershare_service(const char *servicename)
been removed.
***************************************************************************/
-int load_usershare_shares(struct smbd_server_connection *sconn)
+int load_usershare_shares(struct smbd_server_connection *sconn,
+ bool (*snumused) (struct smbd_server_connection *, int))
{
SMB_STRUCT_DIR *dp;
SMB_STRUCT_STAT sbuf;
@@ -8869,7 +8870,7 @@ int load_usershare_shares(struct smbd_server_connection *sconn)
not currently in use. */
for (iService = iNumServices - 1; iService >= 0; iService--) {
if (VALID(iService) && (ServicePtrs[iService]->usershare == USERSHARE_PENDING_DELETE)) {
- if (conn_snum_used(sconn, iService)) {
+ if (snumused && snumused(sconn, iService)) {
continue;
}
/* Remove from the share ACL db. */
diff --git a/source3/rpc_server/dfs/srv_dfs_nt.c b/source3/rpc_server/dfs/srv_dfs_nt.c
index efb0a1e..0a9a7cc 100644
--- a/source3/rpc_server/dfs/srv_dfs_nt.c
+++ b/source3/rpc_server/dfs/srv_dfs_nt.c
@@ -281,8 +281,7 @@ WERROR _dfs_Enum(struct pipes_struct *p, struct dfs_Enum *r)
size_t i;
TALLOC_CTX *ctx = talloc_tos();
- jn = enum_msdfs_links(msg_ctx_to_sconn(p->msg_ctx),
- ctx, &num_jn);
+ jn = enum_msdfs_links(ctx, &num_jn);
if (!jn || num_jn == 0) {
num_jn = 0;
jn = NULL;
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
index fca616e..4435b99 100644
--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
@@ -574,7 +574,7 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p,
/* Ensure all the usershares are loaded. */
become_root();
- load_usershare_shares(msg_ctx_to_sconn(p->msg_ctx));
+ load_usershare_shares(NULL, connections_snum_used);
load_registry_shares();
num_services = lp_numservices();
unbecome_root();
diff --git a/source3/smbd/connection.c b/source3/smbd/connection.c
index 5da2b08..5a9f407 100644
--- a/source3/smbd/connection.c
+++ b/source3/smbd/connection.c
@@ -130,6 +130,18 @@ int count_current_connections( const char *sharename, bool clear )
return cs.curr_connections;
}
+bool connections_snum_used(struct smbd_server_connection *unused, int snum)
+{
+ int active;
+
+ active = count_current_connections(lp_servicename(snum), true);
+ if (active > 0) {
+ return true;
+ }
+
+ return false;
+}
+
/****************************************************************************
Claim an entry in the connections database.
****************************************************************************/
diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c
index 292ebf4..31775bf 100644
--- a/source3/smbd/lanman.c
+++ b/source3/smbd/lanman.c
@@ -2092,7 +2092,7 @@ static bool api_RNetShareEnum(struct smbd_server_connection *sconn,
/* Ensure all the usershares are loaded. */
become_root();
load_registry_shares();
- count = load_usershare_shares(sconn);
+ count = load_usershare_shares(NULL, connections_snum_used);
unbecome_root();
data_len = fixed_len = string_len = 0;
diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c
index de70042..a00fd6f 100644
--- a/source3/smbd/msdfs.c
+++ b/source3/smbd/msdfs.c
@@ -1475,8 +1475,7 @@ out:
return cnt;
}
-struct junction_map *enum_msdfs_links(struct smbd_server_connection *sconn,
- TALLOC_CTX *ctx, size_t *p_num_jn)
+struct junction_map *enum_msdfs_links(TALLOC_CTX *ctx, size_t *p_num_jn)
{
struct junction_map *jn = NULL;
int i=0;
@@ -1491,7 +1490,7 @@ struct junction_map *enum_msdfs_links(struct smbd_server_connection *sconn,
/* Ensure all the usershares are loaded. */
become_root();
load_registry_shares();
- sharecount = load_usershare_shares(sconn);
+ sharecount = load_usershare_shares(NULL, connections_snum_used);
unbecome_root();
for(i=0;i < sharecount;i++) {
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index 151ae78..e0f48b7 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -164,6 +164,7 @@ void msg_force_tdis(struct messaging_context *msg,
bool yield_connection(connection_struct *conn, const char *name);
int count_current_connections( const char *sharename, bool clear );
+bool connections_snum_used(struct smbd_server_connection *unused, int snum);
bool claim_connection(connection_struct *conn, const char *name);
/* The following definitions come from smbd/dfree.c */
@@ -458,8 +459,7 @@ bool create_junction(TALLOC_CTX *ctx,
struct junction_map *jucn);
bool create_msdfs_link(const struct junction_map *jucn);
bool remove_msdfs_link(const struct junction_map *jucn);
-struct junction_map *enum_msdfs_links(struct smbd_server_connection *sconn,
- TALLOC_CTX *ctx, size_t *p_num_jn);
+struct junction_map *enum_msdfs_links(TALLOC_CTX *ctx, size_t *p_num_jn);
NTSTATUS resolve_dfspath(TALLOC_CTX *ctx,
connection_struct *conn,
bool dfs_pathnames,
--
Samba Shared Repository
More information about the samba-cvs
mailing list