Updated to version 2.20

If the Examine/ExNext/ExAll functions need to restart directory scanning, the cache maintained by the smbfs directory reader is now always cleared.

Removed the directory cache expiration time feature, along with the just-introduced CACHEEXPIRES option. The context in which the expiration time was used did not justify it as a feature. It looked more like a bug...

Rewrote the smba_readdir() function to perform its only task in a much simpler manner. It now either fills the directory cache or retrieves the cache entries to be delivered to the caller, resuming the retrieval at a predefined position if required.
This commit is contained in:
Olaf Barthel
2019-02-28 11:04:35 +01:00
parent d8adddb851
commit 561ca54b8f
12 changed files with 488 additions and 542 deletions
+1 -1
View File
@@ -72,7 +72,7 @@ int smb_proc_mkdir(struct smb_server *server, const char *path, const int len, i
int smb_proc_rmdir(struct smb_server *server, const char *path, const int len, int * error_ptr);
int smb_proc_unlink(struct smb_server *server, const char *path, const int len, int * error_ptr);
int smb_proc_trunc(struct smb_server *server, struct smb_dirent *entry, dword length, int * error_ptr);
int smb_proc_readdir(struct smb_server *server, const char *path, int fpos, dircache_t * dircache, int * end_of_search_ptr, int * error_ptr);
int smb_proc_readdir(struct smb_server *server, const char *path, dircache_t * dircache, int * end_of_search_ptr, int * error_ptr);
int smb_proc_getattr_core(struct smb_server *server, const char *path, int len, struct smb_dirent *entry, int * error_ptr);
int smb_proc_getattrE(struct smb_server *server, struct smb_dirent *entry, int * error_ptr);
int smb_query_path_information(struct smb_server *server, const char *path, int len, int fid, struct smb_dirent *entry, int * error_ptr);
-3
View File
@@ -88,9 +88,6 @@ struct smb_server
/* olsen (2018-06-11): Prefer SMB core protocol commands over NT1 commands. */
int prefer_core_protocol;
/* olsen (2019-02-23): How many seconds will the directory cache remain valid? */
int cache_expires;
};
#endif