}
/* DOS error "more data" is an acceptable error code */
- if (cli_error(cli, &eclass, &num) && eclass != ERRDOS && num != ERRmoredata)
+ if (cli_error(cli, &eclass, &num) && !(eclass == ERRDOS && num == ERRmoredata))
{
return(False);
}
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;
/*
continue;
}
- if (ismyip(dest_ip))
+ if ((lp_security() != SEC_USER) && (ismyip(dest_ip)))
{
DEBUG(1,("cli_connect_serverlist: Password server loop - not using password server %s\n", remote_machine));
continue;
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));