server_cryptkey() now calling cli_connectserverlist(). stupid microsoft
authorLuke Leighton <lkcl@samba.org>
Mon, 14 Dec 1998 21:22:59 +0000 (21:22 +0000)
committerLuke Leighton <lkcl@samba.org>
Mon, 14 Dec 1998 21:22:59 +0000 (21:22 +0000)
idiotic *SMBSERVER connectionism added to cli_connect_serverlist().
also added check for protocol < LANMAN2.
(This used to be commit c2bcb3a286f22ed4f0f55da2a3eb2bff17906fb1)

source3/libsmb/clientgen.c
source3/smbd/password.c

index 99d868e216a8b6fc45a7e42b5a54c29083c6cb42..5bae8ffa81cfeb866618d3f3c49c757e9106c280 100644 (file)
@@ -2728,7 +2728,7 @@ BOOL cli_connect_serverlist(struct cli_state *cli, char *p)
        extern pstring scope;
        fstring remote_machine;
        struct in_addr dest_ip;
-       struct nmb_name calling, called;
+       struct nmb_name calling, called, stupid_smbserver_called;
        BOOL connected_ok = False;
 
        /*
@@ -2763,19 +2763,28 @@ BOOL cli_connect_serverlist(struct cli_state *cli, char *p)
 
                make_nmb_name(&calling, global_myname , 0x0 , scope);
                make_nmb_name(&called , remote_machine, 0x20, scope);
+               /* stupid microsoft destruction of the ability of netbios
+                * to provide multiple netbios servers on one host.
+                */
+               make_nmb_name(&stupid_smbserver_called , "*SMBSERVER", 0x20, scope);
 
                pwd_set_nullpwd(&cli->pwd);
 
                if (!cli_establish_connection(cli, remote_machine, &dest_ip,
                                              &calling, &called,
                                              "IPC$", "IPC", 
+                                             False, True) &&
+                   !cli_establish_connection(cli, remote_machine, &dest_ip,
+                                             &calling, &stupid_smbserver_called,
+                                             "IPC$", "IPC", 
                                              False, True))
                {
                        cli_shutdown(cli);
                        continue;
                }      
 
-               if (!IS_BITS_SET_ALL(cli->sec_mode, 1))
+               if (cli->protocol < PROTOCOL_LANMAN2 ||
+                   !IS_BITS_SET_ALL(cli->sec_mode, 1))
                {
                        DEBUG(1,("cli_connect_serverlist: machine %s isn't in user level security mode\n",
                                  remote_machine));
index 726d93e40490df8b3b59db7be1b28eb80ec7fd08..7eed028a80e307e32a6607e705619f0947fc866b 100644 (file)
@@ -909,81 +909,11 @@ support for server level security
 ****************************************************************************/
 struct cli_state *server_cryptkey(void)
 {
-       struct cli_state *cli;
-       fstring desthost;
-       struct in_addr dest_ip;
-       extern fstring local_machine;
-       char *p;
-        BOOL connected_ok = False;
-       struct nmb_name calling, called;
-
-       cli = server_client();
-
-       if (!cli_initialise(cli))
-               return NULL;
-
-        p = lp_passwordserver();
-        while(p && next_token( &p, desthost, LIST_SEP, sizeof(desthost))) {
-               standard_sub_basic(desthost);
-               strupper(desthost);
-
-                if(!resolve_name( desthost, &dest_ip, 0x20)) {
-                        DEBUG(1,("server_cryptkey: Can't resolve address for %s\n",desthost));
-                        continue;
-                }
-
-               if (ismyip(dest_ip)) {
-                       DEBUG(1,("Password server loop - disabling password server %s\n",desthost));
-                       continue;
-               }
-
-               if (cli_connect(cli, desthost, &dest_ip)) {
-                       DEBUG(3,("connected to password server %s\n",desthost));
-                       connected_ok = True;
-                       break;
-               }
-       }
-
-       if (!connected_ok) {
-               DEBUG(0,("password server not available\n"));
-               cli_shutdown(cli);
-               return NULL;
-       }
-
-       make_nmb_name(&calling, local_machine, 0x0 , scope);
-       make_nmb_name(&called , desthost     , 0x20, scope);
-
-       if (!cli_session_request(cli, &calling, &called)) {
-               /* try with *SMBSERVER if the first name fails */
-               cli_shutdown(cli);
-               make_nmb_name(&called , "*SMBSERVER", 0x20, scope);
-               if (!cli_initialise(cli) ||
-                   !cli_connect(cli, desthost, &dest_ip) ||
-                   !cli_session_request(cli, &calling, &called)) {
-                       DEBUG(1,("%s rejected the session\n",desthost));
-                       cli_shutdown(cli);
-                       return NULL;
-               }
-       }
-
-       DEBUG(3,("got session\n"));
-
-       if (!cli_negprot(cli)) {
-               DEBUG(1,("%s rejected the negprot\n",desthost));
-               cli_shutdown(cli);
-               return NULL;
-       }
-
-       if (cli->protocol < PROTOCOL_LANMAN2 ||
-           !(cli->sec_mode & 1)) {
-               DEBUG(1,("%s isn't in user level security mode\n",desthost));
-               cli_shutdown(cli);
-               return NULL;
+       if (cli_connect_serverlist(server_client(), lp_passwordserver()))
+       {
+               return server_client();
        }
-
-       DEBUG(3,("password server OK\n"));
-
-       return cli;
+       return NULL;
 }
 
 /****************************************************************************