svn commit: samba r12570 - in branches/SAMBA_3_0: . source/libsmb

derrell at samba.org derrell at samba.org
Thu Dec 29 15:07:00 GMT 2005


Author: derrell
Date: 2005-12-29 15:06:59 +0000 (Thu, 29 Dec 2005)
New Revision: 12570

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12570

Log:
 r12084 at cabra:  derrell | 2005-12-29 10:05:16 -0500
 do not open connection when only looking for cached connection; also, fix crash caused by missing initialization following recent locale changes

Modified:
   branches/SAMBA_3_0/
   branches/SAMBA_3_0/source/libsmb/libsmbclient.c


Changeset:

Property changes on: branches/SAMBA_3_0
___________________________________________________________________
Name: svk:merge
   - 3a72dc49-98ff-0310-ab52-9b7ed7945d91:/local/samba3:12083
   + 3a72dc49-98ff-0310-ab52-9b7ed7945d91:/local/samba3:12084

Modified: branches/SAMBA_3_0/source/libsmb/libsmbclient.c
===================================================================
--- branches/SAMBA_3_0/source/libsmb/libsmbclient.c	2005-12-29 15:06:53 UTC (rev 12569)
+++ branches/SAMBA_3_0/source/libsmb/libsmbclient.c	2005-12-29 15:06:59 UTC (rev 12570)
@@ -589,6 +589,7 @@
 
 static SMBCSRV *
 smbc_server(SMBCCTX *context,
+            BOOL connect_if_not_found,
             const char *server,
             const char *share, 
             fstring workgroup,
@@ -644,13 +645,18 @@
                         
                                 errno = smbc_errno(context, &srv->cli);
                                 cli_shutdown(&srv->cli);
-                                context->callbacks.remove_cached_srv_fn(context, srv);
+                                context->callbacks.remove_cached_srv_fn(context,
+                                                                        srv);
                                 srv = NULL;
                         }
 
-                        /* Regenerate the dev value since it's based on both server and share */
+                        /*
+                         * Regenerate the dev value since it's based on both
+                         * server and share
+                         */
                         if (srv) {
-                                srv->dev = (dev_t)(str_checksum(server) ^ str_checksum(share));
+                                srv->dev = (dev_t)(str_checksum(server) ^
+                                                   str_checksum(share));
                         }
                 }
         }
@@ -662,6 +668,12 @@
                 return srv;
         }
 
+        /* If we're not asked to connect when a connection doesn't exist... */
+        if (! connect_if_not_found) {
+                /* ... then we're done here. */
+                return NULL;
+        }
+
 	make_nmb_name(&calling, context->netbios_name, 0x0);
 	make_nmb_name(&called , server, 0x20);
 
@@ -1003,7 +1015,8 @@
 
 	fstrcpy(workgroup, context->workgroup);
 
