diff --git a/src/smblib/smbstr.c b/src/smblib/smbstr.c
index 202bd9c2300e93fa2f92e72501eb5ccb25945348..36d052f50833dc4dfd5e64bde67b834d86c06398 100644
--- a/src/smblib/smbstr.c
+++ b/src/smblib/smbstr.c
@@ -315,6 +315,8 @@ ushort SMBCALL smb_netaddr_type(const char* str)
 {
 	char*	p;
 	char*	tp;
+	char*	firstdot;
+	char*	lastdot;
 
 	if((p=strchr(str,'@'))==NULL)
 		return(NET_NONE);
@@ -324,14 +326,17 @@ ushort SMBCALL smb_netaddr_type(const char* str)
 	if(*p==0)
 		return(NET_UNKNOWN);
 
-	if(isalpha(*p) && strchr(p,'.')==NULL)
+	firstdot=strchr(p,'.');
+	lastdot=strrchr(p,'.');
+
+	if(isalpha(*p) && firstdot==NULL)
 		return(NET_QWK);
 
 	for(tp=p;*tp;tp++) {
 		if(!isdigit(*tp) && *tp!=':' && *tp!='/' && *tp!='.')
 			break;
 	}
-	if(isdigit(*p) && *tp)
+	if(isdigit(*p) && *tp==0 && firstdot==lastdot)
 		return(NET_FIDO);
 	if(isalnum(*p))
 		return(NET_INTERNET);