1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-23 09:57:40 +03:00

fixed several places that unnecessarily take a reference to the event context

These references were triggering the ambiguous talloc_free errors from
the recent talloc changes when the server is run using the 'standard'
process model instead of the 'single' process model. I am aiming to
move the build farm to use the 'standard' process model soon, as part
of an effort to make our test environment better match the real
deployment of Samba4.

The references are not needed as the way that the event context is
used is as the 'top parent', so when the event context is freed then
all of the structures that were taking a reference to the event
context were actually freed as well, thus making the references
redundent.
This commit is contained in:
Andrew Tridgell 2009-08-07 17:14:13 +10:00
parent 238bf25af4
commit e2d4ae1510
9 changed files with 11 additions and 20 deletions

View File

@ -244,10 +244,6 @@ static int samldb_search_template(struct samldb_ctx *ac)
return LDB_ERR_OPERATIONS_ERROR;
}
if (!talloc_reference(templates_ldb, ev)) {
return LDB_ERR_OPERATIONS_ERROR;
}
ret = ldb_set_opaque(ldb,
"templates_ldb", templates_ldb);
if (ret != LDB_SUCCESS) {

View File

@ -596,7 +596,7 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
/* it needs to be non blocking for sends */
set_blocking(socket_get_fd(msg->sock), false);
msg->event.ev = talloc_reference(msg, ev);
msg->event.ev = ev;
msg->event.fde = event_add_fd(ev, msg, socket_get_fd(msg->sock),
EVENT_FD_READ, messaging_handler, msg);

View File

@ -42,11 +42,7 @@ _PUBLIC_ struct composite_context *composite_create(TALLOC_CTX *mem_ctx,
c = talloc_zero(mem_ctx, struct composite_context);
if (!c) return NULL;
c->state = COMPOSITE_STATE_IN_PROGRESS;
c->event_ctx = talloc_reference(c, ev);
if (!c->event_ctx) {
talloc_free(c);
return NULL;
}
c->event_ctx = ev;
return c;
}

View File

@ -166,7 +166,7 @@ struct nbt_dgram_socket *nbt_dgram_socket_init(TALLOC_CTX *mem_ctx,
dgmsock = talloc(mem_ctx, struct nbt_dgram_socket);
if (dgmsock == NULL) goto failed;
dgmsock->event_ctx = talloc_reference(dgmsock, event_ctx);
dgmsock->event_ctx = event_ctx;
if (dgmsock->event_ctx == NULL) goto failed;
status = socket_create("ip", SOCKET_TYPE_DGRAM, &dgmsock->sock, 0);

View File

@ -61,7 +61,7 @@ struct composite_context *smbcli_sock_connect_send(TALLOC_CTX *mem_ctx,
if (result == NULL) goto failed;
result->state = COMPOSITE_STATE_IN_PROGRESS;
result->event_ctx = talloc_reference(result, event_ctx);
result->event_ctx = event_ctx;
if (result->event_ctx == NULL) goto failed;
state = talloc(result, struct sock_connect_state);
@ -118,8 +118,7 @@ static void smbcli_sock_connect_recv_conn(struct composite_context *ctx)
state->result->port = port;
state->result->hostname = talloc_steal(sock, state->host_name);
state->result->event.ctx =
talloc_reference(state->result, state->ctx->event_ctx);
state->result->event.ctx = state->ctx->event_ctx;
if (composite_nomem(state->result->event.ctx, state->ctx)) return;
composite_done(state->ctx);

View File

@ -466,7 +466,7 @@ struct composite_context *smb_composite_connect_send(struct smb_composite_connec
c = talloc_zero(mem_ctx, struct composite_context);
if (c == NULL) goto failed;
c->event_ctx = talloc_reference(c, event_ctx);
c->event_ctx = event_ctx;
if (c->event_ctx == NULL) goto failed;
state = talloc_zero(c, struct connect_state);

View File

@ -171,7 +171,7 @@ struct wrepl_socket *wrepl_socket_init(TALLOC_CTX *mem_ctx,
wrepl_socket = talloc_zero(mem_ctx, struct wrepl_socket);
if (!wrepl_socket) return NULL;
wrepl_socket->event.ctx = talloc_reference(wrepl_socket, event_ctx);
wrepl_socket->event.ctx = event_ctx;
if (!wrepl_socket->event.ctx) goto failed;
wrepl_socket->iconv_convenience = iconv_convenience;
@ -205,7 +205,7 @@ struct wrepl_socket *wrepl_socket_merge(TALLOC_CTX *mem_ctx,
wrepl_socket = talloc_zero(mem_ctx, struct wrepl_socket);
if (wrepl_socket == NULL) goto failed;
wrepl_socket->event.ctx = talloc_reference(wrepl_socket, event_ctx);
wrepl_socket->event.ctx = event_ctx;
if (wrepl_socket->event.ctx == NULL) goto failed;
wrepl_socket->sock = sock;

View File

@ -67,7 +67,7 @@ static struct dcerpc_connection *dcerpc_connection_init(TALLOC_CTX *mem_ctx,
c->iconv_convenience = talloc_reference(c, ic);
c->event_ctx = talloc_reference(c, ev);
c->event_ctx = ev;
if (c->event_ctx == NULL) {
talloc_free(c);

View File

@ -94,7 +94,7 @@ struct composite_context *wins_challenge_send(TALLOC_CTX *mem_ctx, struct wins_c
result = talloc_zero(mem_ctx, struct composite_context);
if (result == NULL) return NULL;
result->state = COMPOSITE_STATE_IN_PROGRESS;
result->event_ctx = talloc_reference(result, io->in.event_ctx);
result->event_ctx = io->in.event_ctx;
state = talloc_zero(result, struct wins_challenge_state);
if (state == NULL) goto failed;
@ -204,7 +204,7 @@ static struct composite_context *wins_release_demand_send(TALLOC_CTX *mem_ctx, s
result = talloc_zero(mem_ctx, struct composite_context);
if (result == NULL) return NULL;
result->state = COMPOSITE_STATE_IN_PROGRESS;
result->event_ctx = talloc_reference(result, io->in.event_ctx);
result->event_ctx = io->in.event_ctx;
state = talloc_zero(result, struct wins_release_demand_state);
if (state == NULL) goto failed;