r588: Some fixes from coolo ...
authorRichard Sharpe <sharpe@samba.org>
Sat, 8 May 2004 20:15:52 +0000 (20:15 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:51:30 +0000 (10:51 -0500)
I think that the ECONNREFUSED should probably be ENOENT.
(This used to be commit faa8cc18df51c4406815b68caba5ed5b8d43ba18)

source3/libsmb/clirap.c
source3/libsmb/libsmbclient.c

index f8204e05d68d579f01249bd183beea19b7ac6bcc..8cc5d8bf9016e4c31227f863381329820f55824f 100644 (file)
@@ -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);
 }
 
index f08d9440f968ae38459aeaeb8df62f447ddf3343..417b5ba8d4d4c279791da1081fc8e8fd3a36eb05 100644 (file)
@@ -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);