1
0
mirror of https://github.com/samba-team/samba.git synced 2025-06-22 07:17:05 +03:00

618 Commits

Author SHA1 Message Date
Volker Lendecke
db93c1b98d r20740: Get rid of some if-statements 2007-10-10 12:17:07 -05:00
Jeremy Allison
89f03a8db4 r20721: Fix the search unix_convert error returns. Only open
to go...
Jeremy.
2007-10-10 12:17:06 -05:00
Jeremy Allison
c5be0082ef r20720: Fix the chkpath problem, still looking at findfirst.
Jeremy.
2007-10-10 12:17:05 -05:00
Jeremy Allison
f4474edf6a r20718: Sync up the filename path parsing changes from SAMBA_3_0_24.
The only difference between the two trees now w.r.t file
serving are the changes to smbd/open.c in this branch I need
to review.
Jeremy.
2007-10-10 12:17:04 -05:00
Jeremy Allison
06e20c2878 r20635: Add placeholder to ensure we don't go into the
wcard unlink if bad_path was set. The error
returned here is almost certainly incorrect
and will need testing properly with smbtorture,
but I don't want to forget about this path
(yes Volker I know this is currently incorrect :-).
Jeremy.
2007-10-10 12:17:00 -05:00
Volker Lendecke
f146a85e74 r20634: A *LOT* more work is necessary before touching notify remotely starts to make
sense. Until then, remove it from the tree to keep the diff between 3_0_24 and
3_0 small.

Volker
2007-10-10 12:17:00 -05:00
Volker Lendecke
58b8a242a7 r20632: The extended RAW-SAMBA3BADPATH test led me to some wrong assumptions, in
particular the NT_STATUS_INVALID_PARAMETER thing was badly wrong. Remove the
changes based on it. Using gentest is much more effective in this respect, but
it will take a while to figure out the wildcard error handling of W2k3.

Volker
2007-10-10 12:17:00 -05:00
Volker Lendecke
5e1da363bb r20628: Looks bigger than it is. This is just re-indenting the if (dirname) that we've
taken care of above.

Volker
2007-10-10 12:16:59 -05:00
Volker Lendecke
614651c6a7 r20627: orig_name is not needed anymore, and slightly simplify logic by doing early
returns.

Volker
2007-10-10 12:16:59 -05:00
Volker Lendecke
1798987128 r20619: bad_path is handled somewhere else, so can_delete does not need it anymore 2007-10-10 12:16:59 -05:00
Volker Lendecke
b1edc3d053 r20618: Fix a bug in bad_path handling that also exists in 3.0.23: For reply_unlink
under Linux we returned NT_STATUS_NOT_A_DIRECTORY. This is because in the
bad_path==True condition lstat(2) returns ENOTDIR and not ENOENT.

Not sure if we want to necessarily replicate the INVALID_PARAMETER here, but
this is what W2k3 does.

Jeremy, I tried to call you, but you were not around. So I'll leave it up to
you to merge this.

Volker
2007-10-10 12:16:59 -05:00
Volker Lendecke
c86fbdf8cc r20617: Do not notify if the delete failed 2007-10-10 12:16:59 -05:00
Volker Lendecke
794d5d38f1 r20612: A checkin I've wanted to do for ages: For bad_path==False set_bad_path_error
is equivalent to UNIX_ERROR. Expand the last reference. Lets see if I can kill
that as well :-)

Volker
2007-10-10 12:16:58 -05:00
Volker Lendecke
358673c366 r20611: All but one callers to set_bad_path_error have had the bad_path==True argument
being handled further up.

Volker
2007-10-10 12:16:58 -05:00
Volker Lendecke
cea9a01434 r20607: Next micro-step for reply_setatr 2007-10-10 12:16:58 -05:00
Volker Lendecke
c16775486b r20606: bad_path == True has been covered further up in reply_setatr.
I'm checking in micro-steps to make them independently checkable. This code
just very severely needs cleanup, but I don't want to break anything. So, be
patient with me, please :-)

Volker
2007-10-10 12:16:57 -05:00
Volker Lendecke
f19db8f33e r20605: Simplify logic in reply_setatr slightly 2007-10-10 12:16:57 -05:00
Volker Lendecke
e4a2e63272 r20597: Survive some of the notify mask tests. 2007-10-10 12:16:57 -05:00
Volker Lendecke
244f96388c r20589: Re-add lost bad_path handling, sorry. 2007-10-10 12:16:56 -05:00
Jeremy Allison
27dc5bebda r20558: Refactor rmdir_internals to use early termination rather
than lots of indented code. Change recursive_rmdir()
to return the smbd standards of True on success, False
on fail (it was doing the reverse, which was very confusing).
Jeremy.
2007-10-10 12:16:56 -05:00
Volker Lendecke
5ebdf02ba1 r20544: Change copy_file() to return NTSTATUS. This is in preparation of turning
close_file() to NTSTATUS as well.

