[ruby-core:123335] [Ruby Feature#21347] Add `open_timeout` as an overall timeout option for `Socket.tcp`
From:
"osyoyu (Daisuke Aritomo) via ruby-core" <ruby-core@...>
Date:
2025-09-27 08:23:26 UTC
List:
ruby-core #123335
SXNzdWUgIzIxMzQ3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgb3N5b3l1IChEYWlzdWtlIEFyaXRvbW8p Lg0KDQoNClRoYW5rIHlvdSBmb3IgeW91ciB3b3JrIQ0KDQpJIGhhdmUgYSBmZWF0dXJlIHJlcXVl c3QgaGVyZTogV291bGQgaXQgYmUgcG9zc2libGUgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZiB0 aGlzIG9wdGlvbiwNCmUuZy4gdGhyb3VnaCBgTWV0aG9kI3BhcmFtZXRlcnNgPyBUaGlzIGlzIG5v dCBwb3NzaWJsZSBhcyBvZiB0aGUgY3VycmVudCB2ZXJzaW9uLg0KDQpgYGANCiUgaXJiDQppcmIo bWFpbik6MDAxPiByZXF1aXJlICdzb2NrZXQnDQo9PiB0cnVlDQppcmIobWFpbik6MDAyPiBUQ1BT b2NrZXQubWV0aG9kKDpvcGVuKS5wYXJhbWV0ZXJzDQo9PiBbWzpyZXN0XV0NCmBgYA0KDQpCYWNr Z3JvdW5kOiBJJ3ZlIGJlZW4gd29ya2luZyB0byB1dGlsaXplIGBvcGVuX3RpbWVvdXRgIGluIG5l dC9odHRwLg0KaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvbmV0LWh0dHAvcHVsbC8yMjQNCg0KSSBo YXZlIGEgcHJvYmxlbSBoZXJlOiBJdCdzIGtpbmQgb2YgaGFyZCB0byBkZXRlY3Qgd2hldGhlciBg b3Blbl90aW1lb3V0YCBpcyBhdmFpbGFibGUgb3Igbm90Lg0KU2luY2UgbmV0L2h0dHAgc3VwcG9y dHMgYSB3aWRlIHJhbmdlIG9mIFJ1YnkgdmVyc2lvbnMsIEkgY2FuJ3Qgc2ltcGx5IHJlcGxhY2Ug YFRpbWVvdXQudGltZW91dGAgd2l0aCBgVENQU29ja2V0Lm9wZW4ob3Blbl90aW1lb3V0OilgIGhl cmUuDQpXZSBuZWVkIHRvIGZhbGwgYmFjayB0byBgVGltZW91dC50aW1lb3V0YCB3aGVuIG9wZW5f dGltZW91dCBpcyBub3QgYXZhaWxhYmxlLg0KT2xkZXIgUnViaWVzIHdpbGwgY2F1c2UgQXJndW1l bnRFcnJvcnMuDQoNCldoaWxlIGl0IGlzIHBvc3NpYmxlIHRvIHJlc2N1ZSB0aGUgQXJndW1lbnRF cnJvciBhbmQgcmV0cnkgd2l0aCBgVGltZW91dC50aW1lb3V0YCwgcmVzY3VpbmcgaXMgZXhwZW5z aXZlIGFuZA0Kc2hvdWxkIGJlIGF2b2lkZWQgd2hlbiBwb3NzaWJsZSAoc29ycnkgSSBkb24ndCBo YXZlIGFjdHVhbCBudW1iZXJzIGhlcmUsIGp1c3Qgc3BlYWtpbmcgaW4gZ2VuZXJhbCkuDQoNCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIxMzQ3OiBB ZGQgYG9wZW5fdGltZW91dGAgYXMgYW4gb3ZlcmFsbCB0aW1lb3V0IG9wdGlvbiBmb3IgYFNvY2tl dC50Y3BgDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjEzNDcjY2hhbmdlLTEx NDcwNg0KDQoqIEF1dGhvcjogc2hpb2ltbSAoTWlzYWtpIFNoaW9pKQ0KKiBTdGF0dXM6IENsb3Nl ZA0KKiBBc3NpZ25lZTogc2hpb2ltbSAoTWlzYWtpIFNoaW9pKQ0KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KSSBwcm9wb3NlIHRvIGFkZCBhbiBvdmVyYWxsIHRpbWVv dXQgb3B0aW9uIHRvIGBTb2NrZXQudGNwYCAoYW5kIGBUQ1BTb2NrZXQubmV3YCkNCg0KIyMjIEJh Y2tncm91bmQNCg0KQ3VycmVudGx5LCBgVENQU29ja2V0Lm5ld2AgYW5kIGBTb2NrZXQudGNwYCBh Y2NlcHQgdHdvIGtpbmQgb2YgdGltZW91dCBvcHRpb25zOg0KLSBgcmVzb2x2X3RpbWVvdXRgLCB3 aGljaCBjb250cm9scyB0aGUgdGltZW91dCBmb3IgRE5TIHJlc29sdXRpb24NCi0gYGNvbm5lY3Rf dGltZW91dGAsIHdoaWNoIGNvbnRyb2xzIHRoZSB0aW1lb3V0IGZvciB0aGUgY29ubmVjdGlvbiBh dHRlbXB0DQoNCldpdGggdGhlIGludHJvZHVjdGlvbiBvZiBIYXBweSBFeWViYWxscyBWZXJzaW9u IDIgKGFzIHBlciBbUkZDIDgzMDVdKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0 bWwvcmZjODMwNSkpIGluWyBGZWF0dXJlICMyMDEwOF0oaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5v cmcvaXNzdWVzLzIwMTA4KSBhbmQgW0ZlYXR1cmUgIzIwNzgyXShodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy9pc3N1ZXMvMjA3ODIpLCBib3RoIGFkZHJlc3MgcmVzb2x1dGlvbiBhbmQgY29ubmVj dGlvbiBhdHRlbXB0cyBhcmUgbm93IHBhcmFsbGVsaXplZC4gDQpBcyBhIHJlc3VsdCwgdGhlIHN1 bSBvZiBgcmVzb2x2X3RpbWVvdXRgIGFuZCBgY29ubmVjdF90aW1lb3V0YCBubyBsb25nZXIgcmVw cmVzZW50cyB0aGUgdG90YWwgdGltZW91dCBkdXJhdGlvbi4gVGhpcyBpcyBiZWNhdXNlLCBpbiBI RXYyLCBuYW1lIHJlc29sdXRpb24gYW5kIGNvbm5lY3Rpb24gYXR0ZW1wdHMgYXJlIHBlcmZvcm1l ZCBjb25jdXJyZW50bHksIGNhdXNpbmcgdGhlIHR3byB0aW1lb3V0cyB0byBvdmVybGFwLg0KDQpF eGFtcGxlOg0KV2hlbiBgcmVzb2x2X3RpbWVvdXQ6IDIwMG1zYCBhbmQgYGNvbm5lY3RfdGltZW91 dDogMTAwbXNgIGFyZSBzZXQ6DQoxLiBBbiBJUHY2IGFkZHJlc3MgIGlzIHJlc29sdmVkIGFmdGVy IHRoZSBtZXRob2Qgc3RhcnRzIGltbWVkaWF0ZWx5IChJUHY0IGlzIHN0aWxsIGJlaW5nIHJlc29s dmVkKS4NCjIuIEEgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGluaXRpYXRlZCB0byB0aGUgSVB2NiBh ZGRyZXNzDQozLiBBZnRlciAxMDBtcywgYGNvbm5lY3RfdGltZW91dGAgaXMgZXhjZWVkZWQuIEhv d2V2ZXIsIHNpbmNlIGByZXNvbHZfdGltZW91dGAgc3RpbGwgaGFzIDEwMG1zIGxlZnQsIHRoZSBJ UHY0IHJlc29sdXRpb24gY29udGludWVzLg0KNC4gQWZ0ZXIgMjAwbXMgZnJvbSB0aGUgc3RhcnQs IHRoZSBtZXRob2QgcmFpc2VzIGEgYHJlc29sdl90aW1lb3V0YCBlcnJvci4NCg0KSW4gdGhpcyBj YXNlLCB0aGUgdG90YWwgZWxhcHNlZCB0aW1lIGJlZm9yZSBhIHRpbWVvdXQgaXMgMjAwbXMsIG5v dCB0aGUgZXhwZWN0ZWQgMzAwbXMgKDEwMG1zICsgMjAwbXMpLg0KDQpGdXJ0aGVybW9yZSwgaW4g SEV2MiwgY29ubmVjdGlvbiBhdHRlbXB0cyBhcmUgYWxzbyBwYXJhbGxlbGl6ZWQuDQpJdCBzdGFy dHMgYSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0cyBldmVyeSAyNTBtcyBmb3IgcmVzb2x2ZWQgYWRk cmVzc2VzLiBUaGlzIG1ha2VzIHRoZSBkZWZpbml0aW9uIG9mIGBjb25uZWN0X3RpbWVvdXRgIGV2 ZW4gbW9yZSBhbWJpZ3VvdXPigJRzcGVjaWZpY2FsbHksIGl0IGJlY29tZXMgdW5jbGVhciBmcm9t IHdoaWNoIHBvaW50IHRoZSB0aW1lb3V0IGlzIGNvdW50ZWQuDQoNCkFkZGl0aW9uYWxseSwgdGhl c2UgbWV0aG9kcyBpbml0aWF0ZSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0cyBldmVyeSAyNTBtcyAo Q29ubmVjdGlvbiBBdHRlbXB0IERlbGF5KSBmb3IgZWFjaCBjYW5kaWRhdGUgYWRkcmVzcywgdGhl cmVieSBwYXJhbGxlbGl6aW5nIGNvbm5lY3Rpb24gYXR0ZW1wdHMuIEhvd2V2ZXIsIHRoaXMgYmVo YXZpb3IgbWFrZXMgaXQgdW5jbGVhciBmcm9tIHdoaWNoIHBvaW50IGluIHRpbWUgdGhlIGNvbm5l Y3RfdGltZW91dCBpcyBhY3R1YWxseSBtZWFzdXJlZC4NCkN1cnJlbnRseSwgYSBgY29ubmVjdF90 aW1lb3V0YCBpcyByYWlzZWQgb25seSBhZnRlciB0aGUgbGFzdCBjb25uZWN0aW9uIGF0dGVtcHQg ZXhjZWVkcyB0aGUgdGltZW91dC4NCg0KRXhhbXBsZToNCldoZW4gYGNvbm5lY3RfdGltZW91dDog MTAwbXNgIGlzIHNldCBhbmQgMyBhZGRyZXNzIGNhbmRpZGF0ZXM6DQoxLiBDb25uZWN0IHRvIGFk ZHJlc3MgYGFgIGF0IHQ9MG1zLg0KMi4gQ29ubmVjdCB0byBhZGRyZXNzIGBiYCBhdCB0PTI1MG1z Lg0KMy4gQ29ubmVjdCB0byBhZGRyZXNzIGBjYCBhdCB0PTUwMG1zLg0KNC4gSWYgYWxsIGZhaWws IHRoZSBleGNlcHRpb24gaXMgcmFpc2VkIGF0IHQ9MTUwMG1zICgxMDAwbXMgYWZ0ZXIgYGNgLCAx MjUwbXMgYWZ0ZXIgYGJgLCAxNTAwbXMgYWZ0ZXIgYGFgKS4NCg0KMS4gU3RhcnQgYSBjb25uZWN0 aW9uIGF0dGVtcHQgdG8gdGhlIGFkZHJlc3MgYGFgDQoyLiAyNTBtcyBhZnRlciBzdGVwIDEsIHN0 YXJ0IGEgbmV3IGNvbm5lY3Rpb24gYXR0ZW1wdCB0byB0aGUgYWRkcmVzcyBgYmANCjMuIDUwMG1z IGFmdGVyIHN0ZXAgMSwgc3RhcnQgYSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0IHRvIHRoZSBhZGRy ZXNzIGBjYA0KNC4gMTAwMG1zIGFmdGVyIHN0ZXAgMyAoMTAwMG1zIGFmdGVyIHN0YXJ0aW5nIHRo ZSBjb25uZWN0aW9uIHRvIGBjYCwgMTI1MG1zIGFmdGVyIHN0YXJ0aW5nIHRoZSBjb25uZWN0aW9u IHRvIGBiLGAgYW5kIDE1MDBtcyBhZnRlciBzdGFydGluZyB0aGUgY29ubmVjdGlvbiB0byBgYWAp IGBjb25uZWN0X3RpbWVvdXRgIGlzIHJhaXNlZA0KDQpUaGlzIGJlaGF2aW9yIGFpbXMgdG8gZmF2 b3Igc3VjY2Vzc2Z1bCBjb25uZWN0aW9ucyBieSBhbGxvd2luZyBtb3JlIHRpbWUgZm9yIGVhY2gg YXR0ZW1wdCwgYnV0IGl0IHJlc3VsdHMgaW4gYSB0aW1lb3V0IG1vZGVsIHRoYXQgaXMgZGlmZmlj dWx0IHRvIHJlYXNvbiBhYm91dC4NCg0KVGhlc2UgbWV0aG9kcyBoYXZlIHN1cHBvcnRlZCBgcmVz b2x2X3RpbWVvdXRgIGFuZCBgY29ubmVjdF90aW1lb3V0YCBvcHRpb25zIGV2ZW4gYmVmb3JlIHRo ZSBpbnRyb2R1Y3Rpb24gb2YgSEV2Mi4gSG93ZXZlciwgaW4gbWFueSB1c2UgY2FzZXMsIGl0IHdv dWxkIGJlIG1vcmUgY29udmVuaWVudCBpZiBhIHRpbWVvdXQgb2NjdXJyZWQgYWZ0ZXIgYSBzcGVj aWZpZWQgZHVyYXRpb24gZnJvbSB0aGUgc3RhcnQgb2YgdGhlIG1ldGhvZC4gU2ltaWxhciBmdW5j dGlvbnMgaW4gb3RoZXIgbGFuZ3VhZ2VzIChzdWNoIGFzIFBIUCwgUHl0aG9uLCBhbmQgR28pIHR5 cGljYWxseSBhbGxvdyBzcGVjaWZ5aW5nIG9ubHkgYW4gb3ZlcmFsbCB0aW1lb3V0Lg0KDQoNCiMj IyBQcm9wb3NhbA0KSSBwcm9wb3NlIGFkZGluZyBhbiBgb3Blbl90aW1lb3V0YCBvcHRpb24gdG8g YFNvY2tldC50Y3BgIGluIHRoZSBmb2xsb3dpbmcgUFIsIHdoaWNoIHRyaWdnZXJzIGEgdGltZW91 dCBhZnRlciBhIHNwZWNpZmllZCBkdXJhdGlvbiBoYXMgZWxhcHNlZCBmcm9tIHRoZSBzdGFydCBv ZiB0aGUgbWV0aG9kLg0KaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzEzMzY4DQoN ClRoZSBuYW1lIGBvcGVuX3RpbWVvdXRgIGFsaWducyB3aXRoIHRoZSBleGlzdGluZyBhY2Nlc3Nv ciB1c2VkIGluIGBOZXQ6OkhUVFBgLg0KSWYgYG9wZW5fdGltZW91dGAgaXMgc3BlY2lmaWVkIHRv Z2V0aGVyIHdpdGggYHJlc29sdl90aW1lb3V0YCBhbmQgYGNvbm5lY3RfdGltZW91dGAsIEkgcHJv cG9zZSB0aGF0IG9ubHkgYG9wZW5fdGltZW91dGAgYmUgdXNlZCBhbmQgdGhlIG90aGVycyBiZSBp Z25vcmVkLiBXaGlsZSBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IGNvbWJpbmF0aW9ucyBvZiBg b3Blbl90aW1lb3V0YCwgYHJlc29sdl90aW1lb3V0YCwgYW5kIGBjb25uZWN0X3RpbWVvdXRgLCBk b2luZyBzbyB3b3VsZCByZXF1aXJlIGRlZmluaW5nIHdoaWNoIHRpbWVvdXQgdGFrZXMgcHJlY2Vk ZW5jZSBpbiB3aGljaCBzaXR1YXRpb25zLiBJbiB0aGlzIGNhc2UsIEkgYmVsaWV2ZSBpdCBpcyBt b3JlIHZhbHVhYmxlIHRvIGtlZXAgdGhlIGJlaGF2aW9yIHNpbXBsZSBhbmQgZWFzeSB0byB1bmRl cnN0YW5kLCByYXRoZXIgdGhhbiBzdXBwb3J0aW5nIG1vcmUgY29tcGxleCB1c2UgY2FzZXMuDQoN CklmIHRoaXMgcHJvcG9zYWwgaXMgYWNjZXB0ZWQsIEkgYWxzbyBwbGFuIHRvIGV4dGVuZCBgb3Bl bl90aW1lb3V0YCBzdXBwb3J0IHRvIGBUQ1BTb2NrZXQubmV3YC4NCg0KV2hpbGUgdGhlIGxvbmct dGVybSBmdXR1cmUgb2YgYHJlc29sdl90aW1lb3V0YCBhbmQgYGNvbm5lY3RfdGltZW91dGAgbWF5 IHdhcnJhbnQgZnVydGhlciBkaXNjdXNzaW9uLCBJIGJlbGlldmUgdGhlIGltbWVkaWF0ZSBwcmlv cml0eSBpcyB0byBvZmZlciBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gc3BlY2lmeSBhbiBvdmVy YWxsIHRpbWVvdXQuDQoNCiMjIyBPdXRjb21lDQpJZiBgb3Blbl90aW1lb3V0YCBpcyBhbHNvIHN1 cHBvcnRlZCBieSBgVENQU29ja2V0Lm5ld2AsIHVzZXJzIHdvdWxkIGJlIGFibGUgdG8gbWFuYWdl IHRvdGFsIGNvbm5lY3Rpb24gdGltZW91dHMgZGlyZWN0bHkgaW4gYE5ldDo6SFRUUCNjb25uZWN0 YCB3aXRob3V0IHJlbHlpbmcgb24gYFRpbWVvdXQudGltZW91dGAuDQpodHRwczovL2dpdGh1Yi5j b20vcnVieS9ydWJ5L2Jsb2IvYWEwZjY4OWJmNDUzNTJjNGE1OTJlN2YxYTA0NDkxMmM0MDQzNTI2 Ni9saWIvbmV0L2h0dHAucmIjTDE2NTcNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFu Zy5vcmcvDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBy dWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1 bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcu b3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMv bGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcvCg==