{"id":2229891,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2229891/?format=json","web_url":"http://patchwork.ozlabs.org/project/hostap/patch/20260428200639.40243-84-andrei.otcheretianski@intel.com/","project":{"id":22,"url":"http://patchwork.ozlabs.org/api/1.1/projects/22/?format=json","name":"HostAP Development","link_name":"hostap","list_id":"hostap.lists.infradead.org","list_email":"hostap@lists.infradead.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260428200639.40243-84-andrei.otcheretianski@intel.com>","date":"2026-04-28T20:06:24","name":"[83/97] wpa_supplicant: Send response when pairing is aborted","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"ab55012359a83d636b0ff812ed2714af8f2f1082","submitter":{"id":62065,"url":"http://patchwork.ozlabs.org/api/1.1/people/62065/?format=json","name":"Andrei Otcheretianski","email":"andrei.otcheretianski@intel.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/hostap/patch/20260428200639.40243-84-andrei.otcheretianski@intel.com/mbox/","series":[{"id":501927,"url":"http://patchwork.ozlabs.org/api/1.1/series/501927/?format=json","web_url":"http://patchwork.ozlabs.org/project/hostap/list/?series=501927","date":"2026-04-28T20:05:05","name":"NAN: Group keys support, schedule update and more","version":1,"mbox":"http://patchwork.ozlabs.org/series/501927/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2229891/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2229891/checks/","tags":{},"headers":{"Return-Path":"\n <hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=15Xo5Mkm;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256\n header.s=casper.20170209 header.b=Yrv4MbjI;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=VGJfWNSc;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g4sB138cwz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 06:15:21 +1000 (AEST)","from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wHopV-00000002MA1-3Glm;\n\tTue, 28 Apr 2026 20:14:50 +0000","from casper.infradead.org ([2001:8b0:10b:1236::1])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wHokz-00000002FqW-2gTH\n\tfor hostap@bombadil.infradead.org;\n\tTue, 28 Apr 2026 20:10:09 +0000","from mgamail.intel.com ([198.175.65.16])\n\tby casper.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wHokv-00000004NYt-3Wgr\n\tfor hostap@lists.infradead.org;\n\tTue, 28 Apr 2026 20:10:08 +0000","from fmviesa001.fm.intel.com ([10.60.135.141])\n  by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Apr 2026 13:09:23 -0700","from iapp347.iil.intel.com (HELO 87c02287900a.iil.intel.com)\n ([10.167.28.6])\n  by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Apr 2026 13:09:22 -0700"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=v0/+akcHwAF8Ko4OEkxhHf/ei+8CzUK1kexAaM3iXWM=; b=15Xo5MkmbuxtDp\n\tyMq6TLQKw0PRCS02qynaZ0MHtfMVra63d4iAR8jh9mIHdLtq/3lxqghEIsoS6DT3DqBHz3QOehVjI\n\tBDXu1cUIZqgUFEhrBl6XrtWWWHjspkrOEqeIa5u9ymHj35Kb12Xaj7lHyeL8FZ1Kbj2AXyvgyT4f4\n\tuUEK8PQiX7I709Oz/pi/1mVhraVyv7Fii3XH03JVXrxtT9I5eI9HBYxkytu0hczt/QaRrY30SrvtT\n\tWI+iFPJ2LinJ8rW41yFEOjWjMGySbcytEC4KJA/kU+4nnRdiqjpkS3eFAf0K4PJI+vxIgxCJ8fVwE\n\tjwiys+fphUA92/E1ZdEA==;","v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version:\n\tReferences:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:\n\tContent-Type:Content-ID:Content-Description;\n\tbh=4uzigmBNssWUWDCVE0DhOpPLYGgnjJddX2RsdIWwCsQ=; b=Yrv4MbjI5nxYwz6ejyFyJAtTXj\n\tOmzzTrYE8fNqB+A+/qwZQLc/QfJucCJqEd+tXvuga5RphRiw63R7o+cmds+pv9yet4asYk4CObKkQ\n\te48YQx+0emaQKfwJc9T1NTiFm9N4zUsj3Y9EQzOdz6UhztHwQSlUYSoh5pbGcphWw3dgGQub26clQ\n\t0g5YklCJEphyskE8r549eoZ37Qj46u+6Xv4QgKn10ICWdDweOySghWU47I4xbmnO97MFxCs5AecN5\n\tWnoLlia1EcqeCEJavhLOvdn6Gwj9/F1Q20YlspM7P/DiYhM7xiqeMvQr2UnUGFu+7KErSwT7KWxiE\n\toWbJ4XpA==;","v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1777407005; x=1808943005;\n  h=from:to:cc:subject:date:message-id:in-reply-to:\n   references:mime-version:content-transfer-encoding;\n  bh=AqVNWw/Cr8j5McANKpV4OOEVYH+f5vS2/X8nskVh2Ek=;\n  b=VGJfWNScXHgEu+NGvsjqIiteTJgfHgKtm1tVwkPt1lNMABUCnHG/MKcx\n   GrqD1Gq0YuaOt4BzTggvKDqrrSizkykaJpXvbCTfG68zukinipDLe5nY6\n   iwqXD724nVno4D+bhxQL9V2zWMPPFdYpICva8qUsW23ox+zm0VpwcjTdW\n   dxCJNJ3Z8Fw3YJlS42Deyqw/go577FN5P4X76yd8QznUJR1JfCER0DAya\n   +zsjcQAyz1LIbD0RSN/ND9PxR4FiCXhSYhWplvN2a48S8lTyMboYu+/qB\n   YrnaUlPIm6M7WtUteKWhpJnqHRueVT2n590fh+I3tqGnPe04UzFfo8j7D\n   w==;"],"X-CSE-ConnectionGUID":["WVNF6RKZTeGQHptR08omBw==","7T+WaFJ0TuGDxg5RNEimeg=="],"X-CSE-MsgGUID":["REHqZnvqTX6PMyt8KTFEew==","kureBlUGT7S5h3EvU9NDlA=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11770\"; a=\"78519573\"","E=Sophos;i=\"6.23,204,1770624000\";\n   d=\"scan'208\";a=\"78519573\"","E=Sophos;i=\"6.23,204,1770624000\";\n   d=\"scan'208\";a=\"257610831\""],"X-ExtLoop1":"1","From":"Andrei Otcheretianski <andrei.otcheretianski@intel.com>","To":"hostap@lists.infradead.org","Cc":"vamsin@qti.qualcomm.com,\n\tmaheshkkv@google.com,\n\tAvraham Stern <avraham.stern@intel.com>","Subject":"[PATCH 83/97] wpa_supplicant: Send response when pairing is aborted","Date":"Tue, 28 Apr 2026 23:06:24 +0300","Message-ID":"<20260428200639.40243-84-andrei.otcheretianski@intel.com>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260428200639.40243-1-andrei.otcheretianski@intel.com>","References":"<20260428200639.40243-1-andrei.otcheretianski@intel.com>","MIME-Version":"1.0","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20260428_211006_315106_AA5A891F ","X-CRM114-Status":"GOOD (  17.48  )","X-Spam-Score":"-4.4 (----)","X-Spam-Report":"SpamAssassin version 4.0.1 on casper.infradead.org summary:\n Content analysis details:   (-4.4 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,\n                             medium trust\n                             [198.175.65.16 listed in list.dnswl.org]\n  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record\n -0.0 SPF_PASS               SPF: sender matches SPF record\n -0.1 DKIM_VALID             Message has at least one valid DKIM or DK\n signature\n -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from\n                             envelope-from domain\n  0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n not necessarily valid\n -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from\n author's\n                             domain\n -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n                             [score: 0.0000]\n -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender","X-BeenThere":"hostap@lists.infradead.org","X-Mailman-Version":"2.1.34","Precedence":"list","List-Id":"<hostap.lists.infradead.org>","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/hostap>,\n <mailto:hostap-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/hostap/>","List-Post":"<mailto:hostap@lists.infradead.org>","List-Help":"<mailto:hostap-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/hostap>,\n <mailto:hostap-request@lists.infradead.org?subject=subscribe>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"Hostap\" <hostap-bounces@lists.infradead.org>","Errors-To":"hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"},"content":"From: Avraham Stern <avraham.stern@intel.com>\n\nWhen the user calls pairing abort, send a response to the peer with\nfailure so it won't keep waiting for a response.\nModify the pairing abort hwsim test so that only the publisher aborts\nthe pairing in response to the pairing request. The subscriber should\nreceive pairing result with failure status.\n\nSigned-off-by: Avraham Stern <avraham.stern@intel.com>\n---\n src/nan/nan.c           |  21 ++++++++\n src/nan/nan_i.h         |   1 +\n src/nan/nan_ndl.c       |   6 +--\n src/nan/nan_pairing.c   | 115 ++++++++++++++++++++++++++++++----------\n tests/hwsim/test_nan.py |   9 +++-\n 5 files changed, 118 insertions(+), 34 deletions(-)","diff":"diff --git a/src/nan/nan.c b/src/nan/nan.c\nindex dafc59e250..7badf419cf 100644\n--- a/src/nan/nan.c\n+++ b/src/nan/nan.c\n@@ -1695,6 +1695,27 @@ int nan_configure_peer_schedule(struct nan_data *nan, struct nan_peer *peer,\n }\n \n \n+int nan_clear_peer_schedule(struct nan_data *nan, struct nan_peer *peer)\n+{\n+\tint ret;\n+\n+\twpa_printf(MSG_DEBUG, \"NAN: Clear peer schedule, peer->configured=%d\",\n+\t\t   peer->configured);\n+\n+\tif (!peer->configured)\n+\t\treturn 0;\n+\n+\tret = nan->cfg->set_peer_schedule(nan->cfg->cb_ctx, peer->nmi_addr,\n+\t\t\t\t\t  false, 0, peer->info.seq_id, 0, NULL,\n+\t\t\t\t\t  NULL);\n+\tif (ret)\n+\t\twpa_printf(MSG_DEBUG, \"NAN: Failed to clear peer schedule\");\n+\n+\tpeer->configured = false;\n+\treturn 0;\n+}\n+\n+\n /**\n  * nan_process_followup - Process a received NAN Follow-up Action frame\n  * @nan: NAN module context from nan_init()\ndiff --git a/src/nan/nan_i.h b/src/nan/nan_i.h\nindex 9ce0b99789..501d5f17f9 100644\n--- a/src/nan/nan_i.h\n+++ b/src/nan/nan_i.h\n@@ -847,6 +847,7 @@ int nan_configure_peer_schedule(struct nan_data *nan, struct nan_peer *peer,\n \t\t\t\tconst struct nan_schedule *local_sched);\n bool nan_is_ndpe_supported(struct nan_data *nan, struct nan_peer *peer);\n void nan_add_kde_hdr(struct wpabuf *buf, u32 kde, size_t data_len);\n+int nan_clear_peer_schedule(struct nan_data *nan, struct nan_peer *peer);\n #ifdef CONFIG_PASN\n int nan_nira_get_tag_nonce(const struct nan_config *nan, u8 *nonce, u8 *tag);\n void nan_pairing_deinit_peer(struct nan_peer *peer);\ndiff --git a/src/nan/nan_ndl.c b/src/nan/nan_ndl.c\nindex 0eb7c798fb..c09b1f9fba 100644\n--- a/src/nan/nan_ndl.c\n+++ b/src/nan/nan_ndl.c\n@@ -119,11 +119,7 @@ static void nan_ndl_clear(struct nan_data *nan, struct nan_peer *peer)\n \t\t   MAC2STR(peer->nmi_addr),\n \t\t   nan_ndl_state_str(peer->ndl->state), peer->ndl->state);\n \n-\tif (peer->configured) {\n-\t\tnan->cfg->set_peer_schedule(nan->cfg->cb_ctx, peer->nmi_addr,\n-\t\t\t\t\t    false, 0, 0, 0, NULL, NULL);\n-\t\tpeer->configured = false;\n-\t}\n+\tnan_clear_peer_schedule(nan, peer);\n \n \tos_free(ndl->ndc_sched);\n \tndl->ndc_sched = NULL;\ndiff --git a/src/nan/nan_pairing.c b/src/nan/nan_pairing.c\nindex 00df9d5b96..f201cbe7aa 100644\n--- a/src/nan/nan_pairing.c\n+++ b/src/nan/nan_pairing.c\n@@ -93,32 +93,6 @@ void nan_pairing_deinit_peer(struct nan_peer *peer)\n }\n \n \n-int nan_pairing_abort(struct nan_data *nan_data, const u8 *peer_addr)\n-{\n-\tstruct nan_peer *peer;\n-\n-\tpeer = nan_get_peer(nan_data, peer_addr);\n-\tif (!peer) {\n-\t\twpa_printf(MSG_DEBUG,\n-\t\t\t   \"NAN: Pairing abort: Peer \" MACSTR \" not found\",\n-\t\t\t   MAC2STR(peer_addr));\n-\t\treturn -1;\n-\t}\n-\n-\tif (!peer->pairing.pasn && !peer->pairing.pending_auth1) {\n-\t\twpa_printf(MSG_DEBUG,\n-\t\t\t   \"NAN: Pairing abort: No PASN in progress with peer \"\n-\t\t\t   MACSTR, MAC2STR(peer_addr));\n-\t\treturn -1;\n-\t}\n-\n-\twpa_printf(MSG_DEBUG, \"NAN: Aborting pairing with peer \" MACSTR,\n-\t\t   MAC2STR(peer_addr));\n-\tnan_pairing_deinit_peer(peer);\n-\treturn 0;\n-}\n-\n-\n static bool nan_pairing_is_supported(struct nan_data *nan_data,\n \t\t\t\t     struct nan_peer *peer, u8 auth_mode)\n {\n@@ -846,12 +820,20 @@ int nan_pairing_pasn_auth_tx_status(struct nan_data *nan, const u8 *data,\n \t\treturn -1;\n \n \tpeer = nan_get_peer(nan, mgmt->da);\n-\tif (!peer || !peer->pairing.pasn) {\n+\tif (!peer) {\n \t\twpa_printf(MSG_DEBUG, \"NAN: Pairing: Peer not found \" MACSTR,\n \t\t\t   MAC2STR(mgmt->da));\n \t\treturn -1;\n \t}\n \n+\t/* Pairing was rejected. Clear peer schedule if no active NDPs */\n+\tif (!peer->pairing.pasn) {\n+\t\tif (dl_list_empty(&peer->ndps) && !peer->ndp_setup.ndp)\n+\t\t\tnan_clear_peer_schedule(nan, peer);\n+\n+\t\treturn 0;\n+\t}\n+\n \tpasn = peer->pairing.pasn;\n \n \tret = wpa_pasn_auth_tx_status(pasn, data, data_len, acked);\n@@ -1548,3 +1530,82 @@ void nan_pairing_unpair_peer(struct nan_data *nan_data, const u8 *peer_addr)\n \tpeer->pairing.flags &= ~NAN_PAIRING_FLAG_PAIRED;\n \tnan_pairing_deinit_peer(peer);\n }\n+\n+\n+int nan_pairing_abort(struct nan_data *nan_data, const u8 *peer_addr)\n+{\n+\tstruct nan_peer *peer;\n+\tint cipher;\n+\tstruct wpabuf *extra_ies;\n+\tint ret = -1;\n+\n+\tpeer = nan_get_peer(nan_data, peer_addr);\n+\tif (!peer) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing abort: Peer \" MACSTR \" not found\",\n+\t\t\t   MAC2STR(peer_addr));\n+\t\treturn -1;\n+\t}\n+\n+\tif (!peer->pairing.pasn && !peer->pairing.pending_auth1) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing abort: No PASN in progress with peer \"\n+\t\t\t   MACSTR, MAC2STR(peer_addr));\n+\t\treturn -1;\n+\t}\n+\n+\twpa_printf(MSG_DEBUG, \"NAN: Aborting pairing with peer \" MACSTR,\n+\t\t   MAC2STR(peer_addr));\n+\n+\tif (!peer->pairing.pending_auth1) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing abort: No pending Auth1 frame for peer \"\n+\t\t\t   MACSTR, MAC2STR(peer_addr));\n+\t\tret = 0;\n+\t\tgoto done;\n+\t}\n+\n+\t/* The auth mode and cipher are not important when rejecting.\n+\t * Just make sure to use a supported cipher so\n+\t * nan_pairing_pasn_initialize won't fail.\n+\t */\n+\tcipher = (nan_data->cfg->pairing_cfg.cipher_suites &\n+\t\t  NAN_PAIRING_PASN_128) ? WPA_CIPHER_CCMP : WPA_CIPHER_GCMP_256;\n+\n+\tif (nan_pairing_pasn_initialize(nan_data, peer, NAN_PASN_AUTH_MODE_PASN,\n+\t\t\t\t\tcipher, \"\",\n+\t\t\t\t\tNAN_PAIRING_ROLE_RESPONDER)) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Initialize failed\");\n+\t\tgoto done;\n+\t}\n+\n+\textra_ies = wpabuf_alloc(NAN_ELEMENT_MAX_SIZE);\n+\tif (!extra_ies) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Failed to allocate buffer for extra IEs\");\n+\t\tgoto done;\n+\t}\n+\n+\tnan_pairing_prepare_pasn_elems(nan_data, peer, extra_ies,\n+\t\t\t\t       peer->pairing.peer_instance_id,\n+\t\t\t\t       NAN_PASN_AUTH_MODE_PASN);\n+\tpasn_set_extra_ies(peer->pairing.pasn, wpabuf_head_u8(extra_ies),\n+\t\t\t   wpabuf_len(extra_ies));\n+\twpabuf_free(extra_ies);\n+\n+\tnan_configure_peer_schedule(nan_data, peer, &nan_data->sched);\n+\n+\tret = handle_auth_pasn_resp(peer->pairing.pasn, nan_data->cfg->nmi_addr,\n+\t\t\t\t    peer_addr, NULL,\n+\t\t\t\t    WLAN_STATUS_UNSPECIFIED_FAILURE);\n+\tif (ret < 0) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing abort: Failed to send response\");\n+\t\tnan_clear_peer_schedule(nan_data, peer);\n+\t}\n+\n+done:\n+\tnan_pairing_deinit_peer(peer);\n+\treturn ret;\n+}\ndiff --git a/tests/hwsim/test_nan.py b/tests/hwsim/test_nan.py\nindex 53ceb3bad9..8b3dff57d8 100644\n--- a/tests/hwsim/test_nan.py\n+++ b/tests/hwsim/test_nan.py\n@@ -1534,11 +1534,16 @@ def test_nan_pair_abort(dev, apdev, params):\n         if ev_pub is None:\n             raise Exception(\"PASN pairing request not seen on publisher\")\n \n-        if \"OK\" not in sub.pair_abort(paddr):\n-            raise Exception(\"NAN_PAIR_ABORT failed on subscriber\")\n         if \"OK\" not in pub.pair_abort(saddr):\n             raise Exception(\"NAN_PAIR_ABORT failed on publisher\")\n \n+        # The subscriber should get a failure result\n+        ev_sub = sub.wpas.wait_event([\"NAN-PAIRING-STATUS\"], timeout=5)\n+        if ev_sub is None:\n+            raise Exception(\"PASN result not seen on subscriber\")\n+        if \"status=failure\" not in ev_sub:\n+            raise Exception(\"NAN pairing failed status not seen on subscriber after abort\")\n+\n         # After abort, we should be able to restart pairing successfully\n         sub.pairing_request(pub, sid, pid, \"SAE\", responder=False, password=\"password123\")\n         ev_pub = pub.wpas.wait_event([\"NAN-PAIRING-REQUEST\"], timeout=2)\n","prefixes":["83/97"]}