Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w745G-004vOf-1p for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 04:18:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w745E-0016sP-34 for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 04:18:37 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w745E-0016sF-1K for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 04:18:37 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w745C-00000001kLn-446v for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 04:18:35 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-38c620f1699so36551561fa.0 for ; Sun, 29 Mar 2026 21:18:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774844312; cv=none; d=google.com; s=arc-20240605; b=QmcqMxG+ZUUEgUZWPs9NdlL+8B2pe7aXbUpDLa5AUs7lvGYNpzWFFbkyGefoIWQb3Q EHH2b9uti71rA9k5Q+Am36CD51g0Jy+MGUej799K0JUvngcsZW2aFM8WrU13JbIRwlsl 5QOwa+jgi5pAaE+WQiX2UzcDpoCaFNCqC3ln1jCkdYeI8qeYALlqGwuXcnGaDzzvRCUs GVT7wJ/Lp15wkhNn1iKiODZM/bQaXBMG70qxbP+iJCPHrY1ZqygRL5IV6sxXaTea5n1m M7QczepvBujeO1CheDbxIHOVUDsZNpC4JW/eDUDXhimIFhan+C/xAM0j80HLm3fwvHqW tX8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=2azIKp0LB8ExxRN+ghYeK6itJWFfcTbC7z/2IBj7Ldw=; fh=kua3JpmElYDWzTOQ8fAFGodPc16CuNXJ1kXY3qoL+FQ=; b=VRC8raKWj1l7dAZ4KcQE3VlOGOQI+fJHf7mVWPcRgWVSFbo8nHZMANOHYPfeKSzqfE 17dwRS3YM4y5d2vOl8RfBRgBuWvrj6Igj4JxzuUx55lLefDZep1xSRUnq1ybfx5yqzbu eEuQYlyta8y/2vtp0MQMSWHfCsNS2AqGsETGyQdOxZDNZGqUfeoxuHLKz1FoFlWDpVFI 4lntLsLDGnJdwovPnpu5uN2QvIwU34bXTRWbY2e41GwwQSypRWf0ToLSu0QnT3anMD93 wlhHr0mf3zuDmdN7s4j/8g9kLy5ip5sMZN20XMx4JXiJoynx45dVelioCHMGvFrjP4yg tVzQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774844312; x=1775449112; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=2azIKp0LB8ExxRN+ghYeK6itJWFfcTbC7z/2IBj7Ldw=; b=AK1hcBYwSlYt+SSWCfj/WnS9rYrC7F96F9nKDG8rBHWliHoQo7DP4WiTIHDTI6RgDX 355YuvyYEN9Od8pv87pdWMHRJiXyAKohZAJFyRE95CniE8kDTxrtzRlnlCPVQdAYEh6j +BxwxjoAqbxMASo62B8FT/L9gdMRHFZFNd2k9ELNCKguwPEOg+7L5WXJ76kqWAv/yVMb cTp3B6H59O+VoGZE9QdcxP8llaYdKAQyjaSAp6ERtswHqRSRkGXcLtArgCmP1v35hFfJ ZvS952OiKrizkUQyNMvBT9x4vNgpSE4b7YyktoJ5a3eQTtncgPHCvF8JHKALJZOe/CHe GvMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774844312; x=1775449112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2azIKp0LB8ExxRN+ghYeK6itJWFfcTbC7z/2IBj7Ldw=; b=absAV/z08k/nrbwQOOPUNs8z7TBhlqBh3KIZ50E6EfU4dj5ztQi4rQtfsWLAIx1lf9 MKxfP5wx8Q4YPmECRktX9p7naguy11ukZS2NQp+SuTWQHNgpSNioy4nxn/Y0XQ4+UXqF 1G7/8fEyWaQ6VqAXRJm03QvJwye6+7f2N3kKxBV587gsNcp/FN43T3kK2Osa51rgUzBs IOj61Y3HdViTWdimNDRC/mgOFdir/qmcEXfhV4+vObzeFuY+2dW3Adsf1qJAwZs6tSgz TMMN8dPMEwaK7FHqAwTRVlxhUKZ4uglsLNZCv4Ub0t+2u3WnecgDcr3RFhekfq9tBpxH gB0w== X-Forwarded-Encrypted: i=1; AJvYcCUO1tUZkhPPZB8SSWgUsx33enKWRn486AOzhY3Zz1sTlcSAJ2VhRUMi2bX9nffwuS5HZrCsUuI3ms+OVPY6@lists.postgresql.org X-Gm-Message-State: AOJu0YxM6SB1vR45sa4dNb43Yx639pTAmJ8LK2XwZ2PUAH/+l0KVeyrt JQ+ohNEaY3CXWDDu4r/2JsoQ5iMmjb2GeawVLqjONQ5yzqbDuAmtq2Ev9wEWpbJxvP8CbVIA0iM bfJyMHgcqVvv+VsA7zzAEytOHpGl5Jw== X-Gm-Gg: ATEYQzxbAVzoWvqKq5ZlVIIvlHtlrTWaKTWn3Z1koJRBgVWA6mDRS3XQIaNJQEwBGCZ 8tbQXnjUI3itGds/FglauXL60WpCXPLTmaKamzC3QxZTK+MC9JOPx2QnDLekwJGYLjpsBqGU7oX mx8g+WNdCxkshxW68CkfBGBqtRJIrw/tSR9Nv1p6K1/oLxmy0pfIMfQd8OArSzCwvHlnYfQO9fZ phnwkfU+VyomN3DbSTu3QfPSPNJKgXnAp5eg/c8tOSPxiLFCddBsN4ibV/wm1lE6TpdY7Jw19kv 89ir/fSmJDs7K++zUBEOkXDR X-Received: by 2002:a2e:b891:0:b0:38a:3a34:611 with SMTP id 38308e7fff4ca-38c73273aecmr34473841fa.22.1774844311886; Sun, 29 Mar 2026 21:18:31 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Mon, 30 Mar 2026 09:48:19 +0530 X-Gm-Features: AQROBzBcc7nKhQ9j7O35UOdYTIYRD-OkH0yvGO5ojTM_TDWtFPeUbUHlvRcpMb0 Message-ID: Subject: Re: Use SIGTERM instead of SIGUSR1 for slotsync worker to exit during promotion? To: Fujii Masao Cc: Amit Kapila , shveta malik , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000be0758064e36245d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000be0758064e36245d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 27, 2026 at 10:49=E2=80=AFPM Fujii Masao wrote: > > On Fri, Mar 27, 2026 at 9:38=E2=80=AFPM Nisha Moond wrote: > > Attached the updated patch. > > Thanks for updating the patch! It looks good overall. > Thank you Fujii-san for the review. > Regarding the comments in SlotSyncCtxStruct, since the role of > stopSignaled field has changed, those comments should be updated > accordingly? For example, > > ------------------------- > - * the SQL function pg_sync_replication_slots(). When the startup proces= s sets > - * 'stopSignaled' during promotion, it uses this 'pid' to wake up the cu= rrently > - * synchronizing process so that the process can immediately stop its > - * synchronizing work on seeing 'stopSignaled' set. > - * Setting 'stopSignaled' is also used to handle the race condition when= the > + * the SQL function pg_sync_replication_slots(). On promotion, > + * the startup process sets 'stopSignaled' and uses this 'pid' to wake u= p > + * the currently synchronizing process so that the process can > + * immediately stop its synchronizing work. > + * Setting 'stopSignaled' is used to handle the race condition when the > ------------------------- > Updated as suggested. > > +/* > + * Interrupt flag set when PROCSIG_SLOTSYNC_MESSAGE is received, asking = the > + * slotsync worker or pg_sync_replication_slots() to stop because > + * standby promotion has been triggered. > + */ > +volatile sig_atomic_t SlotSyncShutdown =3D false; > > For the interrupt flag set in procsignal_sigusr1_handler(), other flags > use a *Pending suffix (e.g., ProcSignalBarrierPending, > ParallelApplyMessagePending), so SlotSyncShutdownPending would > be more consistent. > > > +void > +HandleSlotSyncMessage(void) > > Functions called from ProcessInterrupts() typically use the Process* pref= ix > (e.g., ProcessProcSignalBarrier(), ProcessParallelApplyMessages()), > so ProcessSlotSyncMessage would be more consistent than HandleSlotSyncMes= sage. > Agree, fixed. > > + ereport(LOG, > + errmsg("replication slot synchronization worker will stop because > promotion is triggered")); > + > + proc_exit(0); > + } > + else > + { > + /* > + * For the backend executing SQL function > + * pg_sync_replication_slots(). > + */ > + ereport(ERROR, > + errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), > + errmsg("replication slot synchronization will stop because promotion > is triggered")); > > The log messages say "will stop", but since sync hasn't started yet, > "will not start" seems clearer here. For example, "replication slot > synchronization worker will not start because promotion was triggered" > and "replication slot synchronization will not start because promotion wa= s > triggered". Thought? > We were using the same log message in two places: check_and_set_sync_info() and HandleSlotSyncMessage(). I think =E2=80=9Cwill not start=E2=80=9D fits better in the first case, whi= le =E2=80=9Cwill stop=E2=80=9D makes sense to keep in the second. -- Thanks, Nisha --000000000000be0758064e36245d Content-Type: application/octet-stream; name="v5-0001-Prevent-slotsync-worker-API-hang-during-standby-p.patch" Content-Disposition: attachment; filename="v5-0001-Prevent-slotsync-worker-API-hang-during-standby-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mncod3hz0 RnJvbSAzZWI2ZjZjMDYwMGVjMTVlMWQ3NzM2NTZlNjg5YmNhNTEyMTk3NDRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDI1IE1hciAyMDI2IDE4OjA0OjEyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 NV0gUHJldmVudCBzbG90c3luYyB3b3JrZXIvQVBJIGhhbmcgZHVyaW5nIHN0YW5kYnkgcHJvbW90 aW9uCgpEdXJpbmcgc3RhbmRieSBwcm9tb3Rpb24sIFNodXREb3duU2xvdFN5bmMoKSBzaWduYWxz IHRoZSBzbG90c3luYyB3b3JrZXIKdG8gc3RvcCBhbmQgd2FpdHMgZm9yIGl0IHRvIGZpbmlzaC4g SWYgdGhlIHdvcmtlciBpcyBibG9ja2VkIGluCldhaXRMYXRjaE9yU29ja2V0KCkgd2FpdGluZyBm b3IgYSByZXNwb25zZSBmcm9tIHRoZSBwcmltYXJ5IChlLmcuLCBkdWUKdG8gYSBuZXR3b3JrIGZh aWx1cmUpLCB0aGUgcHJldmlvdXMgU0lHVVNSMSBzaWduYWwgb25seSBzZXRzIHRoZSBsYXRjaC4K VGhlIHdvcmtlciB3YWtlcyB1cCwgZmluZHMgbm8gcGVuZGluZyBpbnRlcnJ1cHQsIGFuZCBnb2Vz IGJhY2sgdG8Kd2FpdGluZywgY2F1c2luZyBTaHV0RG93blNsb3RTeW5jKCkgdG8gd2FpdCBpbmRl ZmluaXRlbHkgYW5kIGJsb2NraW5nCnByb21vdGlvbi4KCkZpeCB0aGlzIGJ5IGludHJvZHVjaW5n IGEgbmV3IHByb2NzaWduYWwgcmVhc29uIFBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRS4KVGhlIHNp Z25hbCBoYW5kbGVyIHNldHMgdGhlIGFwcHJvcHJpYXRlIGludGVycnVwdCBmbGFncyBzbyB0aGF0 CldhaXRMYXRjaE9yU29ja2V0KCkgcmV0dXJucyBhbmQgdGhlIHdvcmtlciBleGl0cyBjbGVhbmx5 LCBhbGxvd2luZwpwcm9tb3Rpb24gdG8gcHJvY2VlZC4KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgfCAxMjAgKysrKysrKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgfCAgIDQgKwogc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3RzeW5jLmggICAgICAgICB8ICAgNyArKwogc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmggICAgICAgICAgIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgOTggaW5z ZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9zbG90c3luYy5jCmluZGV4IGU3NWRiNjllM2Y2Li5hMDM4ZmYzMTE0OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtODUsMTEgKzg1LDExIEBA CiAgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gdG8gY29udHJvbCBzbG90IHN5bmNo cm9uaXphdGlvbi4KICAqCiAgKiBUaGUgJ3BpZCcgaXMgZWl0aGVyIHRoZSBzbG90IHN5bmMgd29y a2VyJ3MgcGlkIG9yIHRoZSBiYWNrZW5kJ3MgcGlkIHJ1bm5pbmcKLSAqIHRoZSBTUUwgZnVuY3Rp b24gcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLiBXaGVuIHRoZSBzdGFydHVwIHByb2Nlc3Mg c2V0cwotICogJ3N0b3BTaWduYWxlZCcgZHVyaW5nIHByb21vdGlvbiwgaXQgdXNlcyB0aGlzICdw aWQnIHRvIHdha2UgdXAgdGhlIGN1cnJlbnRseQotICogc3luY2hyb25pemluZyBwcm9jZXNzIHNv IHRoYXQgdGhlIHByb2Nlc3MgY2FuIGltbWVkaWF0ZWx5IHN0b3AgaXRzCi0gKiBzeW5jaHJvbml6 aW5nIHdvcmsgb24gc2VlaW5nICdzdG9wU2lnbmFsZWQnIHNldC4KLSAqIFNldHRpbmcgJ3N0b3BT aWduYWxlZCcgaXMgYWxzbyB1c2VkIHRvIGhhbmRsZSB0aGUgcmFjZSBjb25kaXRpb24gd2hlbiB0 aGUKKyAqIHRoZSBTUUwgZnVuY3Rpb24gcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLiBPbiBw cm9tb3Rpb24sCisgKiB0aGUgc3RhcnR1cCBwcm9jZXNzIHNldHMgJ3N0b3BTaWduYWxlZCcgYW5k IHVzZXMgdGhpcyAncGlkJyB0byB3YWtlIHVwCisgKiB0aGUgY3VycmVudGx5IHN5bmNocm9uaXpp bmcgcHJvY2VzcyBzbyB0aGF0IHRoZSBwcm9jZXNzIGNhbgorICogaW1tZWRpYXRlbHkgc3RvcCBp dHMgc3luY2hyb25pemluZyB3b3JrLgorICogU2V0dGluZyAnc3RvcFNpZ25hbGVkJyBpcyB1c2Vk IHRvIGhhbmRsZSB0aGUgcmFjZSBjb25kaXRpb24gd2hlbiB0aGUKICAqIHBvc3RtYXN0ZXIgaGFz IG5vdCBub3RpY2VkIHRoZSBwcm9tb3Rpb24geWV0IGFuZCB0aHVzIG1heSBlbmQgdXAgcmVzdGFy dGluZwogICogdGhlIHNsb3Qgc3luYyB3b3JrZXIuIElmICdzdG9wU2lnbmFsZWQnIGlzIHNldCwg dGhlIHdvcmtlciB3aWxsIGV4aXQgaW4gc3VjaCBhCiAgKiBjYXNlLiBUaGUgU1FMIGZ1bmN0aW9u IHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKSB3aWxsIGFsc28gZXJyb3Igb3V0IGlmCkBAIC0x NDEsNiArMTQxLDEzIEBAIHN0YXRpYyBsb25nIHNsZWVwX21zID0gTUlOX1NMT1RTWU5DX1dPUktF Ul9OQVBUSU1FX01TOwogICovCiBzdGF0aWMgYm9vbCBzeW5jaW5nX3Nsb3RzID0gZmFsc2U7CiAK Ky8qCisgKiBJbnRlcnJ1cHQgZmxhZyBzZXQgd2hlbiBQUk9DU0lHX1NMT1RTWU5DX01FU1NBR0Ug aXMgcmVjZWl2ZWQsIGFza2luZyB0aGUKKyAqIHNsb3RzeW5jIHdvcmtlciBvciBwZ19zeW5jX3Jl cGxpY2F0aW9uX3Nsb3RzKCkgdG8gc3RvcCBiZWNhdXNlCisgKiBzdGFuZGJ5IHByb21vdGlvbiBo YXMgYmVlbiB0cmlnZ2VyZWQuCisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBTbG90U3luY1No dXRkb3duUGVuZGluZyA9IGZhbHNlOworCiAvKgogICogU3RydWN0dXJlIHRvIGhvbGQgaW5mb3Jt YXRpb24gZmV0Y2hlZCBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlciBhYm91dCBhIGxvZ2ljYWwKICAq IHJlcGxpY2F0aW9uIHNsb3QuCkBAIC0xMjkxLDM2ICsxMjk4LDQyIEBAIHNsb3RzeW5jX3JlcmVh ZF9jb25maWcodm9pZCkKIH0KIAogLyoKLSAqIEludGVycnVwdCBoYW5kbGVyIGZvciBwcm9jZXNz IHBlcmZvcm1pbmcgc2xvdCBzeW5jaHJvbml6YXRpb24uCisgKiBTaWduYWwgaGFuZGxlciBjYWxs ZWQgKGluIHNpZ25hbCBjb250ZXh0KSB3aGVuIFBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRQorICog aXMgcmVjZWl2ZWQuICBTZXRzIHRoZSBTbG90U3luY1NodXRkb3duUGVuZGluZyBmbGFnIHNvIHRo YXQgUHJvY2Vzc0ludGVycnVwdHMoKQorICogd2lsbCBkaXNwYXRjaCB0byBQcm9jZXNzU2xvdFN5 bmNNZXNzYWdlKCkgYXQgdGhlIG5leHQgc2FmZSBwb2ludC4KICAqLwotc3RhdGljIHZvaWQKLVBy b2Nlc3NTbG90U3luY0ludGVycnVwdHModm9pZCkKK3ZvaWQKK0hhbmRsZVNsb3RTeW5jTWVzc2Fn ZUludGVycnVwdCh2b2lkKQogewotCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJSW50ZXJydXB0 UGVuZGluZyA9IHRydWU7CisJU2xvdFN5bmNTaHV0ZG93blBlbmRpbmcgPSB0cnVlOworCS8qIGxh dGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCit9CiAKLQlp ZiAoU2xvdFN5bmNDdHgtPnN0b3BTaWduYWxlZCkKLQl7Ci0JCWlmIChBbUxvZ2ljYWxTbG90U3lu Y1dvcmtlclByb2Nlc3MoKSkKLQkJewotCQkJZXJlcG9ydChMT0csCi0JCQkJCWVycm1zZygicmVw bGljYXRpb24gc2xvdCBzeW5jaHJvbml6YXRpb24gd29ya2VyIHdpbGwgc3RvcCBiZWNhdXNlIHBy b21vdGlvbiBpcyB0cmlnZ2VyZWQiKSk7CisvKgorICogSGFuZGxlIGEgUFJPQ1NJR19TTE9UU1lO Q19NRVNTQUdFIHNpZ25hbCwgY2FsbGVkIGZyb20gUHJvY2Vzc0ludGVycnVwdHMoKS4KKyAqCisg KiBJZiB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHRoZSBzbG90c3luYyBiYWNrZ3JvdW5kIHdvcmtl ciwgbG9nIGEgbWVzc2FnZQorICogYW5kIGV4aXQgY2xlYW5seS4gIElmIGl0IGlzIGEgYmFja2Vu ZCBleGVjdXRpbmcgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLAorICogcmFpc2UgYW4gZXJy b3IuCisgKi8KK3ZvaWQKK1Byb2Nlc3NTbG90U3luY01lc3NhZ2Uodm9pZCkKK3sKKwlTbG90U3lu Y1NodXRkb3duUGVuZGluZyA9IGZhbHNlOwogCi0JCQlwcm9jX2V4aXQoMCk7Ci0JCX0KLQkJZWxz ZQotCQl7Ci0JCQkvKgotCQkJICogRm9yIHRoZSBiYWNrZW5kIGV4ZWN1dGluZyBTUUwgZnVuY3Rp b24KLQkJCSAqIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKS4KLQkJCSAqLwotCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKLQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3 aWxsIHN0b3AgYmVjYXVzZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVkIikpOwotCQl9CisJaWYgKEFt TG9naWNhbFNsb3RTeW5jV29ya2VyUHJvY2VzcygpKQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJ ZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3b3JrZXIgd2lsbCBzdG9w IGJlY2F1c2UgcHJvbW90aW9uIGlzIHRyaWdnZXJlZCIpKTsKKwkJcHJvY19leGl0KDApOworCX0K KwllbHNlCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90 IHN5bmNocm9uaXphdGlvbiB3aWxsIHN0b3AgYmVjYXVzZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVk IikpOwogCX0KLQotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCQlzbG90c3luY19yZXJlYWRf Y29uZmlnKCk7CiB9CiAKIC8qCkBAIC0xNDI3LDYgKzE0NDAsMzQgQEAgY2hlY2tfYW5kX3NldF9z eW5jX2luZm8ocGlkX3Qgc3luY19wcm9jZXNzX3BpZCkKIHsKIAlTcGluTG9ja0FjcXVpcmUoJlNs b3RTeW5jQ3R4LT5tdXRleCk7CiAKKwkvKgorCSAqIEV4aXQgaW1tZWRpYXRlbHkgaWYgcHJvbW90 aW9uIGhhcyBiZWVuIHRyaWdnZXJlZC4gIFRoaXMgZ3VhcmRzIGFnYWluc3QKKwkgKiBhIG5ldyB3 b3JrZXIgKG9yIGEgbmV3IEFQSSBjYWxsKSB0aGF0IHN0YXJ0cyBhZnRlciB0aGUgb2xkIHdvcmtl ciB3YXMKKwkgKiBzdG9wcGVkIGJ5IFNodXREb3duU2xvdFN5bmMoKS4KKwkgKi8KKwlpZiAoU2xv dFN5bmNDdHgtPnN0b3BTaWduYWxlZCkKKwl7CisJCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmND dHgtPm11dGV4KTsKKworCQlpZiAoQW1Mb2dpY2FsU2xvdFN5bmNXb3JrZXJQcm9jZXNzKCkpCisJ CXsKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQllcnJtc2coInJlcGxpY2F0aW9uIHNsb3Qgc3luY2hy b25pemF0aW9uIHdvcmtlciB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHByb21vdGlvbiB3YXMgdHJp Z2dlcmVkIikpOworCisJCQlwcm9jX2V4aXQoMCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgor CQkJICogRm9yIHRoZSBiYWNrZW5kIGV4ZWN1dGluZyBTUUwgZnVuY3Rpb24KKwkJCSAqIHBnX3N5 bmNfcmVwbGljYXRpb25fc2xvdHMoKS4KKwkJCSAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJ ZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3aWxsIG5vdCBzdGFydCBi ZWNhdXNlIHByb21vdGlvbiB3YXMgdHJpZ2dlcmVkIikpOworCQl9CisJfQorCiAJaWYgKFNsb3RT eW5jQ3R4LT5zeW5jaW5nKQogCXsKIAkJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0 ZXgpOwpAQCAtMTYzNSw3ICsxNjc2LDEwIEBAIFJlcGxTbG90U3luY1dvcmtlck1haW4oY29uc3Qg dm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJYm9vbAkJc3Rh cnRlZF90eCA9IGZhbHNlOwogCQlMaXN0CSAgICpyZW1vdGVfc2xvdHM7CiAKLQkJUHJvY2Vzc1Ns b3RTeW5jSW50ZXJydXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCWlmIChD b25maWdSZWxvYWRQZW5kaW5nKQorCQkJc2xvdHN5bmNfcmVyZWFkX2NvbmZpZygpOwogCiAJCS8q CiAJCSAqIFRoZSBzeXNjYWNoZSBhY2Nlc3MgaW4gZmV0Y2hfcmVtb3RlX3Nsb3RzKCkgbmVlZHMg YSB0cmFuc2FjdGlvbgpAQCAtMTc0OCwxMSArMTc5MiwxMSBAQCBTaHV0RG93blNsb3RTeW5jKHZv aWQpCiAJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCiAJLyoKLQkgKiBT aWduYWwgcHJvY2VzcyBkb2luZyBzbG90c3luYywgaWYgYW55LiBUaGUgcHJvY2VzcyB3aWxsIHN0 b3AgdXBvbgotCSAqIGRldGVjdGluZyB0aGF0IHRoZSBzdG9wU2lnbmFsZWQgZmxhZyBpcyBzZXQg dG8gdHJ1ZS4KKwkgKiBTaWduYWwgcHJvY2VzcyBkb2luZyBzbG90c3luYywgaWYgYW55LCBhc2tp bmcgaXQgdG8gc3RvcC4KIAkgKi8KIAlpZiAoc3luY19wcm9jZXNzX3BpZCAhPSBJbnZhbGlkUGlk KQotCQlraWxsKHN5bmNfcHJvY2Vzc19waWQsIFNJR1VTUjEpOworCQlTZW5kUHJvY1NpZ25hbChz eW5jX3Byb2Nlc3NfcGlkLCBQUk9DU0lHX1NMT1RTWU5DX01FU1NBR0UsCisJCQkJCSAgIElOVkFM SURfUFJPQ19OVU1CRVIpOwogCiAJLyogV2FpdCBmb3Igc2xvdCBzeW5jIHRvIGVuZCAqLwogCWZv ciAoOzspCkBAIC0xOTMxLDkgKzE5NzUsNiBAQCBTeW5jUmVwbGljYXRpb25TbG90cyhXYWxSZWNl aXZlckNvbm4gKndyY29ubikKIAogCQljaGVja19hbmRfc2V0X3N5bmNfaW5mbyhNeVByb2NQaWQp OwogCi0JCS8qIENoZWNrIGZvciBpbnRlcnJ1cHRzIGFuZCBjb25maWcgY2hhbmdlcyAqLwotCQlQ cm9jZXNzU2xvdFN5bmNJbnRlcnJ1cHRzKCk7Ci0KIAkJdmFsaWRhdGVfcmVtb3RlX2luZm8od3Jj b25uKTsKIAogCQkvKiBSZXRyeSB1bnRpbCBhbGwgdGhlIHNsb3RzIGFyZSBzeW5jLXJlYWR5ICov CkBAIC0xOTQzLDcgKzE5ODQsMTAgQEAgU3luY1JlcGxpY2F0aW9uU2xvdHMoV2FsUmVjZWl2ZXJD b25uICp3cmNvbm4pCiAJCQlib29sCQlzb21lX3Nsb3RfdXBkYXRlZCA9IGZhbHNlOwogCiAJCQkv KiBDaGVjayBmb3IgaW50ZXJydXB0cyBhbmQgY29uZmlnIGNoYW5nZXMgKi8KLQkJCVByb2Nlc3NT bG90U3luY0ludGVycnVwdHMoKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCWlm IChDb25maWdSZWxvYWRQZW5kaW5nKQorCQkJCXNsb3RzeW5jX3JlcmVhZF9jb25maWcoKTsKIAog CQkJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCiAJCQlBc3Nl cnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5j CmluZGV4IDdlMDE3YzhkNTNiLi45OTc5MmIxMzc2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NzaWduYWwuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsY3RsLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9j b25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpAQCAtNzAwLDYg KzcwMSw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFKSkKIAkJSGFuZGxl UGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwo UFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdFKSkKKwkJSGFuZGxlU2xvdFN5bmNNZXNzYWdlSW50ZXJy dXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Qp KQogCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCBiMzU2MzExMzIxOS4uYjA5NDNhYmI4NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTU4LDYg KzU4LDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgi CiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgpAQCAtMzU3Niw2ICszNTc3LDkg QEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAogCWlmIChQYXJhbGxlbEFwcGx5TWVzc2FnZVBl bmRpbmcpCiAJCVByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKKworCWlmIChTbG90U3lu Y1NodXRkb3duUGVuZGluZykKKwkJUHJvY2Vzc1Nsb3RTeW5jTWVzc2FnZSgpOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5bmMuaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKaW5kZXggZTU0NmQwZDA1MGQuLjM1ODM1MDg3MTI4 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90c3luYy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKQEAgLTEyLDEwICsxMiwxNSBAQAogI2lm bmRlZiBTTE9UU1lOQ19ICiAjZGVmaW5lIFNMT1RTWU5DX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5o PgorCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKIAogZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgc3luY19yZXBsaWNhdGlvbl9zbG90czsKIAorLyogSW50ZXJydXB0IGZsYWcg c2V0IGJ5IEhhbmRsZVNsb3RTeW5jTWVzc2FnZUludGVycnVwdCgpICovCitleHRlcm4gUEdETExJ TVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFNsb3RTeW5jU2h1dGRvd25QZW5kaW5nOworCiAv KgogICogR1VDcyBuZWVkZWQgYnkgc2xvdCBzeW5jIHdvcmtlciB0byBjb25uZWN0IHRvIHRoZSBw cmltYXJ5CiAgKiBzZXJ2ZXIgYW5kIGNhcnJ5IG9uIHdpdGggc2xvdHMgc3luY2hyb25pemF0aW9u LgpAQCAtMzQsNSArMzksNyBAQCBleHRlcm4gYm9vbCBJc1N5bmNpbmdSZXBsaWNhdGlvblNsb3Rz KHZvaWQpOwogZXh0ZXJuIFNpemUgU2xvdFN5bmNTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9p ZCBTbG90U3luY1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFN5bmNSZXBsaWNhdGlvblNs b3RzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKTsKK2V4dGVybiB2b2lkIEhhbmRsZVNsb3RTeW5j TWVzc2FnZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NTbG90U3luY01lc3Nh Z2Uodm9pZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBTTE9UU1lOQ19IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJv Y3NpZ25hbC5oCmluZGV4IDM0OGZiYTUzYTkzLi4zYTc1ZDUwMGU3YyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jc2lnbmFsLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19CQVJS SUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1P UllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8K IAlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxl bCBhcHBseSB3b3JrZXJzICovCisJUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdFLAkvKiBhc2sgc2xv dHN5bmMgd29ya2VyL0FQSSB0byBzdG9wICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVCwJ LyogYmFja2VuZCBpcyBibG9ja2luZyByZWNvdmVyeSwgY2hlY2sKIAkJCQkJCQkJICogUEdQUk9D LT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMgZm9yIHRoZQogCQkJCQkJCQkgKiByZWFzb24gKi8K LS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000be0758064e36245d--