1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-25 17:57:42 +03:00

bug9598: s4-process_single: Use pid,fd as cluster_id in process_single just like process_prefork

This avoids two different process single servers (say LDAP and the RPC server) sharing the same
server id.

Fix-bug: https://bugzilla.samba.org/show_bug.cgi?id=9598

Reported-by: Matthieu Patou <mat@matws.net>
Reviewed-by: Matthieu Patou <mat@matws.net>
Signed-off-by: Andrew Bartlett <abartlett@samba.org>

Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Fri Jan 25 12:00:04 CET 2013 on sn-devel-104
This commit is contained in:
Andrew Bartlett 2013-01-25 13:15:51 +11:00
parent da35cd7bd2
commit c5db4eb910

View File

@ -49,6 +49,7 @@ static void single_accept_connection(struct tevent_context *ev,
{
NTSTATUS status;
struct socket_context *connected_socket;
pid_t pid = getpid();
/* accept an incoming connection. */
status = socket_accept(listen_socket, &connected_socket);
@ -71,10 +72,14 @@ static void single_accept_connection(struct tevent_context *ev,
talloc_steal(private_data, connected_socket);
/* The cluster_id(0, fd) cannot collide with the incrementing
* task below, as the first component is 0, not 1 */
/*
* We use the PID so we cannot collide in with cluster ids
* generated in other single mode tasks, and, and won't
* collide with PIDs from process model standard because a the
* combination of pid/fd should be unique system-wide
*/
new_conn(ev, lp_ctx, connected_socket,
cluster_id(0, socket_get_fd(connected_socket)), private_data);
cluster_id(pid, socket_get_fd(connected_socket)), private_data);
}
/*