From faa8cc18df51c4406815b68caba5ed5b8d43ba18 Mon Sep 17 00:00:00 2001 From: Richard Sharpe Date: Sat, 8 May 2004 20:15:52 +0000 Subject: [PATCH] r588: Some fixes from coolo ... I think that the ECONNREFUSED should probably be ENOENT. --- source/libsmb/clirap.c | 15 ++++++++++++++- source/libsmb/libsmbclient.c | 5 +---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/source/libsmb/clirap.c b/source/libsmb/clirap.c index f8204e05d68..8cc5d8bf901 100644 --- a/source/libsmb/clirap.c +++ b/source/libsmb/clirap.c @@ -217,6 +217,8 @@ BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype, int uLevel = 1; int count = -1; + errno = 0; /* reset */ + /* send a SMBtrans command with api NetServerEnum */ p = param; SSVAL(p,0,0x68); /* api number */ @@ -269,7 +271,18 @@ BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype, SAFE_FREE(rparam); SAFE_FREE(rdata); - + + if (count < 0) { + errno = cli_errno(cli); + } else { + if (!count) { + /* this is a very special case, when the domain master for the + work group isn't part of the work group itself, there is something + wild going on */ + errno = ENOENT; + } + } + return(count > 0); } diff --git a/source/libsmb/libsmbclient.c b/source/libsmb/libsmbclient.c index f08d9440f96..417b5ba8d4d 100644 --- a/source/libsmb/libsmbclient.c +++ b/source/libsmb/libsmbclient.c @@ -1939,7 +1939,6 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname) SAFE_FREE(dir->fname); SAFE_FREE(dir); } - errno = cli_errno(&srv->cli); return NULL; @@ -2032,7 +2031,6 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname) SAFE_FREE(dir->fname); SAFE_FREE(dir); } - errno = cli_errno(&srv->cli); return NULL; @@ -2106,7 +2104,6 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname) SAFE_FREE(dir->fname); SAFE_FREE(dir); } - errno = cli_errno(&srv->cli); return NULL; } @@ -2150,7 +2147,7 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname) } else { - errno = ENODEV; /* Neither the workgroup nor server exists */ + errno = ECONNREFUSED; /* Neither the workgroup nor server exists */ if (dir) { SAFE_FREE(dir->fname); SAFE_FREE(dir); -- 2.11.4.GIT