diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-01-12 00:20:10 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-01-12 00:20:10 +0000 |
commit | 221fda2454396fa6c3d2b820d81c56b4cdc48f13 (patch) | |
tree | 67c3e5d0e30e10f96d4dbf64a8e8bc3d75ade357 /source3/smbd/server.c | |
parent | 385e40c5dc079e04ef89fb7c158a01c1d1a77c58 (diff) | |
download | samba-221fda2454396fa6c3d2b820d81c56b4cdc48f13.tar.gz samba-221fda2454396fa6c3d2b820d81c56b4cdc48f13.tar.bz2 samba-221fda2454396fa6c3d2b820d81c56b4cdc48f13.zip |
*** empty log message ***
(This used to be commit 7b031586ca33a381eb0e27f3557f43c2550df5f8)
Diffstat (limited to 'source3/smbd/server.c')
-rw-r--r-- | source3/smbd/server.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c index a83e865f9e..3c40e9800f 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1466,6 +1466,8 @@ void close_file(int fnum, BOOL normal_close) uint32 inode = fs_p->fd_ptr->inode; int token; + Files[fnum].reserved = False; + #if USE_READ_PREDICTION invalidate_read_prediction(fs_p->fd_ptr->fd); #endif @@ -3671,21 +3673,23 @@ int find_free_file(void ) if (first_file == 0) first_file = 1; } - if (first_file == MAX_OPEN_FILES) - first_file = 0; + if (first_file >= MAX_OPEN_FILES) + first_file = 1; for (i=first_file;i<MAX_OPEN_FILES;i++) - if (!Files[i].open) { + if (!Files[i].open && !Files[i].reserved) { memset(&Files[i], 0, sizeof(Files[i])); - first_file++; + first_file = i+1; + Files[i].reserved = True; return(i); } /* returning a file handle of 0 is a bad idea - so we start at 1 */ for (i=1;i<first_file;i++) - if (!Files[i].open) { + if (!Files[i].open && !Files[i].reserved) { memset(&Files[i], 0, sizeof(Files[i])); - first_file++; + first_file = i+1; + Files[i].reserved = True; return(i); } |