-	srv = smbc_server(context, server, share, workgroup, user, password);
+	srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
 	if (!srv) {
 
@@ -1646,7 +1659,8 @@
 
 	fstrcpy(workgroup, context->workgroup);
 
-	srv = smbc_server(context, server, share, workgroup, user, password);
+	srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
 	if (!srv) {
 
@@ -1779,8 +1793,8 @@
 
 	fstrcpy(workgroup, ocontext->workgroup);
 
-	srv = smbc_server(ocontext, server1, share1, workgroup,
-                          user1, password1);
+	srv = smbc_server(ocontext, True,
+                          server1, share1, workgroup, user1, password1);
 	if (!srv) {
 
 		return -1;
@@ -2049,7 +2063,8 @@
 
 	fstrcpy(workgroup, context->workgroup);
 
-	srv = smbc_server(context, server, share, workgroup, user, password);
+	srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
 	if (!srv) {
 		return -1;  /* errno set by smbc_server */
@@ -2616,8 +2631,8 @@
                          * workgroups/domains that it knows about.
                          */
                 
-                        srv = smbc_server(context, server,
-                                          "IPC$", workgroup, user, password);
+                        srv = smbc_server(context, True, server, "IPC$",
+                                          workgroup, user, password);
                         if (!srv) {
                                 continue;
                         }
@@ -2664,8 +2679,12 @@
                          * to see if <server> is an IP address first.
                          */
 
-                        /* See if we have an existing server */
-                        srv = smbc_server(context, server, "IPC$",
+                        /*
+                         * See if we have an existing server.  Do not
+                         * establish a connection if one does not already
+                         * exist.
+                         */
+                        srv = smbc_server(context, False, server, "IPC$",
                                           workgroup, user, password);
 
                         /*
@@ -2699,7 +2718,8 @@
                                  * Get a connection to IPC$ on the server if
                                  * we do not already have one
                                  */
-				srv = smbc_server(context, buserver, "IPC$",
+				srv = smbc_server(context, True,
+                                                  buserver, "IPC$",
                                                   workgroup, user, password);
 				if (!srv) {
 				        DEBUG(0, ("got no contact to IPC$\n"));
@@ -2729,8 +2749,9 @@
                                 
                                 /* If we hadn't found the server, get one now */
                                 if (!srv) {
-                                        srv = smbc_server(context, server,
-                                                          "IPC$", workgroup,
+                                        srv = smbc_server(context, True,
+                                                          server, "IPC$",
+                                                          workgroup,
                                                           user, password);
                                 }
 
@@ -2787,7 +2808,7 @@
 			/* We connect to the server and list the directory */
 			dir->dir_type = SMBC_FILE_SHARE;
 
-			srv = smbc_server(context, server, share,
+			srv = smbc_server(context, True, server, share,
                                           workgroup, user, password);
 
 			if (!srv) {
@@ -3149,7 +3170,8 @@
 
 	fstrcpy(workgroup, context->workgroup);
 
-	srv = smbc_server(context, server, share, workgroup, user, password);
+	srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
 	if (!srv) {
 
@@ -3246,7 +3268,8 @@
 
 	fstrcpy(workgroup, context->workgroup);
 
-	srv = smbc_server(context, server, share, workgroup, user, password);
+	srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
 	if (!srv) {
 
@@ -3498,7 +3521,8 @@
 
 	fstrcpy(workgroup, context->workgroup);
 
-	srv = smbc_server(context, server, share, workgroup, user, password);
+	srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
 	if (!srv) {
 		return -1;  /* errno set by smbc_server */
@@ -3593,7 +3617,8 @@
 
 	fstrcpy(workgroup, context->workgroup);
 
-	srv = smbc_server(context, server, share, workgroup, user, password);
+	srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
 	if (!srv) {
 		return -1;      /* errno set by smbc_server */
@@ -4988,7 +5013,8 @@
 
 	fstrcpy(workgroup, context->workgroup);
 
-	srv = smbc_server(context, server, share, workgroup, user, password);
+	srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 	if (!srv) {
 		return -1;  /* errno set by smbc_server */
 	}
@@ -5255,7 +5281,8 @@
 
         fstrcpy(workgroup, context->workgroup);
 
-        srv = smbc_server(context, server, share, workgroup, user, password);
+        srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
         if (!srv) {
                 return -1;  /* errno set by smbc_server */
         }
@@ -5371,7 +5398,8 @@
 
         fstrcpy(workgroup, context->workgroup);
 
-        srv = smbc_server(context, server, share, workgroup, user, password);
+        srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
         if (!srv) {
                 return -1;  /* errno set by smbc_server */
         }
@@ -5662,7 +5690,8 @@
         
         fstrcpy(workgroup, context->workgroup);
 
-        srv = smbc_server(context, server, share, workgroup, user, password);
+        srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
         if (!srv) {
 
@@ -5732,7 +5761,8 @@
 
         fstrcpy(workgroup, context->workgroup);
 
-        srv = smbc_server(context, server, share, workgroup, user, password);
+        srv = smbc_server(context, True,
+                          server, share, workgroup, user, password);
 
         if (!srv) {
 
@@ -5951,6 +5981,7 @@
                 /* Set this to what the user wants */
                 DEBUGLEVEL = context->debug;
                 
+                load_case_tables();
                 setup_logging( "libsmbclient", True);
 
                 /* Here we would open the smb.conf file if needed ... */



More information about the samba-cvs mailing list