From nobody Mon Feb 9 01:19:42 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1617792849; cv=pass; d=zohomail.com; s=zohoarc; b=b3S+bwTIzmb6/12AuH2S1dxooUsLDHS+12VhqBhSp57q5MEcjfDDRDvGmLobvnvRYB+5D1hQYP1tnvTWFTJ5evfwQ/orwMzRjqT9VnBSQiaFH/5T4G+IX2AVpM/rgOp7o4EHJaBELtn/hpXf96U6POymcRy5jvrDKlUnSqbQZ3Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617792849; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ItjXYDaY9p08z/8CScazztRd81aDICN76S4ODEnDPDk=; b=QMOUAWKIzKDqFNlVJQXkac/B+9J8JZt+HpQpzOi7CSSRRgv3u9FHWg1rVSeLAng7BASHU1CEeWDJiS4OhevMWmp7bpfDQabtVNxfUIHT7Zl/bGSnegRB9zpHAPQRy+8j2GMAuJ6lNLrUSePo1oTj2QWchskZJFByXsnNmD8A7yc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1617792849381431.7020700563784; Wed, 7 Apr 2021 03:54:09 -0700 (PDT) Received: from localhost ([::1]:39898 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lU5p2-00051b-7f for importer@patchew.org; Wed, 07 Apr 2021 06:54:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lU5if-0006CW-6o; Wed, 07 Apr 2021 06:47:39 -0400 Received: from mail-vi1eur05on2113.outbound.protection.outlook.com ([40.107.21.113]:20888 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lU5iZ-0001Tc-Jx; Wed, 07 Apr 2021 06:47:30 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0802MB2452.eurprd08.prod.outlook.com (2603:10a6:203:9f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.32; Wed, 7 Apr 2021 10:47:16 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4020.017; Wed, 7 Apr 2021 10:47:16 +0000 Received: from localhost.localdomain (185.215.60.206) by HE1PR0902CA0021.eurprd09.prod.outlook.com (2603:10a6:3:e5::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Wed, 7 Apr 2021 10:47:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=juPSPvTC2JvhMpkTiylewRed+pDUvu3w3mtkmsW7C6UcNFjZtrmqh5S68SFRKo8dyIgap7hmHPtBqluNTFhdlgDFYQNMQ5EJrL4YWTDAVYCi4NVe4hDlVSX1bJQYvJB52/ZOmOP2Lhflm71itn/2CB4HF0v5d7R+UlCkozA0XkCj0qv+rqkasZQcCUXRZcgHMHUiKMNWH8mRZEpv6g+kOlWxlG2plrXGSdp2nbbvmkkWuGA0SpWgxGm1WPsqCdps5td12n9/3w5G51KBdBY8tI5bS3+fexT4n+002P2ZDnWQPGqmxT+t52UhJSL27gYWQHmuZvXGUDZAOHaX25mhFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ItjXYDaY9p08z/8CScazztRd81aDICN76S4ODEnDPDk=; b=i3H6kakKqeFdPzwUCH4VMPk6e3PmDln+pRuobkkDPeKOgTBXsp2QGHb+JkygLLERvDUhrrVHOZuhkF8j0m5vk5qkUpxJbhQITyFRl+I9t5T/bsQTWTLhz0sBZHwuPHg5asy7VWuaa3Oyk4w9vYcarBl0mnfqo0qFnE1PyNDlNIZ+Pw1z7G0jXd0SRVEhGYo8ig5f0pAZDiHWmslrgEGaGUxLB/xc23qdtHMmHCzuSngulcqMh/5PEwRn1NyHziPCvLUoRXYjymeqhHHbL5bOy+ug50CNvyUIl0x519pcRxYblY9X1NUx5Zf218wEJPwIL+QequC1XBwjrOAuT2o1cg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ItjXYDaY9p08z/8CScazztRd81aDICN76S4ODEnDPDk=; b=Zg6o+9+Ktpynmw8VSRf0qB9IigB/Ko9Yxc42/GYXMRyRjzBZL20iyl2EYlEtBlNa1QWBkmUTVD9zsqiGlK3QNRcGIAMHh9yd8BbwdveegOGELBCNxAWJ/eE2BagHiUCVR7sWaNuWAUN8rjmUKuWetTszkCjy+Ah/1gPGdTb2EKc= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, vsementsov@virtuozzo.com, eblake@redhat.com, rvkagan@yandex-team.ru, den@openvz.org Subject: [PATCH 14/14] block/nbd: drop thr->state Date: Wed, 7 Apr 2021 13:46:37 +0300 Message-Id: <20210407104637.36033-15-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210407104637.36033-1-vsementsov@virtuozzo.com> References: <20210407104637.36033-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.206] X-ClientProxiedBy: HE1PR0902CA0021.eurprd09.prod.outlook.com (2603:10a6:3:e5::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1c9113a-562f-4399-2191-08d8f9b282c0 X-MS-TrafficTypeDiagnostic: AM5PR0802MB2452: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w1ac+tXxNyqA01nkNfsSLj1WnzGh6d4e0uFXZ7fU1xj0M48Wvqferf5F7LJuQP2ww8EdZUMdiskbXqdKrGwRuPphRxYRWj3fxR6a2Gsi7tJdY1pvuxIVM8QiSrA6LHq0p51MWNPftzOBmASxm98+MeGxlW84xmbbl4v2cQRbKAQap9GiwAZsHnzHjUUnS0mJjVLxOUJVaYM9IUaKHyQLpgDkB1q9rt7WRu2vgi/oJKEc85jrzuwl+tTe3YeFwCS+NbaSDIhSR7sVW8TgZUbfkvmEBnLOD0pJym2c/zzPpNjxtaEUJejd3Nyp16oWIWHRtvqyAwuX2EsEd8vvk7mnb/W6dLhjMwkpENSLkQCFyipCp6zgeIFzEuyP80ARKB+0XdocxZ6pCsQSBoWll+kOxVLO1rWm4OeTdfPxwJ6w4HPhpKays3mv4YBQBDNe3MrV9IXLfCFx9IlF7K4lj8hcc6bD6k4bno2j1+95xGT0fFnHvGJRy6OT+PQyOB2Q2+9yYR1vaxYF/CiNnvu6DNfFM+S0qQEm6/pVuQXyu1CdGGNOcHs6c1t/+yo0hBHJAzsXWDbiI8eukiwFDxnSoeKHQBQQncRNYf7tI9Rz780O1gOO8OetPLY2iI0Uo6uvbgejAPCObylOkxExHHQHgdPFuvfP9/c9oAeQ/b+bugQqHxN5f4laAP3Adr062A2GTqczcvuSNfIUnWXG+k9+HoPSEw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39840400004)(396003)(346002)(376002)(8936002)(66476007)(38350700001)(36756003)(5660300002)(6506007)(4326008)(69590400012)(956004)(66556008)(2616005)(478600001)(83380400001)(8676002)(316002)(6512007)(1076003)(186003)(66946007)(16526019)(107886003)(38100700001)(6486002)(6916009)(52116002)(86362001)(2906002)(6666004)(26005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?Ag8puDnjotGcL14155zcxDDbZNN+IHNsnsoCfCrjkpL1MSBmU4SxdgZa7yaU?= =?us-ascii?Q?G8JKtb/Q323bZ39EI/ubQz1zTxQbGfw3VShhJOrkvzSgIr9E708BMc120Ihv?= =?us-ascii?Q?gRaBs56LtUVIixlFVlhvyekwzZEhV71pfXHlSAF9pRUxavagnT9gbp2jsQGo?= =?us-ascii?Q?hPCQxSRUX6zAfk5pbc3K8eJEjBM4r+7ktVK9MkkiwHws4Cdo4/Izv3mMKV1X?= =?us-ascii?Q?ZOX7lq6czAqzBxTVI5v5s5aHCCwf2DyMoOgygJpK5NLpTno8cbHplT6hfumf?= =?us-ascii?Q?taG8zDNx7gD4VMo7qfe7YwcJ0zYTq1bLvQXVbCGvHtWNIP2zsE3i2VK/8FAd?= =?us-ascii?Q?gfTcx9NPkVKMNbWYuvDZjR+L9ThDOeQHSLgWzOa7zlWlZ68qN0FWz+QDIEHI?= =?us-ascii?Q?AB/5TzG7Su0lSqdFzxA6SndARWjU21vD0bU7jWYMrUI7VyHLQCNbAcqj61vN?= =?us-ascii?Q?4S4ms7lfCvy8umzd4mMG2xP/Xe3Rs7J/iSB5tgi7gAlQHimuqq1MaAlUOuE0?= =?us-ascii?Q?6aOA42a9bqqyxizOL2l1K1gJtp7gOPEwWXxCYoW+WI0dNoBUHR13HbkIELHa?= =?us-ascii?Q?EP0SGC1n2JiSJQG8oZPz451h1fr5X7pb/JYuOw7GXCbzwcaHDbLU0ImcsxwW?= =?us-ascii?Q?9ZShL6OJv00g9wE7D+z+f9dUSJg2YzGkMP//PBmzGC9+pgc3iHVu279ER13P?= =?us-ascii?Q?BicLCCTapfTvOaqFrix/nK9BZiG885BDZlXRMbqqmeLQ0n6PLONahFOZWkwQ?= =?us-ascii?Q?2wKO0aE4rqexKnD34EBQfjw32egDt8rFYir8HvGRo/KCbgcd9iBgM4c3W/EB?= =?us-ascii?Q?mnoidkmhlpOg1W16MVG1BkSPWsVIUlYw4rXVmldMijWRGvdV6M0hlfn78Jne?= =?us-ascii?Q?NWTWmQq8f6TJoQhvUgucn5a2RhfjLcyb1Q3U4uHmel6NEBJyVZlUMsI/j0JM?= =?us-ascii?Q?WCH0fmzzvMqp+vU1BToMloRwmi33Dqq6wuYWm82J8CDeHX30k1Mb3U/a6H3o?= =?us-ascii?Q?B5ZwOH9xg7pNfVfrqzgGIk64+TWndFbMj17Qlest0KRE42qE5JbQPIQKN+KH?= =?us-ascii?Q?wDendFkr0IpQ8I0yR/ORRkgL8D3xhoto/HWRQpI1dzo/wjGFfHH4tqBJAiSU?= =?us-ascii?Q?EIqg7Z181x0kv8ujO29pIMYgaUwxN5A+AlLJqmNe5Fet2BTzOV9QPrchWgDD?= =?us-ascii?Q?r7nzxU8Yzvollu8UCj4U7qNBsaXCSJS+tzr60jp77adrKyv4JUb79/NuEuim?= =?us-ascii?Q?adSM2OXBPXKpK1oOGptO8tojgz8ezK9oRCbP+MGDfkIXAw/qXhOilYbor7nx?= =?us-ascii?Q?krf9SHtZQZSNKRipoohBfZ5C?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f1c9113a-562f-4399-2191-08d8f9b282c0 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2021 10:47:16.8260 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: McEvIQPI/VXjFX0BXvOZYcjiXn96WD7zwq+awkrKuxc8KleJlh1eestUwc45Df16FKebc8SF1/KPfG9ogHWMxRrEXdl//qbeDW8RT0ltJB8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2452 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.113; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" thr->state variable mostly duplicates information that is already obvious from the other fields: thr->bs=3DNULL means DETACHED, thr->sioc!=3DNULL means SUCCESS. The only bit of information we need is "is thread running now or not". So, drop state and add simple boolean instead. It simplifies the logic a lot. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd.c | 122 +++++++++++++++------------------------------------- 1 file changed, 34 insertions(+), 88 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 9cee5b6650..5320a359f6 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -66,31 +66,16 @@ typedef enum NBDClientState { NBD_CLIENT_QUIT } NBDClientState; =20 -typedef enum NBDConnectThreadState { - /* No thread, no pending results */ - CONNECT_THREAD_NONE, - - /* Thread is running, no results for now */ - CONNECT_THREAD_RUNNING, - +typedef struct NBDConnectCB { /* - * Thread is running, but requestor exited. Thread should close - * the new socket and free the connect state on exit. + * Result of last attempt. Set in connect_thread_cb() on success. Sho= uld be + * set to NULL before starting the thread. */ - CONNECT_THREAD_RUNNING_DETACHED, - - /* Thread finished, results are stored in a state */ - CONNECT_THREAD_FAIL, - CONNECT_THREAD_SUCCESS -} NBDConnectThreadState; - -typedef struct NBDConnectCB { - /* Result of last attempt. Valid in FAIL and SUCCESS states. */ QIOChannelSocket *sioc; =20 QemuMutex mutex; /* All further fields are protected by mutex */ - NBDConnectThreadState state; /* current state of the thread */ + bool running; /* thread is running now */ =20 /* Link to NBD BDS. If NULL thread is detached, BDS is probably closed= . */ BlockDriverState *bs; @@ -354,10 +339,7 @@ static void nbd_init_connect_thread(BlockDriverState *= bs) =20 s->connect_thread =3D g_new(NBDConnectCB, 1); =20 - *s->connect_thread =3D (NBDConnectCB) { - .state =3D CONNECT_THREAD_NONE, - .bs =3D bs, - }; + *s->connect_thread =3D (NBDConnectCB) { .bs =3D bs }; =20 qemu_mutex_init(&s->connect_thread->mutex); } @@ -374,22 +356,21 @@ static void connect_thread_cb(QIOChannelSocket *sioc,= int ret, void *opaque) bool do_wake =3D false; BDRVNBDState *s =3D thr->bs ? thr->bs->opaque : NULL; =20 + /* We are in context of connect thread ! */ + qemu_mutex_lock(&thr->mutex); =20 + assert(thr->running); + assert(thr->sioc =3D=3D NULL); + assert(thr->bs || !thr->wait_connect); + + thr->running =3D false; thr->sioc =3D sioc; =20 - switch (thr->state) { - case CONNECT_THREAD_RUNNING: - thr->state =3D ret < 0 ? CONNECT_THREAD_FAIL : CONNECT_THREAD_SUCC= ESS; - do_wake =3D thr->wait_connect; - thr->wait_connect =3D false; - break; - case CONNECT_THREAD_RUNNING_DETACHED: - do_free =3D true; - break; - default: - abort(); - } + do_wake =3D thr->wait_connect; + thr->wait_connect =3D false; + + do_free =3D !thr->bs; /* detached */ =20 qemu_mutex_unlock(&thr->mutex); =20 @@ -416,25 +397,21 @@ nbd_co_establish_connection(BlockDriverState *bs) BDRVNBDState *s =3D bs->opaque; NBDConnectCB *thr =3D s->connect_thread; =20 + assert(!s->sioc); + qemu_mutex_lock(&thr->mutex); =20 - switch (thr->state) { - case CONNECT_THREAD_FAIL: - case CONNECT_THREAD_NONE: - thr->state =3D CONNECT_THREAD_RUNNING; - nbd_connect_thread_start(s->saddr, connect_thread_cb, thr); - break; - case CONNECT_THREAD_SUCCESS: + if (thr->sioc) { /* Previous attempt finally succeeded in background */ - thr->state =3D CONNECT_THREAD_NONE; + assert(!thr->running); s->sioc =3D thr->sioc; thr->sioc =3D NULL; goto out; - case CONNECT_THREAD_RUNNING: - /* Already running, will wait */ - break; - default: - abort(); + } + + if (!thr->running) { + thr->running =3D true; + nbd_connect_thread_start(s->saddr, connect_thread_cb, thr); } =20 thr->wait_connect =3D true; @@ -449,32 +426,8 @@ nbd_co_establish_connection(BlockDriverState *bs) =20 qemu_mutex_lock(&thr->mutex); =20 - switch (thr->state) { - case CONNECT_THREAD_SUCCESS: - case CONNECT_THREAD_FAIL: - thr->state =3D CONNECT_THREAD_NONE; - s->sioc =3D thr->sioc; - thr->sioc =3D NULL; - break; - case CONNECT_THREAD_RUNNING: - case CONNECT_THREAD_RUNNING_DETACHED: - /* - * Obviously, drained section wants to start. Report the attempt as - * failed. Still connect thread is executing in background, and its - * result may be used for next connection attempt. - */ - break; - - case CONNECT_THREAD_NONE: - /* - * Impossible. We've seen this thread running. So it should be - * running or at least give some results. - */ - abort(); - - default: - abort(); - } + s->sioc =3D thr->sioc; + thr->sioc =3D NULL; =20 out: qemu_mutex_unlock(&thr->mutex); @@ -506,26 +459,19 @@ static void nbd_co_establish_connection_cancel(BlockD= riverState *bs, =20 qemu_mutex_lock(&thr->mutex); =20 - if (thr->state =3D=3D CONNECT_THREAD_RUNNING) { - /* We can cancel only in running state, when bh is not yet schedul= ed */ - if (thr->wait_connect) { - thr->wait_connect =3D false; - do_wake =3D true; - } - if (detach) { - thr->bs =3D NULL; - thr->state =3D CONNECT_THREAD_RUNNING_DETACHED; - s->connect_thread =3D NULL; - } - } else if (detach) { - do_free =3D true; + do_wake =3D thr->wait_connect; + thr->wait_connect =3D false; + + if (detach) { + s->connect_thread =3D NULL; + thr->bs =3D NULL; + do_free =3D !thr->running; } =20 qemu_mutex_unlock(&thr->mutex); =20 if (do_free) { g_free(thr); - s->connect_thread =3D NULL; } =20 if (do_wake) { --=20 2.29.2