diff options
author | Gerald Carter <jerry@samba.org> | 2004-05-11 14:54:54 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:51:32 -0500 |
commit | 8ee268f0ed0c2f75ded9c2ddd66e0953f443c79e (patch) | |
tree | bfd2077c3ca0e0be9db14103c30f70eab270eb30 | |
parent | ea41d694270264557f740cd40ccc69b4acaa57e9 (diff) | |
download | samba-8ee268f0ed0c2f75ded9c2ddd66e0953f443c79e.tar.gz samba-8ee268f0ed0c2f75ded9c2ddd66e0953f443c79e.tar.xz samba-8ee268f0ed0c2f75ded9c2ddd66e0953f443c79e.zip |
r647: fix for setting the called name to by our IP if the called name was *SMBSERVER and *SMBSERV -- fixes issue with connecting to printers via \ip.ad.dr.ess\printer UNC path
-rw-r--r-- | source/lib/substitute.c | 12 | ||||
-rw-r--r-- | source/lib/util.c | 18 | ||||
-rw-r--r-- | source/param/loadparm.c | 2 |
3 files changed, 7 insertions, 25 deletions
diff --git a/source/lib/substitute.c b/source/lib/substitute.c index fed11c22982..44e791b7907 100644 --- a/source/lib/substitute.c +++ b/source/lib/substitute.c @@ -40,24 +40,24 @@ void set_local_machine_name(const char* local_name, BOOL perm) static BOOL already_perm = False; fstring tmp_local_machine; + fstrcpy(tmp_local_machine,local_name); + trim_char(tmp_local_machine,' ',' '); + /* * Windows NT/2k uses "*SMBSERVER" and XP uses "*SMBSERV" * arrggg!!! */ - if (strequal(local_name, "*SMBSERVER")) - return; - - if (strequal(local_name, "*SMBSERV")) + if ( strequal(tmp_local_machine, "*SMBSERVER") || strequal(tmp_local_machine, "*SMBSERV") ) { + fstrcpy( local_machine, client_socket_addr() ); return; + } if (already_perm) return; already_perm = perm; - fstrcpy(tmp_local_machine,local_name); - trim_char(tmp_local_machine,' ',' '); alpha_strcpy(local_machine,tmp_local_machine,SAFE_NETBIOS_CHARS,sizeof(local_machine)-1); strlower_m(local_machine); } diff --git a/source/lib/util.c b/source/lib/util.c index e8ffd9d8d2e..9d7a2648c5b 100644 --- a/source/lib/util.c +++ b/source/lib/util.c @@ -1703,24 +1703,6 @@ BOOL is_myname(const char *s) return(ret); } -/******************************************************************** - Return only the first IP address of our configured interfaces - as a string - *******************************************************************/ - -const char* get_my_primary_ip (void) -{ - static fstring ip_string; - int n; - struct iface_struct nics[MAX_INTERFACES]; - - if ((n=get_interfaces(nics, MAX_INTERFACES)) <= 0) - return NULL; - - fstrcpy(ip_string, inet_ntoa(nics[0].ip)); - return ip_string; -} - BOOL is_myname_or_ipaddr(const char *s) { /* optimize for the common case */ diff --git a/source/param/loadparm.c b/source/param/loadparm.c index b378342372b..30fbc9713e1 100644 --- a/source/param/loadparm.c +++ b/source/param/loadparm.c @@ -4252,7 +4252,7 @@ const char *get_called_name(void) static fstring called_name; if (!*local_machine) { - fstrcpy(called_name, get_my_primary_ip()); + fstrcpy(called_name, client_socket_addr()); DEBUG(8,("get_called_name: assuming that client used IP address [%s] as called name.\n", called_name)); return called_name; |