I'm not sure I got all the error codes right, but as I've never come across a
smb_copy() call in all my Samba work, I'm leaving it at that. If I'm
absolutely bored, I will write a thorough torture test.

As far as I can see, Samba4 even does not have a libcli implementation for
it...  :-)

Volker
2007-10-10 12:16:56 -05:00
Jeremy Allison
dcc7bca1ad r20532: From Volker...
"smbcli_setattr("") always returns ACCESS_DENIED, test extension to follow.

Merge to 3.0.24?"

Yep (with slight optimization).

Jeremy.
2007-10-10 12:16:55 -05:00
Volker Lendecke
f2563ac98f r20507: smbcli_setattr("") always returns ACCESS_DENIED, test extension to follow.
Merge to 3.0.24?

Volker
2007-10-10 12:16:54 -05:00
Volker Lendecke
84e6889632 r20496: Some changes to make Samba3 the RAW-OPEN test. Checking in to both 3_0 and
3_0_24 because I was explicitly asked to, although this needs close
review. Jeremy, I'm sure you will check this thoroughly :-)

In reply_open_and_X the separate "size" variable kills the calculation of the
SPARSE flag returned to the client in the attrib field. In getpathinfo we do
it correctly, and RAW-OPEN (correctly) complains about the difference.

Add the "set the write time" to mknew and create.

For trans2open we were missing the "ofun == 0" ->
NT_STATUS_OBJECT_NAME_COLLISION case, and we dropped the status returned in
favor of ACCESS_DENIED once too many.

Last change is a fix to trans2open: We were returning the attributes given by
the client, not the attributes of the new file.

Volker
2007-10-10 12:16:53 -05:00
Volker Lendecke
471c6e6a21 r20482: Make us survive and activate RAW-CLOSE 2007-10-10 12:16:52 -05:00
Volker Lendecke
e51b764870 r20479: Both remaining calls of can_delete called it with check_is_at_open==False,
remove that parameter.

Volker
2007-10-10 12:16:51 -05:00
Volker Lendecke
4f0f917b34 r20478: Make us survive & activate RAW-UNLINK 2007-10-10 12:16:51 -05:00
Volker Lendecke
d289037fdb r20470: Jeremy, another one to check:
The only error path of can_delete() that we're interested in ntcreate&x is the
one of can_delete_file_in_directory(), so call that directly.

The only other one where we might get a NT_STATUS_ACCESS_DENIED is from the
lstat in can_delete, but this is covered later in the open_directory and
open_file_ntcreate calls. open_directory does a stat() in the open case which
also covers the (potential) symlink, and open_file_ntcreate does the open(2)
itself, so this should also work.

This makes can_delete() static to reply.c.

Volker
2007-10-10 12:16:51 -05:00
Volker Lendecke
2becbb9e5f r20454: Get rid of a bogus variable that was only assigned but never read.
Jeremy, please check this.

Thanks,

Volker
2007-10-10 12:16:51 -05:00
Volker Lendecke
0e953884a1 r20451: Survive the first of the filter-tests (mkdir).
Add lots of TODOs :-)

Volker
2007-10-10 12:16:50 -05:00
Volker Lendecke
ce0ad24988 r20442: Slight rewrite of the change notify infrastructure. This now survives the
first of the raw-notify subtests, the one-level test_notify_dir without any
flags around yet.

The tricky part was getting the data structures right, I hope the next tests
don't let that fall over.

fsp->notify is now by default NULL, meaning that nobody has issued a
changenotify call. This means nobody is interested in changes for this
directory.

If that has happened, notify_change_buf collects the changes if no current
request is outstanding, and it collects the requests if no change has happened
since the last request.

Happy New Year, somewhere on this planet it's already 2007 :-)

Volker

P.S: Jeremy, there's a question for you in smbd/files.c line 367.
2007-10-10 12:16:50 -05:00
Volker Lendecke
c813f71d00 r20433: Work in progress: Survive more of RAW-NOTIFY.
call_nt_transact_notify_change() is now sync if there are changes around.

A notify_message does a direct reply from within the message, so
process_pending_change_notify_queue is not needed anymore for samba-generated
events. Next step is to restructure the kernel-mechanisms to generate
messages.

Volker
2007-10-10 12:16:49 -05:00
Volker Lendecke
bcf5c751cb r20394: This is a *VERY* early start of my work on notify.
Checking in because Jeremy was bugging me. Potentially this becomes quite
intrusive, I'm not sure if I should open a temporary branch for this.

Jeremy, Jerry, do you think 3_0 is the right place for this?

