1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-08 04:58:40 +03:00

Rework process_single.c to take advantage of cluster_id() now taking an additional argument.

Andrew Bartlett and David Disseldorp
(This used to be commit c961e7d74e33a0dd61b1053620fb41521322e20d)
This commit is contained in:
Andrew Bartlett 2008-02-04 17:53:01 +11:00
parent 77f71c1b65
commit 3d5594e74d

View File

@ -52,19 +52,26 @@ static void single_accept_connection(struct event_context *ev,
status = socket_accept(sock, &sock2);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0,("single_accept_connection: accept: %s\n", nt_errstr(status)));
/* this looks strange, but is correct. We need to
throttle things until the system clears enough
resources to handle this new socket. If we don't
then we will spin filling the log and causing more
problems. We don't panic as this is probably a
temporary resource constraint */
/* this looks strange, but is correct.
We can only be here if woken up from select, due to
an incomming connection.
We need to throttle things until the system clears
enough resources to handle this new socket.
If we don't then we will spin filling the log and
causing more problems. We don't panic as this is
probably a temporary resource constraint */
sleep(1);
return;
}
talloc_steal(private, sock);
new_conn(ev, lp_ctx, sock2, cluster_id(socket_get_fd(sock2)), private);
/* The cluster_id(0, fd) cannot collide with the incrementing
* task below, as the first component is 0, not 1 */
new_conn(ev, lp_ctx, sock2, cluster_id(0, socket_get_fd(sock2)), private);
}
/*
@ -72,11 +79,17 @@ static void single_accept_connection(struct event_context *ev,
*/
static void single_new_task(struct event_context *ev,
struct loadparm_context *lp_ctx,
const char *service_name,
void (*new_task)(struct event_context *, struct loadparm_context *, struct server_id, void *),
void *private)
{
static uint32_t taskid = 0x10000000;
new_task(ev, lp_ctx, cluster_id(taskid++), private);
static uint32_t taskid = 0;
/* We use 1 so we cannot collide in with cluster ids generated
* in the accept connection above, and unlikly to collide with
* PIDs from process modal standard (don't run samba as
* init) */
new_task(ev, lp_ctx, cluster_id(1, taskid++), private);
}