Age | Commit message (Collapse) | Author | Files | Lines |
|
When both the echo responder and the 445 socket want to send stuff to the
worker smbd, the select loop is not fair. It always chooses the smaller file
descriptor to work on. This can mean that on a busy system the echo responder
never gets around to feed its stuff to the parent.
This fix chooses the async echo responder socket when both the 445 and the echo
responder socket are readable.
Yes, it is a very hackish fix which is required *now* I think. The proper fix
would be to either assign priorities to fd's in tevent, or the from my point of
view better fix would be to make tevent kindof round-robin.
Round-robin would mean that whenever a fd has been dealt with, it is taken off
the list of interested sockets, and only if no other socket is active, all of
the ones waiting are put back. This is a bit like EPOLL_ONESHOT, which I would
like to use for this in the epoll case. Although, I need to do some research if
maybe epoll already guarantees round-robin, I did not find anything in the docs
yet.
Volker
|
|
|
|
As per Nadia's request and abartlet's suggestion the test now also sets the
"dSHeuristics" attribute properly to be able to perform the tests also against
Windows without further configuration.
The code has the neat feature that it undoes the change and resets the
behaviour as it was before.
|
|
which LDB connection should be used
|
|
'distinguishedName' attribute wasn't set correctly
(On add operations the server does completely ignore it and uses the "header"
DN)
|
|
|
|
|
|
(In SAMBA LDB modules)
|
|
|
|
|
|
While there also cleanup the code a bit.
Signed-off-by: Günther Deschner <gd@samba.org>
|
|
Guenther
|
|
This way we ensure that LIBNET call will be issued against
the DC we are testing against
|
|
Caller of this function may not need group RID and
in such case it passes NULL for rid parameter
|
|
and create rpc connections to SAMR and LSA pipes.
This function should be used in cases where we need
'deterministic' connection to the DC we are testing against.
The problem is that most of the test follow the pattern:
1. Connect to server supplied on command line
2. Create user/group through connection in 1.
3. Use 'fresh' libnet_context to query/alter the object in
step 2.
In singe-DC environment this work well. But in multiple-DC
environment libnet may connect to another DC (step 3), not
the one we use in step 1 and 2. This leads to false error -
object created in step 2 is not found on DC we are querying
in step 3.
|
|
'name' var is changed during the test execution and should
contain samAccountName for the user, while test_user_cleanup()
expects account RDN to be passed
|
|
In case group already exists, we should get NT_STATUS_GROUP_EXISTS.
|
|
We already have common implementation for create/delete
group in libnet/utils.c
|
|
We already have a nice common test_domain_open()
function in libnet/util.c
|
|
implementation instead of not-so-informative test_cleanup()
|
|
We always call this function with user's account RDN
while samr_LookupNames() searches for samAccountName.
|
|
|
|
Untangle these functions from smbd specific dependencies so they can be freely
used in multiple servers.
|
|
|
|
Pair-programmed-with: Andreas Schneider <asn@samba.org>
|
|
|
|
as pointed out by metze this is a structure of fixed size, which should not be
changed.
|
|
But such numbers can be forced with idr_get_new_above(), and that
reveals two bugs:
1) Crash in sub_remove() caused by pa array being too short.
2) Shift by more than 32 in _idr_find(), which is undefined, causing
the "outside the current tree" optimization to misfire and return NULL.
|
|
Jeremy.
|
|
crashes when
XX_send functions set async to stop interim replies being sent.
Jeremy.
|
|
by modules to crash due to destructors being called (found when using the vfs_aio_fork
module with smb2).
Jeremy.
|
|
|
|
|
|
this struct member h_errno is not used in the HP-UX code paths, it was just
there because Solaris has it, too. As h_errno is a function call macro on HP-UX
when thread support is enabled we run into trouble here. Just commenting it out
should be okay as we don't use it anyway.
|
|
|
|
are the same
|
|
operations
Since we do now run sequentially through all checks we don't need multiple "ac"
contexts anymore.
|
|
when something didn't work
|
|
|
|
styles
|
|
|
|
MS-SAMR 3.1.5.8 speaks from accounts which are not necessarely only users.
|
|
"LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS" is allowed
This is returned when the group is the primary group of the specified entry.
|
|
I think it should be lower in order to control also the "instanceType" module.
|
|
|
|
Also on Windows Server you aren't able to change it.
|
|
We used to return NT_STATUS_ACCESS_DENIED, now we just return 0 entries, just
like W2k8 does.
usrmgr.exe was pretty unhappy with the NT_STATUS_ACCESS_DENIED
|
|
|
|
To be run in a debugger, there's no way to inspect the internal tevent_select.c
maxfd calculation
|
|
When doing
fd1 = tevent_add_fd(ev, ev, 2, 0, NULL, NULL);
fd2 = tevent_add_fd(ev, ev, 3, 0, NULL, NULL);
TALLOC_FREE(fd2);
fd2 = tevent_add_fd(ev, ev, 1, 0, NULL, NULL);
we end up with select_ev->maxfd==1. This is wrong.
An alternative fix might be to make select_ev->maxfd an unsigned int and make
EVENT_INVALID_MAXFD==UINT_MAX. But in theory we might end up with an fd of
UINT_MAX.
std_event_add_fd() contains exactly the same piece of code, so I'm directly
pushing it.
Volker
|