Volker
2007-10-10 12:16:46 -05:00
Volker Lendecke
48798b5e57 r20393: Debug level 1 is a bit excessive here 2007-10-10 12:16:46 -05:00
Jeremy Allison
4183c1b49f r20371: In renames (via SMBmv) both src and dest can contain
wcards. I had forgotten this and had refused to allow
dest to contain wcards. We now pass all the normal
Samba4 smbtorture RAW-RENAME tests.
Jeremy
2007-10-10 12:16:45 -05:00
Jeremy Allison
633f02fb86 r20370: Now we've gone to the trouble of getting an NT status
from open_file_ntcreate make sure we return it on rename
error.
Jeremy.
2007-10-10 12:16:44 -05:00
Volker Lendecke
6dd0886b49 r20339: Make mkdir_internal static to open.c 2007-10-10 12:16:42 -05:00
Volker Lendecke
472fb11f49 r20338: Restructure open_directory a bit. This gets rid of a race condition regarding
error messages: We relied upon a stat that a directory did not exist to later
on then do the mkdir or not. This does the mkdir directly and copes with a
potential error.

The second one is more important: It's possible with Samba 3 to do a
ntcreate&x with NTCREATEX_OPTIONS_DIRECTORY and we happily do a NT_STATUS_OK.

Also move up the use_nt_status() logic a bit. I think this does not belong
into the core routines, the smb server as such should take care of it.

Jeremy, do you think this should go to 3.0.24?

I'll update samba4torture when the build farm has picked up this checkin.

Volker
2007-10-10 12:16:42 -05:00
Volker Lendecke
88ab54b3b7 r20264: Two lines above this we just checked if (fsp->is_directory) ... 2007-10-10 12:16:37 -05:00
Volker Lendecke
ddae494fbe r20253: Reduce some code duplication, make reply_mkdir go through the same code paths
ncreate does. This is a bit slower (about 10-20%), because it goes touches the
share mode db, but I think not having to call change_owner_to_parent and
friends in fewer places outweighs this. And, mkdir is not the way current
Windows boxes create directories, they do it via the ncreate call.

Volker
2007-10-10 12:16:37 -05:00
James Peach
d6382092e7 r20237: Replace exit_server with exit_server_cleanly where appropriate. All
send_smb failures should be clean exits. All times when we exit as
a matter of policy should also be clean exits.
2007-10-10 12:16:34 -05:00
Volker Lendecke
9d8b48c0ef r20229: Avoid a silly function call in mkdir_internal. None of the callers look at
errno, all go straight to ERROR_NT(status).

Volker
2007-10-10 12:16:34 -05:00
Jeremy Allison
ece00b70a4 r18787: Fix the strlen_m and strlen_m_term code by merging
in (and using elsewhere) next_codepoint from Samba4.
Jerry please test.
Jeremy.
2007-10-10 12:00:57 -05:00
Jeremy Allison
89b83237b0 r17220: If we're going to fail a write with an errno, make
sure we return -1.
Jeremy.
2007-10-10 11:38:19 -05:00
Jeremy Allison
0451a170c9 r17108: Make the default timeout parameter for lock waiting
be lp_lock_spin(). lock spin count is no longer
used. I'll update the man pages.
Jeremy.
2007-10-10 11:38:12 -05:00
Jeremy Allison
98d8d9399b r17107: Make the 200 ms timeout value tunable in local.h...
Might need to be a parameter ?
Jeremy.
2007-10-10 11:38:12 -05:00
Jeremy Allison
b5aaff6659 r17106: Match Windows timing values on locks.
Jeremy.
2007-10-10 11:38:12 -05:00
Jeremy Allison
b81d6d1ae9 r17105: Fix the race Volker found - we had a non-locked
region between detecting a pending lock was needed
and when we added the blocking lock record. Make
sure that we hold the lock over all this period.
Removed the old code for doing blocking locks on
SMB requests that never block (the old SMBlock
and friends).
Discovered something interesting about the strange
NT_STATUS_FILE_LOCK_CONFLICT return. If we asked
for a lock with zero timeout, and we got an error
of NT_STATUS_FILE_LOCK_CONFLICT, treat it as though
it was a blocking lock with a timeout of 150 - 300ms.
This only happens when timeout is sent as zero and
can be seen quite clearly in ethereal. This is the
real replacement for old do_lock_spin() code.
Re-worked the blocking lock select timeout to correctly
use milliseconds instead of the old second level
resolution (far too coarse for this work).
Jeremy.
2007-10-10 11:38:12 -05:00
Jeremy Allison
f1a9cf075b r17098: Samba3 now cleanly passes Samba4 RAW-LOCK torture
test. Phew - that was painful :-). But what it means
is that we now implement lock cancels and I can add
lock cancels into POSIX lock handling which will fix
the fast/slow system call issue with cifsfs !
Jeremy.
2007-10-10 11:38:11 -05:00
Jeremy Allison
9dafb7f48c r16945: Sync trunk -> 3.0 for 3.0.24 code. Still need
to do the upper layer directories but this is what
everyone is waiting for....

Jeremy.
2007-10-10 11:19:14 -05:00