r5723: Add missing part of fix for #2271. After analysing the actions of a XP
authorJeremy Allison <jra@samba.org>
Thu, 10 Mar 2005 02:00:24 +0000 (02:00 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:55:57 +0000 (10:55 -0500)
client against a Samba server. It never uses the "continue" flag, but always
does "new search, continue from this file" instead. Change our client code
to do the same (it appears that's all they test in W2K etc.).
Jeremy.
(This used to be commit 710bceee325005b8ca8e8ed04acc50bafa92b6e6)

source3/libsmb/clilist.c

index d60739cf7c4b25ffedb7816969509d5c0ad53de8..dcac17d24a2383427691f8a46e5d8dafcb9fe19c 100644 (file)
@@ -191,7 +191,7 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
                        setup = TRANSACT2_FINDFIRST;
                        SSVAL(param,0,attribute); /* attribute */
                        SSVAL(param,2,max_matches); /* max count */
-                       SSVAL(param,4,4+2);     /* resume required + close on end */
+                       SSVAL(param,4,(FLAG_TRANS2_FIND_REQUIRE_RESUME|FLAG_TRANS2_FIND_CLOSE_IF_END)); /* resume required + close on end */
                        SSVAL(param,6,info_level); 
                        SIVAL(param,8,0);
                        p = param+12;
@@ -203,7 +203,9 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
                        SSVAL(param,2,max_matches); /* max count */
                        SSVAL(param,4,info_level); 
                        SIVAL(param,6,0); /* ff_resume_key */
-                       SSVAL(param,10,8+4+2);  /* continue + resume required + close on end */
+                       /* NB. *DON'T* use continue here. If you do it seems that W2K and bretheren
+                          can miss filenames. Use last filename continue instead. JRA */
+                       SSVAL(param,4,(FLAG_TRANS2_FIND_REQUIRE_RESUME|FLAG_TRANS2_FIND_CLOSE_IF_END)); /* resume required + close on end */
                        p = param+12;
                        p += clistr_push(cli, param+12, mask, sizeof(param)-12, 
                                         STR_TERMINATE);