svn commit: samba r2542 - in branches/SAMBA_4_0/source: lib smb_server

abartlet at samba.org abartlet at samba.org
Wed Sep 22 23:50:28 GMT 2004


Author: abartlet
Date: 2004-09-22 23:50:28 +0000 (Wed, 22 Sep 2004)
New Revision: 2542

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=2542&nolog=1

Log:
I really don't like the 'substitute' code, and I particularly don't
like it in the mainline code (outside the smb.conf magic).

We will need to have a more useful 'helper' routine for this, but for
now we at least get a reliable IP address.

Also remove the unused 'socket' structure in the smb server - it seems
to have been replaced by the socket library.

Andrew Bartlett


Modified:
   branches/SAMBA_4_0/source/lib/substitute.c
   branches/SAMBA_4_0/source/smb_server/service.c
   branches/SAMBA_4_0/source/smb_server/sesssetup.c
   branches/SAMBA_4_0/source/smb_server/smb_server.c
   branches/SAMBA_4_0/source/smb_server/smb_server.h


Changeset:
Modified: branches/SAMBA_4_0/source/lib/substitute.c
===================================================================
--- branches/SAMBA_4_0/source/lib/substitute.c	2004-09-22 23:42:20 UTC (rev 2541)
+++ branches/SAMBA_4_0/source/lib/substitute.c	2004-09-22 23:50:28 UTC (rev 2542)
@@ -52,18 +52,6 @@
 	(*dest) = s;
 }
 
-void sub_set_local_machine(const char *local_machine)
-{
-	if (!sub) return;
-	setup_string(&sub->local_machine, local_machine);
-}
-
-void sub_set_remote_machine(const char *remote_machine)
-{
-	if (!sub) return;
-	setup_string(&sub->remote_machine, remote_machine);
-}
-
 void sub_set_remote_proto(const char *str)
 {
 	if (!sub) return;
@@ -76,19 +64,6 @@
 	setup_string(&sub->remote_arch, str);
 }
 
-const char *sub_get_remote_machine(void) 
-{
-	if (!sub) return "UNKNOWN";
-	return sub->remote_machine;
-}
-
-const char *sub_get_local_machine(void) 
-{
-	if (!sub) return "UNKNOWN";
-	return sub->local_machine;
-}
-
-
 /*
   setup the string used by %U substitution 
 */

Modified: branches/SAMBA_4_0/source/smb_server/service.c
===================================================================
--- branches/SAMBA_4_0/source/smb_server/service.c	2004-09-22 23:42:20 UTC (rev 2541)
+++ branches/SAMBA_4_0/source/smb_server/service.c	2004-09-22 23:50:28 UTC (rev 2542)
@@ -218,8 +218,7 @@
 	snum = find_service(service);
 
 	if (snum == -1) {
-		DEBUG(0,("%s couldn't find service %s\n",
-			 sub_get_remote_machine(), service));
+		DEBUG(0,("couldn't find service %s\n", service));
 		return NT_STATUS_BAD_NETWORK_NAME;
 	}
 

Modified: branches/SAMBA_4_0/source/smb_server/sesssetup.c
===================================================================
--- branches/SAMBA_4_0/source/smb_server/sesssetup.c	2004-09-22 23:42:20 UTC (rev 2541)
+++ branches/SAMBA_4_0/source/smb_server/sesssetup.c	2004-09-22 23:50:28 UTC (rev 2542)
@@ -45,14 +45,23 @@
 	struct auth_serversupplied_info *server_info = NULL;
 	struct auth_session_info *session_info;
 
+	TALLOC_CTX *mem_ctx = talloc_init("NT1 session setup");
+	char *remote_machine;
+	if (!mem_ctx) {
+		return NT_STATUS_NO_MEMORY;
+	}
+	
 	if (!req->smb_conn->negotiate.done_sesssetup) {
 		req->smb_conn->negotiate.max_send = sess->old.in.bufsize;
 	}
-
+	
+	remote_machine = socket_get_peer_addr(req->smb_conn->connection->socket, mem_ctx);
 	status = make_user_info_for_reply_enc(&user_info, 
 					      sess->old.in.user, sess->old.in.domain,
+					      remote_machine,
 					      sess->old.in.password,
 					      data_blob(NULL, 0));
+	talloc_free(mem_ctx);
 	if (!NT_STATUS_IS_OK(status)) {
 		return NT_STATUS_ACCESS_DENIED;
 	}
@@ -122,10 +131,18 @@
 		free_auth_context(&auth_context);
 
 	} else {
+		TALLOC_CTX *mem_ctx = talloc_init("NT1 session setup");
+		char *remote_machine;
+		if (!mem_ctx) {
+			return NT_STATUS_NO_MEMORY;
+		}
+		remote_machine = socket_get_peer_addr(req->smb_conn->connection->socket, mem_ctx);
 		status = make_user_info_for_reply_enc(&user_info, 
 						      sess->nt1.in.user, sess->nt1.in.domain,
+						      remote_machine,
 						      sess->nt1.in.password1,
 						      sess->nt1.in.password2);
+		talloc_free(mem_ctx);
 		if (!NT_STATUS_IS_OK(status)) {
 			return NT_STATUS_ACCESS_DENIED;
 		}

Modified: branches/SAMBA_4_0/source/smb_server/smb_server.c
===================================================================
--- branches/SAMBA_4_0/source/smb_server/smb_server.c	2004-09-22 23:42:20 UTC (rev 2541)
+++ branches/SAMBA_4_0/source/smb_server/smb_server.c	2004-09-22 23:50:28 UTC (rev 2542)
@@ -838,13 +838,6 @@
 
 	sub_set_context(&smb_conn->substitute);
 
-	/* set an initial client name based on its IP address. This will be replaced with
-	   the netbios name later if it gives us one */
-	socket_addr = socket_get_peer_addr(conn->socket, smb_conn);
-	if (socket_addr) {
-		sub_set_remote_machine(socket_addr);
-	}
-
 	/* now initialise a few default values associated with this smb socket */
 	smb_conn->negotiate.max_send = 0xFFFF;
 

Modified: branches/SAMBA_4_0/source/smb_server/smb_server.h
===================================================================
--- branches/SAMBA_4_0/source/smb_server/smb_server.h	2004-09-22 23:42:20 UTC (rev 2541)
+++ branches/SAMBA_4_0/source/smb_server/smb_server.h	2004-09-22 23:50:28 UTC (rev 2542)
@@ -168,21 +168,9 @@
  * information associated with a SMB server connection 
  */
 struct smbsrv_connection {
-	/* this is the context for a SMB socket associated with the socket itself */
-	struct {
-		/* the open file descriptor */
-		int fd; 
-	
-		/* the last read error on the socket, if any (replaces smb_read_error global) */
-		int read_error;
-	
-		/* a count of the number of packets we have received. We
-		 * actually only care about zero/non-zero at this stage */
-		unsigned pkt_count;
-	
-		/* the network address of the client */
-		char *client_addr;
-	} socket;
+	/* a count of the number of packets we have received. We
+	 * actually only care about zero/non-zero at this stage */
+	unsigned pkt_count;
 
 	/* context that has been negotiated between the client and server */
 	struct {



More information about the samba-cvs mailing list