[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Wed Aug 18 03:18:43 MDT 2010


The branch, master has been updated
       via  536d4d4... s3: Fix an uninitialized variable
       via  a847f13... s3: Use pipe_struct->client_id->name for pjob.clientmachine
       via  29093bc... s3: Move initializing pjob.clientname to print_job_start()
       via  4b5e252... s3: Add "client_id" to pipes_struct
       via  6d10684... s3: Remove unneeded "client_address" from connection_struct
       via  7b6835e... s3: Add smbd_server_connection->client_id
       via  ac7b633... s3: Lift smbd_server_fd from reload_services()
      from  59289d4... s3-build: only include smb_signing.h where needed.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 536d4d48bfc3e915be210988fa7d9f6433d875f2
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Aug 18 11:17:52 2010 +0200

    s3: Fix an uninitialized variable

commit a847f13d7b0c8606471792a50e9c64d1f6bd430c
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Aug 17 09:34:27 2010 +0200

    s3: Use pipe_struct->client_id->name for pjob.clientmachine

commit 29093bc0009bbcd5f9a98a2f4611fc3eb65f2539
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Aug 17 09:17:26 2010 +0200

    s3: Move initializing pjob.clientname to print_job_start()

commit 4b5e252354660501576c8452f48514852f40270e
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Aug 16 11:01:26 2010 +0200

    s3: Add "client_id" to pipes_struct

commit 6d10684556e9f9e847ec03dd8af057e8d4558e35
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Aug 16 09:39:29 2010 +0200

    s3: Remove unneeded "client_address" from connection_struct

commit 7b6835ec1da127713d0a412edcbe0a3c1bcc6192
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Aug 16 08:30:36 2010 +0200

    s3: Add smbd_server_connection->client_id

commit ac7b63384d3f8afdb768f95e7744380f4df07d76
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Aug 15 16:13:00 2010 +0200

    s3: Lift smbd_server_fd from reload_services()

-----------------------------------------------------------------------

Summary of changes:
 source3/auth/auth_ntlmssp.c                |    2 +-
 source3/include/ntdomain.h                 |    2 +-
 source3/include/printing.h                 |    1 +
 source3/include/proto.h                    |    7 +++++--
 source3/include/smb.h                      |    7 +++++--
 source3/lib/util_sock.c                    |    5 ++---
 source3/printing/nt_printing_migrate.c     |    1 +
 source3/printing/printing.c                |   11 +++--------
 source3/rpc_server/rpc_ncacn_np_internal.c |   15 ++++++++++++---
 source3/rpc_server/srv_netlog_nt.c         |    5 +++--
 source3/rpc_server/srv_pipe_hnd.c          |   17 +++--------------
 source3/rpc_server/srv_spoolss_nt.c        |   15 ++++++++-------
 source3/rpc_server/srv_spoolss_util.c      |    1 +
 source3/smbd/connection.c                  |    2 +-
 source3/smbd/globals.h                     |    1 +
 source3/smbd/lanman.c                      |   14 +++++++++++---
 source3/smbd/negprot.c                     |    4 ++--
 source3/smbd/pipes.c                       |    1 +
 source3/smbd/process.c                     |    6 +++---
 source3/smbd/reply.c                       |    2 +-
 source3/smbd/server.c                      |   27 ++++++++++++++++++++++++---
 source3/smbd/server_reload.c               |   11 ++++++-----
 source3/smbd/service.c                     |   14 ++------------
 source3/smbd/sesssetup.c                   |   10 +++++-----
 source3/smbd/smb2_sesssetup.c              |    2 +-
 source3/torture/vfstest.c                  |    2 +-
 source3/winbindd/winbindd_samr.c           |    2 ++
 27 files changed, 107 insertions(+), 80 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c
index a910201..d533ac9 100644
--- a/source3/auth/auth_ntlmssp.c
+++ b/source3/auth/auth_ntlmssp.c
@@ -122,7 +122,7 @@ static NTSTATUS auth_ntlmssp_check_password(struct ntlmssp_state *ntlmssp_state,
 	/* sub_set_smb_name checks for weird internally */
 	sub_set_smb_name(auth_ntlmssp_state->ntlmssp_state->user);
 
-	reload_services(smbd_messaging_context(), True);
+	reload_services(smbd_messaging_context(), smbd_server_fd(), True);
 
 	nt_status = make_user_info_map(&user_info, 
 				       auth_ntlmssp_state->ntlmssp_state->user, 
diff --git a/source3/include/ntdomain.h b/source3/include/ntdomain.h
index 071e915..073efe5 100644
--- a/source3/include/ntdomain.h
+++ b/source3/include/ntdomain.h
@@ -131,7 +131,7 @@ struct pipe_auth_data {
 struct pipes_struct {
 	struct pipes_struct *next, *prev;
 
-	char client_address[INET6_ADDRSTRLEN];
+	struct client_address *client_id;
 
 	struct auth_serversupplied_info *server_info;
 	struct messaging_context *msg_ctx;
diff --git a/source3/include/printing.h b/source3/include/printing.h
index b5fd98d..a16917f 100644
--- a/source3/include/printing.h
+++ b/source3/include/printing.h
@@ -142,6 +142,7 @@ int print_queue_length(struct messaging_context *msg_ctx, int snum,
 		       print_status_struct *pstatus);
 WERROR print_job_start(struct auth_serversupplied_info *server_info,
 		       struct messaging_context *msg_ctx,
+		       const char *clientmachine,
 		       int snum, const char *docname, const char *filename,
 		       struct spoolss_DeviceMode *devmode, uint32_t *_jobid);
 void print_job_endpage(struct messaging_context *msg_ctx,
diff --git a/source3/include/proto.h b/source3/include/proto.h
index fe9dec4..5c664eb 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -4535,12 +4535,13 @@ NTSTATUS rpc_pipe_open_ncalrpc(TALLOC_CTX *mem_ctx, const char *socket_path,
 			       struct rpc_pipe_client **presult);
 struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
 					      const struct ndr_syntax_id *syntax,
-					      const char *client_address,
+					      struct client_address *client_id,
 					      struct auth_serversupplied_info *server_info,
 					      struct messaging_context *msg_ctx);
 NTSTATUS rpc_pipe_open_internal(TALLOC_CTX *mem_ctx,
 				const struct ndr_syntax_id *abstract_syntax,
 				struct auth_serversupplied_info *serversupplied_info,
+				struct client_address *client_id,
 				struct messaging_context *msg_ctx,
 				struct rpc_pipe_client **presult);
 NTSTATUS rpc_connect_spoolss_pipe(connection_struct *conn,
@@ -4752,6 +4753,7 @@ struct tsocket_address;
 NTSTATUS np_open(TALLOC_CTX *mem_ctx, const char *name,
 		 const struct tsocket_address *local_address,
 		 const struct tsocket_address *remote_address,
+		 struct client_address *client_id,
 		 struct auth_serversupplied_info *server_info,
 		 struct messaging_context *msg_ctx,
 		 struct fake_file_handle **phandle);
@@ -5786,7 +5788,8 @@ struct event_context *smbd_event_context(void);
 struct messaging_context *smbd_messaging_context(void);
 struct memcache *smbd_memcache(void);
 void reload_printers(struct messaging_context *msg_ctx);
-bool reload_services(struct messaging_context *msg_ctx, bool test);
+bool reload_services(struct messaging_context *msg_ctx, int smb_sock,
+		     bool test);
 void exit_server(const char *const explanation);
 void exit_server_cleanly(const char *const explanation);
 void exit_server_fault(void);
diff --git a/source3/include/smb.h b/source3/include/smb.h
index de104a5..ab1b4b2 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -407,6 +407,11 @@ typedef struct files_struct {
 #include "ntquotas.h"
 #include "sysquotas.h"
 
+struct client_address {
+	char addr[INET6_ADDRSTRLEN];
+	const char *name;
+};
+
 struct vuid_cache_entry {
 	struct auth_serversupplied_info *server_info;
 	uint16_t vuid;
@@ -517,8 +522,6 @@ typedef struct connection_struct {
 	 */
 	gid_t force_group_gid;
 
-	char client_address[INET6_ADDRSTRLEN]; /* String version of client IP address. */
-
 	uint16 vuid; /* vuid of user who *opened* this connection, or UID_FIELD_INVALID */
 
 	time_t lastused;
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c
index 3bc60db..e9626f3 100644
--- a/source3/lib/util_sock.c
+++ b/source3/lib/util_sock.c
@@ -442,7 +442,6 @@ NTSTATUS read_fd_with_timeout(int fd, char *buf,
 	ssize_t readret;
 	size_t nread = 0;
 	struct timeval timeout;
-	int save_errno;
 
 	/* just checking .... */
 	if (maxcnt <= 0)
@@ -464,7 +463,7 @@ NTSTATUS read_fd_with_timeout(int fd, char *buf,
 			}
 
 			if (readret == -1) {
-				return map_nt_error_from_unix(save_errno);
+				return map_nt_error_from_unix(errno);
 			}
 			nread += readret;
 		}
@@ -489,7 +488,7 @@ NTSTATUS read_fd_with_timeout(int fd, char *buf,
 
 		/* Check if error */
 		if (selrtn == -1) {
-			return map_nt_error_from_unix(save_errno);
+			return map_nt_error_from_unix(errno);
 		}
 
 		/* Did we timeout ? */
diff --git a/source3/printing/nt_printing_migrate.c b/source3/printing/nt_printing_migrate.c
index 7b37926..362eb90 100644
--- a/source3/printing/nt_printing_migrate.c
+++ b/source3/printing/nt_printing_migrate.c
@@ -613,6 +613,7 @@ bool nt_printing_tdb_migrate(struct messaging_context *msg_ctx)
 	status = rpc_pipe_open_internal(tmp_ctx,
 					&ndr_table_spoolss.syntax_id,
 					server_info,
+					NULL,
 					msg_ctx,
 					&spoolss_pipe);
 	if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index 82516b3..4240ddf 100644
--- a/source3/printing/printing.c
+++ b/source3/printing/printing.c
@@ -2685,6 +2685,7 @@ static WERROR print_job_spool_file(int snum, uint32_t jobid,
 
 WERROR print_job_start(struct auth_serversupplied_info *server_info,
 		       struct messaging_context *msg_ctx,
+		       const char *clientmachine,
 		       int snum, const char *docname, const char *filename,
 		       struct spoolss_DeviceMode *devmode, uint32_t *_jobid)
 {
@@ -2733,6 +2734,8 @@ WERROR print_job_start(struct auth_serversupplied_info *server_info,
 
 	fstrcpy(pjob.jobname, docname);
 
+	fstrcpy(pjob.clientmachine, clientmachine);
+
 	fstrcpy(pjob.user, lp_printjob_username(snum));
 	standard_sub_advanced(sharename, server_info->sanitized_username,
 			      path, server_info->utok.gid,
@@ -2811,8 +2814,6 @@ NTSTATUS print_job_end(struct messaging_context *msg_ctx, int snum,
 	SMB_STRUCT_STAT sbuf;
 	struct printif *current_printif = get_printer_fns( snum );
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
-	const char *clientname;
-	char addr[INET6_ADDRSTRLEN];
 
 	pjob = print_job_find(sharename, jobid);
 
@@ -2875,12 +2876,6 @@ NTSTATUS print_job_end(struct messaging_context *msg_ctx, int snum,
 		return NT_STATUS_OK;
 	}
 
-	clientname = client_name(smbd_server_fd());
-	if (strcmp(clientname, "UNKNOWN") == 0) {
-		clientname = client_addr(smbd_server_fd(),addr,sizeof(addr));
-	}
-	fstrcpy(pjob->clientmachine, clientname);
-
 	ret = (*(current_printif->job_submit))(snum, pjob);
 
 	if (ret) {
diff --git a/source3/rpc_server/rpc_ncacn_np_internal.c b/source3/rpc_server/rpc_ncacn_np_internal.c
index 71a14be..bbb6338 100644
--- a/source3/rpc_server/rpc_ncacn_np_internal.c
+++ b/source3/rpc_server/rpc_ncacn_np_internal.c
@@ -114,7 +114,7 @@ static int close_internal_rpc_pipe_hnd(struct pipes_struct *p)
 
 struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
 					      const struct ndr_syntax_id *syntax,
-					      const char *client_address,
+					      struct client_address *client_id,
 					      struct auth_serversupplied_info *server_info,
 					      struct messaging_context *msg_ctx)
 {
@@ -157,7 +157,7 @@ struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
 
 	DLIST_ADD(InternalPipes, p);
 
-	strlcpy(p->client_address, client_address, sizeof(p->client_address));
+	p->client_id = client_id;
 
 	p->endian = RPC_LITTLE_ENDIAN;
 
@@ -469,6 +469,7 @@ static struct dcerpc_binding_handle *rpcint_binding_handle(struct pipes_struct *
 NTSTATUS rpc_pipe_open_internal(TALLOC_CTX *mem_ctx,
 				const struct ndr_syntax_id *abstract_syntax,
 				struct auth_serversupplied_info *serversupplied_info,
+				struct client_address *client_id,
 				struct messaging_context *msg_ctx,
 				struct rpc_pipe_client **presult)
 {
@@ -482,8 +483,16 @@ NTSTATUS rpc_pipe_open_internal(TALLOC_CTX *mem_ctx,
 	result->abstract_syntax = *abstract_syntax;
 	result->transfer_syntax = ndr_transfer_syntax;
 
+	if (client_id == NULL) {
+		static struct client_address unknown;
+		strlcpy(unknown.addr, "<UNKNOWN>", sizeof(unknown.addr));
+		unknown.name = "<UNKNOWN>";
+		client_id = &unknown;
+	}
+
 	result->pipes_struct = make_internal_rpc_pipe_p(
-		result, abstract_syntax, "", serversupplied_info, msg_ctx);
+		result, abstract_syntax, client_id, serversupplied_info,
+		msg_ctx);
 	if (result->pipes_struct == NULL) {
 		TALLOC_FREE(result);
 		return NT_STATUS_NO_MEMORY;
diff --git a/source3/rpc_server/srv_netlog_nt.c b/source3/rpc_server/srv_netlog_nt.c
index 4433a70..1b0544f 100644
--- a/source3/rpc_server/srv_netlog_nt.c
+++ b/source3/rpc_server/srv_netlog_nt.c
@@ -406,6 +406,7 @@ NTSTATUS _netr_NetrEnumerateTrustedDomains(struct pipes_struct *p,
 
 	status = rpc_pipe_open_internal(p->mem_ctx, &ndr_table_lsarpc.syntax_id,
 					p->server_info,
+					p->client_id,
 					p->msg_ctx,
 					&cli);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -631,7 +632,7 @@ static NTSTATUS get_md4pw(struct samr_Password *md4pw, const char *mach_acct,
 	ZERO_STRUCT(user_handle);
 
 	status = rpc_pipe_open_internal(mem_ctx, &ndr_table_samr.syntax_id,
-					server_info, msg_ctx,
+					server_info, NULL, msg_ctx,
 					&cli);
 	if (!NT_STATUS_IS_OK(status)) {
 		goto out;
@@ -1035,7 +1036,7 @@ static NTSTATUS netr_set_machine_account_password(TALLOC_CTX *mem_ctx,
 	ZERO_STRUCT(user_handle);
 
 	status = rpc_pipe_open_internal(mem_ctx, &ndr_table_samr.syntax_id,
-					server_info, msg_ctx,
+					server_info, NULL, msg_ctx,
 					&cli);
 	if (!NT_STATUS_IS_OK(status)) {
 		goto out;
diff --git a/source3/rpc_server/srv_pipe_hnd.c b/source3/rpc_server/srv_pipe_hnd.c
index 37efe06..4c6e651 100644
--- a/source3/rpc_server/srv_pipe_hnd.c
+++ b/source3/rpc_server/srv_pipe_hnd.c
@@ -537,6 +537,7 @@ static struct np_proxy_state *make_external_rpc_pipe_p(TALLOC_CTX *mem_ctx,
 NTSTATUS np_open(TALLOC_CTX *mem_ctx, const char *name,
 		 const struct tsocket_address *local_address,
 		 const struct tsocket_address *remote_address,
+		 struct client_address *client_id,
 		 struct auth_serversupplied_info *server_info,
 		 struct messaging_context *msg_ctx,
 		 struct fake_file_handle **phandle)
@@ -564,26 +565,13 @@ NTSTATUS np_open(TALLOC_CTX *mem_ctx, const char *name,
 	} else {
 		struct pipes_struct *p;
 		struct ndr_syntax_id syntax;
-		const char *client_address;
 
 		if (!is_known_pipename(name, &syntax)) {
 			TALLOC_FREE(handle);
 			return NT_STATUS_OBJECT_NAME_NOT_FOUND;
 		}
 
-		if (tsocket_address_is_inet(remote_address, "ip")) {
-			client_address = tsocket_address_inet_addr_string(
-						remote_address,
-						talloc_tos());
-			if (client_address == NULL) {
-				TALLOC_FREE(handle);
-				return NT_STATUS_NO_MEMORY;
-			}
-		} else {
-			client_address = "";
-		}
-
-		p = make_internal_rpc_pipe_p(handle, &syntax, client_address,
+		p = make_internal_rpc_pipe_p(handle, &syntax, client_id,
 					     server_info, msg_ctx);
 
 		handle->type = FAKE_FILE_TYPE_NAMED_PIPE;
@@ -930,6 +918,7 @@ NTSTATUS rpc_connect_spoolss_pipe(connection_struct *conn,
 		status = rpc_pipe_open_internal(conn,
 						&ndr_table_spoolss.syntax_id,
 						conn->server_info,
+						&conn->sconn->client_id,
 						conn->sconn->msg_ctx,
 						&conn->spoolss_pipe);
 		if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 893ddce..46e47f5 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -341,7 +341,7 @@ static WERROR delete_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token,
 
 	/* go ahead and re-read the services immediately */
 	become_root();
-	reload_services(msg_ctx, false);
+	reload_services(msg_ctx, smbd_server_fd(), false);
 	unbecome_root();
 
 	if ( lp_servicenumber( sharename )  > 0 )
@@ -2451,9 +2451,9 @@ WERROR _spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct pipes_struct *p,
 		return WERR_BADFID;
 
 	DEBUG(10,("_spoolss_RemoteFindFirstPrinterChangeNotifyEx: "
-		"client_address is %s\n", p->client_address));
+		"client_address is %s\n", p->client_id->addr));
 
-	if (!interpret_string_addr(&client_ss, p->client_address,
+	if (!interpret_string_addr(&client_ss, p->client_id->addr,
 				   AI_NUMERICHOST)) {
 		return WERR_SERVER_UNAVAILABLE;
 	}
@@ -5291,7 +5291,8 @@ WERROR _spoolss_StartDocPrinter(struct pipes_struct *p,
 		return WERR_BADFID;
 	}
 
-	werr = print_job_start(p->server_info, p->msg_ctx, snum,
+	werr = print_job_start(p->server_info, p->msg_ctx,
+			        p->client_id->name, snum,
 				info_1->document_name, info_1->output_file,
 				Printer->devmode, &Printer->jobid);
 
@@ -5724,7 +5725,7 @@ static bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token,
 
 	/* reload our services immediately */
 	become_root();
-	reload_services(msg_ctx, false);
+	reload_services(msg_ctx, smbd_server_fd(), false);
 	unbecome_root();
 
 	numlines = 0;
@@ -6111,7 +6112,7 @@ static WERROR update_printer(struct pipes_struct *p,
 	{
 		/* add_printer_hook() will call reload_services() */
 		if (!add_printer_hook(tmp_ctx, p->server_info->ptok,
-				      printer, p->client_address,
+				      printer, p->client_id->addr,
 				      p->msg_ctx)) {
 			result = WERR_ACCESS_DENIED;
 			goto done;
@@ -7420,7 +7421,7 @@ static WERROR spoolss_addprinterex_level_2(struct pipes_struct *p,
 
 	if (*lp_addprinter_cmd() ) {
 		if ( !add_printer_hook(p->mem_ctx, p->server_info->ptok,
-				       info2, p->client_address,
+				       info2, p->client_id->addr,
 				       p->msg_ctx) ) {
 			return WERR_ACCESS_DENIED;
 		}
diff --git a/source3/rpc_server/srv_spoolss_util.c b/source3/rpc_server/srv_spoolss_util.c
index 2de45b7..5fbdc0b 100644
--- a/source3/rpc_server/srv_spoolss_util.c
+++ b/source3/rpc_server/srv_spoolss_util.c
@@ -262,6 +262,7 @@ static WERROR winreg_printer_openkey(TALLOC_CTX *mem_ctx,
 	status = rpc_pipe_open_internal(mem_ctx,
 					&ndr_table_winreg.syntax_id,
 					server_info,
+					NULL,
 					msg_ctx,
 					&pipe_handle);
 	if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/smbd/connection.c b/source3/smbd/connection.c
index f4f4fc2..9b766d5 100644
--- a/source3/smbd/connection.c
+++ b/source3/smbd/connection.c
@@ -147,7 +147,7 @@ bool claim_connection(connection_struct *conn, const char *name)
 	crec.start = time(NULL);
 
 	strlcpy(crec.machine,get_remote_machine_name(),sizeof(crec.machine));
-	strlcpy(crec.addr, conn->client_address, sizeof(crec.addr));
+	strlcpy(crec.addr, conn->sconn->client_id.addr, sizeof(crec.addr));
 
 	dbuf.dptr = (uint8 *)&crec;
 	dbuf.dsize = sizeof(crec);
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index cf23509..e4f4b79 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -458,6 +458,7 @@ struct pending_auth_data;
 
 struct smbd_server_connection {
 	int sock;
+	struct client_address client_id;
 	const struct tsocket_address *local_address;
 	const struct tsocket_address *remote_address;
 	struct messaging_context *msg_ctx;
diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c
index 2be2a8c..493a8ec 100644
--- a/source3/smbd/lanman.c
+++ b/source3/smbd/lanman.c
@@ -2236,6 +2236,7 @@ static bool api_RNetShareAdd(struct smbd_server_connection *sconn,
 
 	status = rpc_pipe_open_internal(mem_ctx, &ndr_table_srvsvc.syntax_id,
 					conn->server_info,
+					&conn->sconn->client_id,
 					conn->sconn->msg_ctx,
 					&cli);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -2343,7 +2344,8 @@ static bool api_RNetGroupEnum(struct smbd_server_connection *sconn,
 
 	status = rpc_pipe_open_internal(
 		talloc_tos(), &ndr_table_samr.syntax_id,
-		conn->server_info, conn->sconn->msg_ctx, &samr_pipe);
+		conn->server_info, &conn->sconn->client_id,
+		conn->sconn->msg_ctx, &samr_pipe);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0, ("api_RNetUserEnum: Could not connect to samr: %s\n",
 			  nt_errstr(status)));
@@ -2525,7 +2527,8 @@ static bool api_NetUserGetGroups(struct smbd_server_connection *sconn,
 
 	status = rpc_pipe_open_internal(
 		talloc_tos(), &ndr_table_samr.syntax_id,
-		conn->server_info, conn->sconn->msg_ctx, &samr_pipe);
+		conn->server_info, &conn->sconn->client_id,
+		conn->sconn->msg_ctx, &samr_pipe);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0, ("api_RNetUserEnum: Could not connect to samr: %s\n",
 			  nt_errstr(status)));
@@ -2681,7 +2684,8 @@ static bool api_RNetUserEnum(struct smbd_server_connection *sconn,
 
 	status = rpc_pipe_open_internal(
 		talloc_tos(), &ndr_table_samr.syntax_id,
-		conn->server_info, conn->sconn->msg_ctx, &samr_pipe);
+		conn->server_info, &conn->sconn->client_id,
+		conn->sconn->msg_ctx, &samr_pipe);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0, ("api_RNetUserEnum: Could not connect to samr: %s\n",
 			  nt_errstr(status)));
@@ -2924,6 +2928,7 @@ static bool api_SetUserPassword(struct smbd_server_connection *sconn,
 
 	status = rpc_pipe_open_internal(mem_ctx, &ndr_table_samr.syntax_id,
 					conn->server_info,
+					&conn->sconn->client_id,
 					conn->sconn->msg_ctx,
 					&cli);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -3141,6 +3146,7 @@ static bool api_SamOEMChangePassword(struct smbd_server_connection *sconn,
 
 	status = rpc_pipe_open_internal(mem_ctx, &ndr_table_samr.syntax_id,
 					conn->server_info,
+					&conn->sconn->client_id,
 					conn->sconn->msg_ctx,
 					&cli);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -3695,6 +3701,7 @@ static bool api_RNetServerGetInfo(struct smbd_server_connection *sconn,
 
 	status = rpc_pipe_open_internal(mem_ctx, &ndr_table_srvsvc.syntax_id,
 					conn->server_info,
+					&conn->sconn->client_id,
 					conn->sconn->msg_ctx,
 					&cli);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -4118,6 +4125,7 @@ static bool api_RNetUserGetInfo(struct smbd_server_connection *sconn,
 
 	status = rpc_pipe_open_internal(mem_ctx, &ndr_table_samr.syntax_id,
 					conn->server_info,
+					&conn->sconn->client_id,
 					conn->sconn->msg_ctx,
 					&cli);
 	if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/smbd/negprot.c b/source3/smbd/negprot.c
index 9151d1b..2908c26 100644
--- a/source3/smbd/negprot.c
+++ b/source3/smbd/negprot.c
@@ -667,7 +667,7 @@ void reply_negprot(struct smb_request *req)
 	}
  
 	/* possibly reload - change of architecture */
-	reload_services(sconn->msg_ctx, True);
+	reload_services(sconn->msg_ctx, sconn->sock, True);
 	
 	/* moved from the netbios session setup code since we don't have that 
 	   when the client connects to port 445.  Of course there is a small
@@ -693,7 +693,7 @@ void reply_negprot(struct smb_request *req)
   
 	if(choice != -1) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list