[ruby-core:122446] [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-06-05 09:27:39 UTC
List:
ruby-core #122446
SXNzdWUgIzIxMzQ3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgc2hpb2ltbSAoTWlzYWtpIFNoaW9pKS4N Cg0KU3RhdHVzIGNoYW5nZWQgZnJvbSBPcGVuIHRvIEFzc2lnbmVkDQpBc3NpZ25lZSBzZXQgdG8g c2hpb2ltbSAoTWlzYWtpIFNoaW9pKQ0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpGZWF0dXJlICMyMTM0NzogQWRkIGBvcGVuX3RpbWVvdXRgIGFzIGFuIG92ZXJh bGwgdGltZW91dCBvcHRpb24gZm9yIGBTb2NrZXQudGNwYA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFu Zy5vcmcvaXNzdWVzLzIxMzQ3I2NoYW5nZS0xMTM2MjcNCg0KKiBBdXRob3I6IHNoaW9pbW0gKE1p c2FraSBTaGlvaSkNCiogU3RhdHVzOiBBc3NpZ25lZA0KKiBBc3NpZ25lZTogc2hpb2ltbSAoTWlz YWtpIFNoaW9pKQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KSSBw cm9wb3NlIHRvIGFkZCBhbiBvdmVyYWxsIHRpbWVvdXQgb3B0aW9uIHRvIGBTb2NrZXQudGNwYCAo YW5kIGBUQ1BTb2NrZXQubmV3YCkNCg0KIyMjIEJhY2tncm91bmQNCg0KQ3VycmVudGx5LCBgVENQ U29ja2V0Lm5ld2AgYW5kIGBTb2NrZXQudGNwYCBhY2NlcHQgdHdvIGtpbmQgb2YgdGltZW91dCBv cHRpb25zOg0KLSBgcmVzb2x2X3RpbWVvdXRgLCB3aGljaCBjb250cm9scyB0aGUgdGltZW91dCBm b3IgRE5TIHJlc29sdXRpb24NCi0gYGNvbm5lY3RfdGltZW91dGAsIHdoaWNoIGNvbnRyb2xzIHRo ZSB0aW1lb3V0IGZvciB0aGUgY29ubmVjdGlvbiBhdHRlbXB0DQoNCldpdGggdGhlIGludHJvZHVj dGlvbiBvZiBIYXBweSBFeWViYWxscyBWZXJzaW9uIDIgKGFzIHBlciBbUkZDIDgzMDVdKGh0dHBz Oi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjODMwNSkpIGluWyBGZWF0dXJlICMy MDEwOF0oaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIwMTA4KSBhbmQgW0ZlYXR1 cmUgIzIwNzgyXShodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjA3ODIpLCBib3Ro IGFkZHJlc3MgcmVzb2x1dGlvbiBhbmQgY29ubmVjdGlvbiBhdHRlbXB0cyBhcmUgbm93IHBhcmFs bGVsaXplZC4gDQpBcyBhIHJlc3VsdCwgdGhlIHN1bSBvZiBgcmVzb2x2X3RpbWVvdXRgIGFuZCBg Y29ubmVjdF90aW1lb3V0YCBubyBsb25nZXIgcmVwcmVzZW50cyB0aGUgdG90YWwgdGltZW91dCBk dXJhdGlvbi4gVGhpcyBpcyBiZWNhdXNlLCBpbiBIRXYyLCBuYW1lIHJlc29sdXRpb24gYW5kIGNv bm5lY3Rpb24gYXR0ZW1wdHMgYXJlIHBlcmZvcm1lZCBjb25jdXJyZW50bHksIGNhdXNpbmcgdGhl IHR3byB0aW1lb3V0cyB0byBvdmVybGFwLg0KDQpFeGFtcGxlOg0KV2hlbiBgcmVzb2x2X3RpbWVv dXQ6IDIwMG1zYCBhbmQgYGNvbm5lY3RfdGltZW91dDogMTAwbXNgIGFyZSBzZXQ6DQoxLiBBbiBJ UHY2IGFkZHJlc3MgIGlzIHJlc29sdmVkIGFmdGVyIHRoZSBtZXRob2Qgc3RhcnRzIGltbWVkaWF0 ZWx5IChJUHY0IGlzIHN0aWxsIGJlaW5nIHJlc29sdmVkKS4NCjIuIEEgY29ubmVjdGlvbiBhdHRl bXB0IGlzIGluaXRpYXRlZCB0byB0aGUgSVB2NiBhZGRyZXNzDQozLiBBZnRlciAxMDBtcywgYGNv bm5lY3RfdGltZW91dGAgaXMgZXhjZWVkZWQuIEhvd2V2ZXIsIHNpbmNlIGByZXNvbHZfdGltZW91 dGAgc3RpbGwgaGFzIDEwMG1zIGxlZnQsIHRoZSBJUHY0IHJlc29sdXRpb24gY29udGludWVzLg0K NC4gQWZ0ZXIgMjAwbXMgZnJvbSB0aGUgc3RhcnQsIHRoZSBtZXRob2QgcmFpc2VzIGEgYHJlc29s dl90aW1lb3V0YCBlcnJvci4NCg0KSW4gdGhpcyBjYXNlLCB0aGUgdG90YWwgZWxhcHNlZCB0aW1l IGJlZm9yZSBhIHRpbWVvdXQgaXMgMjAwbXMsIG5vdCB0aGUgZXhwZWN0ZWQgMzAwbXMgKDEwMG1z ICsgMjAwbXMpLg0KDQpGdXJ0aGVybW9yZSwgaW4gSEV2MiwgY29ubmVjdGlvbiBhdHRlbXB0cyBh cmUgYWxzbyBwYXJhbGxlbGl6ZWQuDQpJdCBzdGFydHMgYSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0 cyBldmVyeSAyNTBtcyBmb3IgcmVzb2x2ZWQgYWRkcmVzc2VzLiBUaGlzIG1ha2VzIHRoZSBkZWZp bml0aW9uIG9mIGBjb25uZWN0X3RpbWVvdXRgIGV2ZW4gbW9yZSBhbWJpZ3VvdXPigJRzcGVjaWZp Y2FsbHksIGl0IGJlY29tZXMgdW5jbGVhciBmcm9tIHdoaWNoIHBvaW50IHRoZSB0aW1lb3V0IGlz IGNvdW50ZWQuDQoNCkFkZGl0aW9uYWxseSwgdGhlc2UgbWV0aG9kcyBpbml0aWF0ZSBuZXcgY29u bmVjdGlvbiBhdHRlbXB0cyBldmVyeSAyNTBtcyAoQ29ubmVjdGlvbiBBdHRlbXB0IERlbGF5KSBm b3IgZWFjaCBjYW5kaWRhdGUgYWRkcmVzcywgdGhlcmVieSBwYXJhbGxlbGl6aW5nIGNvbm5lY3Rp b24gYXR0ZW1wdHMuIEhvd2V2ZXIsIHRoaXMgYmVoYXZpb3IgbWFrZXMgaXQgdW5jbGVhciBmcm9t IHdoaWNoIHBvaW50IGluIHRpbWUgdGhlIGNvbm5lY3RfdGltZW91dCBpcyBhY3R1YWxseSBtZWFz dXJlZC4NCkN1cnJlbnRseSwgYSBgY29ubmVjdF90aW1lb3V0YCBpcyByYWlzZWQgb25seSBhZnRl ciB0aGUgbGFzdCBjb25uZWN0aW9uIGF0dGVtcHQgZXhjZWVkcyB0aGUgdGltZW91dC4NCg0KRXhh bXBsZToNCldoZW4gYGNvbm5lY3RfdGltZW91dDogMTAwbXNgIGlzIHNldCBhbmQgMyBhZGRyZXNz IGNhbmRpZGF0ZXM6DQoxLiBDb25uZWN0IHRvIGFkZHJlc3MgYGFgIGF0IHQ9MG1zLg0KMi4gQ29u bmVjdCB0byBhZGRyZXNzIGBiYCBhdCB0PTI1MG1zLg0KMy4gQ29ubmVjdCB0byBhZGRyZXNzIGBj YCBhdCB0PTUwMG1zLg0KNC4gSWYgYWxsIGZhaWwsIHRoZSBleGNlcHRpb24gaXMgcmFpc2VkIGF0 IHQ9MTUwMG1zICgxMDAwbXMgYWZ0ZXIgYGNgLCAxMjUwbXMgYWZ0ZXIgYGJgLCAxNTAwbXMgYWZ0 ZXIgYGFgKS4NCg0KMS4gU3RhcnQgYSBjb25uZWN0aW9uIGF0dGVtcHQgdG8gdGhlIGFkZHJlc3Mg YGFgDQoyLiAyNTBtcyBhZnRlciBzdGVwIDEsIHN0YXJ0IGEgbmV3IGNvbm5lY3Rpb24gYXR0ZW1w dCB0byB0aGUgYWRkcmVzcyBgYmANCjMuIDUwMG1zIGFmdGVyIHN0ZXAgMSwgc3RhcnQgYSBuZXcg Y29ubmVjdGlvbiBhdHRlbXB0IHRvIHRoZSBhZGRyZXNzIGBjYA0KNC4gMTAwMG1zIGFmdGVyIHN0 ZXAgMyAoMTAwMG1zIGFmdGVyIHN0YXJ0aW5nIHRoZSBjb25uZWN0aW9uIHRvIGBjYCwgMTI1MG1z IGFmdGVyIHN0YXJ0aW5nIHRoZSBjb25uZWN0aW9uIHRvIGBiLGAgYW5kIDE1MDBtcyBhZnRlciBz dGFydGluZyB0aGUgY29ubmVjdGlvbiB0byBgYWApIGBjb25uZWN0X3RpbWVvdXRgIGlzIHJhaXNl ZA0KDQpUaGlzIGJlaGF2aW9yIGFpbXMgdG8gZmF2b3Igc3VjY2Vzc2Z1bCBjb25uZWN0aW9ucyBi eSBhbGxvd2luZyBtb3JlIHRpbWUgZm9yIGVhY2ggYXR0ZW1wdCwgYnV0IGl0IHJlc3VsdHMgaW4g YSB0aW1lb3V0IG1vZGVsIHRoYXQgaXMgZGlmZmljdWx0IHRvIHJlYXNvbiBhYm91dC4NCg0KVGhl c2UgbWV0aG9kcyBoYXZlIHN1cHBvcnRlZCBgcmVzb2x2X3RpbWVvdXRgIGFuZCBgY29ubmVjdF90 aW1lb3V0YCBvcHRpb25zIGV2ZW4gYmVmb3JlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgSEV2Mi4gSG93 ZXZlciwgaW4gbWFueSB1c2UgY2FzZXMsIGl0IHdvdWxkIGJlIG1vcmUgY29udmVuaWVudCBpZiBh IHRpbWVvdXQgb2NjdXJyZWQgYWZ0ZXIgYSBzcGVjaWZpZWQgZHVyYXRpb24gZnJvbSB0aGUgc3Rh cnQgb2YgdGhlIG1ldGhvZC4gU2ltaWxhciBmdW5jdGlvbnMgaW4gb3RoZXIgbGFuZ3VhZ2VzIChz dWNoIGFzIFBIUCwgUHl0aG9uLCBhbmQgR28pIHR5cGljYWxseSBhbGxvdyBzcGVjaWZ5aW5nIG9u bHkgYW4gb3ZlcmFsbCB0aW1lb3V0Lg0KDQoNCiMjIyBQcm9wb3NhbA0KSSBwcm9wb3NlIGFkZGlu ZyBhbiBgb3Blbl90aW1lb3V0YCBvcHRpb24gdG8gYFNvY2tldC50Y3BgIGluIHRoZSBmb2xsb3dp bmcgUFIsIHdoaWNoIHRyaWdnZXJzIGEgdGltZW91dCBhZnRlciBhIHNwZWNpZmllZCBkdXJhdGlv biBoYXMgZWxhcHNlZCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgbWV0aG9kLg0KaHR0cHM6Ly9naXRo dWIuY29tL3J1YnkvcnVieS9wdWxsLzEzMzY4DQoNClRoZSBuYW1lIGBvcGVuX3RpbWVvdXRgIGFs aWducyB3aXRoIHRoZSBleGlzdGluZyBhY2Nlc3NvciB1c2VkIGluIGBOZXQ6OkhUVFBgLg0KSWYg YG9wZW5fdGltZW91dGAgaXMgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYHJlc29sdl90aW1lb3V0 YCBhbmQgYGNvbm5lY3RfdGltZW91dGAsIEkgcHJvcG9zZSB0aGF0IG9ubHkgYG9wZW5fdGltZW91 dGAgYmUgdXNlZCBhbmQgdGhlIG90aGVycyBiZSBpZ25vcmVkLiBXaGlsZSBpdCBpcyBwb3NzaWJs ZSB0byBzdXBwb3J0IGNvbWJpbmF0aW9ucyBvZiBgb3Blbl90aW1lb3V0YCwgYHJlc29sdl90aW1l b3V0YCwgYW5kIGBjb25uZWN0X3RpbWVvdXRgLCBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGRlZmlu aW5nIHdoaWNoIHRpbWVvdXQgdGFrZXMgcHJlY2VkZW5jZSBpbiB3aGljaCBzaXR1YXRpb25zLiBJ biB0aGlzIGNhc2UsIEkgYmVsaWV2ZSBpdCBpcyBtb3JlIHZhbHVhYmxlIHRvIGtlZXAgdGhlIGJl aGF2aW9yIHNpbXBsZSBhbmQgZWFzeSB0byB1bmRlcnN0YW5kLCByYXRoZXIgdGhhbiBzdXBwb3J0 aW5nIG1vcmUgY29tcGxleCB1c2UgY2FzZXMuDQoNCklmIHRoaXMgcHJvcG9zYWwgaXMgYWNjZXB0 ZWQsIEkgYWxzbyBwbGFuIHRvIGV4dGVuZCBgb3Blbl90aW1lb3V0YCBzdXBwb3J0IHRvIGBUQ1BT b2NrZXQubmV3YC4NCg0KV2hpbGUgdGhlIGxvbmctdGVybSBmdXR1cmUgb2YgYHJlc29sdl90aW1l b3V0YCBhbmQgYGNvbm5lY3RfdGltZW91dGAgbWF5IHdhcnJhbnQgZnVydGhlciBkaXNjdXNzaW9u LCBJIGJlbGlldmUgdGhlIGltbWVkaWF0ZSBwcmlvcml0eSBpcyB0byBvZmZlciBhIHN0cmFpZ2h0 Zm9yd2FyZCB3YXkgdG8gc3BlY2lmeSBhbiBvdmVyYWxsIHRpbWVvdXQuDQoNCiMjIyBPdXRjb21l DQpJZiBgb3Blbl90aW1lb3V0YCBpcyBhbHNvIHN1cHBvcnRlZCBieSBgVENQU29ja2V0Lm5ld2As IHVzZXJzIHdvdWxkIGJlIGFibGUgdG8gbWFuYWdlIHRvdGFsIGNvbm5lY3Rpb24gdGltZW91dHMg ZGlyZWN0bHkgaW4gYE5ldDo6SFRUUCNjb25uZWN0YCB3aXRob3V0IHJlbHlpbmcgb24gYFRpbWVv dXQudGltZW91dGAuDQpodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L2Jsb2IvYWEwZjY4OWJm NDUzNTJjNGE1OTJlN2YxYTA0NDkxMmM0MDQzNTI2Ni9saWIvbmV0L2h0dHAucmIjTDE2NTcNCg0K DQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1 YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRv IHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRw czovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFu Zy5vcmcvCg==