[ruby-core:123391] [Ruby Feature#21347] Add `open_timeout` as an overall timeout option for `Socket.tcp`
From:
"shioimm (Misaki Shioi) via ruby-core" <ruby-core@...>
Date:
2025-10-04 09:17:45 UTC
List:
ruby-core #123391
SXNzdWUgIzIxMzQ3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgc2hpb2ltbSAoTWlzYWtpIFNoaW9pKS4N Cg0KDQpJIGFwcHJlY2lhdGUgeW91ciBwcm9wb3NhbCwgYnV0IGl04oCZcyBkaWZmaWN1bHQgdG8g Z28gYWxvbmcgd2l0aCBpdC4NCldoaWxlIHRoZSBwcm9wb3NhbCBpcyBhaW1lZCBhdCBpbXByb3Zp bmcgdGhlIGNvbnZlbmllbmNlIG9mIGBUQ1BTb2NrZXQub3BlbmAsIGNoYW5naW5nIGl0cyBpbXBs ZW1lbnRhdGlvbiBqdXN0IGZvciBjb21wYXRpYmlsaXR5IHdpdGggUnVieSAzLjQgYW5kIGJlbG93 IGZlZWxzIGEgYml0IHRvbyBjb3N0bHkuDQpJZGVhbGx5LCBJ4oCZZCBwcmVmZXIgZXZlcnlvbmUg dG8gdXBncmFkZSB0byBSdWJ5IDMuNSBvciBoaWdoZXIgYXMgc29vbiBhcyBwb3NzaWJsZS4NCg0K LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMjEzNDc6 IEFkZCBgb3Blbl90aW1lb3V0YCBhcyBhbiBvdmVyYWxsIHRpbWVvdXQgb3B0aW9uIGZvciBgU29j a2V0LnRjcGANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTM0NyNjaGFuZ2Ut MTE0NzYyDQoNCiogQXV0aG9yOiBzaGlvaW1tIChNaXNha2kgU2hpb2kpDQoqIFN0YXR1czogQ2xv c2VkDQoqIEFzc2lnbmVlOiBzaGlvaW1tIChNaXNha2kgU2hpb2kpDQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpJIHByb3Bvc2UgdG8gYWRkIGFuIG92ZXJhbGwgdGlt ZW91dCBvcHRpb24gdG8gYFNvY2tldC50Y3BgIChhbmQgYFRDUFNvY2tldC5uZXdgKQ0KDQojIyMg QmFja2dyb3VuZA0KDQpDdXJyZW50bHksIGBUQ1BTb2NrZXQubmV3YCBhbmQgYFNvY2tldC50Y3Bg IGFjY2VwdCB0d28ga2luZCBvZiB0aW1lb3V0IG9wdGlvbnM6DQotIGByZXNvbHZfdGltZW91dGAs IHdoaWNoIGNvbnRyb2xzIHRoZSB0aW1lb3V0IGZvciBETlMgcmVzb2x1dGlvbg0KLSBgY29ubmVj dF90aW1lb3V0YCwgd2hpY2ggY29udHJvbHMgdGhlIHRpbWVvdXQgZm9yIHRoZSBjb25uZWN0aW9u IGF0dGVtcHQNCg0KV2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIEhhcHB5IEV5ZWJhbGxzIFZlcnNp b24gMiAoYXMgcGVyIFtSRkMgODMwNV0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2Mv aHRtbC9yZmM4MzA1KSkgaW5bIEZlYXR1cmUgIzIwMTA4XShodHRwczovL2J1Z3MucnVieS1sYW5n Lm9yZy9pc3N1ZXMvMjAxMDgpIGFuZCBbRmVhdHVyZSAjMjA3ODJdKGh0dHBzOi8vYnVncy5ydWJ5 LWxhbmcub3JnL2lzc3Vlcy8yMDc4MiksIGJvdGggYWRkcmVzcyByZXNvbHV0aW9uIGFuZCBjb25u ZWN0aW9uIGF0dGVtcHRzIGFyZSBub3cgcGFyYWxsZWxpemVkLiANCkFzIGEgcmVzdWx0LCB0aGUg c3VtIG9mIGByZXNvbHZfdGltZW91dGAgYW5kIGBjb25uZWN0X3RpbWVvdXRgIG5vIGxvbmdlciBy ZXByZXNlbnRzIHRoZSB0b3RhbCB0aW1lb3V0IGR1cmF0aW9uLiBUaGlzIGlzIGJlY2F1c2UsIGlu IEhFdjIsIG5hbWUgcmVzb2x1dGlvbiBhbmQgY29ubmVjdGlvbiBhdHRlbXB0cyBhcmUgcGVyZm9y bWVkIGNvbmN1cnJlbnRseSwgY2F1c2luZyB0aGUgdHdvIHRpbWVvdXRzIHRvIG92ZXJsYXAuDQoN CkV4YW1wbGU6DQpXaGVuIGByZXNvbHZfdGltZW91dDogMjAwbXNgIGFuZCBgY29ubmVjdF90aW1l b3V0OiAxMDBtc2AgYXJlIHNldDoNCjEuIEFuIElQdjYgYWRkcmVzcyAgaXMgcmVzb2x2ZWQgYWZ0 ZXIgdGhlIG1ldGhvZCBzdGFydHMgaW1tZWRpYXRlbHkgKElQdjQgaXMgc3RpbGwgYmVpbmcgcmVz b2x2ZWQpLg0KMi4gQSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgaW5pdGlhdGVkIHRvIHRoZSBJUHY2 IGFkZHJlc3MNCjMuIEFmdGVyIDEwMG1zLCBgY29ubmVjdF90aW1lb3V0YCBpcyBleGNlZWRlZC4g SG93ZXZlciwgc2luY2UgYHJlc29sdl90aW1lb3V0YCBzdGlsbCBoYXMgMTAwbXMgbGVmdCwgdGhl IElQdjQgcmVzb2x1dGlvbiBjb250aW51ZXMuDQo0LiBBZnRlciAyMDBtcyBmcm9tIHRoZSBzdGFy dCwgdGhlIG1ldGhvZCByYWlzZXMgYSBgcmVzb2x2X3RpbWVvdXRgIGVycm9yLg0KDQpJbiB0aGlz IGNhc2UsIHRoZSB0b3RhbCBlbGFwc2VkIHRpbWUgYmVmb3JlIGEgdGltZW91dCBpcyAyMDBtcywg bm90IHRoZSBleHBlY3RlZCAzMDBtcyAoMTAwbXMgKyAyMDBtcykuDQoNCkZ1cnRoZXJtb3JlLCBp biBIRXYyLCBjb25uZWN0aW9uIGF0dGVtcHRzIGFyZSBhbHNvIHBhcmFsbGVsaXplZC4NCkl0IHN0 YXJ0cyBhIG5ldyBjb25uZWN0aW9uIGF0dGVtcHRzIGV2ZXJ5IDI1MG1zIGZvciByZXNvbHZlZCBh ZGRyZXNzZXMuIFRoaXMgbWFrZXMgdGhlIGRlZmluaXRpb24gb2YgYGNvbm5lY3RfdGltZW91dGAg ZXZlbiBtb3JlIGFtYmlndW91c+KAlHNwZWNpZmljYWxseSwgaXQgYmVjb21lcyB1bmNsZWFyIGZy b20gd2hpY2ggcG9pbnQgdGhlIHRpbWVvdXQgaXMgY291bnRlZC4NCg0KQWRkaXRpb25hbGx5LCB0 aGVzZSBtZXRob2RzIGluaXRpYXRlIG5ldyBjb25uZWN0aW9uIGF0dGVtcHRzIGV2ZXJ5IDI1MG1z IChDb25uZWN0aW9uIEF0dGVtcHQgRGVsYXkpIGZvciBlYWNoIGNhbmRpZGF0ZSBhZGRyZXNzLCB0 aGVyZWJ5IHBhcmFsbGVsaXppbmcgY29ubmVjdGlvbiBhdHRlbXB0cy4gSG93ZXZlciwgdGhpcyBi ZWhhdmlvciBtYWtlcyBpdCB1bmNsZWFyIGZyb20gd2hpY2ggcG9pbnQgaW4gdGltZSB0aGUgY29u bmVjdF90aW1lb3V0IGlzIGFjdHVhbGx5IG1lYXN1cmVkLg0KQ3VycmVudGx5LCBhIGBjb25uZWN0 X3RpbWVvdXRgIGlzIHJhaXNlZCBvbmx5IGFmdGVyIHRoZSBsYXN0IGNvbm5lY3Rpb24gYXR0ZW1w dCBleGNlZWRzIHRoZSB0aW1lb3V0Lg0KDQpFeGFtcGxlOg0KV2hlbiBgY29ubmVjdF90aW1lb3V0 OiAxMDBtc2AgaXMgc2V0IGFuZCAzIGFkZHJlc3MgY2FuZGlkYXRlczoNCjEuIENvbm5lY3QgdG8g YWRkcmVzcyBgYWAgYXQgdD0wbXMuDQoyLiBDb25uZWN0IHRvIGFkZHJlc3MgYGJgIGF0IHQ9MjUw bXMuDQozLiBDb25uZWN0IHRvIGFkZHJlc3MgYGNgIGF0IHQ9NTAwbXMuDQo0LiBJZiBhbGwgZmFp bCwgdGhlIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXQgdD0xNTAwbXMgKDEwMDBtcyBhZnRlciBgY2As IDEyNTBtcyBhZnRlciBgYmAsIDE1MDBtcyBhZnRlciBgYWApLg0KDQoxLiBTdGFydCBhIGNvbm5l Y3Rpb24gYXR0ZW1wdCB0byB0aGUgYWRkcmVzcyBgYWANCjIuIDI1MG1zIGFmdGVyIHN0ZXAgMSwg c3RhcnQgYSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0IHRvIHRoZSBhZGRyZXNzIGBiYA0KMy4gNTAw bXMgYWZ0ZXIgc3RlcCAxLCBzdGFydCBhIG5ldyBjb25uZWN0aW9uIGF0dGVtcHQgdG8gdGhlIGFk ZHJlc3MgYGNgDQo0LiAxMDAwbXMgYWZ0ZXIgc3RlcCAzICgxMDAwbXMgYWZ0ZXIgc3RhcnRpbmcg dGhlIGNvbm5lY3Rpb24gdG8gYGNgLCAxMjUwbXMgYWZ0ZXIgc3RhcnRpbmcgdGhlIGNvbm5lY3Rp b24gdG8gYGIsYCBhbmQgMTUwMG1zIGFmdGVyIHN0YXJ0aW5nIHRoZSBjb25uZWN0aW9uIHRvIGBh YCkgYGNvbm5lY3RfdGltZW91dGAgaXMgcmFpc2VkDQoNClRoaXMgYmVoYXZpb3IgYWltcyB0byBm YXZvciBzdWNjZXNzZnVsIGNvbm5lY3Rpb25zIGJ5IGFsbG93aW5nIG1vcmUgdGltZSBmb3IgZWFj aCBhdHRlbXB0LCBidXQgaXQgcmVzdWx0cyBpbiBhIHRpbWVvdXQgbW9kZWwgdGhhdCBpcyBkaWZm aWN1bHQgdG8gcmVhc29uIGFib3V0Lg0KDQpUaGVzZSBtZXRob2RzIGhhdmUgc3VwcG9ydGVkIGBy ZXNvbHZfdGltZW91dGAgYW5kIGBjb25uZWN0X3RpbWVvdXRgIG9wdGlvbnMgZXZlbiBiZWZvcmUg dGhlIGludHJvZHVjdGlvbiBvZiBIRXYyLiBIb3dldmVyLCBpbiBtYW55IHVzZSBjYXNlcywgaXQg d291bGQgYmUgbW9yZSBjb252ZW5pZW50IGlmIGEgdGltZW91dCBvY2N1cnJlZCBhZnRlciBhIHNw ZWNpZmllZCBkdXJhdGlvbiBmcm9tIHRoZSBzdGFydCBvZiB0aGUgbWV0aG9kLiBTaW1pbGFyIGZ1 bmN0aW9ucyBpbiBvdGhlciBsYW5ndWFnZXMgKHN1Y2ggYXMgUEhQLCBQeXRob24sIGFuZCBHbykg dHlwaWNhbGx5IGFsbG93IHNwZWNpZnlpbmcgb25seSBhbiBvdmVyYWxsIHRpbWVvdXQuDQoNCg0K IyMjIFByb3Bvc2FsDQpJIHByb3Bvc2UgYWRkaW5nIGFuIGBvcGVuX3RpbWVvdXRgIG9wdGlvbiB0 byBgU29ja2V0LnRjcGAgaW4gdGhlIGZvbGxvd2luZyBQUiwgd2hpY2ggdHJpZ2dlcnMgYSB0aW1l b3V0IGFmdGVyIGEgc3BlY2lmaWVkIGR1cmF0aW9uIGhhcyBlbGFwc2VkIGZyb20gdGhlIHN0YXJ0 IG9mIHRoZSBtZXRob2QuDQpodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1bGwvMTMzNjgN Cg0KVGhlIG5hbWUgYG9wZW5fdGltZW91dGAgYWxpZ25zIHdpdGggdGhlIGV4aXN0aW5nIGFjY2Vz c29yIHVzZWQgaW4gYE5ldDo6SFRUUGAuDQpJZiBgb3Blbl90aW1lb3V0YCBpcyBzcGVjaWZpZWQg dG9nZXRoZXIgd2l0aCBgcmVzb2x2X3RpbWVvdXRgIGFuZCBgY29ubmVjdF90aW1lb3V0YCwgSSBw cm9wb3NlIHRoYXQgb25seSBgb3Blbl90aW1lb3V0YCBiZSB1c2VkIGFuZCB0aGUgb3RoZXJzIGJl IGlnbm9yZWQuIFdoaWxlIGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQgY29tYmluYXRpb25zIG9m IGBvcGVuX3RpbWVvdXRgLCBgcmVzb2x2X3RpbWVvdXRgLCBhbmQgYGNvbm5lY3RfdGltZW91dGAs IGRvaW5nIHNvIHdvdWxkIHJlcXVpcmUgZGVmaW5pbmcgd2hpY2ggdGltZW91dCB0YWtlcyBwcmVj ZWRlbmNlIGluIHdoaWNoIHNpdHVhdGlvbnMuIEluIHRoaXMgY2FzZSwgSSBiZWxpZXZlIGl0IGlz IG1vcmUgdmFsdWFibGUgdG8ga2VlcCB0aGUgYmVoYXZpb3Igc2ltcGxlIGFuZCBlYXN5IHRvIHVu ZGVyc3RhbmQsIHJhdGhlciB0aGFuIHN1cHBvcnRpbmcgbW9yZSBjb21wbGV4IHVzZSBjYXNlcy4N Cg0KSWYgdGhpcyBwcm9wb3NhbCBpcyBhY2NlcHRlZCwgSSBhbHNvIHBsYW4gdG8gZXh0ZW5kIGBv cGVuX3RpbWVvdXRgIHN1cHBvcnQgdG8gYFRDUFNvY2tldC5uZXdgLg0KDQpXaGlsZSB0aGUgbG9u Zy10ZXJtIGZ1dHVyZSBvZiBgcmVzb2x2X3RpbWVvdXRgIGFuZCBgY29ubmVjdF90aW1lb3V0YCBt YXkgd2FycmFudCBmdXJ0aGVyIGRpc2N1c3Npb24sIEkgYmVsaWV2ZSB0aGUgaW1tZWRpYXRlIHBy aW9yaXR5IGlzIHRvIG9mZmVyIGEgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBzcGVjaWZ5IGFuIG92 ZXJhbGwgdGltZW91dC4NCg0KIyMjIE91dGNvbWUNCklmIGBvcGVuX3RpbWVvdXRgIGlzIGFsc28g c3VwcG9ydGVkIGJ5IGBUQ1BTb2NrZXQubmV3YCwgdXNlcnMgd291bGQgYmUgYWJsZSB0byBtYW5h Z2UgdG90YWwgY29ubmVjdGlvbiB0aW1lb3V0cyBkaXJlY3RseSBpbiBgTmV0OjpIVFRQI2Nvbm5l Y3RgIHdpdGhvdXQgcmVseWluZyBvbiBgVGltZW91dC50aW1lb3V0YC4NCmh0dHBzOi8vZ2l0aHVi LmNvbS9ydWJ5L3J1YnkvYmxvYi9hYTBmNjg5YmY0NTM1MmM0YTU5MmU3ZjFhMDQ0OTEyYzQwNDM1 MjY2L2xpYi9uZXQvaHR0cC5yYiNMMTY1Nw0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy8NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K IHJ1YnktY29yZSBtYWlsaW5nIGxpc3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRv IHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFu Zy5vcmcKIHJ1YnktY29yZSBpbmZvIC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFu My9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1sYW5nLm9yZy8K