1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-27 14:04:05 +03:00

276 Commits

Author SHA1 Message Date
Stefan Metzmacher
73577205cf s3:winbindd: fix problems with SIGCHLD handling (bug #7317)
The main problem is that we call CatchChild() within the
parent winbindd, which overwrites the signal handler
that was registered by winbindd_setup_sig_chld_handler().

That means winbindd_sig_chld_handler() and winbind_child_died()
are never triggered when a winbindd domain child dies.
As a result will get "broken pipe" for all requests to that domain.

To reduce the risk of similar bugs in future we call
CatchChild() in winbindd_reinit_after_fork() now.

We also use a full winbindd_reinit_after_fork() in the
cache validation child now instead instead of just resetting
the SIGCHLD handler by hand. This will also fix possible
tdb problems on systems without pread/pwrite and disabled mmap
as we now correctly reopen the tdb handle for the child.

metze
2010-04-01 17:25:11 +02:00
Volker Lendecke
658dc77446 s3: fix a typo in winbind_client_response_written 2010-04-01 12:56:54 +02:00
Andreas Schneider
a6f25fc635 s3-smbd: Don't close stdout if we want to log to stdout. 2010-03-26 14:48:54 +01:00
Volker Lendecke
13400a6589 s3: Fix a bad memleak in winbind 2010-03-22 16:47:52 +01:00
Volker Lendecke
89c785c47a s3: Fix a long-standing problem with recycled PIDs
When a samba server process dies hard, it has no chance to clean up its entries
in locking.tdb, brlock.tdb, connections.tdb and sessionid.tdb.

For locking.tdb and brlock.tdb Samba is robust by checking every time we read
an entry from the database if the corresponding process still exists. If it
does not exist anymore, the entry is deleted. This is not 100% failsafe though:
On systems with a limited PID space there is a non-zero chance that between the
smbd's death and the fresh access, the PID is recycled by another long-running
process. This renders all files that had been locked by the killed smbd
potentially unusable until the new process also dies.

This patch is supposed to fix the problem the following way: Every process ID
in every database is augmented by a random 64-bit number that is stored in a
serverid.tdb. Whenever we need to check if a process still exists we know its
PID and the 64-bit number. We look up the PID in serverid.tdb and compare the
64-bit number. If it's the same, the process still is a valid smbd holding the
lock. If it is different, a new smbd has taken over.

I believe this is safe against an smbd that has died hard and the PID has been
taken over by a non-samba process. This process would not have registered
itself with a fresh 64-bit number in serverid.tdb, so the old one still exists
in serverid.tdb. We protect against this case by the parent smbd taking care of
deregistering PIDs from serverid.tdb and the fact that serverid.tdb is
CLEAR_IF_FIRST.

CLEAR_IF_FIRST does not work in a cluster, so the automatic cleanup does not
work when all smbds are restarted. For this, "net serverid wipe" has to be run
before smbd starts up. As a convenience, "net serverid wipedbs" also cleans up
sessionid.tdb and connections.tdb.

While there, this also cleans up overloading connections.tdb with all the
process entries just for messaging_send_all().

Volker
2010-03-10 16:07:10 +01:00
Stefan Metzmacher
31293c64a3 s3:winbindd: add DEBUG(10,...) for the end of each top level
That will hopefully make debugging a bit easier (at least for me).

metze
2010-03-05 14:03:55 +01:00
Volker Lendecke
752bffc53f s3: Consolidate server_id_self into the equivalent procid_self() 2010-02-23 15:30:00 +01:00
Bo Yang
9fed9011ff s3: Don't invalidate cache for uninitialized domains.
Signed-off-by: Bo Yang <boyang@samba.org>
2010-02-09 17:06:14 +08:00
Volker Lendecke
7d18d058a1 s3: Add wbinfo --ccache-save
With this command you can give winbind your password for later use by
the automatic ntlm_auth
2010-01-24 20:32:16 +01:00
Volker Lendecke
ff0f8bd9e6 s3:winbind Make the normal client exit message a bit more understandable 2009-12-26 18:00:47 +01:00
Volker Lendecke
03617df24d s3: winbindd_cli_state->getgrent_state is no longer used 2009-12-26 12:26:06 +01:00
Volker Lendecke
b911a7b2d4 s3: getgrent_state has been replaced by grent_state 2009-12-26 12:26:06 +01:00
Volker Lendecke
9b6b01aab6 s3:winbind: Add a lower-cost alternative to wbinfo -t: wbinfo --ping-dc
This just does a NULL RPC call through an existing NETLOGON connection. If
someone knows an operation that "just works" and does not return NOT_SUPPORTED,
please tell me :-)
2009-12-21 23:23:52 +01:00
Günther Deschner
a3306e352d s3-winbindd: add wbint_ChangeMachineAccount implementation.
Guenther
2009-10-13 12:42:44 +02:00
Stefan Metzmacher
83edf3e43e s3:winbindd: avoid writing to a closed connection and generate SIGPIPE
metze
2009-09-21 06:05:43 +02:00
Volker Lendecke
04ea250aeb s3:winbind: Convert WINBINDD_SET_HWM to the new API 2009-09-07 01:28:32 +02:00
Volker Lendecke
4ad330d522 s3:winbind: Convert WINBINDD_REMOVE_MAPPING to the new API 2009-09-07 01:28:32 +02:00
Volker Lendecke
7159060450 s3:winbind: Convert WINBINDD_SET_MAPPING to the new API 2009-09-07 01:28:32 +02:00
Volker Lendecke
d9b7fd59b0 s3:winbind: Convert WINBINDD_CHECK_MACHACC to the new API 2009-09-07 01:28:32 +02:00
Volker Lendecke
0cae043b0c w3:winbind: Convert WINBINDD_ALLOCATE_GID to the new API 2009-08-30 09:48:28 +02:00
Volker Lendecke
9e7c6f12fd w3:winbind: Convert WINBINDD_ALLOCATE_UID to the new API 2009-08-30 09:48:28 +02:00
Volker Lendecke
2774a02f64 s3:winbind: Convert WINBINDD_LIST_GROUPS to the new API 2009-08-29 19:53:46 +02:00
Volker Lendecke
6b474c56a5 s3:winbind: Convert WINBINDD_LIST_USERS to the new API 2009-08-29 19:53:29 +02:00
Volker Lendecke
e47491e83c s3:winbind: Convert the getgrent functions to the new API 2009-08-29 19:42:27 +02:00
Volker Lendecke
50d9fb42fc w3:winbind: Convert WINBINDD_LOOKUPRIDS to the new API 2009-08-29 19:42:26 +02:00
Volker Lendecke
425239caee s3:winbind: Convert the GETDCNAME routines to the new API 2009-08-29 19:42:26 +02:00
Volker Lendecke
244bb7f163 s3:winbind: Convert winbindd_dsgetdcname to the new API 2009-08-29 19:42:26 +02:00
Volker Lendecke
9c30a8dc6f s3:winbind: Convert the GETPWENT routines to the new API 2009-08-29 19:42:26 +02:00
Volker Lendecke
1d8d3fd7c3 s3:winbind: Convert WINBINDD_GETUSERSIDS to the new API 2009-08-27 15:04:09 +02:00
Volker Lendecke
2c23e7dc5a s3:winbind: The get[gr|pw]end functions need access to the client state 2009-08-16 13:28:14 +02:00
Volker Lendecke
459233e630 s3:winbind: Convert WINBINDD_GETGRNAM to the new API 2009-08-16 12:39:08 +02:00
Volker Lendecke
a511a87519 s3:winbind: Convert WINBINDD_GETGRGID to the new API 2009-08-16 12:39:07 +02:00
Volker Lendecke
0f64bb5b7e s3:winbind: Convert winbindd_show_sequence to the new API 2009-08-16 10:38:24 +02:00
Volker Lendecke
0a16265bc2 s3:winbind: Convert WINBINDD_GETGROUPS to the new API 2009-08-05 03:21:25 -04:00
Volker Lendecke
fec380818f s3:winbind: Convert WINBINDD_GETUSERDOMGROUPS to the new API 2009-08-05 03:21:25 -04:00
Volker Lendecke
592822786d s3:winbind: Convert WINBINDD_GETSIDALIASES to the new API 2009-08-05 03:21:24 -04:00
Volker Lendecke
bd9d7f75e3 s3:winbind: Convert WINBINDD_GETPWUID to the new API 2009-08-05 03:21:23 -04:00
Volker Lendecke
5bbb7a0d14 s3:winbind: Convert WINBINDD_GETPWNAM to the new API 2009-08-05 03:21:23 -04:00
Volker Lendecke
9dc401a20e s3:winbind: Convert WINBINDD_GETPWSID to the new API 2009-08-05 03:21:23 -04:00
Volker Lendecke
10685b37d4 s3:winbind: Convert WINBINDD_GID_TO_SID the new API 2009-08-05 03:21:22 -04:00
Volker Lendecke
9b369ffcf0 s3:winbind: Convert WINBINDD_UID_TO_SID the new API 2009-08-05 03:21:22 -04:00
Volker Lendecke
5db561a608 s3:winbind: Convert WINBINDD_SID_TO_GID the new API 2009-08-05 03:21:21 -04:00
Volker Lendecke
fb7150f23b s3:winbind: Convert WINBINDD_SID_TO_UID to the new API 2009-08-05 03:21:21 -04:00
Volker Lendecke
9c6f4cd12a s3:winbind: Convert WINBINDD_LOOKUPNAME to the new API 2009-08-05 03:21:21 -04:00
Volker Lendecke
74b45ba46c s3:winbind: Remove old version of WINBINDD_PING 2009-08-05 03:21:20 -04:00
Volker Lendecke
fa59f9720d s3:winbind: Convert WINBINDD_LOOKUPSID to the new API 2009-08-05 03:21:20 -04:00
Volker Lendecke
f511ccbc42 Slightly restructure the async winbind request calling convention
The main loop now allocates the response, this has to be done everywhere
2009-07-31 17:28:53 +02:00
Volker Lendecke
e30509f037 Fix a valgrind error in winbind
When looking for idle clients, we dereferenced state->response. As this is
dynamically allocated now, the proper test is whether state->response exists at
all. This is the case when an async operation is in process at that moment.
2009-07-27 16:15:54 +02:00
Volker Lendecke
8cba97a164 Fix a winbind memleak 2009-07-25 12:59:20 -04:00
Volker Lendecke
8a17cd810f Make gencache more stable
This provides a compromise between stability and performance: gencache is a
persistent database these days that for performance reasons can not use tdb
transactions for all writes. This patch splits up gencache into gencache.tdb
and gencache_notrans.tdb. gencache_notrans is used with CLEAR_IF_FIRST, writes
to it don't use transactions. By default every 5 minutes and when a program
exits, all entries from _notrans.tdb are transferred to gencache.tdb in one
transaction.
2009-07-15 10:55:20 +02:00