Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mgfO3-0005qP-JB for pgsql-hackers@arkaria.postgresql.org; Sat, 30 Oct 2021 03:50:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mgfO1-00024Y-7K for pgsql-hackers@arkaria.postgresql.org; Sat, 30 Oct 2021 03:50:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mgfO0-00024O-B9 for pgsql-hackers@lists.postgresql.org; Sat, 30 Oct 2021 03:50:28 +0000 Received: from esa10.fujitsucc.c3s2.iphmx.com ([68.232.159.247]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mgfNw-0001lc-Mq for pgsql-hackers@lists.postgresql.org; Sat, 30 Oct 2021 03:50:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1635565824; x=1667101824; h=from:to:subject:date:message-id:mime-version; bh=bEotznFRlk3yA7x06v+1krADoiVDusJ9/OItiBMvdAg=; b=qd8CTmZQQlFzlDxqwl1gyjMKYPpb5TqW5QA5YzdKZazM6lK3xkrzm5lo KeyK6hUcJndsA2KOmms92YSBn6EdzJeT9kan5LCahs+ScnUWjrI93iZih fsJtGN5Jhbz1AWHjRLwYhss054M+V8XQD1uEVZ6C/GB47bOcRubVbEZ+Y u79NzBbcfFY3cAtEOdCeohSMnQSoDeZEip/skN/7n6YXxroAWTHtTXLEN eszHhSZazKs8MuHSxn2ygzuh+uIYimQZGMV3dwH54yrAMEXzB+WhRlVzt LTh2XMCLoDEl11t1ZkHx9WkNDixsbbeitBfgnCleCqP+u/2dzbeQPYB+E g==; X-IronPort-AV: E=McAfee;i="6200,9189,10152"; a="42548265" X-IronPort-AV: E=Sophos;i="5.87,194,1631545200"; d="scan'208";a="42548265" Received: from mail-ty1jpn01lp2050.outbound.protection.outlook.com (HELO JPN01-TY1-obe.outbound.protection.outlook.com) ([104.47.93.50]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Oct 2021 12:50:18 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fcSEKkS47lD2OsBPfwLlaQ+i1gsdxrn7wZ80GaakwQ/LdQc5sEhe4otEQtqT91id0ReUnED+hnDCWjMB34+5suqDvdS0n5BvV+DrwhedzhWdZ5LstyK4LHbS5pM08Bb0w6zw14uFR+d0emwioL5qF6x2+z3wC81igH27JMwaGtkZBb4kkUtCXXscUc+7m0zoIaV5UyVlRbAKLq2+U0RTKPf2JCZJ26O3geOjQc4bJXH5tVHdaQ4jiv+6+FWpWiekQK8V34L/0GuQ7bPtiiF6hJnfmJSQfvcA7OAT3OeBXLt8nUrFHADr+3WlVTNLoAY3fn/TcMWgwYM05qN44qJlKg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=C00YjqcgbBJCq4Xqo1P1QGoI0WhklM28z8mBGOLJCoA=; b=f7klT1ehcUAxDjCDj8oceXRmgIbXIm0/KSTZaC3sF3lMSNx6qligT9kR2BzkyyrQ0G+xi4NxuBUmipEPhLnlweOAjsFjlNyqJRwfRGYtjR1B9XMiu8oQnh3x5UKwvQzaWu3XUi1Kl2KRzghdbGdCDcn6noLFKDYb1JMKEGJcbMcwsKtTW0ABszQzIcZ2R38ooYFKfwspfjy2iKYdDeIlRtiWdBcaOl/p9KpaT50Mn/yfMyn03vwpoZxYV6dVk+9JftviCBPsZ88WSLRnxJPjbOgw69VYchukDctz/ODjTz58Vv/ax+pMzNIiCqa2Sxfr2MBYtsPfNNIbaffeMT+/Lg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C00YjqcgbBJCq4Xqo1P1QGoI0WhklM28z8mBGOLJCoA=; b=lrFdF4BgQbev5RImo7W5bhh2x7fIV4f3pNgXAfV364nkpJryA7dffeTFY36frSsj0ij1F4C3SCooyDDceZnlC16L8kzwlIfAwtHtbpOG9CCFkL4Rpl0GDbx+ZRZABXZijN6rSt4idHp3S+XeR1/YGMT3wFw2l1dgz3rRpaPBx1E= Received: from TYAPR01MB5866.jpnprd01.prod.outlook.com (2603:1096:404:8056::13) by TY2PR01MB4265.jpnprd01.prod.outlook.com (2603:1096:404:d3::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14; Sat, 30 Oct 2021 03:50:15 +0000 Received: from TYAPR01MB5866.jpnprd01.prod.outlook.com ([fe80::30b0:3a2a:f088:165b]) by TYAPR01MB5866.jpnprd01.prod.outlook.com ([fe80::30b0:3a2a:f088:165b%7]) with mapi id 15.20.4649.017; Sat, 30 Oct 2021 03:50:15 +0000 From: "kuroda.hayato@fujitsu.com" To: "pgsql-hackers@lists.postgresql.org" Subject: [Proposal] Add foreign-server health checks infrastructure Thread-Topic: [Proposal] Add foreign-server health checks infrastructure Thread-Index: AdfNNjec7xk22WznTt+52qg+YpAmvA== Date: Sat, 30 Oct 2021 03:50:15 +0000 Message-ID: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: lists.postgresql.org; dkim=none (message not signed) header.d=none;lists.postgresql.org; dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 839298b7-6440-4eca-d466-08d99b58623a x-ms-traffictypediagnostic: TY2PR01MB4265: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1850; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5MHEosxi9pjoP1Bk2hMzTPqHSC7H5kXzjn5oorSNzFxhrPZBC7jP+ZGXNoIFXSxYJqR0MJoGx/5qPI3/mxWJEc2bnAyYiPPyjKPye2hF8VvHAL2cUa9NhgbxrtUVamFFdaGlQJQypFkr2V4Mo7P070cUZEfMLA7MB7/+KaE4W0BRmML6j2MgOmatuaUo+N54/3VzjZKg8MA7rsmsWQp/rGtG8Pgi7z+AnlZX1ZtyhXE8xA7zXL1SvgyCYEFkCy0lcwczEPqktGI5Y4Rx4p7SsFxd5g4hZD9RtQPWpuMTSJke4M/4Ozdk/w2ZvDTXKCrZyOYENmYm9B+Z0KBqdr75HeMV+DO3EKV+MyopK6m8QDGdF2cLAsMYlKsVC5GoVm5RS7QAkFt7gpl3/5eV+WpSICos4aXdtoQioVdja+is6HrySMyZ0MqiE792vXZdeIpC4h/P01eYLuBPXk45TlADgX1Igpxbw1dv1Ff0PMChamJj1whlHJs6mwpfg1zx1RxyqHa5UVUxhFwB1fKd7h/KkoFrIaXcXXtq+w+RCM1xmPBCAlE8EdqEzm1oCpDlMIgkJQ9Wa9d4kgu8x/fuZYN9ulOVXiscn3x9VaIiEq5pBektgrlPrYWQaphLl6RgotdWyl9N38r7+CwRbgSwtN3Uzyg++50j0mwYjos3/liwavOKcOY+TpY9R0zWZyuPvlLwayGy/jCR8GIer2FFBH30EeWEizfp4n+K92uCLa6bMiFNCMfp2G/SpJbd/ytxQltvLzTFhFcMeJWpgWn2yRSdOgiyRvWEUCILer/I8QtFUbY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR01MB5866.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(5660300002)(6506007)(7696005)(52536014)(66476007)(6916009)(71200400001)(122000001)(86362001)(83380400001)(38100700002)(85182001)(316002)(8936002)(64756008)(508600001)(33656002)(38070700005)(186003)(9686003)(8676002)(55016002)(26005)(2906002)(76116006)(66946007)(966005)(82960400001)(99936003)(66556008)(66446008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?N2tpZjVaSm9wZVprbTlIM3FxZUcxYUxCWDhJY055MEJaZUlHMFJBTzNw?= =?iso-2022-jp?B?a2svTngxT1BNMk1RQ2NrYXhHV1d1TDhnTkNwSVd6bWVXN2dpRXpwVVUz?= =?iso-2022-jp?B?ZE01WG5Wa2xNb3BkN2hyVEhpRjY2Z21aUVduUklCZjNML2R6ZTBPTjJk?= =?iso-2022-jp?B?WGEvWWlMNlZoamQydEk3VlZzQzc2b2N4eks5SHFqWVpQZ3JuQjhzK29a?= =?iso-2022-jp?B?djlBZ3ZMbFpPUDNHMEZwV2E0VmZmV3hOakNEa2gvdFJMOTlTaU8rL1F5?= =?iso-2022-jp?B?MWZBODhLdTlDdjBVQjhGNUx4T1BvdnM3cGw4UFJreXhBQmQwaHJlZ21B?= =?iso-2022-jp?B?YVUwQlhkZEJ0L0U5SGFsL1VhUGFWMHlrR3FvRGcxVnVQMUJLdVNmK2RC?= =?iso-2022-jp?B?a0ZlMk5VeHRVTWFKdVc2UDNkTExwYlFQSG10QnBqc0grb0VGUk05SjZ1?= =?iso-2022-jp?B?RWhDZUNvVVA2ZHRnNlp6TFc3a0RMR3IyRkNyZnZ2SVFPd3ZrLysyYjRE?= =?iso-2022-jp?B?WGVSQU0wcm01ZFE5dy9CK1dtai85VmdZeW9tSy9rVk1reXVUYWhvMTIx?= =?iso-2022-jp?B?UXV0OFF0TnJkdWRGNEYrSndObFU4MWJBaWtGaTlOMTgrbFpONUpwMnZC?= =?iso-2022-jp?B?ejhPYm82Ky8vRWJVMWJ3eE9IK2JobTBmVVlpaUtpWmtZdGo4Tis3YUx3?= =?iso-2022-jp?B?QVN1Q3FPbFNSdlcrSXBUNXpSaVNPSHVSNGMvaWNPZzVTeDVIb2VtQ0hr?= =?iso-2022-jp?B?bnc4U01lamhzK1czQ1E4TXozNmRIRkpRbC9YNFA1R3Rrek1kS3l1Sy9m?= =?iso-2022-jp?B?NFVtYTkvSDNmTVovdFNnWW9HY0dHV3dKc01ET0V6eUUrV1J2OEZUTE1x?= =?iso-2022-jp?B?M1FqU3IyWkRJY01sQUxZNlFicXQwS0ZRVWU1YlRreXphTnd3aFE3dUda?= =?iso-2022-jp?B?K0RoYXRpWHdkZnp2VFQwM0VvVHIwRDN5Ri9YSWliZXovWlNod25VdzFu?= =?iso-2022-jp?B?TEh1cXlZVTBtTFBWNEZ6RTRGZFU1Y1BkT2RmSEE0U3JRc2N0UXpaYlJB?= =?iso-2022-jp?B?d3A2QXZyMmZYOWhuVi9tQ3ZLZ2VHRGh1eEpZUUdyTGhOUkhrSGhKOFV4?= =?iso-2022-jp?B?WDl5L1VYaEhZSjhlUkh6empLaGZwNWY2cDlhV3pYUU1RMEZhUHZmTjZI?= =?iso-2022-jp?B?amN3eGlmQVNCR3M4a2xsVHl0RVBzZzVERW5qa3BvaVN4ckhHNXBnZ1g2?= =?iso-2022-jp?B?ZHZIZDN3cnVDUExiM2c3T0pyZDdXakQ5cVkwYVNibjJpekxFczZsUSta?= =?iso-2022-jp?B?cml3MEVySmcyd3lrVHVNSVVXS0F0UXBQb0dqTmhZOUdUZVhlYkNFSU5z?= =?iso-2022-jp?B?dmVyWEZ2MVNPL0E5RUlHWmJnNjJPMEEza2hVbVVoUXpXYmMzbVlJZkEw?= =?iso-2022-jp?B?a2c1WGNRMW45VlhMN2pQNjNXM2ZpdGpxOVVudUh5THpBNHBzLzM5MDlT?= =?iso-2022-jp?B?K3dGOXQ1TFh4dmlDUnlPODMwOHFidk16a1dCSVo4WDQ1VVlRWGNwMjBN?= =?iso-2022-jp?B?eHJwNjZhNTJnZlRWdmJ1eno2V2haY0JxVnNoQ1kxNm44Q2dNcWJoMGha?= =?iso-2022-jp?B?d3prbHB4RHd0aXBUZ1R2QUZza0l4Q2ZiaWpvdVNjZlU2MTRpQTJsWGV1?= =?iso-2022-jp?B?WlMzaDZod3VFd084bW0yVm0wbVg1KzVEdktXa09TWmxSVStQMC9Ta2Ft?= =?iso-2022-jp?B?eldLUjhPaGMyTDNuK1E5a092SUpYYUxXUzA5bm1iTjV4S0YzOGdtbTds?= =?iso-2022-jp?B?WW5GSVpnSUxKZXZKZnZES3JwM3QrSWYvVjdvbXFCWkZxUnM5bFpKY0ZQ?= =?iso-2022-jp?B?bTRHV0dzYjE0SjRRaVlqdTZHb0UzRTRiNmFSaDVHUzA5dVZ1anVEZEgy?= =?iso-2022-jp?B?enlMTTRpMmF3dzlJdldtaWVibnNPcjBwcHN4UHBaTHFGOGVpUWNRSWNw?= =?iso-2022-jp?B?empPQzQ2Z3l0SEJCWEFqTzB2RmhFcVkxejErbFJUdVRTQ3UyYW1ubndv?= =?iso-2022-jp?B?Uk9UVmMvek1kZHR4cTJDbGZkdVV2UEFzclJlazB4ejZpblYyb2hkWWtN?= =?iso-2022-jp?B?RzQvMHNjVUQxYU5rTmc3ZEpqMngvKzAwREcybXpqWTFqb1dWY3ZwOGRH?= =?iso-2022-jp?B?RGNZRUsxUmE3aDIyOGhOekhmeHZrZGl1UDE2bTlncVhCaUlGTWNtOEpx?= =?iso-2022-jp?B?cnVnVWtCUGVJY2hyQjdIenpsNmszU0lzc1hZUDhlcHh0OGYxMmxVTndJ?= =?iso-2022-jp?B?K3dYQlNOeGQ4VzVOUTFxdGE0WXFQMlJqWGg2QkJVektUV0JESDJVRlZN?= =?iso-2022-jp?B?cHVCYzIxU2N0YzhLZ2I4WVU0VHVyUnVLdGh3c3NtVjhjM3hpRzUrU3Jt?= =?iso-2022-jp?B?OGp2cU5BPT0=?= Content-Type: multipart/mixed; boundary="_002_TYAPR01MB58662809E678253B90E82CE5F5889TYAPR01MB5866jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB5866.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 839298b7-6440-4eca-d466-08d99b58623a X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Oct 2021 03:50:15.5652 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5Nnio8Xdb8RUNGgn1eFJ6GvVYCTmfJN6wEbxfjZkSu2CsbQ8ziCyAlNU9bMpBiFU+lz+PCIsJhGWptWcMgmk0dSro2UBRATQfTiv/4nCPS0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY2PR01MB4265 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_TYAPR01MB58662809E678253B90E82CE5F5889TYAPR01MB5866jpnp_ Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Dear Hackers, I want to propose the feature that checks the health of foreign servers.=20 As a first step I want to add an infrastructure for periodical checking to = PostgreSQL core. Currently this is the WIP, it does not contain docs. ## Background=20 Currently there is no way to check the status of an foreign server in Postg= reSQL. If an foreign server's postmaster goes down, or if the network between serv= ers is lost, the backend process will only detect these when it uses the connection corr= esponding to that foreign server. Consider a workload that updates data on an foreign server only at the begi= nning of a transaction, and runs a lot of local SQLs. Even if the network is disconnected immediate= ly after accessing the foreign server, the backend process will continue to execute local SQLs without realizing i= t. The process will eventually finish to execute SQLs and try to commit. Only then will it realize that the foreign server cannot be connect and wil= l abort the transaction. This situation should be detected as soon as possible because it is impossible to commit a transaction when the foreign server go= es down. This can be more of a problem if you have system-wide downtime requirements= . That's why I want to implement the health-check feature to postgres. ## Design In general, PostgreSQL can have a variety of RDBMSs as foreign servers, so the core cannot support all of them. Therefore, I propose a method to leave the monitoring of the foreign server= to each FDW extensions and register it as a callback function on the body side. The attached patch adds this monitoring infrastructure to core. Within the callback functions, it is expected that each FDWs will check the state of the connection they hold and call er= eport (ERROR) if it cannot connect to someone. Of course, you can also have the callback function return false. There is no particular reason to choose the current method. Callback functions will be called periodically. ## Implementation This patch introduces a new timeout and a new GUC parameter. GUC controls t= he timeout interval. The timeout takes effect when the callback function is first registered, before each SQL command is executed, and at the end of the timeout. This implementation is based on the client_connection_check_interval and ot= her timeouts. ## Further work As the next step I have a plan to implement the callback function to postgr= es_fdw. I already made a PoC, but it deeply depends on the following thread: https://commitfest.postgresql.org/35/3098/ I also want you to review the postgres_fdw part, but I think it should not be attached because cfbot cannot understand such = a dependency and will throw build error. Do you know how to deal with them in this case? Your comments and suggestions are very welcome. Best Regards, Hayato Kuroda FUJITSU LIMITED --_002_TYAPR01MB58662809E678253B90E82CE5F5889TYAPR01MB5866jpnp_ Content-Type: application/octet-stream; name="v01_add_checking_infrastracture.patch" Content-Description: v01_add_checking_infrastracture.patch Content-Disposition: attachment; filename="v01_add_checking_infrastracture.patch"; size=12189; creation-date="Sat, 30 Oct 2021 03:49:55 GMT"; modification-date="Sat, 30 Oct 2021 03:35:40 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBhYWMxMDE2NWVjLi4wYzRkNjFh MzRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC0yNjksNiArMjY5LDcg QEAgQ29weUdldERhdGEoQ29weUZyb21TdGF0ZSBjc3RhdGUsIHZvaWQgKmRhdGFidWYsIGludCBt aW5yZWFkLCBpbnQgbWF4cmVhZCkKIAogCQkJcmVhZG1lc3NhZ2U6CiAJCQkJCUhPTERfQ0FOQ0VM X0lOVEVSUlVQVFMoKTsKKwkJCQkJSE9MRF9DSEVDS0lOR19SRU1PVEVfU0VSVkVSU19JTlRFUlJV UFRTKCk7CiAJCQkJCXBxX3N0YXJ0bXNncmVhZCgpOwogCQkJCQltdHlwZSA9IHBxX2dldGJ5dGUo KTsKIAkJCQkJaWYgKG10eXBlID09IEVPRikKQEAgLTMwMCw2ICszMDEsNyBAQCBDb3B5R2V0RGF0 YShDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgdm9pZCAqZGF0YWJ1ZiwgaW50IG1pbnJlYWQsIGludCBt YXhyZWFkKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9D T05ORUNUSU9OX0ZBSUxVUkUpLAogCQkJCQkJCQkgZXJybXNnKCJ1bmV4cGVjdGVkIEVPRiBvbiBj bGllbnQgY29ubmVjdGlvbiB3aXRoIGFuIG9wZW4gdHJhbnNhY3Rpb24iKSkpOworCQkJCQlSRVNV TUVfQ0hFQ0tJTkdfUkVNT1RFX1NFUlZFUlNfSU5URVJSVVBUUygpOwogCQkJCQlSRVNVTUVfQ0FO Q0VMX0lOVEVSUlVQVFMoKTsKIAkJCQkJLyogLi4uIGFuZCBwcm9jZXNzIGl0ICovCiAJCQkJCXN3 aXRjaCAobXR5cGUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYyBi L3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCmluZGV4IGUwN2NjNTc0MzEuLmViOWM0ZjNm MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCisrKyBiL3NyYy9i YWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCkBAIC0yNiw3ICsyNiwxMSBAQAogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAKKy8qIGZvciBjaGVja2lu ZyByZW1vdGUgc2VydmVycyAqLworaW50IHJlbW90ZV9zZXJ2ZXJzX2Nvbm5lY3Rpb25fY2hlY2tf aW50ZXJ2YWwgPSAwOworc3RhdGljIENoZWNraW5nUmVtb3RlU2VydmVyc0NhbGxiYWNrSXRlbSAq ZmR3X2NhbGxiYWNrcyA9IE5VTEw7CiAKIC8qCiAgKiBHZXRGb3JlaWduRGF0YVdyYXBwZXIgLQls b29rIHVwIHRoZSBmb3JlaWduLWRhdGEgd3JhcHBlciBieSBPSUQuCkBAIC04MzYsMyArODQwLDUx IEBAIEdldEV4aXN0aW5nTG9jYWxKb2luUGF0aChSZWxPcHRJbmZvICpqb2lucmVsKQogCX0KIAly ZXR1cm4gTlVMTDsKIH0KKworLyoKKyAqIFJlZ2lzdGVyIGNhbGxiYWNrcyBmb3IgY2hlY2tpbmcg cmVtb3RlIHNlcnZlcnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNl IGJ5IEZEVyBleHRlbnNpb25zLgorICogVGhlIGNoZWNraW5nIHRpbWVvdXQgd2lsbCBiZSBmaXJl ZCBhZnRlciByZWdpc3RlcmluZyB0aGUgZmlyc3QgY2FsbGJhY2suCisgKi8KK3ZvaWQKK1JlZ2lz dGVyQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2soQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2Fs bGJhY2sgY2FsbGJhY2ssIHZvaWQgKmFyZykKK3sKKwlDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxs YmFja0l0ZW0gKml0ZW07CisJLyogc2hvdWxkIHdlIHN0YXJ0IGNoZWNraW5nIHRpbWVvdXQ/ICov CisJYm9vbCBmaXJzdF9leGVjID0gSGF2ZUNoZWNraW5nUmVtb3RlU2VydmVyc0NhbGxiYWNrcygp OworCisJaXRlbSA9IChDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFja0l0ZW0gKikKKwkJCU1l bW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LCBzaXplb2YoQ2hlY2tpbmdSZW1vdGVT ZXJ2ZXJzQ2FsbGJhY2tJdGVtKSk7CisJaXRlbS0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKKwlpdGVt LT5hcmcgPSBhcmc7CisJaXRlbS0+bmV4dCA9IGZkd19jYWxsYmFja3M7CisJZmR3X2NhbGxiYWNr cyA9IGl0ZW07CisKKwlpZiAoZmlyc3RfZXhlYyAmJiByZW1vdGVfc2VydmVyc19jb25uZWN0aW9u X2NoZWNrX2ludGVydmFsID4gMCkKKwkJZW5hYmxlX3RpbWVvdXRfYWZ0ZXIoQ0hFQ0tJTkdfUkVN T1RFX1NFUlZFUlNfVElNRU9VVCwgcmVtb3RlX3NlcnZlcnNfY29ubmVjdGlvbl9jaGVja19pbnRl cnZhbCk7Cit9CisKKworLyoKKyAqIENhbGwgY2FsbGJhY2tzIGZvciBjaGVja2luZyByZW1vdGUg c2VydmVycy4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCByZXR1cm4g YW55dGhpbmcuCisgKiBDYWxsYmFjayBmdW5jdGlvbnMgbXVzdCB0aHJvdyBlcmVwb3J0KEVSUk9S KSBpZiBkaXNjb25uZWN0aW9uIGhhcyBiZWVuIGRldGVjdGVkLgorICovCit2b2lkCitDYWxsQ2hl Y2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2tzKHZvaWQpCit7CisJQ2hlY2tpbmdSZW1vdGVTZXJ2 ZXJzQ2FsbGJhY2tJdGVtICppdGVtOworCWZvciAoaXRlbSA9IGZkd19jYWxsYmFja3M7IGl0ZW07 IGl0ZW0gPSBpdGVtLT5uZXh0KQorCQlpdGVtLT5jYWxsYmFjayhpdGVtLT5hcmcpOworfQorCisv KgorICogQ2hlY2sgd2hldGhlciBhbnkgY2FsbGJhY2tzIGhhcyBiZWVuIHJlZ2lzdGVyZWQuCisg Ki8KK2Jvb2wKK0hhdmVDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFja3Modm9pZCkKK3sKKwly ZXR1cm4gZmR3X2NhbGxiYWNrcyAhPSBOVUxMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bGlicHEvcHFjb21tLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwppbmRleCA4OWE1Zjkw MWFhLi4zMWUzOWI2Y2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwor KysgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwpAQCAtMTE1OSw3ICsxMTU5LDYgQEAgcHFf c3RhcnRtc2dyZWFkKHZvaWQpCiAJCWVyZXBvcnQoRkFUQUwsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGNvbm5lY3Rp b24gYmVjYXVzZSBwcm90b2NvbCBzeW5jaHJvbml6YXRpb24gd2FzIGxvc3QiKSkpOwotCiAJUHFD b21tUmVhZGluZ01zZyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAwNzc1YWJlMzVk Li5kNzg5MGI1MzA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk ZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAiZm9yZWlnbi9mb3JlaWduLmgiCiAjaW5j bHVkZSAiaml0L2ppdC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGli cHEvcHFmb3JtYXQuaCIKQEAgLTM0OSw2ICszNTAsNyBAQCBTb2NrZXRCYWNrZW5kKFN0cmluZ0lu Zm8gaW5CdWYpCiAJICogR2V0IG1lc3NhZ2UgdHlwZSBjb2RlIGZyb20gdGhlIGZyb250ZW5kLgog CSAqLwogCUhPTERfQ0FOQ0VMX0lOVEVSUlVQVFMoKTsKKwlIT0xEX0NIRUNLSU5HX1JFTU9URV9T RVJWRVJTX0lOVEVSUlVQVFMoKTsKIAlwcV9zdGFydG1zZ3JlYWQoKTsKIAlxdHlwZSA9IHBxX2dl dGJ5dGUoKTsKIApAQCAtNDU1LDYgKzQ1Nyw3IEBAIFNvY2tldEJhY2tlbmQoU3RyaW5nSW5mbyBp bkJ1ZikKIAkgKi8KIAlpZiAocHFfZ2V0bWVzc2FnZShpbkJ1ZiwgbWF4bXNnbGVuKSkKIAkJcmV0 dXJuIEVPRjsJCQkJLyogc3VpdGFibGUgbWVzc2FnZSBhbHJlYWR5IGxvZ2dlZCAqLworCVJFU1VN RV9DSEVDS0lOR19SRU1PVEVfU0VSVkVSU19JTlRFUlJVUFRTKCk7CiAJUkVTVU1FX0NBTkNFTF9J TlRFUlJVUFRTKCk7CiAKIAlyZXR1cm4gcXR5cGU7CkBAIC0yNzA4LDYgKzI3MTEsMTMgQEAgc3Rh cnRfeGFjdF9jb21tYW5kKHZvaWQpCiAJCSFnZXRfdGltZW91dF9hY3RpdmUoQ0xJRU5UX0NPTk5F Q1RJT05fQ0hFQ0tfVElNRU9VVCkpCiAJCWVuYWJsZV90aW1lb3V0X2FmdGVyKENMSUVOVF9DT05O RUNUSU9OX0NIRUNLX1RJTUVPVVQsCiAJCQkJCQkJIGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2lu dGVydmFsKTsKKwlpZiAocmVtb3RlX3NlcnZlcnNfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCA+ IDAgJiYKKwkJSXNVbmRlclBvc3RtYXN0ZXIgJiYKKwkJTXlQcm9jUG9ydCAmJgorCQlIYXZlQ2hl Y2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2tzKCkgJiYKKwkJIWdldF90aW1lb3V0X2FjdGl2ZShD SEVDS0lOR19SRU1PVEVfU0VSVkVSU19USU1FT1VUKSkKKwkJZW5hYmxlX3RpbWVvdXRfYWZ0ZXIo Q0hFQ0tJTkdfUkVNT1RFX1NFUlZFUlNfVElNRU9VVCwKKwkJCQkJCQkgcmVtb3RlX3NlcnZlcnNf Y29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zMjEzLDYg KzMyMjMsMjQgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJfQogCX0KIAorCWlmIChDaGVj a2luZ1JlbW90ZVNlcnZlcnNUaW1lb3V0UGVuZGluZyAmJiBDaGVja2luZ1JlbW90ZVNlcnZlcnNI b2xkb2ZmQ291bnQgIT0gMCkKKwl7CisJCS8qCisJCSAqIFNraXAgY2hlY2tpbmcgZm9yZWlnbiBz ZXJ2ZXJzIHdoaWxlIHJlYWRpbmcgbWVzc2FnZXMuCisJCSAqLworCQlJbnRlcnJ1cHRQZW5kaW5n ID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzVGltZW91dFBlbmRp bmcpCisJeworCQlDaGVja2luZ1JlbW90ZVNlcnZlcnNUaW1lb3V0UGVuZGluZyA9IGZhbHNlOwor CisJCUNhbGxDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFja3MoKTsKKworCQlpZiAocmVtb3Rl X3NlcnZlcnNfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCA+IDApCisJCQllbmFibGVfdGltZW91 dF9hZnRlcihDSEVDS0lOR19SRU1PVEVfU0VSVkVSU19USU1FT1VULAorCQkJCQkJCQkJcmVtb3Rl X3NlcnZlcnNfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCk7CisJfQorCiAJaWYgKENsaWVudENv bm5lY3Rpb25Mb3N0KQogCXsKIAkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7IC8qIGxvc3Qg Y29ubmVjdGlvbiB0cnVtcHMgUXVlcnlDYW5jZWwgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK aW5kZXggMzgxZDllNTQ4ZC4uMTViMGMyNzI3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK QEAgLTM2LDkgKzM2LDExIEBAIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlv blNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IElk bGVTZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQ cm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBM b2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOwordm9sYXRpbGUgc2lnX2F0b21pY190IENo ZWNraW5nUmVtb3RlU2VydmVyc1RpbWVvdXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSB1aW50 MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBRdWVyeUNhbmNl bEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9IDA7 Cit2b2xhdGlsZSB1aW50MzIgQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzSG9sZG9mZkNvdW50ID0gMDsK IAogaW50CQkJTXlQcm9jUGlkOwogcGdfdGltZV90CU15U3RhcnRUaW1lOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9wb3N0aW5pdC5jCmluZGV4IDc4YmM2NDY3MWUuLmZjZjVkMjQyNDggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMKQEAgLTczLDYgKzczLDcgQEAgc3RhdGljIHZvaWQgTG9ja1RpbWVvdXRI YW5kbGVyKHZvaWQpOwogc3RhdGljIHZvaWQgSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91 dEhhbmRsZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBJZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZv aWQpOwogc3RhdGljIHZvaWQgQ2xpZW50Q2hlY2tUaW1lb3V0SGFuZGxlcih2b2lkKTsKK3N0YXRp YyB2b2lkIENoZWNraW5nUmVtb3RlU2VydmVyc1RpbWVvdXRIYW5kbGVyKHZvaWQpOwogc3RhdGlj IGJvb2wgVGhlcmVJc0F0TGVhc3RPbmVSb2xlKHZvaWQpOwogc3RhdGljIHZvaWQgcHJvY2Vzc19z dGFydHVwX29wdGlvbnMoUG9ydCAqcG9ydCwgYm9vbCBhbV9zdXBlcnVzZXIpOwogc3RhdGljIHZv aWQgcHJvY2Vzc19zZXR0aW5ncyhPaWQgZGF0YWJhc2VpZCwgT2lkIHJvbGVpZCk7CkBAIC02MTUs NiArNjE2LDcgQEAgSW5pdFBvc3RncmVzKGNvbnN0IGNoYXIgKmluX2RibmFtZSwgT2lkIGRib2lk LCBjb25zdCBjaGFyICp1c2VybmFtZSwKIAkJCQkJCUlkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRp bWVvdXRIYW5kbGVyKTsKIAkJUmVnaXN0ZXJUaW1lb3V0KElETEVfU0VTU0lPTl9USU1FT1VULCBJ ZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVyKTsKIAkJUmVnaXN0ZXJUaW1lb3V0KENMSUVOVF9DT05O RUNUSU9OX0NIRUNLX1RJTUVPVVQsIENsaWVudENoZWNrVGltZW91dEhhbmRsZXIpOworCQlSZWdp c3RlclRpbWVvdXQoQ0hFQ0tJTkdfUkVNT1RFX1NFUlZFUlNfVElNRU9VVCwgQ2hlY2tpbmdSZW1v dGVTZXJ2ZXJzVGltZW91dEhhbmRsZXIpOwogCX0KIAogCS8qCkBAIC0xMjQ1LDYgKzEyNDcsMTQg QEAgQ2xpZW50Q2hlY2tUaW1lb3V0SGFuZGxlcih2b2lkKQogCVNldExhdGNoKE15TGF0Y2gpOwog fQogCitzdGF0aWMgdm9pZAorQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzVGltZW91dEhhbmRsZXIodm9p ZCkKK3sKKwlDaGVja2luZ1JlbW90ZVNlcnZlcnNUaW1lb3V0UGVuZGluZyA9IHRydWU7CisJSW50 ZXJydXB0UGVuZGluZyA9IHRydWU7CisJU2V0TGF0Y2goTXlMYXRjaCk7Cit9CisKIC8qCiAgKiBS ZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIHJvbGUgaXMgZGVmaW5lZCBpbiB0aGlzIGRhdGFi YXNlIGNsdXN0ZXIuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGU5MWQ1YTNjZmQuLjI0MTcy ZGU3YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgImNv bW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhcmlhYmxlLmgiCiAjaW5jbHVk ZSAiY29tbW9uL3N0cmluZy5oIgorI2luY2x1ZGUgImZvcmVpZ24vZm9yZWlnbi5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCiAjaW5jbHVkZSAibGlicHEvYXV0 aC5oIgpAQCAtMTA1LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAidXRpbHMvcXVlcnlqdW1ibGUuaCIK ICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5j bHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3R6cGFyc2VyLmgiCiAjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCkBAIC0zNTgz LDYgKzM1ODUsMTcgQEAgc3RhdGljIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50 W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCisJeworCQl7InJlbW90ZV9zZXJ2ZXJz X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwiLCBQR0NfVVNFUlNFVCwgQ09OTl9BVVRIX1NFVFRJ TkdTLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSB0aW1lIGludGVydmFsIGJldHdlZW4gY2hl Y2tzIGZvciBkaXNjb25uZWN0aW9uIG9mIHJlbW90ZSBzZXJ2ZXJzLiIpLAorCQkJTlVMTCwKKwkJ CUdVQ19VTklUX01TCisJCX0sCisJCSZyZW1vdGVfc2VydmVyc19jb25uZWN0aW9uX2NoZWNrX2lu dGVydmFsLAorCQkwLCAwLCBJTlRfTUFYLAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIg Ki8KIAl7CiAJCXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgMCwgMCwgMCwgTlVMTCwg TlVMTCwgTlVMTApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCmluZGV4IDFjYmM5ZmVlYjYuLjliNzA3NjFkOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTkwLDYgKzkwLDEwIEBACiAJCQkJCSMg ZGlzY29ubmVjdGlvbiB3aGlsZSBydW5uaW5nIHF1ZXJpZXM7CiAJCQkJCSMgMCBmb3IgbmV2ZXIK IAorI3JlbW90ZV9zZXJ2ZXJzX2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwgPSAwCSMgdGltZSBi ZXR3ZWVuIHRpbWUgYmV0d2VlbiBjaGVja3MgZm9yCisJCQkJCSMgZm9yZWlnbiBzZXJ2ZXIgZGlz Y29ubmVjdGlvbjsKKwkJCQkJIyAwIGZvciBuZXZlcgorCiAjIC0gQXV0aGVudGljYXRpb24gLQog CiAjYXV0aGVudGljYXRpb25fdGltZW91dCA9IDFtaW4JCSMgMXMtNjAwcwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWduLmggYi9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVp Z24uaAppbmRleCA4MTY5ZWI3NmIxLi45OGY1OWMxMTUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9mb3JlaWduL2ZvcmVpZ24uaAorKysgYi9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaApA QCAtODEsNCArODEsMjAgQEAgZXh0ZXJuIExpc3QgKkdldEZvcmVpZ25Db2x1bW5PcHRpb25zKE9p ZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pOwogZXh0ZXJuIE9pZAlnZXRfZm9yZWlnbl9kYXRh X3dyYXBwZXJfb2lkKGNvbnN0IGNoYXIgKmZkd25hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRl cm4gT2lkCWdldF9mb3JlaWduX3NlcnZlcl9vaWQoY29uc3QgY2hhciAqc2VydmVybmFtZSwgYm9v bCBtaXNzaW5nX29rKTsKIAorCisvKiBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3IgZmR3IGNo ZWNraW5nLiAqLwordHlwZWRlZiB2b2lkICgqQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2sp ICh2b2lkICphcmcpOwordHlwZWRlZiBzdHJ1Y3QgQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJh Y2tJdGVtCit7CisJc3RydWN0IENoZWNraW5nUmVtb3RlU2VydmVyc0NhbGxiYWNrSXRlbSAqbmV4 dDsKKwlDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFjayBjYWxsYmFjazsKKwl2b2lkCQkqYXJn OworfSBDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFja0l0ZW07CisKK2V4dGVybiB2b2lkIFJl Z2lzdGVyQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2soQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJz Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmFyZyk7CitleHRlcm4gdm9pZCBDYWxsQ2hlY2tpbmdS ZW1vdGVTZXJ2ZXJzQ2FsbGJhY2tzKHZvaWQpOworZXh0ZXJuIGJvb2wgSGF2ZUNoZWNraW5nUmVt b3RlU2VydmVyc0NhbGxiYWNrcyh2b2lkKTsKKworZXh0ZXJuIGludCByZW1vdGVfc2VydmVyc19j b25uZWN0aW9uX2NoZWNrX2ludGVydmFsOworCiAjZW5kaWYJCQkJCQkJLyogRk9SRUlHTl9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCmluZGV4IDkwYTMwMTYwNjUuLjM3N2ZjNjhhYWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC05OCwxMCAr OTgsMTMgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1v cnlDb250ZXh0UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7CiAKK2V4dGVybiBQR0RMTElN UE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzVGltZW91dFBl bmRpbmc7CisKIC8qIHRoZXNlIGFyZSBtYXJrZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBl eGFtaW5lZCBieSBzaWduYWwgaGFuZGxlcnM6ICovCiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRp bGUgdWludDMyIEludGVycnVwdEhvbGRvZmZDb3VudDsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSB1aW50MzIgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQ7CiBleHRlcm4gUEdETExJTVBPUlQg dm9sYXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQ7CitleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgdWludDMyIENoZWNraW5nUmVtb3RlU2VydmVyc0hvbGRvZmZDb3VudDsKIAogLyogaW4g dGNvcC9wb3N0Z3Jlcy5jICovCiBleHRlcm4gdm9pZCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKTsK QEAgLTEyNiw3ICsxMjksNyBAQCBkbyB7IFwKIC8qIElzIFByb2Nlc3NJbnRlcnJ1cHRzKCkgZ3Vh cmFudGVlZCB0byBjbGVhciBJbnRlcnJ1cHRQZW5kaW5nPyAqLwogI2RlZmluZSBJTlRFUlJVUFRT X0NBTl9CRV9QUk9DRVNTRUQoKSBcCiAJKEludGVycnVwdEhvbGRvZmZDb3VudCA9PSAwICYmIENy aXRTZWN0aW9uQ291bnQgPT0gMCAmJiBcCi0JIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID09IDAp CisJIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID09IDAgJiYgQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJz SG9sZG9mZkNvdW50ID09IDApCiAKICNkZWZpbmUgSE9MRF9JTlRFUlJVUFRTKCkgIChJbnRlcnJ1 cHRIb2xkb2ZmQ291bnQrKykKIApAQCAtMTUyLDYgKzE1NSwxMyBAQCBkbyB7IFwKIAlDcml0U2Vj dGlvbkNvdW50LS07IFwKIH0gd2hpbGUoMCkKIAorI2RlZmluZSBIT0xEX0NIRUNLSU5HX1JFTU9U RV9TRVJWRVJTX0lOVEVSUlVQVFMoKSAgKENoZWNraW5nUmVtb3RlU2VydmVyc0hvbGRvZmZDb3Vu dCsrKQorCisjZGVmaW5lIFJFU1VNRV9DSEVDS0lOR19SRU1PVEVfU0VSVkVSU19JTlRFUlJVUFRT KCkgXAorZG8geyBcCisJQXNzZXJ0KENoZWNraW5nUmVtb3RlU2VydmVyc0hvbGRvZmZDb3VudCA+ IDApOyBcCisJQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzSG9sZG9mZkNvdW50LS07IFwKK30gd2hpbGUo MCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgkgIGdsb2JhbHMuaCAtLQkJCQkJCQkJCQkJ CQkJCSAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90aW1lb3V0LmggYi9zcmMvaW5j bHVkZS91dGlscy90aW1lb3V0LmgKaW5kZXggMmNiYzVkZTRkOS4uY2ViNmIxYzEyYyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3RpbWVvdXQuaApAQCAtMzQsNiArMzQsNyBAQCB0eXBlZGVmIGVudW0gVGltZW91dElkCiAJSURM RV9TRVNTSU9OX1RJTUVPVVQsCiAJQ0xJRU5UX0NPTk5FQ1RJT05fQ0hFQ0tfVElNRU9VVCwKIAlT VEFSVFVQX1BST0dSRVNTX1RJTUVPVVQsCisJQ0hFQ0tJTkdfUkVNT1RFX1NFUlZFUlNfVElNRU9V VCwKIAkvKiBGaXJzdCB1c2VyLWRlZmluYWJsZSB0aW1lb3V0IHJlYXNvbiAqLwogCVVTRVJfVElN RU9VVCwKIAkvKiBNYXhpbXVtIG51bWJlciBvZiB0aW1lb3V0IHJlYXNvbnMgKi8K --_002_TYAPR01MB58662809E678253B90E82CE5F5889TYAPR01MB5866jpnp_--