mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
r18243: when setting up a composite continuation, if the context has already
finished when we need to trigger the continuation immediately. Via a fairly complex path, this fixes the problem where all hosts in the build farm that do not have ipv6 failed a lot of the RPC tests. This happened because the dcerpc_connect() async code used a composite_continue() on a context which was already in an error state, due to the socket backend saying that ipv6 was unavailable (This used to be commit dbf935d38b6b1fea5ed00e94c9b1a518cb14768b)
This commit is contained in:
parent
a22780bd4c
commit
ed962c833b
@ -142,6 +142,13 @@ _PUBLIC_ void composite_continue(struct composite_context *ctx,
|
||||
if (composite_nomem(new_ctx, ctx)) return;
|
||||
new_ctx->async.fn = continuation;
|
||||
new_ctx->async.private_data = private_data;
|
||||
|
||||
/* if we are setting up a continuation, and the context has
|
||||
already finished, then we should run the callback with an
|
||||
immediate event, otherwise we can be stuck forever */
|
||||
if (new_ctx->state >= COMPOSITE_STATE_DONE && continuation) {
|
||||
event_add_timed(new_ctx->event_ctx, new_ctx, timeval_zero(), composite_trigger, new_ctx);
|
||||
}
|
||||
}
|
||||
|
||||
_PUBLIC_ void composite_continue_rpc(struct composite_context *ctx,
|
||||
|
Loading…
x
Reference in New Issue
Block a user