From e5ebc52e9fd45346a74e2c421f2471b5e6cab998 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 14 May 2010 13:11:48 +1000 Subject: Revert "s3:winbindd Split helper functions to allow s3compat to call them" I'm experimenting with a different entry point This reverts commit f5c0f90da5f5372ca6b7a72daa8d073a2444a068. --- source3/winbindd/winbindd.c | 51 +++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) (limited to 'source3/winbindd/winbindd.c') diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 1c87a14ef6..5e041fb57b 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -763,23 +763,40 @@ void request_ok(struct winbindd_cli_state *state) /* Process a new connection by adding it to the client connection list */ -void winbindd_accepted_new_connection(int accepted_sock, bool privileged) +static void new_connection(int listen_sock, bool privileged) { + struct sockaddr_un sunaddr; struct winbindd_cli_state *state; struct tevent_req *req; + socklen_t len; + int sock; + + /* Accept connection */ + + len = sizeof(sunaddr); + + do { + sock = accept(listen_sock, (struct sockaddr *)(void *)&sunaddr, + &len); + } while (sock == -1 && errno == EINTR); + + if (sock == -1) + return; + + DEBUG(6,("accepted socket %d\n", sock)); /* Create new connection structure */ if ((state = TALLOC_ZERO_P(NULL, struct winbindd_cli_state)) == NULL) { - close(accepted_sock); + close(sock); return; } - state->sock = accepted_sock; + state->sock = sock; state->out_queue = tevent_queue_create(state, "winbind client reply"); if (state->out_queue == NULL) { - close(accepted_sock); + close(sock); TALLOC_FREE(state); return; } @@ -792,40 +809,16 @@ void winbindd_accepted_new_connection(int accepted_sock, bool privileged) WINBINDD_MAX_EXTRA_DATA); if (req == NULL) { TALLOC_FREE(state); - close(accepted_sock); + close(sock); return; } tevent_req_set_callback(req, winbind_client_request_read, state); /* Add to connection list */ - /* Once the client is added here, we can be sure something will close it eventually */ winbindd_add_client(state); } -static void new_connection(int listen_sock, bool privileged) -{ - struct sockaddr_un sunaddr; - socklen_t len; - int sock; - - /* Accept connection */ - - len = sizeof(sunaddr); - - do { - sock = accept(listen_sock, (struct sockaddr *)(void *)&sunaddr, - &len); - } while (sock == -1 && errno == EINTR); - - if (sock == -1) - return; - - DEBUG(6,("accepted socket %d\n", sock)); - - winbindd_accepted_new_connection(sock, privileged); -} - static void winbind_client_request_read(struct tevent_req *req) { struct winbindd_cli_state *state = tevent_req_callback_data( -- cgit