summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/includes.h4
-rw-r--r--source3/smbd/ipc.c10
2 files changed, 12 insertions, 2 deletions
diff --git a/source3/include/includes.h b/source3/include/includes.h
index 35112ff70b..03c2d461e6 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -1105,6 +1105,10 @@ extern char *sys_errlist[];
#define S_ISDIR(x) ((S_IFDIR & x)!=0)
#endif
+#if !defined(S_ISLNK) && defined(S_IFLNK)
+#define S_ISLNK(x) ((S_IFLNK & x)!=0)
+#endif
+
#ifdef UFC_CRYPT
#define crypt ufc_crypt
#endif
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c
index 89dd9f511b..d6d2f289aa 100644
--- a/source3/smbd/ipc.c
+++ b/source3/smbd/ipc.c
@@ -982,11 +982,17 @@ static BOOL api_RNetServerEnum(int cnum, uint16 vuid, char *param, char *data,
int i,missed;
fstring domain;
BOOL domain_request;
- BOOL local_request = servertype & SV_TYPE_LOCAL_LIST_ONLY;
+ BOOL local_request;
- if (servertype == SV_TYPE_ALL) servertype &= ~SV_TYPE_DOMAIN_ENUM;
+ /* If someone sets all the bits they don't really mean to set
+ DOMAIN_ENUM and LOCAL_LIST_ONLY, they just want all the
+ known servers. */
+
+ if (servertype == SV_TYPE_ALL)
+ servertype &= ~(SV_TYPE_DOMAIN_ENUM|SV_TYPE_LOCAL_LIST_ONLY);
domain_request = ((servertype & SV_TYPE_DOMAIN_ENUM) != 0);
+ local_request = ((servertype & SV_TYPE_LOCAL_LIST_ONLY) != 0);
p += 8;