Age | Commit message (Collapse) | Author | Files | Lines |
|
(This used to be commit f64ac9d9068901862290f7b25874156d6f0d4d73)
|
|
(This used to be commit 719bc2f130393a55058f5c45ca6fbd30a78de2dc)
|
|
handling in Samba. This was needed due to several limitations and
races in the previous code - as a side effect the new code is much
cleaner :)
in summary:
- changed sys_select() to avoid a signal/select race condition. It is a
rare race but once we have signals doing notification and oplocks it
is important.
- changed our main processing loop to take advantage of the new
sys_select semantics
- split the notify code into implementaion dependent and general
parts. Added the following structure that defines an implementation:
struct cnotify_fns {
void * (*register_notify)(connection_struct *conn, char *path, uint32 flags);
BOOL (*check_notify)(connection_struct *conn, uint16 vuid, char *path, uint32 flags, void *data, time_t t);
void (*remove_notify)(void *data);
};
then I wrote two implementations, one using hash/poll (like our old
code) and the other using the new Linux kernel change notify. It
should be easy to add other change notify implementations by creating
a sructure of the above type.
- fixed a bug in change notify where we were returning the wrong error
code.
- rewrote the core change notify code to be much simpler
- moved to real-time signals for leases and change notify
Amazingly, it all seems to work. I was very surprised!
(This used to be commit 44766c39e0027c762bee8b33b12c621c109a3267)
|
|
sigprocmask()
(This used to be commit abf06fa90ba49f6a1ec5458d056f8b8cf20b6512)
|
|
I had to modify sys_select() to not loop on EINTR. I added a wrapper
called sys_select_intr() which gives the old behaviour.
(This used to be commit b28cc4163bc2faaa80c5782fc02c8f03c410cdeb)
|
|
modular form. In this pass I added oplock_irix.c and added a "struct
kernel_oplocks" that describes a kernel oplock implementation.
(This used to be commit b5ceab810292602ea9a81696c20a781c16b706c2)
|
|
sincerely hope :-). Thanks elrond !
Jeremy.
(This used to be commit 0d59e8c6bf49e06f11b386f9d805474771365f52)
|
|
and if you have unix realname=yes, you get the gecos name when locking the
station.
J.F.
(This used to be commit b5ad24ae0b15643df5832e2369fb4e43c98a1359)
|
|
(This used to be commit 70dcc791b45ac64fc536ef449e4e6b53b2b68fd4)
|
|
(This used to be commit 6de329f6bf9c26e132869cf43d4976d4881e285c)
|
|
Added patches for random -> sys_random.
Added set_effective_xxx patches for AFS code.
Memory allocation changes in spoolss code.
Jeremy.
(This used to be commit c2099cfb033c2cdb6035f4f7f50ce21b98e1584d)
|
|
to make the acl functionality regular (we can have smbd/posix_acls etc).
Jeremy.
(This used to be commit 9adb9399df27c5c1d7fec04f80d49e5476200738)
|
|
Domain SID is saved in secrets.tdb upon joining domain.
Added "Authenticated Users" and "SYSTEM" well-known SIDs (under
NT Authority).
(This used to be commit 7710b4f48d3e8532df5e37f99a779758f750efdb)
|
|
belong to us
(This used to be commit 2740a80e30cbf512d51ba76684905a904c2fddf7)
|
|
this needed some fixes in tdb_unpack(). Tim, you'll need to update
(This used to be commit 9422719ab4c35e4ce3199b62dd632433bf391283)
|
|
(This used to be commit 9805e17cd0ce427c329a8b5a8318d5f75227e283)
|
|
(This used to be commit f46c4fe876a0cabe7044ca30c17e6c217d618635)
|
|
(This used to be commit 06cd46b0ec10b32af54edd8256d2fdbec45e1371)
|
|
warning.
Jeremy.
(This used to be commit 36629d2a934fe61e68f87c5d2faf67158b365ae6)
|
|
characters to one or more DOS codepage characters.
Jeremy.
(This used to be commit eefbfb5e16fcf40f335edc840a49f837f6b64111)
|
|
(This used to be commit 6cbb826b154e61085fd651116caf472d4d438c1d)
|
|
libsmb/clilist.c:
rpc_server/srv_spoolss_nt.c:
smbd/trans2.c: Changed unistr_to_ascii to unistr_to_dos - do codepage conversion.
msdfs/msdfs.c: Removed stub unistr_to_dos.
libsmb/pwd_cache.c: Removed obfuscation functions as they don't do anything and
don't add any security.
Jeremy.
(This used to be commit 1ed146467e764e6a81d8f78cd58fb5765ebf5d21)
|
|
- finished ntdom -> winbind rename in head
(This used to be commit ada483cb56453afc6df4ec4be18bfe5e943c7150)
|
|
this adds "#define OLD_NTDOMAIN 1" in lots of places. Don't panic -
this isn't permanent, it should go after another few merge steps have
been done
(This used to be commit 92109d7b3c06f240452d39f669ecb8c9c86ab610)
|
|
Jeremy.
(This used to be commit eb281324fa409296bb3f29c9b7c59b2337fadc0d)
|
|
we needed to accept usernames of the form DOMAIN/user, which means we
needed to pass the domain to a getpwnam() like routine in certain
critical spots.
What I'd rather do is get rid of "char *user" everywhere and use the
new userdom_struct, but that will have to wait a few days.
(This used to be commit 8b7a10febead8be182e7d5b1d68259e31530b69c)
|
|
userdom_struct. As the name implies this also contains a domain
(unused at the moment).
This will be important shortly, as operation in appliance mode needs
the domain to be always carried with the username.
(This used to be commit ee8546342d5be90e730372b985710d764564b124)
|
|
errors etc.) into locking/posix.c, where it is needed. fcntl_lock in lib/util.c
is now very small and clean.
Added (*lock) op to vfs layer.
Jeremy.
(This used to be commit 46092ee1410faa4e3c143d80a960a8adaa19d7fc)
|
|
of doing a system call every time we want to just get our pid.
Jeremy.
(This used to be commit 148628b616b5c29ba6340d65fc3ddbcabba6e67a)
|
|
- removed the VTP hook in smbd
(This used to be commit 09355fcd50e6c9c0c81e5f70ab9b7ff88aa897bf)
|
|
(This used to be commit 95f6c0f84ab9f3649ddf53ac2ca5261448af2383)
|
|
(This used to be commit e23f43e7d3d2a068f527baa63a31f7fe4e60e79d)
|
|
call to ms_fnmatch(). This also removes all the Win9X semantics stuff
and a bunch of other associated cruft.
- moved the stat cache code into statcache.c
- fixed the uint16 alignment requirements of ascii_to_unistr() and
unistr_to_ascii()
- trans2 SMB_FIND_FILE_BOTH_DIRECTORY_INFO returns the short name as
unicode always (at least thats what NT4 does)
- fixed some errors in the in-memory tdb code. Still ugly, but doesn't
crash as much
(This used to be commit 03e9cea004bbba72161a5323cf3b4556c94aed8e)
|
|
We finally have a perfect emulation of Microsoft wildcard
matching. The routine ms_fnmatch() does wildcard matching with all MS
wildcards (including the unicode wildcards), and masktest against a
NT4 workstation with hundreds of thousands of random exmaples has not
found a single error.
amazingly it is only about 60 lines of code, but it has taken us years
to get it right. I didn't sleep much last night :)
(This used to be commit cc9e007cdfdd300189f89e2a55e4234e47fa842d)
|
|
(This used to be commit d7cd7c88fdabb01d9e40ae8a657737907a21ac37)
|
|
fsp->open is no longer needed (if an fsp pointer is valid, then it's open :-).
NB for Luke, this patch also did not apply to TNG. TNG is not yet
identical w.r.t file serving with HEAD. This makes it impossible for
me to help maintain TNG. Please fix asap.
lib/substitute.c: Removed unused variable (pidstr).
Jeremy.
(This used to be commit 389b700a26e8a308a0dff6fc038c38068aa0119a)
|
|
(This used to be commit 8c726b9764bac0bc95cf9877e172c9e1262e576d)
|
|
error fd)
(This used to be commit defbedd198f02f7bb9af70436f5a25ab754b5fb6)
|
|
substituted in the loadparm code and thus leaving lpq with no printer
(This used to be commit b7c7a4d564d36885aa7c3efb2a87caec470df7fe)
|
|
(This used to be commit 1c6322473afcf9065fa25777d1b0627f133af3f6)
|
|
(This used to be commit 9416b58b9c2ff898cdae2cb81ab1e150ef9f0e89)
|
|
new open mechanism Andrew & I discussed.
config.sub:
configure: Included the QNX patch.
include/vfs.h:
smbd/vfs-wrap.c:
smbd/vfs.c: Added ftruncate vfs call (needed).
Note that we will also need locking calls in the vfs (to be added).
lib/util_unistr.c:
nmbd/nmbd_processlogon.c: Fix for NT domain logons causing nmbd to core dump.
Also fix for sidsize DOS bug.
locking/locking.c: Check value of ret before using it for memdup.
printing/printing.c: Convert print_fsp_open to return an allocated fsp.
rpc_server/srv_lsa.c: Fix for NT domain logons.
I have removed all use of lp_share_modes() from the code (although I
left the parameter in the table for backwards compatibility). It no longer makes
sense for this to exist.
smbd/close.c: Removed lp_share_modes().
smbd/fileio.c: Fixed parameters to unlock_share_entry call in panic code.
smbd/files.c: Correctly set the unix_ERR_code to ERRnofids on fsp allocation fail.
smbd/nttrans.c:
smbd/reply.c:
smbd/trans2.c: Changed all occurrences of open_file_shared/open_directory/
open_file_stat to return an fsp from the call.
smbd/open.c: Changed all occurrences of open_file_shared/open_directory/
open_file_stat to return an fsp from the call.
In addition I have fixed a long standing race condition in the deny mode
processing w.r.t. two smbd's creating a file. Andrew, please note that
your original idea of using open with O_EXCL in this case would not work
(I went over the races very carefully) and so we must re-check deny modes
*after* the open() call returns. This is because there is a race between
the open with O_EXCL and the lock of the share mode entry. Imagine the
case where the first smbd does the open with O_EXCL and a deny mode of DENY_ALL,
but is pre-empted before it locks the share modes and creates the deny
mode entry for DENY_ALL. A second smbd could then come in with O_RDONLY
and a deny mode of DENY_NONE and the two opens would be allowed.
The *only* way to fix this race is to lock the share modes after the
open and then do the deny mode checks *after* this lock in the case
where the file did not originally exist.
This code will need extensive testing but seems to initially work.
Jeremy.
(This used to be commit ab0ecc39d688f16b9692fe90b991f0b89287070a)
|
|
spoolssd in tng)
(This used to be commit e2eacdd74c369fbbcd118148149321e36f3d0010)
|
|
- cleaned up the standard_sub_*() calls a lot
(This used to be commit 2c2d95d77d3667eaa9252506a82b9054b0d0e01c)
|
|
(This used to be commit e505a6ddf3df37ca485cae117c53fa96d736f897)
|
|
(This used to be commit f137648504362479143d50477fa38ebf7147968b)
|
|
(This used to be commit 030ec8e71f9ef533b5d6aece01e67d357e23b7d2)
|
|
added a new utility fn file_lines_slashcont() which is used to handle
files that treat a \ followed by a newline as a blank
(This used to be commit 384ecd9d66ccd31ee85000c0ca55d413d8f2cc53)
|
|
to support some of this I added the following functions in util_file.c
file_lines_pload : load lines from a pipe
file_pload : load a pipe into memory
(This used to be commit a09470817c5b21dba42f9ef4ce5e8b768a254c0b)
|
|
this is like fprintf() but operates on a file descriptor
combined with file_load_lines() this makes it really easy to get rid
of the use of fopen() in Samba.
(This used to be commit bd5cd502bf52164b95d7bfc026189e04988171db)
|