From f61dae7635971bcbae4d191219ccb5365984d059 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 15 Jul 2019 15:57:48 -0700 Subject: [PATCH] s3: smbd: Move the strange OS/2 directory key == -1 close semantics to the caller. This will allow us to change dptr_closecnum() to close outstanding fsp handles for SMB1 later. Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- source3/smbd/dir.c | 11 ----------- source3/smbd/trans2.c | 10 +++++++++- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 167a7075ee8..03411cbe002 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -219,17 +219,6 @@ void dptr_close(struct smbd_server_connection *sconn, int *key) if(*key == INVALID_DPTR_KEY) return; - /* OS/2 seems to use -1 to indicate "close all directories" */ - if (*key == -1) { - struct dptr_struct *next; - for(dptr = sconn->searches.dirptrs; dptr; dptr = next) { - next = dptr->next; - dptr_close_internal(dptr); - } - *key = INVALID_DPTR_KEY; - return; - } - dptr = dptr_get(sconn, *key); if (!dptr) { diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 5b99240e9e8..c75f8e277d5 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -9647,7 +9647,15 @@ void reply_findclose(struct smb_request *req) DEBUG(3,("reply_findclose, dptr_num = %d\n", dptr_num)); - dptr_close(sconn, &dptr_num); + /* + * OS/2 seems to use -1 to indicate "close all directories" + * This has to mean on this specific connection struct. + */ + if (dptr_num == -1) { + dptr_closecnum(req->conn); + } else { + dptr_close(sconn, &dptr_num); + } reply_outbuf(req, 0, 0); -- 2.47.3