- struct smbd_server_connection *sconn = dptr->conn->sconn;
- DLIST_REMOVE(sconn->smb1.searches.dirptrs, dptr);
- TALLOC_FREE(dptr->dir_hnd);
- return 0;
+ if (fsp->dptr) {
+ if (fsp->fh->fd == dirfd(fsp->dptr->dir_hnd->dir)) {
+ /* The call below closes the underlying fd. */
+ fsp->fh->fd = -1;
+ }
+ dptr_close_internal(fsp->dptr);
+ fsp->dptr = NULL;
+ }