From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp39.i.mail.ru (smtp39.i.mail.ru [94.100.177.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 6E4A9469719 for ; Thu, 10 Sep 2020 08:27:48 +0300 (MSK) Date: Thu, 10 Sep 2020 08:27:45 +0300 From: "Alexander V. Tikhonov" Message-ID: <20200910052745.GA20408@hpalx> References: <75cc0d4428b08ee24ffeab4acd718ee5709fc2f4.1599674855.git.avtikhon@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Tarantool-patches] [PATCH v1] asan: leak unit/swim.test:swim_test_encryption List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladislav Shpilevoy Cc: tarantool-patches@dev.tarantool.org Hi Vlad, thanks for the review and suggested patch. It is the same as I started from, but just was afraid to suggest it being too easy, so sure I already checked it and again rechecked it and agree with it. Your patch completely LGTM to me, thanks. On Wed, Sep 09, 2020 at 11:06:43PM +0200, Vladislav Shpilevoy wrote: > Hi! Thanks for the patch! > > I force pushed my review fixes on top of the branch and paste > them below. If you agree, and if it works (I wasn't able to reproduce > the fail locally), then squash, please. > > ==================== > diff --git a/src/lib/swim/swim.c b/src/lib/swim/swim.c > index 53f118609..396bd7c45 100644 > --- a/src/lib/swim/swim.c > +++ b/src/lib/swim/swim.c > @@ -2114,12 +2114,6 @@ swim_set_codec(struct swim *swim, enum crypto_algo algo, enum crypto_mode mode, > key, key_size); > } > > -int > -swim_delete_codec(struct swim *swim) > -{ > - return swim_scheduler_delete_codec(&swim->scheduler); > -} > - > bool > swim_is_configured(const struct swim *swim) > { > diff --git a/src/lib/swim/swim.h b/src/lib/swim/swim.h > index e684205c4..4565eb976 100644 > --- a/src/lib/swim/swim.h > +++ b/src/lib/swim/swim.h > @@ -124,15 +124,6 @@ int > swim_set_codec(struct swim *swim, enum crypto_algo algo, enum crypto_mode mode, > const char *key, int key_size); > > - > -/** > - * Delete SWIM codec used to encrypt/decrypt messages. > - * @param swim SWIM instance to set codec for. > - */ > -int > -swim_delete_codec(struct swim *swim); > - > - > /** > * Stop listening and broadcasting messages, cleanup all internal > * structures, free memory. The function yields. Actual deletion > diff --git a/src/lib/swim/swim_io.c b/src/lib/swim/swim_io.c > index f7107d39e..c8558c43e 100644 > --- a/src/lib/swim/swim_io.c > +++ b/src/lib/swim/swim_io.c > @@ -402,6 +402,8 @@ swim_scheduler_destroy(struct swim_scheduler *scheduler) > swim_transport_destroy(&scheduler->transport); > swim_ev_io_stop(swim_loop(), &scheduler->output); > swim_scheduler_stop_input(scheduler); > + if (scheduler->codec != NULL) > + crypto_codec_delete(scheduler->codec); > assert(scheduler_count > 0); > if (--scheduler_count == 0) > swim_task_pool_destroy(); > @@ -708,14 +710,6 @@ swim_scheduler_set_codec(struct swim_scheduler *scheduler, > return 0; > } > > -int > -swim_scheduler_delete_codec(struct swim_scheduler *scheduler) > -{ > - if (scheduler->codec != NULL) > - crypto_codec_delete(scheduler->codec); > - return 0; > -} > - > const char * > swim_inaddr_str(const struct sockaddr_in *addr) > { > diff --git a/src/lib/swim/swim_io.h b/src/lib/swim/swim_io.h > index 72c6c030d..bf5a1389f 100644 > --- a/src/lib/swim/swim_io.h > +++ b/src/lib/swim/swim_io.h > @@ -204,10 +204,6 @@ swim_scheduler_set_codec(struct swim_scheduler *scheduler, > enum crypto_algo algo, enum crypto_mode mode, > const char *key, int key_size); > > -/** Delete the codec used to encrypt/decrypt messages. */ > -int > -swim_scheduler_delete_codec(struct swim_scheduler *scheduler); > - > /** Stop accepting new packets from the network. */ > void > swim_scheduler_stop_input(struct swim_scheduler *scheduler); > diff --git a/test/unit/swim.c b/test/unit/swim.c > index bc19f8a10..bb12baf8d 100644 > --- a/test/unit/swim.c > +++ b/test/unit/swim.c > @@ -770,7 +770,6 @@ swim_test_encryption(void) > > is(swim_cluster_wait_fullmesh(cluster, 2), 0, > "cluster works with encryption"); > - swim_cluster_delete_codec(cluster); > swim_cluster_delete(cluster); > /* > * Test that the instances can not interact with different > @@ -1141,4 +1140,4 @@ main() > { > swim_run_test("swim.txt", main_f); > return test_result; > -} > +} > \ No newline at end of file > diff --git a/test/unit/swim_test_utils.c b/test/unit/swim_test_utils.c > index c527af55c..9dbd28a9f 100644 > --- a/test/unit/swim_test_utils.c > +++ b/test/unit/swim_test_utils.c > @@ -237,14 +237,6 @@ swim_cluster_new(int size) > } \ > }) > > -#define swim_cluster_set_cfg_noargs(cluster, func) ({ \ > - for (int i = 0; i < cluster->size; ++i) { \ > - int rc = func(cluster->node[i].swim); \ > - assert(rc == 0); \ > - (void) rc; \ > - } \ > -}) > - > void > swim_cluster_set_ack_timeout(struct swim_cluster *cluster, double ack_timeout) > { > @@ -260,12 +252,6 @@ swim_cluster_set_codec(struct swim_cluster *cluster, enum crypto_algo algo, > key, key_size); > } > > -void > -swim_cluster_delete_codec(struct swim_cluster *cluster) > -{ > - swim_cluster_set_cfg_noargs(cluster, swim_delete_codec); > -} > - > void > swim_cluster_set_gc(struct swim_cluster *cluster, enum swim_gc_mode gc_mode) > { > diff --git a/test/unit/swim_test_utils.h b/test/unit/swim_test_utils.h > index b413bb8ce..ac86b6f72 100644 > --- a/test/unit/swim_test_utils.h > +++ b/test/unit/swim_test_utils.h > @@ -64,13 +64,6 @@ void > swim_cluster_set_codec(struct swim_cluster *cluster, enum crypto_algo algo, > enum crypto_mode mode, const char *key, int key_size); > > -/** > - * Delete codec for each instance in > - * @a cluster. > - */ > -void > -swim_cluster_delete_codec(struct swim_cluster *cluster); > - > /** > * Change number of unacknowledged pings to delete a dead member > * of all the instances in the cluster.