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 1kdUPD-0001iS-7S for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Nov 2020 08:26:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kdUGq-0006M9-8m for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Nov 2020 08:17:24 +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 1kdKpm-0007VU-UG for pgsql-hackers@lists.postgresql.org; Thu, 12 Nov 2020 22:12:51 +0000 Received: from mail-bn8nam12on2053.outbound.protection.outlook.com ([40.107.237.53] helo=NAM12-BN8-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kdKph-0002Ka-Pp for pgsql-hackers@lists.postgresql.org; Thu, 12 Nov 2020 22:12:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SVHvi5kkp8GNLfUZFXWmV8Uaj72Nh46RukRPJ2PaQeua783opwtsNTNkBDx994Hen/ZrGin/4LjXc4kFkrtN3ZiZdcR14XjQu6dIaMsIV3EC+Nr5bQBWmXuEOxEFW1D7vrlOl1QZ0CqyCh2tzAsWhO2MKCJT+DIldJZywfHTzu+nfhdE6Kj5ATPkpeGBNvOIkgfzzRJu2hvaytO7FyOhCU5u/2dUMwTKt61cPawxzpmDktjSjvqOwexUI4w8CtuMObQAI/fo9SjGwjoM3mNke5WxyZhDMkIwJDYWWcFJeSTon0Pct+U4/y5N8PiAloHXIYwC+axUgPGsC0+bkI7SAA== 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=aO8JROnbBMLp1WG4AA++z8TqWHClQvCNGTkltSyDVG0=; b=c5IoN/u5WGuHhi5CpMbRb3h5I5DLAhHcvKRviPk+CrJthJXf3cm1XI55YDqKmkCKaQmh03owY98bpcUC0KneJY0PyNZqlJc85/5x3VZj9d1pBZDpW43u3vz/PTptuzjpE4jTIS8WXssR1JZ0rhbh9zie7w5YZz2zoQtn6CNS3/8OuqeRJ4kvyTILUeEpkDNUgyPrAohhDNHe7kWbXVVPETxLXgQTi/YZV/EYov5uYqyedCeDEN1l6dNPE6nUDLKvdMc7hXPYrKFIFdg4BE7VwRmnHSp7Jm7pM4VAtNimJ3jKlX4cyS9PEYFnu/o9Q84TMcGYR1BPAKDPBILuV7c/GQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aO8JROnbBMLp1WG4AA++z8TqWHClQvCNGTkltSyDVG0=; b=yvjNLZzeEEQQze1NU2py9IRw4xVnOgCiZ3jxlNxraG8IRu2QUnsONmhH42D/tHOGJ+i8fGRfZbdcLozJWcvuf5BPNwaybn9MHgIKcl3KkaIdsj/GPPwRn5bKpaTpXqgwINOZmY7TqXQrFWBI5a648QTPKlgod4ILEq4/WUVL3xU= Received: from MWHPR05MB2957.namprd05.prod.outlook.com (2603:10b6:300:60::11) by MWHPR05MB2798.namprd05.prod.outlook.com (2603:10b6:300:5b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3564.21; Thu, 12 Nov 2020 22:12:42 +0000 Received: from MWHPR05MB2957.namprd05.prod.outlook.com ([fe80::e1c8:9250:a1ac:64c6]) by MWHPR05MB2957.namprd05.prod.outlook.com ([fe80::e1c8:9250:a1ac:64c6%7]) with mapi id 15.20.3564.024; Thu, 12 Nov 2020 22:12:42 +0000 From: Jacob Champion To: Daniel Gustafsson CC: Heikki Linnakangas , Andres Freund , Postgres hackers , Michael Paquier , Andrew Dunstan , Stephen Frost , Thomas Munro Subject: Re: Support for NSS as a libpq TLS backend Thread-Topic: Support for NSS as a libpq TLS backend Thread-Index: AQHWM1w61GrKUIsl6UCBcYrYNRBt46kJRsIAgAA+PQCAGQsiAIAEdGUAgAAqk4CAAbpsAIABgI0AgCnqVACAA5UBgIAAY+MAgBTX7ACAACGAAIASngCAgAAfeICABYLFgIAbyjgAgABy24CACw63gIAAAzWAgAwa5QCAA6HPgIAAKuGAgAYXDoCAACZBAIABTCSAgAALLgCAAcj/gA== Date: Thu, 12 Nov 2020 22:12:42 +0000 Message-ID: References: <20200904012334.GF19499@paquier.xyz> <20200917074134.GX2873@paquier.xyz> <20200929055939.GF7117@paquier.xyz> <411593A7-E037-474D-BFD7-D3D6683C1D46@yesql.se> <20201020191529.5yverw3ybaube3pg@alap3.anarazel.de> <907FA7D1-9BD9-464B-A6EC-DEEB53438D36@yesql.se> <7ed636a0-872c-3ea7-dc44-b35dd515bb87@iki.fi> <02260088-E0C9-49A2-ACD3-CE51D65A84E3@yesql.se> <0E64F3CB-4731-4FA8-82D8-D8590086654C@vmware.com> <1B0B31E4-AD37-475C-9374-7E24AA808479@vmware.com> <5C27CF6F-5BD3-4639-AAA6-73465595B6DF@vmware.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3445.104.17) authentication-results: yesql.se; dkim=none (message not signed) header.d=none;yesql.se; dmarc=none action=none header.from=vmware.com; x-originating-ip: [50.39.198.229] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e354e99b-be20-45c2-bf54-08d887581341 x-ms-traffictypediagnostic: MWHPR05MB2798: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Vut/f6es0OC9KeCFlOBmwk68zgoOvTeY3OPJNgbstykz6DYIPYdNN2ykzMPG2t7kTGGnAWJ2bd30cb81GVwVafyGnWQEYscA1XmY+uNU0WPMJEAmX+oOjDBCX8NPc/MgiEo/3t7Sf9pDzGqSo8vfYjC2A2lWKtnrKxViokIpmUq150Zi95/ye0EyXoPi4vocM4eWIiJTyx8GUiMDkay8p64Kg5/W+nxoYpsANZ73ppjeu26SqaBXXyxnZDg+/+3o2GkSiM7FmRi5lHw2hQu1Y/FP0vDHZuDK3ZOLKVdiSUIC2Td8rIbXGFjg5eR9nnt2/h5HLweIhCkHEQWsmQSz2A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR05MB2957.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(39860400002)(376002)(346002)(136003)(396003)(66446008)(2616005)(36756003)(186003)(66616009)(91956017)(53546011)(4326008)(8676002)(66476007)(316002)(8936002)(71200400001)(99936003)(66946007)(64756008)(66556008)(86362001)(54906003)(6916009)(5660300002)(6512007)(26005)(83380400001)(6486002)(6506007)(76116006)(478600001)(2906002)(33656002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: eP3OTSHQV7iJnuE91S2BKK5FeoVYdGySVodP17HkwMRJtMWK9JpLpOjx2xvfmDtIaaZVAj4KchXcTOshXKKksE4vruqGi7qjuEOKfnW9s6odEABkSwIIN5FJwDf/S8Nhw+F78GJdq3cKJwzeQWNxQmOtWj7xTkYPcJFDm6Oz/YwTICTPTHo/FGAuI+c6YegfJaenykw6/zqjygf6BgRi9DlwJG2/Exi7Uy+8So8BgUBUUt7kUCzDGnnK6tlLC6gMl0SvvoF7XklT6c32JZYW6yCBCyHi4oNIxlYIvmRGqM67qUKeFPUJmAeLlATMc5kYoaQginUS5PKZOUPqIaK+hZ9+ciYGgASiytXv+cDyNudtdN0ZEZT4i21/sE/u6u0o5xmb/6hSRLSIqSjYdZea08pWVzH7mNqpS7lJgU9mj9pHJ4Mu9gojg8tbT5NPt/4EoepOxcVou+YdqkkHm22cEDwRJqKd2Fl+Ad6UOOmSkgKF/0oWajxukNr5KI6vOxuBCZl+NDdvbeCyP4uco6I5cRW8ohoq5CGv5xnV3g95ZFpvZiLvFT+wGftwNBnXqxl4c4doJ70n2u+6HoemPOr3B96+HY2Q/qCU5qdeYH8BkM1+Vd1/DYRurCu2BfbXMpVfc89TXzuPeSX3Ehok1isvcBJtizbzxOAwKzNISl8EZJ30VRj9pvi+GtsTkxh3iBvW9adt2vyxzT6RA+3hva9ZAHar+uDI21hlhBP5/w4hhz48mz/1/tnNzAxA5oQ4Kt/X/GR/n74M8anKE7VECO6Vz3qgldHY0uBA4MDT3OoDuQ+Em/f6MewmHnHu9Z0d1Q8GkV65FM5XvgMXaQ+uBFDzHrFm1oPbgQC7lMawBuS3M8yb+SU+3AxQ1i1yzCddZOU9LCiPXSwEmHiumI4uNPUHvA== x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_FBA0C3653B194E4098F48B0064DB7127vmwarecom_" MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR05MB2957.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e354e99b-be20-45c2-bf54-08d887581341 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Nov 2020 22:12:42.0483 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GjwNjFO+cbW7bFhJCxVyiekVWfGcqpkxj6XCZ1K/Gj20gUbSJ3sXrYuCfS/swrrEBlJrihat8fdkNWAr/o0iDg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR05MB2798 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --_002_FBA0C3653B194E4098F48B0064DB7127vmwarecom_ Content-Type: text/plain; charset="us-ascii" Content-ID: <15EA6B6039E0754EBF17D27EB16AF539@namprd05.prod.outlook.com> Content-Transfer-Encoding: quoted-printable On Nov 11, 2020, at 10:57 AM, Jacob Champion wrote: >=20 > False alarm -- the stderr debugging I'd added in to track down the > assertion tripped up the "no stderr" tests. Zero failing tests now. I took a look at the OpenSSL interop problems you mentioned upthread. I don't see a hang like you did, but I do see a PR_IO_TIMEOUT_ERROR during connection. I think pgtls_read() needs to treat PR_IO_TIMEOUT_ERROR as if no bytes were read, in order to satisfy its API. There was some discussion on this upthread: On Oct 27, 2020, at 1:07 PM, Daniel Gustafsson wrote: >=20 > On 20 Oct 2020, at 21:15, Andres Freund wrote: >>=20 >>> + case PR_IO_TIMEOUT_ERROR: >>> + break; >>=20 >> What does this mean? We'll return with a 0 errno here, right? When is >> this case reachable? >=20 > It should, AFAICT, only be reachable when PR_Recv is used with a timeout = which > we don't do. It mentioned somewhere that it had happened in no-wait call= s due > to a bug, but I fail to find that reference now. Either way, I've remove= d it > to fall into the default error handling which now sets errno correctly as= that > was a paddle short here. PR_IO_TIMEOUT_ERROR is definitely returned in no-wait calls on my machine. It doesn't look like the PR_Recv() API has a choice -- if there's no data, it can't return a positive integer, and returning zero means that the socket has been disconnected. So -1 with a timeout error is the only option. I'm not completely sure why this is exposed so easily with an OpenSSL server -- I'm guessing the implementation slices up its packets differently on the wire, causing a read event before NSS is able to decrypt a full record -- but it's worth noting that this case also shows up during NSS-to-NSS psql connections, when handling notifications at the end of every query. PQconsumeInput() reports a hard failure with the current implementation, but its return value is ignored by PrintNotifications(). Otherwise this probably would have showed up earlier. (What's the best way to test this case? Are there lower-level tests for the protocol/network layer somewhere that I'm missing?)=20 While patching this case, I also noticed that pgtls_read() doesn't call SOCK_ERRNO_SET() for the disconnection case. That is also in the attached patch. --Jacob --_002_FBA0C3653B194E4098F48B0064DB7127vmwarecom_ Content-Type: application/octet-stream; name="nss-handle-timeouts-and-disconnections-in-pgtls_read.patch" Content-Description: nss-handle-timeouts-and-disconnections-in-pgtls_read.patch Content-Disposition: attachment; filename="nss-handle-timeouts-and-disconnections-in-pgtls_read.patch"; size=2010; creation-date="Thu, 12 Nov 2020 22:12:41 GMT"; modification-date="Thu, 12 Nov 2020 22:12:41 GMT" Content-ID: <04F1DBDFE9F0FB48B7A8A664AEC1B2D6@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSA0YmM1ZGM2MWU4YmU0OTBiMDEzYmU1ZjliMzMyNmZhYWUyZGM5OWM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+ CkRhdGU6IFRodSwgMTIgTm92IDIwMjAgMTI6MDI6MzkgLTA4MDAKU3ViamVjdDogW1BBVENIXSBu c3M6IGhhbmRsZSB0aW1lb3V0cyBhbmQgZGlzY29ubmVjdGlvbnMgaW4gcGd0bHNfcmVhZAoKUFJf SU9fVElNRU9VVF9FUlJPUiB3YXMgYmVpbmcgdHJlYXRlZCBhcyBhIGhhcmQgZXJyb3IsIGJ1dCBz aW5jZSB3ZSdyZQpleHBsaWNpdGx5IGFza2luZyBQUl9SZWN2KCkgbm90IHRvIHdhaXQsIHdlIHdh bnQgdG8gdHJlYXQgaXQgYXMgInplcm8KYnl0ZXMgcmVhZCIgaW5zdGVhZC4KClRoaXMgY2FzZSBo YXBwZW5zIHJlbGF0aXZlbHkgb2Z0ZW4gaW4gcHNxbCwgZHVyaW5nIFBRY29uc3VtZUlucHV0KCkg LS0KYnV0IHRoZSByZXR1cm4gdmFsdWUgb2YgUFFjb25zdW1lSW5wdXQoKSBpcyBiZWluZyBpZ25v cmVkIGR1cmluZwpub3RpZmljYXRpb24gaGFuZGxpbmcsIHdoaWNoIG1hc2tzIHRoZSBwcm9ibGVt LiBUaGlzIGFsc28gc2VlbXMgdG8gZml4CmludGVyb3BlcmFiaWxpdHkgd2l0aCBPcGVuU1NMIHNl cnZlcnMgb24gbXkgbWFjaGluZSwgcG9zc2libHkgZHVlIHRvCmRpZmZlcmVuY2VzIGluIG1lc3Nh Z2UgZnJhZ21lbnRhdGlvbiBiZXR3ZWVuIHRoZSBpbXBsZW1lbnRhdGlvbnM/CgpBbHNvIGVuc3Vy ZSB0aGF0IFNPQ0tfRVJSTk9fU0VUKCkgaXMgY2FsbGVkIGluIHRoZSBkaXNjb25uZWN0aW9uIGNh c2U7CnJlYWRfZXJybm8gd2FzIGJlaW5nIHNldCBidXQgbm90IHVzZWQuCi0tLQogc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jIHwgMTkgKysrKysrKysrKysrKy0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jIGIvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtc2VjdXJlLW5zcy5jCmluZGV4IDMwOTBmMzdmNWUuLjhmYzhlMTM4ZTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1uc3MuYworKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtbnNzLmMKQEAgLTQyOSwxNSArNDI5LDE5IEBAIHBndGxz X3JlYWQoUEdjb25uICpjb25uLCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAJaWYgKG5yZWFkID09 IDApCiAJewogCQlyZWFkX2Vycm5vID0gRUNPTk5SRVNFVDsKLQkJcmV0dXJuIC0xOworCQlucmVh ZCA9IC0xOwogCX0KLQotCWlmIChucmVhZCA9PSAtMSkKKwllbHNlIGlmIChucmVhZCA9PSAtMSkK IAl7CiAJCXN0YXR1cyA9IFBSX0dldEVycm9yKCk7CiAKIAkJc3dpdGNoIChzdGF0dXMpCiAJCXsK KwkJCWNhc2UgUFJfSU9fVElNRU9VVF9FUlJPUjoKKwkJCQkvKiBObyBkYXRhIGF2YWlsYWJsZSB5 ZXQuICovCisJCQkJbnJlYWQgPSAwOworCQkJCWJyZWFrOworCiAJCQljYXNlIFBSX1dPVUxEX0JM T0NLX0VSUk9SOgogCQkJCXJlYWRfZXJybm8gPSBFV09VTERCTE9DSzsKIAkJCQlicmVhazsKQEAg LTQ1Niw5ICs0NjAsMTIgQEAgcGd0bHNfcmVhZChQR2Nvbm4gKmNvbm4sIHZvaWQgKnB0ciwgc2l6 ZV90IGxlbikKIAkJCQlicmVhazsKIAkJfQogCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5l cnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoIlRMUyByZWFkIGVycm9yOiAlcyIp LAotCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdlKHN0YXR1cykpOworCQlpZiAobnJlYWQgPT0gLTEp CisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJ ICBsaWJwcV9nZXR0ZXh0KCJUTFMgcmVhZCBlcnJvcjogJXMiKSwKKwkJCQkJCQkgIHBnX1NTTGVy cm1lc3NhZ2Uoc3RhdHVzKSk7CisJCX0KIAl9CiAKIAlTT0NLX0VSUk5PX1NFVChyZWFkX2Vycm5v KTsKLS0gCjIuMjQuMQoK --_002_FBA0C3653B194E4098F48B0064DB7127vmwarecom_--