From aeac4f48001bbca61b9f94ecb1bdfa336ff27ad7 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 29 May 2007 08:22:45 +0000 Subject: r23181: prevent attempts to reopen the connection twice at the same time (This used to be commit a25c27dbae4534f2125001c16ac9ae0b67c519cb) --- source4/torture/raw/lockbench.c | 22 +++++++++++++--------- source4/torture/raw/openbench.c | 29 +++++++++++++++++------------ 2 files changed, 30 insertions(+), 21 deletions(-) (limited to 'source4') diff --git a/source4/torture/raw/lockbench.c b/source4/torture/raw/lockbench.c index e929218ead..af0c65b6a4 100644 --- a/source4/torture/raw/lockbench.c +++ b/source4/torture/raw/lockbench.c @@ -54,6 +54,7 @@ struct benchlock_state { int lastcount; struct smbcli_request *req; struct smb_composite_connect reconnect; + struct timed_event *te; /* these are used for reconnections */ int dest_port; @@ -148,9 +149,10 @@ static void reopen_connection_complete(struct composite_context *ctx) status = smb_composite_connect_recv(ctx, state->mem_ctx); if (!NT_STATUS_IS_OK(status)) { - event_add_timed(state->ev, state->mem_ctx, - timeval_current_ofs(1,0), - reopen_connection, state); + talloc_free(state->te); + state->te = event_add_timed(state->ev, state->mem_ctx, + timeval_current_ofs(1,0), + reopen_connection, state); return; } @@ -218,9 +220,10 @@ static void lock_completion(struct smbcli_request *req) state->tree = NULL; num_connected--; DEBUG(0,("reopening connection to %s\n", state->dest_host)); - event_add_timed(state->ev, state->mem_ctx, - timeval_current_ofs(1,0), - reopen_connection, state); + talloc_free(state->te); + state->te = event_add_timed(state->ev, state->mem_ctx, + timeval_current_ofs(1,0), + reopen_connection, state); } else { DEBUG(0,("Lock failed - %s\n", nt_errstr(status))); lock_failed++; @@ -256,9 +259,10 @@ static void echo_completion(struct smbcli_request *req) state->tree = NULL; num_connected--; DEBUG(0,("reopening connection to %s\n", state->dest_host)); - event_add_timed(state->ev, state->mem_ctx, - timeval_current_ofs(1,0), - reopen_connection, state); + talloc_free(state->te); + state->te = event_add_timed(state->ev, state->mem_ctx, + timeval_current_ofs(1,0), + reopen_connection, state); } } diff --git a/source4/torture/raw/openbench.c b/source4/torture/raw/openbench.c index fe01f1f5e2..f956d84234 100644 --- a/source4/torture/raw/openbench.c +++ b/source4/torture/raw/openbench.c @@ -57,6 +57,7 @@ struct benchopen_state { struct smbcli_request *req_open; struct smbcli_request *req_close; struct smb_composite_connect reconnect; + struct timed_event *te; /* these are used for reconnections */ int dest_port; @@ -81,9 +82,10 @@ static void reopen_connection_complete(struct composite_context *ctx) status = smb_composite_connect_recv(ctx, state->mem_ctx); if (!NT_STATUS_IS_OK(status)) { - event_add_timed(state->ev, state->mem_ctx, - timeval_current_ofs(1,0), - reopen_connection, state); + talloc_free(state->te); + state->te = event_add_timed(state->ev, state->mem_ctx, + timeval_current_ofs(1,0), + reopen_connection, state); return; } @@ -210,9 +212,10 @@ static void open_completed(struct smbcli_request *req) state->cli = NULL; num_connected--; DEBUG(0,("reopening connection to %s\n", state->dest_host)); - event_add_timed(state->ev, state->mem_ctx, - timeval_current_ofs(1,0), - reopen_connection, state); + talloc_free(state->te); + state->te = event_add_timed(state->ev, state->mem_ctx, + timeval_current_ofs(1,0), + reopen_connection, state); return; } @@ -262,9 +265,10 @@ static void close_completed(struct smbcli_request *req) state->cli = NULL; num_connected--; DEBUG(0,("reopening connection to %s\n", state->dest_host)); - event_add_timed(state->ev, state->mem_ctx, - timeval_current_ofs(1,0), - reopen_connection, state); + talloc_free(state->te); + state->te = event_add_timed(state->ev, state->mem_ctx, + timeval_current_ofs(1,0), + reopen_connection, state); return; } @@ -289,9 +293,10 @@ static void echo_completion(struct smbcli_request *req) state->tree = NULL; num_connected--; DEBUG(0,("reopening connection to %s\n", state->dest_host)); - event_add_timed(state->ev, state->mem_ctx, - timeval_current_ofs(1,0), - reopen_connection, state); + talloc_free(state->te); + state->te = event_add_timed(state->ev, state->mem_ctx, + timeval_current_ofs(1,0), + reopen_connection, state); } } -- cgit