[ruby-core:122424] [Ruby Feature#21347] Add `open_timeout` as an overall timeout option for `Socket.tcp`
From:
"matz (Yukihiro Matsumoto) via ruby-core" <ruby-core@...>
Date:
2025-06-05 04:52:07 UTC
List:
ruby-core #122424
SXNzdWUgIzIxMzQ3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWF0eiAoWXVraWhpcm8gTWF0c3Vtb3Rv KS4NCg0KDQpBY2NlcHRlZC4gR28gYWhlYWQuDQoNCk1hdHouDQoNCg0KLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMjEzNDc6IEFkZCBgb3Blbl90aW1l b3V0YCBhcyBhbiBvdmVyYWxsIHRpbWVvdXQgb3B0aW9uIGZvciBgU29ja2V0LnRjcGANCmh0dHBz Oi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTM0NyNjaGFuZ2UtMTEzNjA0DQoNCiogQXV0 aG9yOiBzaGlvaW1tIChNaXNha2kgU2hpb2kpDQoqIFN0YXR1czogT3Blbg0KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KSSBwcm9wb3NlIHRvIGFkZCBhbiBvdmVyYWxs IHRpbWVvdXQgb3B0aW9uIHRvIGBTb2NrZXQudGNwYCAoYW5kIGBUQ1BTb2NrZXQubmV3YCkNCg0K IyMjIEJhY2tncm91bmQNCg0KQ3VycmVudGx5LCBgVENQU29ja2V0Lm5ld2AgYW5kIGBTb2NrZXQu dGNwYCBhY2NlcHQgdHdvIGtpbmQgb2YgdGltZW91dCBvcHRpb25zOg0KLSBgcmVzb2x2X3RpbWVv dXRgLCB3aGljaCBjb250cm9scyB0aGUgdGltZW91dCBmb3IgRE5TIHJlc29sdXRpb24NCi0gYGNv bm5lY3RfdGltZW91dGAsIHdoaWNoIGNvbnRyb2xzIHRoZSB0aW1lb3V0IGZvciB0aGUgY29ubmVj dGlvbiBhdHRlbXB0DQoNCldpdGggdGhlIGludHJvZHVjdGlvbiBvZiBIYXBweSBFeWViYWxscyBW ZXJzaW9uIDIgKGFzIHBlciBbUkZDIDgzMDVdKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcv ZG9jL2h0bWwvcmZjODMwNSkpIGluWyBGZWF0dXJlICMyMDEwOF0oaHR0cHM6Ly9idWdzLnJ1Ynkt bGFuZy5vcmcvaXNzdWVzLzIwMTA4KSBhbmQgW0ZlYXR1cmUgIzIwNzgyXShodHRwczovL2J1Z3Mu cnVieS1sYW5nLm9yZy9pc3N1ZXMvMjA3ODIpLCBib3RoIGFkZHJlc3MgcmVzb2x1dGlvbiBhbmQg Y29ubmVjdGlvbiBhdHRlbXB0cyBhcmUgbm93IHBhcmFsbGVsaXplZC4gDQpBcyBhIHJlc3VsdCwg dGhlIHN1bSBvZiBgcmVzb2x2X3RpbWVvdXRgIGFuZCBgY29ubmVjdF90aW1lb3V0YCBubyBsb25n ZXIgcmVwcmVzZW50cyB0aGUgdG90YWwgdGltZW91dCBkdXJhdGlvbi4gVGhpcyBpcyBiZWNhdXNl LCBpbiBIRXYyLCBuYW1lIHJlc29sdXRpb24gYW5kIGNvbm5lY3Rpb24gYXR0ZW1wdHMgYXJlIHBl cmZvcm1lZCBjb25jdXJyZW50bHksIGNhdXNpbmcgdGhlIHR3byB0aW1lb3V0cyB0byBvdmVybGFw Lg0KDQpFeGFtcGxlOg0KV2hlbiBgcmVzb2x2X3RpbWVvdXQ6IDIwMG1zYCBhbmQgYGNvbm5lY3Rf dGltZW91dDogMTAwbXNgIGFyZSBzZXQ6DQoxLiBBbiBJUHY2IGFkZHJlc3MgIGlzIHJlc29sdmVk IGFmdGVyIHRoZSBtZXRob2Qgc3RhcnRzIGltbWVkaWF0ZWx5IChJUHY0IGlzIHN0aWxsIGJlaW5n IHJlc29sdmVkKS4NCjIuIEEgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGluaXRpYXRlZCB0byB0aGUg SVB2NiBhZGRyZXNzDQozLiBBZnRlciAxMDBtcywgYGNvbm5lY3RfdGltZW91dGAgaXMgZXhjZWVk ZWQuIEhvd2V2ZXIsIHNpbmNlIGByZXNvbHZfdGltZW91dGAgc3RpbGwgaGFzIDEwMG1zIGxlZnQs IHRoZSBJUHY0IHJlc29sdXRpb24gY29udGludWVzLg0KNC4gQWZ0ZXIgMjAwbXMgZnJvbSB0aGUg c3RhcnQsIHRoZSBtZXRob2QgcmFpc2VzIGEgYHJlc29sdl90aW1lb3V0YCBlcnJvci4NCg0KSW4g dGhpcyBjYXNlLCB0aGUgdG90YWwgZWxhcHNlZCB0aW1lIGJlZm9yZSBhIHRpbWVvdXQgaXMgMjAw bXMsIG5vdCB0aGUgZXhwZWN0ZWQgMzAwbXMgKDEwMG1zICsgMjAwbXMpLg0KDQpGdXJ0aGVybW9y ZSwgaW4gSEV2MiwgY29ubmVjdGlvbiBhdHRlbXB0cyBhcmUgYWxzbyBwYXJhbGxlbGl6ZWQuDQpJ dCBzdGFydHMgYSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0cyBldmVyeSAyNTBtcyBmb3IgcmVzb2x2 ZWQgYWRkcmVzc2VzLiBUaGlzIG1ha2VzIHRoZSBkZWZpbml0aW9uIG9mIGBjb25uZWN0X3RpbWVv dXRgIGV2ZW4gbW9yZSBhbWJpZ3VvdXPigJRzcGVjaWZpY2FsbHksIGl0IGJlY29tZXMgdW5jbGVh ciBmcm9tIHdoaWNoIHBvaW50IHRoZSB0aW1lb3V0IGlzIGNvdW50ZWQuDQoNCkFkZGl0aW9uYWxs eSwgdGhlc2UgbWV0aG9kcyBpbml0aWF0ZSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0cyBldmVyeSAy NTBtcyAoQ29ubmVjdGlvbiBBdHRlbXB0IERlbGF5KSBmb3IgZWFjaCBjYW5kaWRhdGUgYWRkcmVz cywgdGhlcmVieSBwYXJhbGxlbGl6aW5nIGNvbm5lY3Rpb24gYXR0ZW1wdHMuIEhvd2V2ZXIsIHRo aXMgYmVoYXZpb3IgbWFrZXMgaXQgdW5jbGVhciBmcm9tIHdoaWNoIHBvaW50IGluIHRpbWUgdGhl IGNvbm5lY3RfdGltZW91dCBpcyBhY3R1YWxseSBtZWFzdXJlZC4NCkN1cnJlbnRseSwgYSBgY29u bmVjdF90aW1lb3V0YCBpcyByYWlzZWQgb25seSBhZnRlciB0aGUgbGFzdCBjb25uZWN0aW9uIGF0 dGVtcHQgZXhjZWVkcyB0aGUgdGltZW91dC4NCg0KRXhhbXBsZToNCldoZW4gYGNvbm5lY3RfdGlt ZW91dDogMTAwbXNgIGlzIHNldCBhbmQgMyBhZGRyZXNzIGNhbmRpZGF0ZXM6DQoxLiBDb25uZWN0 IHRvIGFkZHJlc3MgYGFgIGF0IHQ9MG1zLg0KMi4gQ29ubmVjdCB0byBhZGRyZXNzIGBiYCBhdCB0 PTI1MG1zLg0KMy4gQ29ubmVjdCB0byBhZGRyZXNzIGBjYCBhdCB0PTUwMG1zLg0KNC4gSWYgYWxs IGZhaWwsIHRoZSBleGNlcHRpb24gaXMgcmFpc2VkIGF0IHQ9MTUwMG1zICgxMDAwbXMgYWZ0ZXIg YGNgLCAxMjUwbXMgYWZ0ZXIgYGJgLCAxNTAwbXMgYWZ0ZXIgYGFgKS4NCg0KMS4gU3RhcnQgYSBj b25uZWN0aW9uIGF0dGVtcHQgdG8gdGhlIGFkZHJlc3MgYGFgDQoyLiAyNTBtcyBhZnRlciBzdGVw IDEsIHN0YXJ0IGEgbmV3IGNvbm5lY3Rpb24gYXR0ZW1wdCB0byB0aGUgYWRkcmVzcyBgYmANCjMu IDUwMG1zIGFmdGVyIHN0ZXAgMSwgc3RhcnQgYSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0IHRvIHRo ZSBhZGRyZXNzIGBjYA0KNC4gMTAwMG1zIGFmdGVyIHN0ZXAgMyAoMTAwMG1zIGFmdGVyIHN0YXJ0 aW5nIHRoZSBjb25uZWN0aW9uIHRvIGBjYCwgMTI1MG1zIGFmdGVyIHN0YXJ0aW5nIHRoZSBjb25u ZWN0aW9uIHRvIGBiLGAgYW5kIDE1MDBtcyBhZnRlciBzdGFydGluZyB0aGUgY29ubmVjdGlvbiB0 byBgYWApIGBjb25uZWN0X3RpbWVvdXRgIGlzIHJhaXNlZA0KDQpUaGlzIGJlaGF2aW9yIGFpbXMg dG8gZmF2b3Igc3VjY2Vzc2Z1bCBjb25uZWN0aW9ucyBieSBhbGxvd2luZyBtb3JlIHRpbWUgZm9y IGVhY2ggYXR0ZW1wdCwgYnV0IGl0IHJlc3VsdHMgaW4gYSB0aW1lb3V0IG1vZGVsIHRoYXQgaXMg ZGlmZmljdWx0IHRvIHJlYXNvbiBhYm91dC4NCg0KVGhlc2UgbWV0aG9kcyBoYXZlIHN1cHBvcnRl ZCBgcmVzb2x2X3RpbWVvdXRgIGFuZCBgY29ubmVjdF90aW1lb3V0YCBvcHRpb25zIGV2ZW4gYmVm b3JlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgSEV2Mi4gSG93ZXZlciwgaW4gbWFueSB1c2UgY2FzZXMs IGl0IHdvdWxkIGJlIG1vcmUgY29udmVuaWVudCBpZiBhIHRpbWVvdXQgb2NjdXJyZWQgYWZ0ZXIg YSBzcGVjaWZpZWQgZHVyYXRpb24gZnJvbSB0aGUgc3RhcnQgb2YgdGhlIG1ldGhvZC4gU2ltaWxh ciBmdW5jdGlvbnMgaW4gb3RoZXIgbGFuZ3VhZ2VzIChzdWNoIGFzIFBIUCwgUHl0aG9uLCBhbmQg R28pIHR5cGljYWxseSBhbGxvdyBzcGVjaWZ5aW5nIG9ubHkgYW4gb3ZlcmFsbCB0aW1lb3V0Lg0K DQoNCiMjIyBQcm9wb3NhbA0KSSBwcm9wb3NlIGFkZGluZyBhbiBgb3Blbl90aW1lb3V0YCBvcHRp b24gdG8gYFNvY2tldC50Y3BgIGluIHRoZSBmb2xsb3dpbmcgUFIsIHdoaWNoIHRyaWdnZXJzIGEg dGltZW91dCBhZnRlciBhIHNwZWNpZmllZCBkdXJhdGlvbiBoYXMgZWxhcHNlZCBmcm9tIHRoZSBz dGFydCBvZiB0aGUgbWV0aG9kLg0KaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzEz MzY4DQoNClRoZSBuYW1lIGBvcGVuX3RpbWVvdXRgIGFsaWducyB3aXRoIHRoZSBleGlzdGluZyBh Y2Nlc3NvciB1c2VkIGluIGBOZXQ6OkhUVFBgLg0KSWYgYG9wZW5fdGltZW91dGAgaXMgc3BlY2lm aWVkIHRvZ2V0aGVyIHdpdGggYHJlc29sdl90aW1lb3V0YCBhbmQgYGNvbm5lY3RfdGltZW91dGAs IEkgcHJvcG9zZSB0aGF0IG9ubHkgYG9wZW5fdGltZW91dGAgYmUgdXNlZCBhbmQgdGhlIG90aGVy cyBiZSBpZ25vcmVkLiBXaGlsZSBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IGNvbWJpbmF0aW9u cyBvZiBgb3Blbl90aW1lb3V0YCwgYHJlc29sdl90aW1lb3V0YCwgYW5kIGBjb25uZWN0X3RpbWVv dXRgLCBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGRlZmluaW5nIHdoaWNoIHRpbWVvdXQgdGFrZXMg cHJlY2VkZW5jZSBpbiB3aGljaCBzaXR1YXRpb25zLiBJbiB0aGlzIGNhc2UsIEkgYmVsaWV2ZSBp dCBpcyBtb3JlIHZhbHVhYmxlIHRvIGtlZXAgdGhlIGJlaGF2aW9yIHNpbXBsZSBhbmQgZWFzeSB0 byB1bmRlcnN0YW5kLCByYXRoZXIgdGhhbiBzdXBwb3J0aW5nIG1vcmUgY29tcGxleCB1c2UgY2Fz ZXMuDQoNCklmIHRoaXMgcHJvcG9zYWwgaXMgYWNjZXB0ZWQsIEkgYWxzbyBwbGFuIHRvIGV4dGVu ZCBgb3Blbl90aW1lb3V0YCBzdXBwb3J0IHRvIGBUQ1BTb2NrZXQubmV3YC4NCg0KV2hpbGUgdGhl IGxvbmctdGVybSBmdXR1cmUgb2YgYHJlc29sdl90aW1lb3V0YCBhbmQgYGNvbm5lY3RfdGltZW91 dGAgbWF5IHdhcnJhbnQgZnVydGhlciBkaXNjdXNzaW9uLCBJIGJlbGlldmUgdGhlIGltbWVkaWF0 ZSBwcmlvcml0eSBpcyB0byBvZmZlciBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gc3BlY2lmeSBh biBvdmVyYWxsIHRpbWVvdXQuDQoNCiMjIyBPdXRjb21lDQpJZiBgb3Blbl90aW1lb3V0YCBpcyBh bHNvIHN1cHBvcnRlZCBieSBgVENQU29ja2V0Lm5ld2AsIHVzZXJzIHdvdWxkIGJlIGFibGUgdG8g bWFuYWdlIHRvdGFsIGNvbm5lY3Rpb24gdGltZW91dHMgZGlyZWN0bHkgaW4gYE5ldDo6SFRUUCNj b25uZWN0YCB3aXRob3V0IHJlbHlpbmcgb24gYFRpbWVvdXQudGltZW91dGAuDQpodHRwczovL2dp dGh1Yi5jb20vcnVieS9ydWJ5L2Jsb2IvYWEwZjY4OWJmNDUzNTJjNGE1OTJlN2YxYTA0NDkxMmM0 MDQzNTI2Ni9saWIvbmV0L2h0dHAucmIjTDE2NTcNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1 YnktbGFuZy5vcmcvDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3Jn CiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5 LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFp bG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcvCg==