Test was reversed for ERRmoredata in cli_read.
authorJeremy Allison <jra@samba.org>
Wed, 27 Nov 2002 19:11:46 +0000 (19:11 +0000)
committerJeremy Allison <jra@samba.org>
Wed, 27 Nov 2002 19:11:46 +0000 (19:11 +0000)
Jeremy.

source/libsmb/clireadwrite.c

index 875df11dca46387dd37557506cc0d072deea9c13..38e8aac42a5a559c4f327dc7a61cf5c01d6a0576 100644 (file)
@@ -84,6 +84,7 @@ ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_
                    errors. */
 
                 if (cli_is_error(cli)) {
+                       BOOL recoverable_error = False;
                         NTSTATUS status = NT_STATUS_OK;
                         uint8 eclass = 0;
                        uint32 ecode = 0;
@@ -93,8 +94,17 @@ ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_
                         else
                                 cli_dos_error(cli, &eclass, &ecode);
 
+                       /*
+                        * ERRDOS ERRmoredata or STATUS_MORE_ENRTIES is a
+                        * recoverable error, plus we have valid data in the
+                        * packet so don't error out here.
+                        */
+
                         if ((eclass == ERRDOS && ecode == ERRmoredata) ||
                             NT_STATUS_V(status) == NT_STATUS_V(STATUS_MORE_ENTRIES))
+                               recoverable_error = True;
+
+                       if (!recoverable_error)
                                 return -1;
                }